Haberler Security

İranlı hackerlar işe alım uzmanı kılığında kodlama ödeviyle çapraz platform RAT dağıtıyor

Nimbus Manticore sahte işe alım kampanyası

Nimbus Manticore, LinkedIn üzerinden gönderdiği truva atlı kodlama ödevleriyle NodeRabbit ve PollCat adlı iki çapraz platform RAT dağıtıyor. Zararlı kod, adaya dokunmaması söylenen server.js dosyasında.

İran bağlantılı Nimbus Manticore grubu, daha önce belgelenmemiş iki zararlı yazılım ailesiyle ilişkilendirildi. Kaspersky’nin NodeRabbit ve PollCat adıyla takip ettiği bu araçlar, grubun ilk kez Windows dışına çıktığını gösteriyor. İkisi de Node.js ve JavaScript ile yazılmış, yani Windows, Linux ve macOS’ta aynı kod tabanıyla çalışıyor.

Dağıtım yöntemi ise tanıdık: LinkedIn ve iş arama platformlarında işe alım uzmanı gibi davranıp, aday yazılımcılara truva atı yerleştirilmiş kodlama ödevi arşivleri göndermek.

Nimbus Manticore sahte işe alım kampanyası

Grup hakkında kısa not

Nimbus Manticore, işe alım temalı tuzaklar kullandığı için Iranian Dream Job adıyla da anılıyor. Bu taktiği yıllardır kullanan Kuzey Kore bağlantılı Lazarus Group’un yaklaşımına benziyor. Kaspersky raporunda grup için Mirage Kitten adlandırması da geçiyor.

Grup bugüne kadar C, C++ ve Go ile yazılmış zararlılar kullanıyordu ve bunları çalıştırmak için DLL search-order hijacking tekniğine dayanıyordu. Son aylarda cephanelik hızla genişledi:

  • NightLedger adlı Windows backdoor’u
  • İki özel WebSocket tüneli: BridgeHead ve ArcBridge
  • Bir reverse SSH tünelleme aracı
  • TWOSTROKE ile örtüşen bir backdoor

NodeRabbit ve PollCat, bu listeye eklenen ve ilk kez çapraz platform olan iki araç.

Enfeksiyon nasıl başlıyor?

Afganistan’daki bir sistemde tespit edilen ilk vaka şöyle işliyor. Saldırgan, büyük bir teknoloji şirketinin talent acquisition uzmanı gibi davranarak bir yazılım mühendisine ulaşıyor ve mühendislik pozisyonu için teknik bir ödev veriyor.

Ödev, AWS üzerinde barındırılan bir ZIP dosyası: Front-Technical-Challenge.zip. İçinde Taskflow adında bir proje yönetim aracının kaynak kodu var. Adaydan isteneni şu:

  • Frontend kodundaki tüm bug’ları bul ve düzelt
  • Süre: üç saat
  • Yapay zeka destekli araç kullanma
  • server.js dosyasına dokunma, o “bug’sız ve doğru çalışıyor”

Zararlı kod tam olarak o dokunulmaması istenen dosyada. Talimat, kurbanı kodu incelemekten uzak tutmak için tasarlanmış.

AI aracı kullanmama şartı da aynı mantığın parçası olabilir. Bir dil modeline sorulsa, node_modules içine elle yerleştirilmiş şüpheli bir paketin fark edilme ihtimali artar.

Truva atı npm paketi

server.js’in ilk satırı, colorized_terminal adında truva atı yerleştirilmiş bir npm paketini import ediyordu, sürüm 2.1.0.

Kaspersky

Buradaki detay önemli: paket npm registry’ye yüklenmemiş. Saldırganlar paketi doğrudan ödev arşivinin node_modules dizinine gömmüş. Yani npm install çalıştırmasanız bile, hatta registry’yi taratsanız bile bulamazsınız. Paket zaten kutunun içinde geliyor.

Import edildiğinde paket, sessizce şu yoldan bir implant başlatıyor:

