اخیرا محققای SentinelLABS گزارشی منتشر کردن در خصوص یک بدافزار با عنوان fast16 که 5 سال قبلتر از استاکسنت برای خرابکاری، احتمالا در تاسیسات هسته ای ایران، توسعه داده شده بود. در این پست، متن این مقاله فنی رو ترجمه کردیم.
خلاصه :
- محققای SentinelLABS یک چارچوب خرابکاری سایبری رو کشف کردن که قبلا مستند نشده بود و اجزای اصلی اون به سال ۲۰۰۵ برمیگرده. این بدافزار با نام fast16 ردیابی میشه.
- فایل fast16.sys بطور هدفمند نرمافزارهای محاسباتی با دقت بالا رو نشانه میگیره و با دستکاری کد در حافظه، نتایج رو تغییر میده. مهاجمان با ترکیب این پیلود و سازوکارهای خود-تکثیری، به دنبال ایجاد محاسبات نادرست یکسان در کل یک تأسیسات هستن.
- این حمله از سال ۲۰۰۵، پیشدرآمدی برای عملیات خرابکارانهای است که حجم کاری محاسباتی فوقگرانقیمت و با دقت بالا با اهمیت ملی رو هدف قرار میده؛ مواردی مانند تحقیقات در حوزه فیزیک پیشرفته، رمزنگاری و تحقیقات هستهای.
- fast16 دستکم پنج سال از استاکسنت قدیمیتر است و اولین عملیات در نوع خود به شمار میره. بهکارگیری یک ماشین مجازی سفارشی و تعبیه شده Lua در این بدافزار، سه سال از قدیمیترین نمونههای بدافزار Flame جلوتر است.
- نام fast16 در فایلهای افشا شده ی مشهور Shadow Brokers از اجزای «Territorial Dispute» آژانس امنیت ملی آمریکا (NSA) دیده میشه. یک امضای فرار به اپراتورها میگه:
|
1 |
fast16 *** Nothing to see here – carry on *** |
نمای کلی
بررسی محققا درباره fast16 با یک حدس معماری شروع شد. گروه های خاصی از بازیگران تهدید، همواره به موتورهای اسکریپتنویسی جاسازی شده به عنوان ابزاری برای ماژولار بودن متکی بودن. بدافزارهای Flame، Bunny از گروه Animal Farm، PlexingEagle، Flame 2.0 و Project Sauron همگی پلتفرمهای خودشون رو حول قابلیت گسترشپذیری و ماژولار بودن یک ماشین مجازی Lua ساخته بودن. محققا میخواستن بدونن آیا این سبک توسعه از یک منبع مشترک سرچشمه گرفته یا خیر، پس تصمیم گرفتن قدیمیترین استفادۀ پیچیده از یک موتور Lua جاسازی شده در بدافزار ویندوزی رو ردیابی کنن.
Lua یک زبان اسکریپتنویسی سبک است که ذاتاً برای گسترش عملکردهای C++/C توانایی داره. با توجه به جذابیت سی پلاس برای ساخت چارچوبهای بدافزاری قابل اعتماد و سطح بالا، این قابلیت برای اجتناب از کامپایل مجدد کل اجزای بدافزار جهت افزودن قابلیت به ماشینهای از قبل آلوده، ضروری است. محققا نشانهای دال بر منشأ مشترک مستقیم پیدا نکردن، اما تحقیقاتشون قدیمیترین نمونه از این معماری حملۀ مدرن رو مشخص کرده.
Lua یک اثر انگشت متمایز از خود به جا میذاره. فایلهای بایتکد کامپایلشده با بایتهای جادویی 1B 4C 75 61 (\x1bLua) شروع میشن و بعد از اون یک بایت نسخه قرار داره. همچنین، این موتور معمولاً یک API مشخص C و متغیرهای محیطی مانند LUA_PATH رو در معرض نمایش میزاره. جستوجوی این ویژگیها در میان مجموعههای بدافزار اواسط دهه ۲۰۰۰، نمونهای رو نمایان کرد که در ابتدا قابل توجه به نظر نمیرسید: svcmgmt.exe.
svcmgmt.exe: یک سرویس ویندوزی مجهز به Lua از سال ۲۰۰۵
در نگاه اول، svcmgmt.exe یک فایل اجرایی ساده و عمومی برای اجرای سرویسها در حالت کنسول به نظر میرسه، چیزی شبیه به برنامههای رایج دوران ویندوز ۲۰۰۰ و XP.
|
1 2 3 4 5 6 7 |
Filename:svcmgmt.exe Filesize:315,392 bytes MD5:dbe51eabebf9d4ef9581ef99844a2944 SHA1:de584703c78a60a56028f9834086facd1401b355 SHA256:9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525 Type:PE32 executable for MS Windows 4.00 (console), Intel i386 Link Time:2005-08-30 18:15:06 UTC |
امّا با کمی دقت بیشتر، مشخص میشه که یک ماشین مجازی Lua نسخه ۵.۰ در دل اون مخفی شده. همچنین یک بسته بایتکد رمزنگاریشده وجود داره که توسط بخش شروع سرویس، رمزگشایی و سپس اجرا میشه.
توسعهدهندگان این بدافزار، محیط استاندارد Lua رو با افزودن قابلیتهای زیر گسترش دادن:
- یک ماژول wstring برای کار مستقیم با رشتههای یونیکد
- یک رمزنگار متقارن داخلی که از طریق تابعی با نام b فراخوانی میشه و برای رمزگشایی دادههای جاسازیشده در بدنه فایل کاربرد داره
- چندین ماژول که مستقیماً به APIهای اصلی ویندوز NT شامل سیستم فایل، رجیستری، مدیریت سرویس و شبکه متصل میشن.
حتی اگه svcmgmt.exe رو به تنهایی در نظر بگیریم، با یک بدافزار پیشرفته و اولیه طرف هستیم؛ یک سرویس ماژولار که بخش عمدهٔ منطق عملیاتی خودش رو به بایتکد رمزنگاریشدهٔ Lua واگذار کرده. همچنین یک سرنخ حیاتی در این فایل باینری وجود داره: یک مسیر PDB که این فایل اجرایی رو به درایور کرنلی fast16.sys مرتبط میکنه.
fast16: یک معمای مرموز از افشاگری Shadow Brokers
در میان رشتههای متنی این فایل باینری، یک ارجاع PDB وجود داره:
|
1 |
C:\buildy\driver\fd\i386\fast16.pdb |
در نگاه اول، این مسیر شبیه هر اثری از کامپایلر به نظر میرسه: یک دایرکتوری ساخت داخلی، یک نام مولفه (fast16)، و یک نشانه از معماری پردازنده (i386). اما در این مورد خاص، یک ناهمخوانی وجود داره. این رشته متنی درون یک فایل اجرایی سرویس-محور ظاهر شده، در حالیکه بخش driver\fd\i386\fast16 از مسیر PDB، به وضوح به یک پروژه درایور کرنلی اشاره داره.
دنبال کردن این سرنخ، محققا رو به یک فایل باینری دوم رسونده: fast16.sys
|
1 2 3 4 5 6 |
Filename:fast16.sys Filesize:44,580 bytes MD5:0ff6abe0252d4f37a196a1231fae5f26 SHA256:07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529 Type:PE32 executable for MS Windows 5.00 (native), Intel i386, 5 sections Link Time:2005-07-19 15:15:41 UTC (0x42dd191d) |
این درایور کرنلی، یک مولفه ی فایلسیستمی از نوع راهانداز هنگام بوت است که کدهای اجرایی رو هنگام خونده شدن از روی دیسک، رهگیری و دستکاری میکنه. با این که درایوری با این قدمت روی ویندوز ۷ و نسخههای جدیدتر اجرا نمیشه، اما fast16.sys در زمان خودش، به لطف جایگاهی که در لایههای زیرین سیستم ذخیرهسازی (Storage Stack) داشته، کنترلش روی ورودی/خروجی فایلسیستم، و قابلیت پچ کردن کد مبتنی بر رول، یک سروگردن بالاتر از روتکیتهای معمولی بوده.
در آوریل ۲۰۱۷، نزدیک به ۱۲ سال پس از مُهر زمانی کامپایل، همان نام فایل یعنی fast16 در افشاگری Shadow Brokers ظاهر شد. تحقیقات دکتر Boldizsár Bencsáth روی پروژه Territorial Dispute، به یک فایل متنی به نام drv_list.txt اشاره میکنه. این فایل ۲۵۰ کیلوبایتی، فهرست کوتاهی از نام درایورهاست که برای تعیین تکلیف ایمپلنتهای احتمالی به کار میره. یعنی ایمپلنتهایی که اپراتورهای سایبری ممکن است حین عملیات، روی ماشین هدف با اونا مواجه بشن. اگه نام درایور در این لیست با برچسب friendly علامتگذاری شده بود، یعنی متعلق به خودشونه و باید کاریش نداشته باشن. اگه هم با برچسب pull back مشخص شده بود، یعنی اون ایمپلنت مال یک گروه هک رقیب از یک دولت-ملت دیگه است و اپراتور باید عملیات رو متوقف کنه تا از برخورد و تداخل جلوگیری بشه.

