Thai Maliye Bakanlığı ağında Hermes gözetimsiz çalıştı

Anasayfa » Thai Maliye Bakanlığı ağında Hermes gözetimsiz çalıştı
Thai Maliye Bakanlığı ağında Hermes gözetimsiz çalıştı

Thai Maliye Bakanlığı’nın ağına giren bir saldırgan, Hermes adlı açık kaynak yapay zekâ ajanını gözetimsiz modda çalıştırarak içeride uzun süreli keşif yaptı. Araştırmacıların ortaya çıkardığı kayıtlara göre ajan, host’ları taradı, root erişimi açabilecek yolları kontrol etti, dosya sistemlerini inceledi ve 2012’ye kadar uzanan personel kayıtlarının bulunduğu klasörleri gezdi.

Saldırganın geride bıraktığı günlükler, dizin listeleme açık olan bir web sunucusunda bulundu. Tehdit istihbarat şirketi Hunt.io ve araştırmacı Bob Diachenko, bu sunucuda günlüklerle birlikte 585 dosya ve 470 MB’lık saldırı aracı da tespit etti.

Hermes, Nous Research tarafından geliştirilen ve normalde e-posta yönetimi, rutin işler ve Telegram ya da Slack üzerinden gelen komutları yerine getirmek için kullanılan açık kaynak bir asistan. Araç bir saldırı yazılımı değil; olayın merkezinde de Hermes’teki bir güvenlik açığı yok. Saldırganın kullandığı yolo modu ise belgelenmiş bir özellik ve komut satırı bayrağıyla etkinleştirilebiliyor. Bu olay, şimdiye kadar görülen yapay zekâ destekli saldırılardan farklı bir tablo çiziyor.

Anthropic’in geçen kasım ayında Claude Code kullanan Çin bağlantılı bir grubun casusluk faaliyetlerini açıkladığı örnekte saldırganlar modeli kandırmak zorundaydı ve şirket fark eder etmez hesapları kapatmıştı. Hermes’te ise ajan saldırganın kendi makinesinde çalışıyordu. Herhangi bir tedarikçi gözetimi yoktu, dolayısıyla kapatılacak bir hesap da bulunmuyordu.

İncelemeye göre saldırgan, ajan çalışmaya başlamadan önce sisteme zaten girmişti. Hunt.io, bakanlık sunucusuna yerleştirilmiş gizli bir web shell, adı verilmiş iç Hadoop sistemlerine karşı yazılmış script’ler ve posta testi yapan bir betik içine sabitlenmiş çalıntı mailbox parolaları buldu. Ancak geri kazanılan dosyalarda ağ dışına veri sızdırıldığına dair bir iz yer almıyor. Saldırganın ilk erişimi nasıl elde ettiği ise hâlâ bilinmiyor.

Thai Ulusal CERT ve ülkenin siber güvenlik kurumu 15 Temmuz’da bilgilendirildi. 24 Temmuz’da yapılan kontrolde iki kurumun da kamuya açık bir duyuru yayımlamadığı görüldü.

Saldırının en çarpıcı kısmı, otomasyonun değil insan aklının hedefe yönelik seçimler yapmasıydı. Hunt.io’nun analizinde, bakanlığın kendi bölüm kısaltmalarından üretilmiş bir parola listesi ve intranet içindeki sabit yollara işaret eden shellcode yer aldı. Operatörün script’leri, hedef ortamı tanıyarak özel olarak hazırlanmıştı.

Ajanın yaptığı işler ise tekrar eden operasyonlardan ibaretti: tarama çalıştırmak, çıktıyı okumak, sıradaki kontrolü belirlemek ve bir tarama daha başlatmak. Kayıtlarda yeni bir zafiyet bulduğuna ya da hedefi kendisinin seçtiğine dair bir veri yok. Komutların hiçbiri sıra dışı değildi. LinPEAS gibi Linux üzerinde yetki yükseltme izleri arayan standart araçlar, dosya ve izin taramaları, dizin gezintileri, bir insan operatörün de kolayca yazacağı komutlardı. Farkı yaratan nokta, her adımın ayrı ayrı onaya ihtiyaç duymamasıydı.

Hermes’te bu modu açmanın üç yolu var: başlatma sırasında --yolo bayrağı, oturum sırasında /yolo komutu ya da HERMES_YOLO_MODE=1 ortam değişkeni. Projenin yapılandırma rehberi, bu ayarın yalnızca güvenilen ve sanal ortamlarda kullanılmasını söylüyor. Yine de bir katman yerinde kaldı: sistemi silmeye yönelik komutları reddeden sert bir bloklist hâlâ aktifti. Operatörün kapattığı şey insan kontrolüydü, bütün güvenlik önlemleri değil.

Geri kazanılan beş call_00_*.txt dosyası, ajanın bakanlık sunucularında neler yaptığını tek tek gösteriyor. Kayıtlarda bir bakanlık host’una yönelik kernel güvenlik açığı taraması, ikinci bir LinPEAS çalıştırması, yükseltilmiş yetkiye sahip ikililerin aranması, dosya sistemi listesinin çıkarılması ve Teşkilat Başkanlık Ofisi’ne ait web kökünün özyinelemeli şekilde taranması yer alıyor. Bu klasörde Office dokümanları, performans değerlendirmeleri ve 2012’ye uzanan personel kayıtları bulunuyordu. Günlükler ajanın dizini okuduğunu gösteriyor, ancak dosyaların dizinden çıkışına dair bir iz vermiyor.