node_modules/.cache/.320697f1/index.js

(detached background process olarak çalıştırılıyor)

NodeRabbit ne yapıyor?

Implant, Azure üzerinde barındırılan üç C2 adresinden biriyle haberleşiyor:

plugplay.azurewebsites[.]net
rgbteller.azurewebsites[.]net
wslwebui.azurewebsites[.]net

Üç API endpoint’i kullanıyor:

/api/rabbit/checkin   -> agent ve host bilgisi kaydı
/api/rabbit/task      -> komut sorgulama
/api/rabbit/result    -> sonuç gönderme

Desteklediği 11 komut şunları yapabiliyor: host bilgisi toplama, çalışan process listesi, keyfi shell komutu çalıştırma, dizin listeleme, bir dosyayı parça parça okuyup Base64 olarak gönderme, Base64 metni çözüp seçilen dosya offset’ine yazma, dosya silme veya dizini özyinelemeli silme, özyinelemeli dizin oluşturma, ağ adaptörü ile MAC, IP ve DNS ayarlarını listeleme, beacon aralığını değiştirme.

Dikkat çeken bir yeteneği daha var: Base64 kodlanmış bir Node.js scriptini rastgele adlı bir .tmp dosyasına yazıyor, çalıştırıyor, sonra siliyor. İz bırakmamak için.

Üç varyant, üç ülke

Kaspersky, aynı kod soyundan gelen iki varyant daha buldu. İlk örnek Afganistan’da, sonrakiler Mısır ve Etiyopya’daki iki ayrı makinede.

  • İkinci varyant: colorized_terminal yerine pretty-log (sürüm 2.1.0) paketini kullanıyor. Analiz ortamında çalıştığını tespit ederse kendini sonlandırıyor. Kurumsal proxy desteğini kısmen uyguluyor.
  • Üçüncü varyant: yine pretty-log ile başlatılıyor ama farklı endpoint seti kullanıyor: /sdk/v2/ready, /sdk/v2/config, /sdk/v2/events

Kalıcılık: her platform için ayrı yöntem

Kalıcılık işletim sistemine göre değişiyor:

  • Windows: Run registry anahtarı
  • Linux: cron kaydı
  • macOS: launch agent

Kalıcılık mekanizması meşru yazılım taklidi yapıyor. Birinci varyant kendini Microsoft Edge tarayıcı güncellemesi gibi, ikinci varyant Intel Driver & Support Assistant gibi gösteriyor.

Üçüncü varyant hiçbir meşru yazılımı taklit etmiyor ama WSL‘i hesaba katıyor. Her gün saat 10:00’da çalışan bir Windows task oluşturup wscript.exe ve wsl.exe üzerinden bir VBS dosyası başlatıyor.

Üçüncü varyantın 12 yeni komutu geliştiriciyi hedefliyor

Bu varyantın eklediği komutlar özellikle geliştirici makinelerine göre tasarlanmış:

  • Erişilebilir Windows sürücü harflerini veya WSL’e bağlı sürücüleri listeleme
  • Process çalıştırma
  • PID veya image adına göre process sonlandırma
  • Aktif C2 sunucusunu değiştirme ve yeni yapılandırmayı kalıcı kılmayı deneme
  • Mevcut C2 sunucusunu döndürme
  • Outlook OST ve PST dosyalarından hesap adreslerini toplama
  • “GitHub Copilot Helper” adında sahte bir VS Code eklentisi kurma ve ek kalıcılık için Run değeri ekleme
  • VS Code, scheduled task ve Run key kalıcılık göstergelerini kontrol etme
  • Sahte eklentiyi kaldırma
  • Son kullanılan ve yaygın geliştirme dizinlerinde Git repolarını arama
  • Bir reponun Git hook’larına launcher enjekte etme
  • İşaretlenmiş Git hook launcher’ını kaldırma