دستورالعملی که برای یک درایور خاص به نام «fast16» صادر شده، هم منحصربهفرد است و هم به شکلی غیرعادی جلب توجه میکنه.
رشته متنی درون svcmgmt.exe، حلقه ارتباطی کلیدی در این بررسی بود. مسیر PDB، افشاگری سال ۲۰۱۷ شامل امضاهای عدم تداخل مورد استفاده اپراتورهای NSA رو به یک ماژول حامل چندمنظورهٔ مبتنی بر Lua که در سال ۲۰۰۵ کامپایل شده و در نهایت، پیلود مخفی اون یعنی یک درایور کرنل طراحیشده برای خرابکاری دقیق، متصل میکنه.
svcmgmt.exe: معماری ماژول حامل
جزء اصلی fast16، یعنی svcmgmt.exe، مانند یک ماژول حامل بسیار منعطف عمل میکنه و بر اساس آرگومانهای خط فرمان، حالت عملیاتی خودش رو تغییر میده:
- بدون آرگومان: بهعنوان یک سرویس ویندوز اجرا میشه.
- p-: فلگ InstallFlag رو روی ۱ تنظیم کرده و بهعنوان سرویس اجرا میشه (حالت انتشار، نصب و اجرا).
- i-: فلگ InstallFlag رو روی ۱ تنظیم کرده و کد Lua رو اجرا میکنه (حالت نصب و اجرای Lua).
- r-: کد Lua رو بدون تنظیم فلگ نصب، اجرا میکنه (حالت فقط اجرای Lua).
- هر آرگومان دیگه (نام فایل): اون رو بهعنوان یک نام فایل تفسیر میکنه و دو پروسس فرزند ایجاد میکنه: یکی با دستور اصلی و دیگری با آرگومان r- (حالت پروکسی یا Wrapper).
در داخل svcmgmt.exe، سه بسته پیلود متفاوت ذخیره شده که شامل بایتکد رمزنگاریشده Lua برای مدیریت پیکربندی، منطق انتشار و هماهنگی، کتابخانه کمکی ConnotifyDLL و درایور کرنلی fast16.sys هستش.

توسعهدهندگان با جدا کردن یک بسته اجرایی نسبتاً پایدار از پیلودهای رمزنگاریشده و مأموریتمحور، یک چارچوب ماژولار و قابل استفاده مجدد ساخته بودن. این طراحی به اونا اجازه میداد بدون تغییر اساسی در فایل حامل اصلی، اون رو برای محیطها و اهداف عملیاتی مختلف در کمپین های گوناگون به کار بگیرن.
Wormlets و معماری اولیه فرار از شناسایی
اوایل دهه ۲۰۰۰ شاهد ظهور تعداد زیادی کرم شبکهای بودیم. بیشتر اونا توسط علاقهمندان نوشته و به سرعت پخش میشدن و پیلود خاص و قابل توجهی نداشتن. fast16 هم متعلق به همین دوره است، اما از الگویی کاملاً متفاوت پیروی میکنه که نشاندهنده خاستگاه اون بهعنوان یک ابزار در سطح دولتی است. این اولین کرم شبکهای مبتنی بر Lua است که تاکنون ثبت شده و با یک مأموریت کاملاً مشخص و خاص ساخته شده بود.
ماژول حامل به گونهای طراحی شده بود که مانند یک بمب خوشهای نرمافزاری عمل کنه و قادر به حمل چندین پیلود کرممانند باشه که بصورت داخلی، wormlet نامیده میشن. ماژول svcmgmt.exe مراحل زیر را انجام میده:
- پیکربندی رو آماده میکنه و مسیر پیلود، جزئیات سرویس و محدوده IPهای هدف رو مشخص میکنه.
- مقادیر پیکربندی رو برای لایه C به رشتههای کاراکتر عریض (wide-character) تبدیل میکنه.
- سطح دسترسی رو ارتقا میده و فایل اجرایی حامل رو بهعنوان سرویسی با نام SvcMgmt نصب و سپس اجرا میکنه.
- بسته به تنظیمات پیکربندی، درایور کرنل fast16.sys رو روی سیستم مستقر میکنه.
- wormlet ها رو آزاد میکنه. در این پیکربندی خاص، تنها یک اسلات wormlet با یک SCM wormlet پر شده که به دنبال سرورهای شبکه میگرده، پیلود رو از طریق یک اشتراک شبکه کپی میکنه و اون سرویس راه دور رو راهاندازی میکنه.
- این فرآیند رو به طور نامحدود تکرار میکنه و بین هر موج انتشار، به اندازه تأخیر اولیه پیکربندیشده میخوابه، تا زمانی که به آستانه خطا برسه یا یک شرط توقف خارجی فعال بشه.
wormletها در حافظه داخلی ماژول حامل ذخیره میشدن:

