شرح کلی
نوع : تروجان (Trojan)
درجه تخریب: بالا
میزان شیوع: متوسط
اسامی بدافزار
- Trojan.Win64.FramedGolf (Padvish)
- A Variant Of Win64/BadIIS.AN (ESET-NOD32)
- Trojan.Win64.FramedGolf.b (Kaspersky)
تروجان (Trojan) چیست؟
تروجانها نوعی بدافزار محسوب میشوند که خود را در قالب نرمافزاری سالم و قانونی جلوه میدهند و بسیار شبیه به نرمافزارهای مفید و کاربردی رفتار میکنند. در حالی که پس از اجرا، خرابیهای زیادی را برای سیستم ایجاد میکنند. نرمافزارهای دانلود شده از اینترنت، جاسازی شدن در متن HTML، ضمیمه شدن به ایمیل و غیره از جمله راههای ورود تروجانها هستند. تروجانها برخلاف ویروسها و کرمهای کامپیوتری قادر به تکثیر خود نیستند.
بدافزار FramedGolf) BadIIS) چیست؟
بدافزارهای BadIIS، فایلهای مخربی هستند که به عنوان ماژول وب سرور IIS (Internet Information Services) ثبت و توسط پردازه کارگزار IIS (w3wp.exe) یا IIS Worker بارگذاری میشوند. با توجه به اینکه این بدافزار به عنوان ماژولی از وب سرور IIS، به تمامی ترافیک ارسالی به وب سرور دسترسی دارد، لذا از این قابلیت برای ایجاد یک درب پشتی برای مهاجم استفاده میکند. بدین منظور، بدافزار با بررسی مشخصات بستهها، بسته ارسالی از مهاجم را شناسایی کرده و دستور درج شده در آن را استخراج و اجرا میکند. دستورات دریافتی از مهاجم میتواند شامل اجرای دستور خط فرمان، آپلود/ دانلود فایل و اجرای مکانیزم Port Forwarding (برقراری ارتباط با یک سرور هدف توسط سرور قربانی) باشد.
توضیحات فنی
شرح عملکرد
با توجه به اینکه عملکرد بدافزار BadIIS بسته به هدف آن متغیر است، در ادامه ابتدا ساختار ماژولهای IIS که در فایلهای سالم و مخرب یکسان است، شرح داده شده و سپس شرح عملکرد نمونهای از این خانواده آورده شده است.
ساختار ماژول های IIS
ماژولهای IIS، از دو نوع فایلهای کتابخانهای ویندوزی (Windows DLL) یا فایلهای مبتنی بر چارچوب NET Framework. هستند. ماژولهای دسته اول که مورد نظر این گزارش است، همگی دارای تابعی با نام RegisterModule هستند که وظیفه ثبت ماژول جهت پاسخگویی به یک یا چند رخداد سرور را برعهده دارد. هر زمان که درخواستی در وب سرور دریافت میشود، یک رخداد تولید میشود و ماژولهای IIS با پیادهسازی توابع مدیریت رخداد (Event Handler) نحوه پاسخگویی به این رخداد را مشخص میکنند.
به این منظور، تمامی ماژولهای IIS، یک کلاس Module دارند که از کلاس CHttpModule یا CGlobalModule ارثبری کرده و بدین ترتیب تمامی توابع مدیریت رخداد قابل تعریف را در بدنه کلاس خود خواهند داشت. سپس بسته به هدف ماژول، یک یا چند تابع پیادهسازی مجدد (Override) خواهد شد.
تصویر ۱- توابع مدیریت رخداد پیادهسازی شده در کلاس CHttpModule
بدافزار BadIIS موردنظر این گزارش دو تابع OnBeginRequest و OnSendRequest را با کدهای مخرب خود پیاده سازی مجدد میکند و در نتیجه در زمان وقوع این رخدادها، این کدها در پردازه کارگزار IIS (w3wp.exe)، اجرا خواهد شد.
تصویر ۲-توابع مدیریت رخداد که توسط بدافزار پیادهسازی مجدد شدهاند
در نمونه مورد بررسی، در تابع مدیریت خطای OnBeginRequest، بدافزار بستههایی با ویژگیهای زیر را بسته ارسالی از مهاجم قلمداد میکند:
- استفاده از متد POST در بسته HTTP
- مقدار سرآیند Content-Time نیز باید برابر با مقدار “Golf/UTC+7” باشد.
در ادامه، ابتدا بدافزار مقدار سرآیند X-Status را بررسی کرده و انتظار دارد برابر با مقدار “Ok” باشد، در غیر این صورت بسته را پردازش نمیکند. سپس در صورتی که بسته دریافتی تمام موارد بالا را داشته باشد، سایر سرآیندها به منظور استخراج دستور ارسالی از مهاجم و اجرای آن، به صورت زیر بررسی میشود:
دستور ارسالی (سرآیند X-HttpMethod) |
مقادیر جانبی برای اجرای دستور | هدف از دستور |
0 (صفر) | X-Forward-Id، شناسه این ارتباط X-Forward-Host و X-Forward-Host-Port، آدرس و شماره پورت سرور هدف Content-Size، اندازه داده ارسالی روی سوکت X-Policy، مدت زمان باز بودن سوکت (Timeout) |
اجرای مکانیزم Port Forwarding ایجاد سوکت و برقراری اولین ارتباط با سرور هدف |
1 | X-Forward-Id، شناسه ارتباط مورد نظر | اجرای مکانیزم Port Forarding خواندن داده از سوکت با شناسه مورد نظر و ارسال آن به مهاجم |
2 | X-Forward-Id، شناسه ارتباط مورد نظر | اجرای مکانیزم Port Forwarding ارسال داده مورد نظر مهاجم روی سوکت متناظر با شناسه مورد نظر (ایجاد شده از قبل) |
3 | X-Forward-Id، شناسه ارتباط مورد نظر | اجرای مکانیزم Port Forwarding بستن سوکت با شناسه ارتباط مورد نظر و قطع ارتباط با سرور هدف |
4 | – | بستن تمامی ارتباطات ایجاد شده با استفاده از دستور ۰ (صفر) |
5 | Frame-Options، دستور خط فرمان مورد نظر مهاجم | اجرای دستور خط فرمان مورد نظر مهاجم با استفاده از پردازه “cmd.exe” (خروجی پردازه cmd.exe از طریق پایپلاین خوانده و به صورت رمز شده به مهاجم ارسال میشود.) |
6 | – | ارسال اولین کاراکتر کلید مورد استفاده برای رمزگذاری پیامهای ارسالی به مهاجم (این مقدار در فایل هاردکد شده است و در نمونه بررسی شده، مقدار “qNfn3mYyasd75Adne” است). |
7 | سرآیندهای زیر به ترتیب مسیر و نام فایل، آفست شروع و سایز مورد نظر برای خواندن از فایل را مشخص میکنند: Frame-Options Frame-Offset Frame-Size |
ارسال فایلهای سرور قربانی به مهاجم |
8 | سرآیند Frame-Options مسیر و نام فایل را مشخص میکند و محتوای فایل، مقادیر موجود در بدنه درخواست خواهد بود. | آپلود فایل روی سرور قربانی |
9 | – | مقدار ثابت “3.0” به مهاجم ارسال میشود. |
در تابع OnSendRequest نیز بدافزار با بررسی مجدد سرآیندهای درخواست، تلاش میکند درخواستهای ارسالی از مهاجم را تشخیص دهد. در این صورت، پیام پاسخ وب سرور را با پاسخ آماده شده در تابع OnBeginRequest جایگزین میکند.
در تصویر زیر، سرور قربانی دستور اجرای cmd (دستور ۵) را که دستور خط فرمان “ping 127.0.0.1” است، از مهاجم دریافت نموده و پاسخ آن را که شامل نتیجه اجرای دستور ping میباشد به صورت رمز شده برای مهاجم ارسال کرده است.
تصویر ۳- اجرای دستور cmd.exe ارسالی از مهاجم توسط سرور قربانی
در تصویر زیر نیز دستور برقراری ارتباط با سرور هدف مورد نظر مهاجم با دستور ۰(صفر) به سرور قربانی ارسال شده و این سرور بلافاصله پس از دریافت دستور، اقدام به برقراری ارتباط TCP با سرور هدف کرده است. در نهایت نتیجه برقراری ارتباط به مهاجم ارسال شده است:
تصویر ۴- اجرای دستور برقراری ارتباط با سرور هدف، دستور ۰(صفر)
در ادامه تصاویری از کد بدافزار قابل مشاهده است:
تصویر ۵- بخشی از کد متناظر با دستور صفر، برقراری ارتباط با سرور هدف
علائم آلودگی
🔺 وجود فایل مشکوک در مسیر زیر (ماژولهای IIS عموما در مسیر زیر قرار دارند):
\windir٪\system32\inetsrv٪
🔺مشاهده رفتار مشکوک از پردازه w3wp.exe به عنوان پردازه کارگزار IIS، مانند ایجاد زیر پردازه cmd.exe با دستور خط فرمان مخرب یا غیرعادی از دیدگاه کاربر.
روش مقابله و پاکسازی سیستم
آنتیویروس پادویش این بدافزار را شناسایی و حذف میکند. به منظور جلوگیری از آلوده شدن به این بدافزار توصیه میشود:
- آنتی ویروس خود را همواره به روز نگه دارید.
- فایلهای خود را از منابع معتبر تهیه کنید.
- به صورت دورهای مسیر windir%\system32\inetsrv% را با آنتیویروس پویش کنید.