Git hook’larına enjeksiyon özellikle kötü bir fikir. Repo başka bir makineye klonlanırsa hook’lar taşınmaz, ama aynı repo üzerinde çalışan yerel kullanıcı her commit’te kodu yeniden tetikler. Sahte VS Code eklentisi de benzer mantıkta çalışıyor. Bu tür eklenti tabanlı saldırıları daha önce ele almıştık: Zararlı VS Code eklentisi GitHub’ın iç repolarını ele geçirmişti.

PollCat: CTF kılığında ikinci zararlı

İkinci zararlı, RankChallenge-react-6uJSX3-main.zip gibi süreli geliştirici değerlendirmeleri üzerinden dağıtılıyor. Obfuscate edilmiş JavaScript ile yazılmış.

Kaspersky’nin bu projeyle ilgili gözlemi ilginç:

Görünen egzersiz bir güvenlik CTF’i olmamasına rağmen, proje birçok yerde CTF terminolojisi kullanıyor. Kök paketin adı ctf-server, backend “CTF server running” yazdırıyor, frontend birkaç ctf-* storage anahtarı kullanıyor ve tutorial path/to/ctf’e atıfta bulunuyor.

Kaspersky

Bu tekrarlanan etiketler, teslim edilen uygulamayla tam olarak örtüşmeyen talimatlarla birlikte, AI destekli veya şablondan üretilmiş bir projeyle tutarlı. Olası bir açıklama, saldırganın bir AI kodlama asistanına CTF tarzı bir React platformu oluşturmasını söyleyip zararlı bileşenleri sonradan eklemesi.

Kaspersky

Bu değerlendirme bir tespit değil, bir hipotez. Ama tutarsız talimatlar ile artık kalan şablon isimlendirmesinin birlikte görülmesi, tuzağın hızla üretildiğine işaret ediyor.

Sahte OTP ile aciliyet baskısı

Arşivin içindeki PDF tutorial, hedeften Continue’ya tıklamasını ve saldırganın verdiği altı haneli bir OTP girmesini istiyor. Kod her 30 saniyede yenileniyor, oturum bir saatle sınırlı.

Bu sıkıştırılmış zaman çizelgesi sahte bir aciliyet yaratmak için. Amaç, hedefin projeyi düşünmeden hemen çalıştırması.

Ama işin özü şu: PollCat, OTP doğrulamasından bağımsız çalışıyor. Doğrulama başarısız olsa da olmasa da zararlı çalışıyor. Başarısız doğrulama sadece kurbanın korumalı challenge özelliklerine erişimini engelliyor. Başarılı doğrulama ise bir JWT üretiyor ve ek bir PollCat örneği daha başlatıyor.

Yani OTP bir kilit değil, bir sahne dekoru. Girmezseniz de bulaşmış oluyorsunuz.

PollCat’in altyapısı

Kalıcılık için Windows, Linux veya macOS’ta günlük bir scheduled task oluşturuyor. 22 komut destekliyor ve yedi API endpoint’i üzerinden haberleşiyor:

/beacon                      -> istemci kaydı, socketId alma
/gate/hello                  -> host, kullanıcı, domain, OS ve yetki seviyesi
/gate/fetch?token=<socketId> -> komut sorgulama
/gate/submit                 -> Base64 komut sonucu gönderme
/vault/<uuid>                -> barındırılan dosyayı indirip kurbana yazma
/vault/push                  -> yerel dosya veya parça yükleme
/gate/track                  -> parça yükleme ilerlemesi bildirme

Komutlar tipik backdoor yelpazesini kapsıyor: dosya işlemleri, shell komutu çalıştırma, dosya indirme ve yükleme, JavaScript çalıştırma, DLL yükleme, ZIP arşivi oluşturma veya açma, çalışan process, sürücü, volume ve mount point listeleme.

Üç komut ise henüz uygulanmamış: WS_DOWNLOAD, REQUEST_ELEVATION ve PERSIST. Bu, aracın hâlâ geliştirme aşamasında olduğunu gösteriyor.