تنها wormlet مستقرشدهای که در svcmgmt.exe یافت شد (SCM) یک استراتژی انتشار ساده اما مؤثر رو بر اساس قابلیتهای بومی ویندوز و امنیت ضعیف شبکه به نمایش میذاره. این wormlet محیطهای ویندوز ۲۰۰۰ و XP رو هدف میگیره و روی رمزهای عبور پیشفرض یا ضعیف مدیریتی در اشتراکهای فایل، حساب باز میکنه. تمام فرآیند انتشار از طریق APIهای استاندارد کنترل سرویس و اشتراک فایل ویندوز انجام میشه؛ نمونهای اولیه از انتشاری که به جای پروتکلهای شبکه سفارشی، به ویژگیهای مدیریتی داخلی ویندوز متکی است.
قبل از اجرای این روند، یک kill-switch، محیط رو بررسی میکنه. تابع ()ok_to_install، تابع ()ok_to_propagate رو فراخوانی میکنه و انتشار تنها در صورتی مجاز است که یا بهصورت دستی فعال شده باشه یا با بررسی کلیدهای رجیستری مربوطه، اطمینان حاصل بشه که محصولات امنیتی رایج در سیستم وجود ندارن. این تابع، فهرستی از کلیدهای رجیستری فروشندگان نرمافزارهای امنیتی رو پیمایش میکنه و اگه هر کدام از اونا پیدا بشه، فرآیند نصب رو متوقف میکنه و بدین ترتیب از استقرار در محیطهای تحت نظارت جلوگیری میکنه.
برای ابزاری با این قدمت، چنین سطحی از آگاهی محیطی قابل توجه است. در حالی که ممکن است فهرست این محصولات جامع به نظر نرسه، احتمالاً منعکسکننده محصولاتی است که اپراتورها انتظار داشتن در شبکههای هدف اونا وجود داشته باشه و فناوری شناسایی اونا میتونست مخفیکاری عملیاتشون رو به خطر بندازه.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
HKLM\SOFTWARE\Symantec\InstalledApps HKLM\SOFTWARE\Sygate Technologies, Inc.\Sygate Personal Firewall HKLM\SOFTWARE\TrendMicro\PFW HKLM\SOFTWARE\Zone Labs\TrueVector HKLM\SOFTWARE\F-Secure HKLM\SOFTWARE\Network Ice\BlackIce HKLM\SOFTWARE\McAfee.com\Personal Firewall HKLM\SOFTWARE\ComputerAssociates\eTrust EZ Armor HKLM\SOFTWARE\RedCannon\Fireball HKLM\SOFTWARE\Kerio\Personal Firewall 4 HKLM\SOFTWARE\KasperskyLab\InstalledProducts\Kaspersky Anti-Hacker HKLM\SOFTWARE\Tiny Software\Tiny Firewall HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Look n Stop 2.05p2 HKCU\SOFTWARE\Soft4Ever HKLM\SOFTWARE\Norman Data Defense Systems HKLM\SOFTWARE\Agnitum\Outpost Firewall HKLM\SOFTWARE\Panda Software\Firewall HKLM\SOFTWARE\InfoTeCS\TermiNET |
یک مولفه جداگانه در سطح کاربر، یعنی svcmgmt.dll، یک کانال حداقلی برای گزارشدهی فراهم میکنه. این DLL که در حافظه داخلی حامل نگهداری میشه، از طریق API ویندوز به نام ()AddConnectNotify ثبت میشه تا هر بار که سیستم یک اتصال شبکه جدید رو با استفاده از Remote Access Service (RAS) برقرار میکنه، فراخوانی بشه. RAS در دهه ۲۰۰۰ مسئول اتصالات تلفنی (Dial-up) و نمونههای اولیه VPN بود.
|
1 2 3 4 5 6 7 |
Module Name:User Module (connotifydll) Filename:svcmgmt.dll Filesize:45056 bytes MD5:410eddfc19de44249897986ecc8ac449 SHA256:8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9 Link Time:2005-06-06 18:42:45 UTC Type:PE32 DLL (i386, 4 sections) |
هنگامی که این DLL فراخوانی میشه، یک رشته مبهمشده رو رمزگشایی میکنه تا مسیر یک Named Pipe با آدرس \\.\pipe\p577 رو بدست بیاره، سپس تلاش میکنه به این Pipe محلی متصل بشه و قبل از بستن اون، نام اتصال راه دور و محلی رو در اون مینویسه. این ماژول بهطور مستقل اجرا نمیشه و باید توسط یک پروسس میزبان ثبت بشه.
fast16.sys | یک درایور فایلسیستمی برای خرابکاری دقیق
درایور کرنلی fast16.sys قدرتمندترین جزء این چارچوب است.
این درایور با تنظیمات Start=0 (راهانداز هنگام بوت) و Type=2 (درایور فایلسیستمی) در گروه کلاس SCSI پیکربندی شده. این درایور به طور خودکار در مراحل اولیه بوت، همزمان با درایورهای disk device لوود میشه و خودش رو روی هر دستگاه فایلسیستمی (NTFS، FAT، MRxSMB) قرار میده. در هنگام ورود، اقدامات زیر رو انجام میده:
- با قرار دادن مقدار EnablePrefetcher روی ۰ در کلید رجیستری PrefetchParameters مربوط به Session Manager، ویژگی Windows Prefetcher رو غیرفعال میکنه. این کار باعث میشه درخواستهای بعدی code‑page از کل پشته فایلسیستم عبور کنن.
- APIهای کرنل رو به صورت پویا و با استفاده از یک رمزنگاری ساده مبتنی بر XOR روی رشتهها و اسکن فایل ntoskrnl.exe پیدا میکنه.
- دستگاههای \Device\fast16 و ??\fast16 رو با یک مقدار سفارشی DeviceType به نام 0xA57C در معرض دید قرار میده که بعنوان یک نشانگر تحقیقات فارنزیک عمل میکنه.
این درایور با استفاده از تابع IoRegisterFsRegistrationChange رجیستر میشه تا بتونه یک worker device رو روی هر دستگاه فایلسیستمی فعال یا تازهایجادشده متصل بشه. تمام بستههای درخواست ورودی/خروجی مرتبط، از جمله IRP_MJ_CREATE، IRP_MJ_READ، IRP_MJ_CLOSE، IRP_MJ_QUERY_INFORMATION، IRP_MJ_FILE_SYSTEM_CONTROL و مسیرهای Fast I/O مرتبط با اونا، از طریق این worker deviceها هدایت میشن.
با وجود لوود هنگام بوت، موتور تزریق کد در سطح کرنل تنها پس از باز شدن explorer.exe توسط سیستم فعال میشه. این طراحی، نظارت پرهزینه و پچ کردن رو تا زمانی که محیط دسکتاپ در دسترس قرار بگیره به تعویق میندازه و از تأثیر منفی غیرضروری روی عملکرد اصلی بوت جلوگیری میکنه.
هدفگیری دقیق از طریق شواهد کامپایلر اینتل
پس از فعالسازی، fast16.sys روی فایلهای اجرایی تمرکز میکنه. یک فایل در صورتی هدف معتبر محسوب میشه که دو شرط رو داشته باشه:
- نام فایل به exe. ختم بشه.
- بلافاصله پس از آخرین هدر بخش PE، یک رشته اسکی قابل چاپ وجود داشته باشد که با Intel شروع میشه.
این منطق انتخاب، فایلهای اجرایی رو هدف قرار میده که با کامپایلر Intel C/C++ کامپایل شدن، چرا که این کامپایلر اغلب متاداده های خودش رو در اون ناحیه قرار میداد. این موضوع نشان میده که توسعهدهندگان میدونستن نرمافزار هدف اونا با این زنجیره ابزار ساخته شده.
برای فایلهایی که این شرایط رو دارن، درایور یک اصلاح هدر PE رو در حافظه انجام میده. این درایور دو بخش اضافی به نامهای xdata. و pdata. رو تزریق میکنه و اونا رو با بایتهایی از بخش کد اصلی پر میکنه، تعداد بخشها رو افزایش میده و یک کپی تمیز از کد رو نگه میداره. هدف احتمالی این کار، افزایش پایداری در عین حفظ امکان پچ کردن گسترده است، اگرچه بدون شناسایی فایلهای باینری اصلی هدف، این موضوع همچنان یک فرضیه آگاهانه باقی میمونه.
پچ کردن مبتنی بر رول و خرابکاری در محاسبات FPU
موتور پچ کردن یک ابزار اسکن و اصلاح حداقلی، بهینهسازیشده برای عملکرد و حالت است. این موتور با مجموعهای از ۱۰۱ رول پیکربندی میشه که هر کدام شامل منطق تطبیق الگو و جایگزینی هستن. برای حفظ عملکرد، این موتور:
- از یک آرایه توزیع ۲۵۶ بایتی استفاده میکنه و تنها بایتهای آغازین تعداد کمی از الگوهای منحصربهفرد رو علامتگذاری میکنه.
- امکان استفاده از کاراکترهای wildcard رو در داخل الگوها فراهم میکنه تا یک قاعده واحد بتونه چندین نسخه بهینهسازیشده توسط کامپایلر رو از یک کد مشابه، پوشش بده.
- از پرچمهای وضعیت پشتیبانی میکنه که برخی قواعد میتونن تنظیم یا بررسی کنن و امکان توالیهای اصلاح چندمرحلهای مشابه آنچه در موتورهای اسکن آنتیویروس پیشرفته استفاده میشه رو فراهم میکنه.
بیشتر الگوهای پچ شده با کد استاندارد x86 که برای ربودن یا تأثیرگذاری بر جریان اجرا استفاده میشه، مطابقت دارن. اما یک بلوک تزریق، متفاوت است. این بلوک، یک توالی بزرگتر و پیچیده از دستورالعملهای واحد ممیز شناور (FPU) است که به محاسبات دقیق و مقیاسبندی مقادیر در آرایههای داخلی اختصاص داره. این کد یک تابع محاسبات ریاضی مستقل است و هیچ ارتباطی با ربودن جریان کد یا هر نوع تزریق کد مخرب معمولی دیگه نداره.
برای درک اینکه درایور انتظار دیدن چه چیزی رو داشته، محققا قواعد پچ کردن رو به امضاهای YARA هگزادسیمال تبدیل کردن و اونارو در برابر یک مجموعه بزرگ و متناسب با اون دوره زمانی اجرا کردن. نتایج، نرخ تطابق بسیار پایینی رو نشون داده: کمتر از ده فایل با دو یا چند الگو مطابقت داشتن. با این حال، اون تطابقها یک زمینه مشترک واضح داشتن. اونا ابزارهای محاسبات دقیق در حوزههای تخصصی مانند مهندسی عمران، فیزیک و شبیهسازیهای فرآیندهای فیزیکی بودن.
پچ FPU در fast16.sys برای خراب کردن این روالها به شکلی کنترلشده و تولید خروجیهای جایگزین نوشته شده بود. این موضوع، fast16 رو از قلمرو ابزارهای جاسوسی عمومی خارج کرده و در دسته خرابکاری استراتژیک قرار میده. این چارچوب با وارد کردن خطاهای کوچک اما سیستماتیک در محاسبات دنیای واقعی، میتونست برنامههای تحقیقات علمی رو تضعیف یا کند کنه، سیستمهای مهندسیشده رو در طول زمان مستهلک کنه یا حتی به آسیبهای فاجعهبار منجر بشه.
چنین عملیات خرابکارانهای با تأیید محاسبات روی یک سیستم جداگانه خنثی میشه. در محیطی که چندین سیستم از یک شبکه و وضعیت امنیتی مشترک برخوردار بودن، ماژول حامل کرممانند، ماژول درایور مخرب رو روی اون سیستمها هم مستقر میکرد و احتمال اینکه یک محاسبه مستقل، نتیجه متفاوتی با خروجی خرابشده داشته باشه رو کاهش میداد.
در حال حاضر، محققا نتونستن تمام فایلهای باینری هدف رو شناسایی کنن تا ماهیت خرابکاری مورد نظر رو درک کنن. محققا از مشارکت جامعه بزرگتر تحقیقات امنیت اطلاعات استقبال کردن و رولهای YARA برای شکار این الگوها رو در ضمیمه پایان گزارش قرار دادن.
موتور پچ کردن دادهها
حتی پس از تحلیل عمیق، درایور fast16 به طرز فریبندهای ساده به نظر میرسه. زیر اون کد کمحجم، یک موتور درونحافظهای مبتنی بر رول نهفته است که بیسروصدا کدهای اجرایی رو هنگام خونده شدن از روی دیسک، پچ میکنه.
این موتور روی مجموعهای از بیش از صد رول تطبیق الگو و یک جدول توزیع کوچک متکی است تا فقط بایتهایی رو بررسی کنه که احتمالاً مهم هستن. بیشتر الگوها با دستورالعملهای معمولی x86 مطابقت دارن، اما یکی از اونا متمایز است: یک بلوک بزرگتر از کد ممیز شناور (FPU) که به محاسبات دقیق اختصاص داره. این روال، مقادیر رو در سه آرایه داخلی که به تابع ارسال میشن، مقیاسبندی میکنه و محاسبات رو به شکلی نامحسوس تغییر میده.