Aynı sunucuya verilen script de hazır bir paket değildi. Özelleştirilmiş linpeas.sh, üç farklı aileye yayılan dört 2026 Linux çekirdek açığını kontrol ediyordu: Copy Fail olarak izlenen CVE-2026-31431, Dirty Frag ailesindeki CVE-2026-43284 ve CVE-2026-43500, bir de DirtyClone olarak adlandırılan CVE-2026-43503. Bunların her biri, şartlar sağlandığında yerel kullanıcıya root verebiliyor. Dirty Frag ve DirtyClone için bunun önkoşulu CAP_NET_ADMIN. Bu açıkların tamamı operatör script’leri hazırlanırken haftalar önce duyurulmuştu. Geri kazanılan dosyalarda bakanlıkta hangi çekirdek sürümünün kullanıldığı belirtilmiyor ve bu dört açığın gerçekten çalıştırıldığı da görünmüyor. İlgili kayıtlar: https://nvd.nist.gov/vuln/detail/CVE-2026-31431, https://nvd.nist.gov/vuln/detail/CVE-2026-43284, https://nvd.nist.gov/vuln/detail/CVE-2026-43500, https://nvd.nist.gov/vuln/detail/CVE-2026-43503

Operatörün staging sunucusuna SSH ile bağlandığı IP adresi Hong Kong’daki 103.97.0[.]57 olarak kayda geçti. Ajanın web arayüzü parolasının içinde Çince “Leishen” kelimesi, yani şimşek tanrısı ifadesi yer alıyordu. Aynı sistemde FOFA adlı Çin merkezli varlık arama servisine ait bir anahtar da bulundu. Hunt.io, eldeki verilere dayanarak operatörün Çince konuştuğunu ya da dili akıcı kullandığını düşük ila orta güven seviyesinde değerlendiriyor; ancak herhangi bir gruba isim vermiyor.

Aynı sunucunun daha önce ShadowPad kontrolcüsü barındırdığı, şimdi ise VShell komut ve kontrol dinleyicisi çalıştırdığı da tespit edildi. Bakanlığa özgü bulguları kamuoyuyla paylaşan kaynaklar Hunt.io ve Bob Diachenko olmaya devam ediyor.

Hadoop tarafında ise işin omurgasını, bakanlığın büyük veri kümelerini depolayıp sorgulamak için kullandığı altyapı oluşturdu. hive_rce_py2.py adlı script, kümenin SQL ön yüzü olan HiveServer2’ye iç ağdaki bir makineden 10000 numaralı port üzerinden bağlanıp bir parola gönderiyor. Apache’nin dokümantasyonuna göre bu servis varsayılan olarak NONE kimlik doğrulama moduyla geliyor; yani kendisine verilen her parolayı doğrulamadan kabul ediyor. Bağlantı kurulduktan sonra script, HiveCmd.jar adlı kötü amaçlı bir Java eklentisini kullanıcı tanımlı fonksiyon olarak yüklüyor. Bu da sıradan veritabanı sorguları üzerinden işletim sistemi komutları çalıştırmayı ve sonucu geri okumayı mümkün kılıyor. Cloudera’nın uyarısına göre böyle bir fonksiyonu kurabilen biri, Hive servis hesabı adına rastgele kod çalıştırabilir ve hassas verilere ulaşabilir.

Sunucuda ayrıca daha önce kamuya açıklanmamış bir Go implantı da bulundu. Saldırgan buna Hades adını vermiş ve hem Windows hem Linux için 62 kopya halinde hazırlamış. Hunt.io, dosyalardan birer örnek inceleyip aynı kod tabanını doğruladı; kalan 60 kopya tek tek analiz edilmedi. Sabit kodlanmış adresler, staging sunucuyu Hong Kong’daki ikinci bir host’a bağlıyor, ancak hiçbir artefakt Hades’in bakanlık makinesine ulaştığını göstermiyor.

İçerideki bir GlassFish konsoluna yönelik varsayılan kimlik bilgisi denemeleri de sahnelenmiş durumda. Bunun yanında polkit, sudo ve IIS 6.0’a yönelik eski açıklar için exploit kodları bulundu. Hangi kurulumların gerçekten başarılı olduğu ise doğrulanamadı.

Hunt.io’nun yayımladığı analiz, bu operasyonun izini sürebilen bazı pratik işaretleri de ortaya koyuyor. Hermes’in web paneli sunucu başlığında HermesWebUI ifadesini dönüyor ve bu string için yapılan arama, 23 Temmuz tarihli rapor anına kadar bir ay içinde yaklaşık 5.900 tarama olayına işaret ediyor. Bunlar farklı makineleri değil, görülme sayısını yansıtıyor.

Daha işlevsel iz ise ajanın sonuçlarını yazdığı klasör. /hermes-results/ altında, adı önceden tahmin edilebilir dosyalarla birlikte tutarlı bir yapı bırakılmış. Aynı gün Hunt.io’nun açık dizin indeksinde 575 eşleşme bulundu; her biri bir host ve bir dosya adı çiftine karşılık geliyor. Bu operatörü koruyan bir güvenlik mekanizması değildi. İzi, açık bırakılmış bir dizin listeleme özelliği ele verdi.

Uzmanların aktardığına göre olağan bir komut satırı, o anda klavyenin başında bir insan olup olmadığını söylemiyor. Endpoint, aynı shell komutlarını ve aynı araçları görüyor. Fark, bu kez her adımı onaylayan bir operatör olmadan çalışmasıydı.