Güvenlik ürünü envanteri çıkarıyor

PollCat, yazılım ve güvenlik satıcılarına karşılık gelen 24 sabit kodlanmış dizin adını arıyor: Google, Microsoft, Palo Alto Networks, Cisco, VMware, Fortinet, Citrix, Check Point, Juniper Networks, LogMeIn, Sophos, Symantec, Trend Micro, McAfee, Kaspersky Lab, ESET, Bitdefender, Avast, CrowdStrike, SentinelOne, Malwarebytes, Brave, Tencent ve Naver.

Eşleşen bir dizin bulduğunda o dizinin kök içeriğini listeliyor ama ürünün alt dizinlerini taramıyor. Sonuçlar JSON olarak /api/system-details/result endpoint’ine gönderiliyor.

Yüzeysel bir tarama bu, ama amacı da o. Makinede hangi güvenlik ürünü var, sonraki adımı ona göre planlayacaklar.

Atıf nasıl yapıldı?

Nimbus Manticore bağlantısı şu örtüşmelerden geliyor: PollCat ile gruba daha önce atfedilen MiniFast (diğer adlarıyla MiniUpdate veya Retrograde) backdoor’u arasındaki yapısal benzerlik, komut çekme yöntemi, beacon zamanlaması ve komut seti benzerliği. Bir de C2 için Azure Websites ve Cloudflare destekli domain kullanımı.

Çapraz platform scripting’e geçiş, operatörlere Windows, Linux ve macOS’ta çalışan tek bir kod tabanı veriyor ve payload’lar geliştirici iş istasyonlarına doğal biçimde karışıyor. Dağıtım mekanizması ise Mirage Kitten’ın geleneksel yöntemiyle tutarlı kalıyor: Orta Doğu ve Afrika’daki kritik sektörleri siber casusluk amacıyla hedeflemek için LinkedIn’de işe alım personası kullanmak.

Kaspersky

Ne yapmalı?

İşe alım süreciyle gelen kodlama ödevleri artık bilinen bir bulaşma yolu. Pratik önlemler:

  1. Tanımadığınız kaynaktan gelen ödev arşivlerini ana makinenizde çalıştırmayın. Tek kullanımlık bir VM veya container yeterli.
  2. Arşivde node_modules geliyorsa bunu bir uyarı işareti sayın. Meşru bir ödev bağımlılıkları paketlemez, package.json koyar ve kurmanızı bekler.
  3. “Şu dosyaya dokunma” talimatı gördüğünüzde tam olarak o dosyayı okuyun.
  4. Kısa süre baskısı ve AI aracı kullanmama şartı birlikte geliyorsa, ikisini de sosyal mühendislik göstergesi olarak değerlendirin.
  5. Yukarıdaki C2 adreslerini ve endpoint desenlerini kendi ortamınızda arayın. Azure Websites üzerindeki alt alan adları meşru trafiğe karıştığı için isim bazlı engelleme tek başına yeterli olmayabilir.

Kurumsal tarafta not edilecek şey, saldırının kurumsal bir zafiyetten değil çalışanın kişisel iş arayışından girmesi. Şirket cihazında yapılan bir iş görüşmesi ödevi, güvenlik ekibinin göremediği bir yerden başlıyor. Grup Orta Doğu ve Afrika’daki kritik sektörleri hedefliyor, ancak yöntem coğrafyadan bağımsız çalışıyor.

Kaynak: https://thehackernews.com/2026/09/iranian-hackers-pose-as-recruiters-to.html

Yazar Hakkında

Kerem Şuğle

Solution Architect, VMware vExpert ve Microsoft sertifikalı altyapı uzmanı. VMware vSphere/vSAN/VCF, Azure, AWS, Google Cloud, enterprise sanallaştırma ve yapay zeka konularında 15+ yıl deneyim. AI/cloud dönüşümü, sovereign cloud, enterprise güvenlik ve modern altyapı mimarisi alanlarında yazıyor.

Leave a Comment