بدون دونستن اینکه دقیقاً چه فایلهای باینری و چه وظایف کاری اصلاح میشن، نمیشه بطور کامل فهمید که این آرایهها چه چیزی رو نشان میدن. محققا اعلام کردن که فقط میدونن که هدف، دستکاری نتایج عددی است، نه دسترسی غیرمجاز، انتشار بدافزار یا سایر اهداف رایج بدافزاری.
اهداف پچ کردن
بهترین سرنخهای محققا درباره قربانیان مورد نظر، از تطبیق این الگوها با مجموعههای نرمافزاری بزرگ و متناسب با اون دوره زمانی بدست میاد. قویترین همپوشانیها به سه مجموعه مهندسی و شبیهسازی با دقت بالا از اواسط دهه ۲۰۰۰ اشاره داره: LS-DYNA 970، PKPM و پلتفرم مدلسازی هیدرودینامیکی MOHID. همه اینها برای سناریوهایی مانند تست تصادف، تحلیل سازهای و مدلسازی زیستمحیطی استفاده میشن.
بویژه LS-DYNA در گزارشهای عمومی درباره تخلفات مشکوک ایران از بخش T برجام، در مطالعات مربوط به مدلسازی کامپیوتری مرتبط با توسعه تسلیحات هستهای ذکر شده.

