وبشل چیست؟
وبشل یک رابط مبتنی بر پوسته (در سیستمعامل به معنی ایجاد کنندهی ارتباط بین کاربر و سیستمعامل) است که دسترسی و کنترل از راه دور به سرور وب را ممکن میسازد. به این ترتیب هکرها میتوانند با استفاده از یک وبشل مخرب به فایلهای شما دسترسی پیدا کنند. وبشلها میتوانند با زبانهای برنامهنویسی مختلفی نوشته شوند.
به عبارت دیگر وبشل یک اسکریپت مخرب است که اغلب توسط یک مهاجم با هدف گسترش یا حفظ دسترسی مداوم در یک سامانهی وب استفاده میشود. یک وبشل به خودی خود نمیتواند به یک آسیبپذیری از راه دور حمله یا از آن سو استفاده کند، بنابراین همیشه مرحلهی دوم حمله است.
مبهمسازی (Obfuscation) چیست؟
مبهمسازی (Obfuscation) در زمینهی توسعهی نرمافزار به فرایند ایجاد تغییر در کدهای یک برنامه گفته میشود به گونهای که بررسی و درک آنها برای انسان یا ماشین (مانند آنتیویروسها) دشوار باشد. اغلب از روشهای مبهمسازی برای پنهان کردن هدف و منطق پشت پردهی کد یا مقادیر گنجانده شده در آن استفاده میکنند و به این ترتیب احتمال مداخله و مهندسی معکوس را کاهش داده یا آن را به یک معما و سرگرمی برای افرادی تبدیل میکنند که قصد یادگیری دارند.
مبهمسازی ممکن است به صورت دستی یا با کمک ابزارهای مخصوصی موسوم به مبهمساز (Obfuscator) انجام شود. برخی از تکنیکهای مبهمسازی به شرح زیر است:
- نام گذاری متغیرها و توابع به صورت گمراه کننده یا بیمعنا
- استفاده از کامنتهای فریب دهنده
- کدگذاری رشتهها
- حذف یا افزودن فاصله
- ایجاد ابهام در Control Flow
- اضافه کردن کدهای بیربط و نوشتن کد با فرم و ظاهری غیر عادی
Deobfuscation کد ابزار Alfa Shell
Alfa Shell یکی از وبشلهای پرکاربرد منسوب به متخصصین ایرانی است. این وبشل حدود چهار نسخهی اصلی دارد که شیوهی Deobfuscation مربوط به سه نسخهی قبلی را در گذشته بررسی کردم. در اینجا قصد دارم نسخهی 4.1 ( آخرین نسخهی Alfa Shell) را مورد بررسی قرار بدم.
برای شروع ابتدا باید سورس مبهمسازی شده الفا را دریافت کنیم.
سپس باید کد مربوطه را در یک فایل با نام دیگر ذخیره کنیم که در اینجا با نام alfav4.1-tesla_encode_1.php ذخیره کردیم.
https://github.com/Ravin-Academy/DeObfuscation_ALFA_SHELL_V4.1/blob/main/alfav4.1-tesla_encode_1.php
در گام بعدی مقدار متغیر $WMKVyvv=’e’.’v’.’a’.’l’ را به $WMKVyvv=’echo’; تغییر میدهیم. و سپس این دستور را در ترمینال لینوکس اجرا می کنیم:
php alfav4.1-tesla_encode_1.php > alfav4_decode.php
محتوای دیکد شده در فایل جدید alfav4_decode.php ذخیره می شود:
https://github.com/Ravin-Academy/DeObfuscation_ALFA_SHELL_V4.1/blob/main/alfav4_decode.php#L145&L181
متنی زیر را در ابتدای این فایل مشاهده میکنید:
/* You’re killing me again 🎧 Am I still in your head ? 🎧 You used to light me up 🎧 Now you shut me down — Solevisible */
این متن از موزیک Archive – Again می باشد:
www.youtube.com/watch?v=r7rF2EZ0A_0
نکته بعدی این که یک شرط به شرح زیر در کد وجود دارد:
if(!isset($_SERVER[“HTTP_HOST”]))exit
با توجه به این شرط، اجرای اینوبشل باید از طریق یک وب سرور انجام شود و در غیراین صورت از برنامه خارج میشود. این خط کد را کامنت میکنیم تا ادامهی کار میسر شود.
در ادامهی مسیر با افزودن کد base64decode قادر به ادامهی Deobfuscation کد ALFA Shell خواهیم بود. مسیر کد اضافه شده به شرح زیر است:
https://github.com/Ravin-Academy/DeObfuscation_ALFA_SHELL_V4.1/blob/main/alfav4_decode.php#L66&L70
سپس دوباره دستور زیر را در ترمینال لینوکس اجرا میکنیم:
php alfav4_decode.php > final_decode.php
حال مشاهده میکنیم که خروجی کد مبهم شکسته شده در فایل final_decode.php ذخیره شد. این فایل از لینک زیر قابل دریافت است:
https://github.com/Ravin-Academy/DeObfuscation_ALFA_SHELL_V4.1/blob/main/final_decode.php
مقایسه نسخهی Decode شدهی ما با نسخهی Decode شدهی Alpha
فایل زیر نسخهی Decode شدهی وبشل هست که خود تیم Alpha همراه با نسخهی Encode شدهی خود در اختیار دیگران قرار دادهاند. در ادامه قصد داریم خروجی decode شدهی خود را با نسخهی Decode شدهی Alpha مقایسه کنیم تا ببینیم چه تفاوتهایی با هم دارند:
به همین منظور دو فایل ذکر شده را برای مقایسه در سایت زیر بارگذاری کردیم که بر اساس نتیجهی به دست آمده، هیچتفاوتی با هم ندارند. بنابراین به این نتیجه میرسیم که فرایندdecode کردن وبشل به درستی پیش رفته است.
https://www.diffchecker.com/MT1BKXXj
بررسی استاتیک static
یکی از روشهای متداول که هکرها برای سرقت دسترسیهای متعلق به سایر هکرهای غیر حرفهای انجام میدهند، تولید و انتشار بدافزارهایی است که در صورت استفاده، به عنوان یک درب پشتی یا Backdoor برای مهاجمین تولید کنندهی بدافزار عمل میکند. بر همین اساس قصد داریم در ادامه به بررسی و تحلیل این وبشل بپردازیم که آیا به عنوان درب پشتی برای تولیدکنندگان خود (تیم Alpha) عمل میکند یا خیر؟
در این مرحله بررسی کردیم که آیا این وبشل در صورت نصب، برای ارتباط با آدرس خاصی تلاش میکند یا خیر. به عنوان مثال متداول است که وبشلهای آلوده پس از نصب، آدرس URL خود را به تولیدکنندگان خود ارسال میکند. با بررسی کدهای مربوط به این بخش، مورد مشکوکی مشاهده نشد.
مشاهده شد وبشل پس از نصب یک درخواست HTTPبه آدرس https://solevisible.com ارسال میکند. در نتیجه پس اگر شما جایی این وبشل را اپلود کنید درخواستی به این آدرس ارسال شده و آدرس IP سرور آلوده، در وب سرور solevisible.com ثبت خواهد شد. به عنوان مثال یک نمونه از ساختار لاگ Apache در شکل زیر نمایش داده شده است:
بررسی کدهای Python و Perl
براساس بررسی انجام شده، بخشی از این وبشل کدهای obfuscate شده به زبانهای Python و Perl را فراخوانی میکند. این بخش از وبشل، وظیفهی ایجاد Reverse Shell در سرورهای لینوکسی را بر عهده دارد. در نتیجه این کدها را نیز Deobfuscate کردم تا ببینیم مورد مشکوک یا مخربی در آنها مشاهده میشود یا خیر، این کدها را میتوانید از آدرسهای زیر دریافت کنید:
https://github.com/Ravin-Academy/DeObfuscation_ALFA_SHELL_V4.1/blob/main/obfuscation_perl.pl
https://github.com/Ravin-Academy/DeObfuscation_ALFA_SHELL_V4.1/blob/main/obfuscation_python.py
این دو بخش را هم Deobfuscate و به طور کامل بررسی کردم، در نهایت مورد مشکوکی در این بخش از وبشل پیدا نشد.
فایل باینری windows.exe
این فایل باینری در صورت نیاز به گرفتن یک NC به صورت Reverse Shell، به طور خودکار از آدرس https://solevisible.com/bc/windows.exe دانلود و اجرا میشود. این فایل را نیز با GHIDRA بررسی کردیم و مورد مشکوکی یافت نشد. نکتهی قابل توجه در خصوص این فایل، این است که توسط برخی آنتیویروسها به عنوان بدافزار شناخته میشود و در صورتی که از آن استفاده کنید احتمال شناسایی توسط آنتیویروس سرور وب وجود خواهد داشت.
بررسی شناسایی وبشل نسخهیDeobfuscate شده با نسخهی Obfuscate
همانگونه که در شکل زیر میبینید، نسخهیDeobfuscate شدهی ما توسط برخی از آنتیویروسها به عنوان بدافزار شناسایی میشود.
مطابق تصویر زیر، نسخهی obfuscate شده توسط هیچکدام از آنتیویروسها شناسایی نشد.
در تصویر زیر نیز نتیجهی تحلیل نسخهی بدونobfuscate که توسط خود تیم آلفا ارایه شده است را مشاهده میکنید.
با بررسیهایی که انجام شد، فعالیت مخربی از این وبشل یافت نشد اما آدرس سروری که شما وبشل را بر روی آن نصب کردید به سرور تیم آلفا ارسال خواهد شد. لذا در فعالیتهای تست نفوذ یا تیم قرمز خود، تا جایی که امکان دارد از ابزارهای آماده استفاده نکرده یا حداقل قبل از استفاده، با دقت آن را بررسی کنید. همچنین مشاهده کردیم که کمی تغییر در کد یک بدافزار یا Obfuscate کردن آن، تاثیر قابل توجهی در برخورد آنتیویروسها با آن فایل یا کد مخرب خواهد داشت.
ارتباط با نویسندهی این مقاله در لینکدین: «رامین فرجپور»