ردپای کامپایلر و توسعهدهندگان
محققا همانطور که به دنبال درک ردپای این مجموعه غیرعادی از کامپوننتها بودن، متوجه یک نکته عجیب شدن. رشتههایی به شکل @(#)par.h Revision:1.3Revision:1.3 در داخل فایلهای باینری به یک قرارداد غیرمعمول سورس کنترل اشاره داره. پیشوند @(#) مشخصه ابزارهای اولیه Unix Source Code Control System (SCCS) یا Revision Control System (RCS) از دهههای ۱۹۷۰ و ۱۹۸۰ است. این نشانگرها روی اجرا تأثیری ندارن و در درایورهای مدرن کرنل ویندوز بی استفاده هستن.
یافتن آثار SCCS/RCS در کد ویندوز در اواسط دهه ۲۰۰۰ نادر است. این موضوع قویاً نشان میده که نویسندگان این چارچوب، توسعهدهندگان معمولی صرفاً ویندوزی نبودن. در عوض، به نظر میرسه اونا مهندسانی با سابقه طولانی بودن که فرهنگ و زنجیره ابزارشان از محیطهای قدیمیتر و با امنیت بالای یونیکس می اومد؛ محیطهایی که اغلب با کارهای دولتی یا در سطح نظامی مرتبط هستن. این جزئیات، این دیدگاه رو تقویت میکنه که fast16 از یک برنامه توسعهی بلندمدت و با منابع فراوان اومده.
یک فسیل دیجیتال با پیامدهای مدرن
فایل svcmgmt.exe تقریباً یک دهه پیش روی VirusTotal آپلود شد. این فایل همچنان تقریباً هیچ شناساییای دریافت نمیکنه: یک موتور اون رو بطور کلی مخرب طبقهبندی میکنه، اون هم با اطمینان محدود. برای یک حامل مخفیکار و خود-تکثیر که یکی از پیچیدهترین درایورهای خرابکار دوران خودش رو مستقر میکنه، این سابقه شناسایی قابل توجه است.
fast16 همراه با ظهورش در امضاهای Territorial Dispute (TeDi) متعلق به افشاگری Shadow Brokers، محققا رو وادار میکنه تا درک تاریخی خود از جدول زمانی توسعه عملیاتهای جدی خرابکاری سایبری مخفی رو دوباره ارزیابی کنن. این کد نشان میده که:
- خرابکاری سایبری در سطح دولتی علیه اهداف فیزیکی، تا اواسط دهه ۲۰۰۰ کاملاً توسعه یافته و مستقر شده بود.
- موتورهای اسکریپتنویسی جاسازی شده، هدفگیری محدود مبتنی بر کامپایلر و پچ کردن در سطح کرنل، یک معماری منسجم رو تشکیل میدادن که بسیار جلوتر از خانوادههای شناختهشدهتر بود.
- برخی از مهمترین قابلیتهای تهاجمی در این اکوسیستم ممکن است هنوز در مجموعهها بهعنوان نمونههای «قدیمی اما جالب» نشسته باشن، بدون اینکه زمینه کافی برای برجسته کردن اهمیت واقعیشان وجود داشته باشه.
در داخل این عملیات، نشان تجاری بسیار کمی به جا مانده است. یکی از معدود برچسبهای قابل خواندن برای انسان، طعنهآمیز و فروتنانه است:
|
1 2 3 |
*** اینجا چیزی برای دیدن نیست – برید پی کارتون *** *** Nothing to see here – carry on *** |
برای سالهای متمادی، هیچ گزارش عمومی، هیچ کمپین نامگذاریشده و هیچ حادثه بزرگی به این چارچوب مرتبط نشد.
در تصویر بزرگتر تکامل APTها، fast16 شکاف بین برنامههای توسعه اولیه و عمدتاً نامرئی و جعبه ابزارهای مبتنی بر Lua و LuaJIT که بعدها مستندتر شدن رو پر میکنه. این چارچوب، یک نقطه مرجع برای درک این که بازیگران پیشرفته چگونه به ایمپلنتهای بلندمدت، خرابکاری و توانایی یک دولت برای تغییر شکل دنیای فیزیکی از طریق نرمافزار فکر میکنن، محسوب میشه. fast16 منادی خاموش شکل جدیدی از حکمرانی دولتی بود که در پنهانکاری خودش تا به امروز، موفق عمل کرده.
ضمیمه: الگوهای موتور پچ کردن و نامزدهای هدف
الگوهای تطبیق استخراجشده
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
7C 02 89 C6 89 35 ?? ?? ?? ?? 89 B4 24 D0 0F 8F A5 00 00 00 A1 ?? ?? ?? ?? 83 F8 14 7D 0D 39 2D ?? ?? ?? ?? 0F 84 F4 00 00 00 8B 35 ?? ?? ?? ?? 2B 35 8B 4D 10 C1 E2 04 8B 19 83 EA 30 8B CB 49 8B 45 44 6B 00 04 D9 05 ?? ?? ?? ?? D8 B0 E9 7E 04 00 00 8B 74 24 1C 8B 54 24 14 85 83 39 63 0F 85 21 03 00 00 8B EE 85 F6 0F 75 2C 89 35 ?? ?? ?? ?? 89 05 ?? ?? ?? ?? 89 15 89 55 F4 8B F9 8B D3 03 FB C1 E2 02 89 35 DF E0 F6 C4 41 A1 ?? ?? ?? ?? 74 5A FF 35 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9D D9 E0 D9 1D ?? ?? ?? ?? 8B 4C 6A 46 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 6A 03 D8 05 ?? ?? ?? ?? D9 55 00 9C D8 1D ?? ?? ?? ?? DF E0 F6 C4 41 B8 00 00 00 00 75 05 B8 01 00 00 00 85 C0 74 11 6A 29 0F 0F 94 C0 23 C3 33 D2 DD 05 ?? ?? ?? ?? 8B 05 ?? ?? ?? ?? 8B 15 ?? ?? ?? ?? 0F AF 05 ?? ?? ?? ?? 8B 1D ?? ?? ?? ?? 0F AF 15 68 28 00 00 00 57 E8 ?? ?? ?? ?? 8B 1D ?? ?? ?? ?? 8B 35 ?? ?? ?? ?? 0F AF 1D ?? ?? ?? ?? 8B 3D ?? ?? ?? ?? 8B 05 8B 55 88 8B 5D B0 83 7D 84 01 55 8B EC 83 EC 2C 33 D2 53 56 57 8B 48 89 84 24 9C 00 00 00 4B 0F 8F 79 FF FF FF 8B 5D 0C 8B 55 08 8B 36 8B 83 EC 04 53 E8 ?? ?? ?? ?? EB 09 83 EC 04 53 D8 E1 D9 5D FC D9 04 55 8B EC 83 EC 14 53 56 57 8B 3D ?? ?? ?? ?? 8B 0D 89 4D C8 8B FB 8B C8 8B 4C 24 0C 8B 01 83 F8 63 83 3D ?? ?? ?? ?? 00 0F 84 70 BD FF FF BE 07 00 00 00 BF 04 00 00 00 BB 02 00 00 00 8D 1D ?? ?? ?? ?? 52 8D 05 ?? ?? ?? ?? 51 8D 15 ?? ?? ?? ?? 8D 0D ?? ?? ?? ?? 53 50 52 51 56 57 E8 ?? ?? ?? ?? 83 C4 38 EB 0E 83 EC 04 85 DB 8B 55 D4 75 2C 89 35 75 18 8D 35 ?? ?? ?? ?? 56 8D 3D 8D 1D ?? ?? ?? ?? 52 8D 05 ?? ?? ?? ?? 51 8D 15 ?? ?? ?? ?? 8D 0D ?? ?? ?? ?? 53 50 52 51 56 57 E8 ?? ?? ?? ?? EB 0E 83 EC 04 56 57 53 E8 95 D8 34 85 ?? ?? ?? ?? 8B 44 ?? ?? 8B CA 8D 04 BD ?? ?? ?? ?? 03 DF 8B EE 85 F6 0F 8E ?? ?? ?? ?? 8D 1C BD D9 04 9D ?? ?? ?? ?? 83 ED 04 05 10 00 00 00 D8 0D C2 08 00 A1 ?? ?? ?? ?? 8B 0C 85 ?? ?? ?? ?? 89 0E 2B DA 89 3C 03 83 3D D9 5D C0 8B 4D C0 D9 45 E0 89 0E 8B 05 ?? ?? ?? ?? 8B 0D ?? ?? ?? ?? 0F 85 7E 00 00 00 0F AF 15 8B 55 30 8B 75 2C D8 C9 8B 45 30 8B 75 38 8B 4D 34 D8 C9 8B 55 8B EC 83 EC 2C B9 46 00 00 00 53 56 57 8B 8B 5D B0 0F 85 ?? ?? ?? ?? 8D 34 9D ?? ?? ?? ?? 8D 14 9D B9 01 00 00 00 C1 E7 02 8B BF ?? ?? ?? ?? 8B D7 85 FF 2B FB 8B DE C1 E3 02 89 7D A0 03 5D A0 8B D9 5D 00 D9 03 D8 0D ?? ?? ?? ?? D8 0D |
نامزد هدف پچ شدن شماره ۱: مجموعه نرمافزاری LS-DYNA 970
مجموعه LS-DYNA یک نرمافزار قدرتمند شبیهسازی مهندسی است که برای تحلیل رفتار مواد و سازهها تحت شرایط بحرانی استفاده میشه. مهندسان از این ابزار برای شبیهسازی رویدادهای فیزیکی و مدلسازی شرایط مختلف استفاده میکنن و به این ترتیب از انجام آزمایشهای پرهزینه یا خطرناک اجتناب میکنن.
LS-DYNA برای مدیریت رویدادهای داینامیک و پیچیدهای طراحی شده که با سرعت بالا رخ میدن؛ مانند تصادفات خودرو، انفجارها، ضربات، شکلدهی فلزات و فرآیندهای تولیدی. این نرمافزار معمولاً توسط شرکتهای خودروسازی، مهندسی هوافضا، تحقیقات دفاعی و نظامی و همچنین کاربردهای تولیدی و علم مواد، استفاده میشده. LS-DYNA از سال ۱۹۷۶ در حال توسعه بوده.
|
1 2 3 4 5 6 |
MD5:1d2f32c57ae2f2013f513d342925e972 SHA1:2fa28ef1c6744bdc2021abd4048eefc777dccf22 SHA256:5966513a12a5601b262c4ee4d3e32091feb05b666951d06431c30a8cece83010 File Size:5,225,591 bytes Link time:2003-10-24 16:34:57 UTC File Type:PE32 executable for MS Windows 4.00 (console), Intel i386, 7 sections |
نامزد هدف پچ شدن شماره ۲: مجموعه نرمافزاری PKPM
نرمافزار Practical Structural Design and Construction Software (PKPM) یک مجموعه نرمافزاری CAD مهندسی سازه است که به طور گسترده در چین برای طراحی ساختمان استفاده میشه. این مجموعه شامل چندین ماژول اجرایی است که کل چرخه عمر طراحی سازه ساختمان رو پوشش میده؛ از جانمایی سازه و طراحی برش بتن برای تیرها و ستونها گرفته تا تحلیل لرزهای، باد و بار برای ساختمانهای بلند.
موتور اصلی تحلیل PKPM با نام SATWE (Space Analysis of Tridimensional Wired Elements)، تحلیل سازهای سهبعدی رو در میان طبقات، تیرها، ستونها، دیوارها و قابها انجام میده. PKPM کاربرد گستردهای در مهندسی عمران چین داره.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
PKPM Concrete Code Shear Design Module MD5:af4461a149bfd2ba566f2abefe7dcde4 SHA1:586edef41c3b3fba87bf0f0346c7e402f86fc11e SHA256:09ca719e06a526f70aadf34fb66b136ed20f923776e6b33a33a9059ef674da22 File Size:7716864 bytes File Type:PE32 executable for MS Windows 4.00 (GUI), Intel i386, 6 sections Link Time:2011-08-26 10:58:17 UTC PKPM Building Structure CAD Modules MD5:49a8934ccd34e2aaae6ea1e6a6313ffe SHA1:3ce5b358c2ddd116ac9582efbb38354809999cb5 SHA256:8b018452fdd64c346af4d97da420681e2e0b55b8c9ce2b8de75e330993b759a0 File Size:11849728 bytes File Type:PE32 executable for MS Windows 4.00 (GUI), Intel i386, 4 sections Link Time:2005-12-01 08:35:46 UTC MD5:e0c10106626711f287ff91c0d6314407 SHA1:650fc6b3e4f62ecdc1ec5728f36bb46ba0f74d05 SHA256:06361562cc53d759fb5a4c2b7aac348e4d23fe59be3b2871b14678365283ca47 File Size:16355328 bytes File Type:PE32 executable for MS Windows 4.00 (GUI), Intel i386, 5 sections Link Time:2012-07-07 08:47:11 UTC PKPM SATWE Structural Analysis Engine MD5:2717b58246237b35d44ef2e49712d3a2 SHA1:d475ace24b9aedebf431efc68f9db32d5ae761bd SHA256:bd04715c5c43c862c38a4ad6c2167ad082a352881e04a35117af9bbfad8e5613 File Size:9908224 bytes File Type:PE32 executable for MS Windows 4.00 (GUI), Intel i386, 6 sections Link Time:2011-01-12 06:37:39 UTC MD5:daea40562458fc7ae1adb812137d3d05 SHA1:1ce1111702b765f5c4d09315ff1f0d914f7e5c70 SHA256:da2b170994031477091be89c8835ff9db1a5304f3f2f25344654f44d0430ced1 File Size:8454144 bytes File Type:PE32 executable for MS Windows 4.00 (GUI), Intel i386, 7 sections Link Time:2012-11-29 03:10:12 UTC MD5:2740a703859cbd8b43425d4a2cacb5ec SHA1:ca665b59bc590292f94c23e04fa458f90d7b20c9 SHA256:aeaa389453f04a9e79ff6c8b7b66db7b65d4aaffc6cac0bd7957257a30468e33 File Size:16568320 bytes File Type:PE32 executable for MS Windows 4.00 (GUI), Intel i386, 5 sections Link Time:2014-12-30 03:23:43 UTC MD5:ebff5b7d4c5becb8715009df596c5a91 SHA1:829f8be65dfe159d2b0dc7ee7a61a017acb54b7b SHA256:37414d9ca87a132ec5081f3e7590d04498237746f9a7479c6b443accee17a062 File Size:8089600 bytes File Type:PE32 executable for MS Windows 4.00 (GUI), Intel i386, 6 sections Link Time:2009-04-22 01:46:46 UTC MD5:cb66a4d52a30bfcd980fe50e7e3f73f0 SHA1:e6018cd482c012de8b69c64dc3165337bc121b86 SHA256:66fe485f29a6405265756aaf7f822b9ceb56e108afabd414ee222ee9657dd7e2 File Size:9219072 bytes File Type:PE32 executable for MS Windows 4.00 (GUI), Intel i386, 8 sections Link Time:N/A Additional PKPM CAD files MD5:075b4aa105e728f2b659723e3f36c72c SHA1:145ef372c3e9c352eaaa53bb0893749163e49892 SHA256:c11a210cb98095422d0d33cbd4e9ecc86b95024f956ede812e17c97e79591cfa File Size:6852608 bytes File Type:PE32 executable for MS Windows 4.00 (GUI), Intel i386, 6 sections Link Time:2012-06-18 10:01:54 UTC MD5:cf859f164870d113608a843e4a9600ab SHA1:952ed694b60c34ba12df9d392269eae3a4f11be4 SHA256:7e00030a35504de5c0d16020aa40cbaf5d36561e0716feb8f73235579a7b0909 File Size:8392704 bytes File Type:PE32 executable for MS Windows 4.00 (GUI), Intel i386, 6 sections Link Time:2012-11-29 03:10:12 UTC |
نامزد هدف پچ شدن شماره ۳: مجموعه نرمافزاری MOHID
Modelo Hidrodinâmico (واژه پرتغالی به معنای Hydrodynamic Model یا MOHID) یک سیستم مدلسازی آب متنباز است که توسط MARETEC (مرکز تحقیقات فناوری دریایی و محیطی) در انستیتوی عالی فنی لیسبون پرتغال توسعه یافته. این نرمافزار برای مدلسازی آبهای دریایی و ساحلی استفاده میشه و حوزههایی چون هیدرودینامیک، شبیهسازی کیفیت آب، انتقال رسوبات، مدلسازی نشت نفت و ردیابی ذرات لاگرانژی رو پوشش میده.
در حال حاضر، محققا نمیتونن هدف رو به طور قطعی شناسایی کنن و از مشارکت جامعه تحقیقاتی برای کمک به درک اثرات مورد نظر از حمله به این نرمافزار استقبال میکنن.
|
1 2 3 4 5 6 |
MD5:f4dbbb78979c1ee8a1523c77065e18a5 SHA1:9e089a733fb2740c0e408b2a25d8f5a451584cf6 SHA256:e775049d1ecf68dee870f1a5c36b2f3542d1182782eb497b8ccfd2309c400b3a File Size:5443584 bytes File Type:PE32 executable for MS Windows 4.00 (console), Intel i386, 3 sections Link Time:2002-10-18 09:29:54 UTC |
IOCهای گزارش:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Name:fast16.sys MD5:0ff6abe0252d4f37a196a1231fae5f26 SHA1:92e9dcaf7249110047ef121b7586c81d4b8cb4e5 SHA256:07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529 Name:connotify.dll MD5:410eddfc19de44249897986ecc8ac449 SHA1:675cb83cec5f25ebbe8d9f90dea3d836fcb1c234 SHA256:8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9 Name:svcmgmt.exe MD5:dbe51eabebf9d4ef9581ef99844a2944 SHA1:de584703c78a60a56028f9834086facd1401b355 SHA256:9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525 |
رولهای YARA :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
import "pe" rule apt_fast16_carrier { meta: author = "SentinelLABS/vk" date = "2025-04-07" description = "Catches fast16 carrier, its Lua payload, and plaintext variants" hash = "9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525" strings: $lua_magic = { 1B 4C 75 61 } //Lua bytecode magic //Decrypted strings $s1 = "build_wormlet_table" $s2 = "unpropagate" $s3 = "worm_install_failure_action" $s4 = "implant_install_failure_action" $s5 = "scm_wormlet_propagate_system" $s6 = "scm_wormlet_install" $s7 = "scm_wormlet_init" $s8 = "scm_copy_payload" $s9 = "get_logged_on_user" $s10 = "logged_on_program" $s11 = "phase_1_prop_delay" $s12 = "connotify_pipename" $s13 = "cndll_internal_name" $s14 = "connotify_provider_key" $s15 = "check_implant_reg_values" $s16 = "set_implant_reg_values" $s17 = "install_implant" $s18 = "implant_installed" $s19 = "implant_internal_name" $s20 = "implant_files" $s21 = "implant_owner" $s22 = "install_worm" $s23 = "start_worm" $s24 = "implant_install_failure_action" $s25 = "worm_install_failure_action" $s26 = "ok_to_propagate" $s27 = "no_firewall_check" $s28 = "scm_wormlet" $s29 = "implant_install_failure_action" $s30 = "worm_install_failure_action" //Encrypted strings $e1 = { 98 18 A1 94 24 E3 A2 4C 61 C8 AE 04 DC 4E 03 CD 0D 9D F0 } $e2 = { E8 76 53 6D D4 B9 6E 28 6C 5D C2 } $e3 = { 7D B7 14 73 F0 C0 4D 53 BB F7 0A 4A 3A 63 05 92 EC 0A 11 BC 22 59 99 05 72 05 19 } $e4 = { 88 5F 1B E4 45 56 75 4B A5 3D 19 0B 3F 30 5A 85 E2 BD D0 E7 1C 13 D0 1D BD D8 CF A1 88 DB } $e5 = { 88 1E 54 4E 00 C1 EF 79 AA AD 9F 50 27 B5 B8 4C 32 06 D2 7B 32 E3 AF D6 DC D2 BB 83 } $e6 = { 39 F9 BC E9 27 70 C4 3E 04 2A 7D E1 68 67 B7 ED D4 41 6A } $e7 = { 13 FC 24 20 1F 20 74 1B E5 5F 59 56 D7 61 3E BD } $e8 = { EF 94 49 63 33 41 62 F2 26 A6 48 DE 6D 7B A4 CF } $e9 = { 36 5F 5E E5 C1 1A 17 6A 4E B9 94 52 1B DC C6 60 CA C7 } $e10 = { B3 9C A3 F1 12 CC 52 74 34 5F 87 43 32 21 36 7B 2A } $rk1 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Symantec\\InstalledApps" $rk2 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Sygate Technologies, Inc.\\Sygate Personal Firewall" $rk3 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\TrendMicro\\PFW" $rk4 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Zone Labs\\TrueVector" $rk5 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\F-Secure" $rk6 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Network Ice\\BlackIce" $rk7 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\McAfee.com\\Personal Firewall" $rk8 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\ComputerAssociates\\eTrust EZ Armor" $rk9 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\RedCannon\\Fireball" $rk10 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Kerio\\Personal Firewall 4" $rk11 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\KasperskyLab\\InstalledProducts\\Kaspersky Anti-Hacker" $rk12 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Tiny Software\\Tiny Firewall" $rk13 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Look n Stop 2.05p2" $rk14 = "HKEY_CURRENT_USER\\SOFTWARE\\Soft4Ever" $rk15 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Norman Data Defense Systems" $rk16 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Agnitum\\Outpost Firewall" $rk17 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Panda Software\\Firewall" $rk18 = "HKEY_LOCAL_MACHINE\\SOFTWARE\\InfoTeCS\\TermiNET" $c1 = { 86 3A D6 02 } // A crypto constant $c2 = { 01 E1 F5 05 } // A crypto constant $code1 = { 8B 00 // mov eax, [eax] 2D 2F 34 21 33 // sub eax, 3321342Fh } // Code to deobfuscate real storage container length $stor1 = { CC 00 00 00 05 00 00 00 66 69 6C 65 00 CD 00 00 00 } //Storage record with file string condition: ( uint16(0)==0x5a4d and filesize < 10MB and ( ( 3 of ($s*) ) or ( 12 of ($rk*) ) or ( any of ($e*) ) or ( all of ($c*) and @c2-@c1 < 0x100 ) or ( $code1 ) or ( $stor1 )) ) or ( $lua_magic and 7 of ($s*) ) } |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
rule apt_fast16_driver { meta: author = "SentinelLABS/vk" last_modified = "2026-04-15" description = "Catches fast16 driver or related project files" hash = "07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529" strings: $a1 = "@(#)foo.c : " $a2 = "@(#)par.h : " $a3 = "@(#)pae.h : " $a4 = "@(#)fao.h : " $a5 = "@(#)uis.h : " $a6 = "@(#)ree.h : " $a7 = "@(#)fir.h : " $a8 = "@(#)fir.c : " $a9 = "@(#)par.h : " $a10 = "@(#)pae.h : " $a11 = "@(#)fao.h : " $a12 = "@(#)uis.h : " $a13 = "@(#)ree.h : " $a14 = "@(#)fir.h : " $a15 = "@(#)myy.h : " $a16 = "@(#)fic.h : " $a17 = "@(#)ree.h : " $a18 = "@(#)ree.c : " $dev1 = "\\Device\\fast16" $dev2 = "\\??\\fast16" $pdb1 = "C:\\buildy\\" $pdb2 = "driver\\fd\\i386\\fast16.pdb" $devtype = { 68 7C A5 00 00 } // push 0A57Ch ; DeviceType $api1 = {50 C6 45 D4 16 C6 45 D5 2B C6 45 D6 12 C6 45 D7 3F C6 45 D8 3F C6 45 D9 3C C6 45 DA 30 C6 45 DB 32 C6 45 DC 27 C6 45 DD 36 C6 45 DE 03 C6 45 DF 3C C6 45 E0 3C C6 45 E1 3F C6 45 E2 53 } // push xored "ExAllocatePool" $api2 = {C6 45 A8 16 C6 45 A9 2B C6 45 AA 12 C6 45 AB 3F C6 45 AC 3F C6 45 AD 3C C6 45 AE 30 C6 45 AF 32 C6 45 B0 27 C6 45 B1 36 C6 45 B2 03 C6 45 B3 3C C6 45 B4 3C C6 45 B5 3F C6 45 B6 04 C6 45 B7 3A C6 45 B8 27 C6 45 B9 3B C6 45 BA 07 C6 45 BB 32 C6 45 BC 34 C6 45 BD 53} // push xored "ExAllocatePoolWithTag" $api3 = {C6 45 E4 16 C6 45 E5 2B C6 45 E6 15 C6 45 E7 21 C6 45 E8 36 C6 45 E9 36 C6 45 EA 03 C6 45 EB 3C C6 45 EC 3C C6 45 ED 3F C6 45 EE 53} // push xored "ExFreePool" $api4 = {C6 45 C0 16 C6 45 C1 2B C6 45 C2 15 C6 45 C3 21 C6 45 C4 36 C6 45 C5 36 C6 45 C6 03 C6 45 C7 3C C6 45 C8 3C C6 45 C9 3F C6 45 CA 04 C6 45 CB 3A C6 45 CC 27 C6 45 CD 3B C6 45 CE 07 C6 45 CF 32 C6 45 D0 34 C6 45 D1 53} // push xored "ExFreePoolWithTag" condition: filesize < 10MB and ( uint16(0)==0x5a4d and ( ( 2 of ($pdb*) ) or ( $pdb1 and 1 of ($a*) ) or ( #devtype == 3 and pe.machine == pe.MACHINE_I386 and pe.subsystem == pe.SUBSYSTEM_NATIVE) or any of ($api*) or 2 of ($dev*))) or ( 6 of ($a*)) } |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
rule clean_fast16_patchtarget { meta: author = "SentinelLABS/vk" created = "2026-04-15" last_modified = "2026-05-07" description = "Detects fast16 clean patch targets. Patterns extracted directly from fast16.sys's runtime rule engine. Improved version of the rule" hash = "07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529" strings: $el2 = { 7C 02 89 C6 89 35 ?? ?? ?? ?? 89 B4 24 D0 } $el3 = { 0F 8F A5 00 00 00 A1 ?? ?? ?? ?? 83 F8 14 7D 0D } $el16 = { 39 2D ?? ?? ?? ?? 0F 84 F4 00 00 00 8B 35 ?? ?? ?? ?? 2B 35 } $el26 = { 8B 4D 10 C1 E2 04 8B 19 83 EA 30 8B CB 49 } $el31 = { 8B 45 44 6B 00 04 D9 05 ?? ?? ?? ?? D8 B0 } $el32 = { E9 7E 04 00 00 8B 74 24 1C 8B 54 24 14 85 } $el33 = { 83 39 63 0F 85 21 03 00 00 8B EE 85 F6 0F } $el43 = { 75 2C 89 35 ?? ?? ?? ?? 89 05 ?? ?? ?? ?? 89 15 } $el45 = { 89 55 F4 8B F9 8B D3 03 FB C1 E2 02 89 35 } $el49 = { DF E0 F6 C4 41 A1 ?? ?? ?? ?? 74 5A } $el51 = { FF 35 ?? ?? ?? ?? E8 ?? ?? ?? ?? 9D D9 E0 D9 1D ?? ?? ?? ?? 8B 4C } $el53 = { 6A 46 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 6A 03 } $el56 = { D8 05 ?? ?? ?? ?? D9 55 00 9C } $el61 = { D8 1D ?? ?? ?? ?? DF E0 F6 C4 41 B8 00 00 00 00 75 05 B8 01 00 00 00 85 C0 74 11 6A 29 } $el80 = { 0F 0F 94 C0 23 C3 33 D2 } $el83 = { DD 05 ?? ?? ?? ?? 8B 05 ?? ?? ?? ?? 8B 15 ?? ?? ?? ?? 0F AF 05 ?? ?? ?? ?? 8B 1D ?? ?? ?? ?? 0F AF 15 } $el89 = { 68 28 00 00 00 57 E8 ?? ?? ?? ?? 8B 1D ?? ?? ?? ?? 8B 35 ?? ?? ?? ?? 0F AF 1D ?? ?? ?? ?? 8B 3D ?? ?? ?? ?? 8B 05 } $el96 = { 8B 55 88 8B 5D B0 83 7D 84 01 } $el97 = { 55 8B EC 83 EC 2C 33 D2 53 56 57 8B } $el0 = { 48 89 84 24 9C 00 00 00 4B 0F 8F 79 FF FF FF } $el4 = { 8B 5D 0C 8B 55 08 8B 36 8B } $el6 = { 83 EC 04 53 E8 ?? ?? ?? ?? EB 09 83 EC 04 53 } $el10 = { D8 E1 D9 5D FC D9 04 } $el12 = { 55 8B EC 83 EC 14 53 56 57 8B 3D ?? ?? ?? ?? 8B 0D } $el13 = { 89 4D C8 8B FB 8B C8 } $el14 = { 8B 4C 24 0C 8B 01 83 F8 63 } $el23 = { 83 3D ?? ?? ?? ?? 00 0F 84 70 BD FF FF } $el25 = { BE 07 00 00 00 BF 04 00 00 00 BB 02 00 00 00 } $el28 = { 8D 1D ?? ?? ?? ?? 52 8D 05 ?? ?? ?? ?? 51 8D 15 ?? ?? ?? ?? 8D 0D ?? ?? ?? ?? 53 50 52 51 56 57 E8 ?? ?? ?? ?? 83 C4 38 EB 0E 83 EC 04 } $el34 = { 85 DB 8B 55 D4 75 2C 89 35 } $el36 = { 75 18 8D 35 ?? ?? ?? ?? 56 8D 3D } $el37 = { 8D 1D ?? ?? ?? ?? 52 8D 05 ?? ?? ?? ?? 51 8D 15 ?? ?? ?? ?? 8D 0D ?? ?? ?? ?? 53 50 52 51 56 57 E8 ?? ?? ?? ?? EB 0E 83 EC 04 56 57 53 E8 95 } $el39 = { D8 34 85 ?? ?? ?? ?? 8B 44 ?? ?? 8B CA } $el40 = { 8D 04 BD ?? ?? ?? ?? 03 DF } $el41 = { 8B EE 85 F6 0F 8E ?? ?? ?? ?? 8D 1C BD } $el42 = { D9 04 9D ?? ?? ?? ?? 83 ED 04 05 10 00 00 00 D8 0D } $el59 = { C2 08 00 A1 ?? ?? ?? ?? 8B 0C 85 ?? ?? ?? ?? 89 0E } $el63 = { 2B DA 89 3C 03 83 3D } $el68 = { D9 5D C0 8B 4D C0 D9 45 E0 89 0E } $el70 = { 8B 05 ?? ?? ?? ?? 8B 0D ?? ?? ?? ?? 0F 85 7E 00 00 00 0F AF 15 } $el81 = { 8B 55 30 8B 75 2C D8 C9 8B 45 30 } $el94 = { 8B 75 38 8B 4D 34 D8 C9 8B } $el99 = { 55 8B EC 83 EC 2C B9 46 00 00 00 53 56 57 8B } $el30 = { 8B 5D B0 0F 85 ?? ?? ?? ?? 8D 34 9D ?? ?? ?? ?? 8D 14 9D } $el73 = { B9 01 00 00 00 C1 E7 02 8B BF ?? ?? ?? ?? 8B D7 85 FF } $el75 = { 2B FB 8B DE C1 E3 02 89 7D A0 03 5D A0 8B } $el46 = { D9 5D 00 D9 03 D8 0D ?? ?? ?? ?? D8 0D } condition: filesize < 200MB and uint16(0) == 0x5A4D and 2 of them } |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
rule apt_fast16_patch { meta: author = "SentinelLABS/vk" last_modified = "2026-04-15" description = "Detects the fast16 patch code. May be present in statically patched files or memory dumps." hash = "0ff6abe0252d4f37a196a1231fae5f26" strings: $p1 = { 55 88 50 53 52 51 8D 64 24 94 DD 34 24 51 E8 ?? ?? ?? ?? 59 81 E9 14 00 00 00 8B 99 50 0F 00 00 83 FB 28 76 04 6A 31 } $p2 = { 59 81 E9 EE 00 00 00 6A 02 BB B4 05 00 00 01 CB C6 03 EB 43 C6 03 15 8B 44 24 78 83 C0 07 89 81 EC 07 00 00 E9 BF 02 00 00 } $p3 = { 50 53 52 51 E8 ?? ?? ?? ?? 59 81 E9 78 01 00 00 D9 99 C4 0F 00 00 8D 64 24 94 DD 34 24 FF B1 C4 0F 00 00 6A 02 EB 2D } condition: any of them } |
نمونه های این بدافزار برای تحلیل بیشتر:
اگر علاقمند به تحلیل و آنالیز بیشتر این بدافزار هستید، میتونید فایلهای اون رو از صفحه ی گیتهابمون دانلود کنید.