İçeriğe atla
0 XP 0
12 dkderinleşmeyle 13 dk50 XP6 etkinlik

Süreç ve dosya sistemi izleme

Bu derste
  • Örneği çalıştırdığında sistemde bıraktığı dosya, kayıt defteri ve süreç izlerini Process Monitor ve strace ile olay olay kaydedersin.
  • Windows'ta Process Monitor ile Process Hacker, Linux'ta strace bu işi görür.
  • Bu derste gürültü içinden anlamlı satırı ayıklamayı öğrenirsin.

Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +50 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.

Altay Kargo'nun örneği laboratuvarda ilk kez çalıştı. Ekranda hiçbir pencere açılmadı, görünürde hiçbir şey olmadı. Oysa arka planda saniyeler içinde yüzlerce dosya açıldı, kayıt defteri okundu, yeni bir süreç doğdu. Davranış izleme bu görünmeyen işi olay olay kaydetmektir.

Windows'ta Process Monitor geçmişi, Process Hacker'ın devamı olan System Informer ise şimdiki durumu gösterir. Linux'ta strace aynı işi sistem çağrısı düzeyinde yapar. Bu derste olay selinden anlamlı satırları ayıklamayı, kalıcılık zincirini kurmayı ve gözlemlerini bir tespit kuralına çevirmeyi öğrenirsin.

Olay selinden anlam çıkarmak

Process Monitor dosya sistemi, kayıt defteri, süreç ve ağ olaylarını gerçek zamanlı kaydeder. Örnek çalıştığında saniyede binlerce satır akar ve çoğu ilgisizdir: işletim sisteminin kendi servisleri, dosya gezgini, koruma yazılımı. İş bu selden anlamlı olanı ayıklamaktır. Aracın süzgeçleri yıkıcı değildir.

Gizlediğin satırlar silinmez, süzgeci değiştirince geri gelir. Bu yüzden kayıt sırasında hiçbir şeyi süzmezsin; önce her şeyi toplar, sonra süzersin. İlk süzgeç süreç adıdır ve Process Name is ornek.exe kuralı listeyi anında okunur hale getirir.

İkinci süzgeç işlem türüdür. Yalnız yazma ve oluşturma olaylarını bırakırsın.

Tek süzgecin bir tuzağı vardır. Örnek asıl işi bir alt sürece yaptırabilir: kendini başka adla kopyalar, kopyayı başlatır ve kendisi kapanır. Süzgeçte yalnız ornek.exe varsa kopyanın yaptığı her şey gözden kaçar. Bu yüzden süreç ağacına bakarsın.

Process Monitor'ün süreç ağacı, kayıttaki bütün süreçleri ebeveyn ve çocuk ilişkisiyle gösterir. Yeni doğan süreci gördüğünde onun adını da süzgece eklersin.

Bir diğer kaynak Process Create olayıdır. Bu satır yeni sürecin yolunu ve komut satırını taşır. Komut satırındaki gizli bir parametre çoğu zaman örneğin hangi modda çalıştığını söyler.

Time of Day   Process Name  PID   Operation       Path                                                    Result
10:42:07.113  ornek.exe     4120  CreateFile      C:\Users\ali\AppData\Roaming\svc.exe                    SUCCESS
10:42:07.118  ornek.exe     4120  WriteFile       C:\Users\ali\AppData\Roaming\svc.exe                    SUCCESS
10:42:07.240  ornek.exe     4120  RegSetValue     HKCU\Software\Microsoft\Windows\CurrentVersion\Run\svc  SUCCESS
10:42:07.251  ornek.exe     4120  Process Create  C:\Users\ali\AppData\Roaming\svc.exe                    SUCCESS
10:42:08.903  svc.exe       4388  TCP Connect     analiz-pc:49712 -> 10.0.0.1:http                        SUCCESS
Süzgeçten geçmiş Process Monitor kaydı. Beş satır bir zincir anlatır.

Beş satırı birlikte oku. İlk iki satırda ornek.exe, kullanıcının AppData\Roaming dizininde svc.exe adlı bir dosya oluşturur ve içine yazar. Kendini kopyalıyor.

Üçüncü satır Run anahtarına svc adında bir değer yazar. Bu anahtardaki her değer kullanıcı oturum açtığında çalışır. Dördüncü satır kopyayı başlatır.

Beşinci satırda artık svc.exe çalışıyor ve 10.0.0.1'in 80 numaralı bağlantı noktasına bağlanıyor; bu adres laboratuvardaki taklit sunucudur. Tek tek bakınca bir dosya yazımı ya da bir kayıt değeri sıradan görünebilir. Birlikte okununca zincir açıktır: kopyala, kalıcılık kur, başlat, dışarıyla konuş.

Etkinlik 1 / 6

Process Monitor çıktısında şüpheli satırları işaretle.

Şüpheli satırlara tıkla. Birden fazla olabilir.

Linux tarafı: strace ile sistem çağrıları

Linux'ta bir program dosya açmak, süreç başlatmak ya da ağa bağlanmak için çekirdeğe sistem çağrısıyla başvurur. strace bu çağrıları ve dönüş değerlerini sırayla listeler. Program kendi kodunu ne kadar karartırsa karartsın, çekirdekle konuşurken aynı çağrıları kullanmak zorundadır. Bu yüzden strace karartmaya karşı dayanıklı bir pencere verir.

Süzgeç olmadan çıktı okunmaz, çünkü sıradan bir program bile yüzlerce bellek ve kütüphane çağrısı yapar. Çağrı süzgeci olan -e trace= ile yalnız ilgilendiğin çağrıları bırakırsın. %file kümesi dosya adı alan bütün çağrıları, %network ağ çağrılarını, %process süreç yaşam döngüsünü seçer.

Dört bayrak daha işini kolaylaştırır. -f çatallanan alt süreçleri de izler; bu bayrak olmadan asıl iş alt süreçte olur ve kaçırırsın. -o çıktıyı bir dosyaya yazar, böylece programın kendi çıktısıyla karışmaz. -tt her satıra mikrosaniyelik saat ekler ve zaman çizgisi kurmanı kolaylaştırır.

Uzun dizeleri görmek için -s ile sınırı yükseltirsin. Varsayılan sınır 32 karakterdir ve fazlası kesilir. Dosya adları ise bu sınıra takılmaz, her zaman tam basılır.

$ strace -f -tt -e trace=openat,execve,connect -o iz.txt ./ornek
$ cat iz.txt
3120 10:42:07.102345 execve("./ornek", ["./ornek"], 0x7ffc9a3e1b28 /* 22 vars */) = 0
3120 10:42:07.104871 openat(AT_FDCWD, "/etc/passwd", O_RDONLY) = 3
3120 10:42:07.105530 openat(AT_FDCWD, "/tmp/.cache", O_WRONLY|O_CREAT, 0700) = 4
3121 10:42:07.106902 execve("/tmp/.cache", ["/tmp/.cache"], 0x7ffc9a3e1b28 /* 22 vars */) = 0
3121 10:42:07.311420 connect(5, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("10.0.0.1")}, 16) = 0
Üç çağrı türü, iki süreç ve bir zincir.

Çıktıda her satırın başında süreç numarası durur, çünkü -f ile -o birlikte kullanıldı. 3120 numaralı süreç önce execve ile başlar. Sonra /etc/passwd dosyasını okur ve makinedeki kullanıcı hesaplarını öğrenir. Ardından /tmp/.cache adlı dosyayı yazmak için açar.

Noktayla başlayan ad, dosyayı sıradan listelemede saklar. Dördüncü satırda yeni bir süreç numarası, 3121 belirir ve bu süreç az önce yazılan dosyayı çalıştırır. Son satırda alt süreç 10.0.0.1'in 80 numaralı bağlantı noktasına bağlanır. -f olmasaydı son iki satır hiç görünmezdi.

Etkinlik 2 / 6

Linux tarafında ornek dosyasının açtığı dosyaları izle.

ogrenci@lab

Anlık durum: süreçler, tutamaçlar ve modüller

Process Monitor geçmişi anlatır, System Informer ise şimdiyi. Eski adı Process Hacker olan bu araç çalışan süreçleri, yüklü modülleri, açık tutamaçları, ağ bağlantılarını ve bellek haritasını tek ekranda gösterir. Örnek bir süre çalıştıktan sonra ona bakarsın. Süreç ağacında svc.exe'nin ebeveyni artık yoktur, çünkü ornek.exe onu başlatıp kapandı.

Ebeveyni olmayan, kullanıcı dizininden çalışan ve imzası bulunmayan bir süreç tek başına bile soru işaretidir. Komut satırı sütununa da bakarsın. Meşru bir program adıyla çalışan ama tuhaf parametre taşıyan süreç kendini ele verir.

Açık tutamaçlar da bilgi taşır. Bir sürecin hangi dosyaları, hangi kayıt anahtarlarını ve hangi eşzamanlama nesnelerini açık tuttuğunu tutamaç sekmesi söyler. Zararlı yazılım çoğu zaman adlı bir mutex, yani karşılıklı dışlama nesnesi oluşturur.

Amaç aynı makinede ikinci bir kopyanın çalışmasını önlemektir. Bu ad aileye özgü olabilir ve iyi bir göstergedir. Bazı ailelerde savunma ekibi aynı adı önceden oluşturarak örneğin çalışmasını bile engeller.

Mutex adını türü ve tam yoluyla not edersin. Ağ sekmesi de sürecin açık bağlantılarını gösterir ve Process Monitor'deki bağlantı satırını doğrular.

Yüklü modül listesine de bakarsın. Her süreç işletim sisteminin kütüphanelerini yükler; bunlar imzalıdır ve System32 altında durur. Meşru bir sürecin içinde kullanıcı dizininden yüklenmiş imzasız bir DLL varsa yolunu ve imzasını hemen sorgularsın. Saldırganlar bu yolu bilerek kullanır.

Meşru bir programın aradığı kütüphane adıyla aynı klasöre zararlı bir DLL koyarlar. Program önce kendi klasörüne bakar ve yanlış dosyayı yükler. Bu yönteme DLL arama sırasını ele geçirme denir ve modül listesinde beklenmedik bir yol olarak görünür.

Etkinlik 3 / 6

Her aracı asıl işine göre ayır.

Önce bir seçeneğe, sonra aşağıdaki uygun kutuya bas. İstersen seçeneği kutuya sürükleyip bırak. Yerini değiştirmek için aynı işlemi tekrarla.

0/4 seçenek yerleşti.

Bellek haritası ve enjeksiyon izi

Bellek haritası, bir sürecin adres alanındaki her bölgeyi türü ve izniyle listeler. İzin sütunu üç harften oluşur: okuma, yazma ve yürütme. Derleyici üretimi kod bölgeleri okunur ve yürütülebilir olur, yazılabilir olmaz.

Veri bölgeleri okunur ve yazılabilir olur, yürütülebilir olmaz. Bu ayrım bilinçlidir. Yazılabilen bir yer yürütülemezse, belleğe yazılan kötü niyetli bayt da çalışmaz. Hem yazılabilir hem yürütülebilir bir bölge bu kuralı bozar ve çoğu zaman çalışma anında kod yerleştirildiğini düşündürür.

Base address     Type      Size     Protection  Use
0x7ff6a1b40000   Image     4 kB     R           svc.exe
0x7ff6a1b41000   Image     52 kB    RX          svc.exe
0x1d4c0a00000    Private   192 kB   RWX
0x7ffb3c210000   Image     1.2 MB   RX          ntdll.dll
svc.exe sürecinin bellek haritasından dört satır.

Tabloyu oku. İlk iki satır svc.exe'nin kendisidir: başlık bölgesi yalnız okunur, kod bölgesi okunur ve yürütülebilir. Dördüncü satır ntdll.dll'in kodudur ve aynı deseni taşır.

Üçüncü satır farklıdır. Türü Private, yani bir dosyadan yüklenmemiş, çalışma anında ayrılmış bellektir. İzni RWX'tir ve kullanım sütunu boştur. Bu bölge birinin bellek ayırıp içine kod yazdığını ve çalıştırdığını düşündürür.

Süreç enjeksiyonunda saldırgan çoğu zaman başka bir süreçte bellek ayırır, içine kod yazar ve yeni bir iş parçacığı başlatır. Hedef meşru bir süreç olduğu için zararlı kod onun kimliğinin arkasına saklanır.

Her RWX bölge zararlı değildir. Tarayıcıların JavaScript motorları ve .NET gibi çalışma anında derleme yapan ortamlar meşru olarak yürütülebilir bellek üretir. Bu yüzden RWX bölgeyi kanıt değil başlangıç noktası sayarsın.

Bölgenin ilk baytlarına bakarsın; MZ ile başlıyorsa belleğe yüklenmiş bir PE dosyası olabilir. Şüpheli bölgeyi diske döker ve statik analize geri götürürsün. Tespit tarafında Sysmon'un 8 numaralı olayı başka bir süreçte iş parçacığı başlatılmasını, 10 numaralı olayı ise başka bir sürece erişimi kaydeder.

Etkinlik 4 / 6

Process Hacker'da bir süreçte RWX izinli bellek bölgesi görürsen ilk düşüncen ne olur?

Farkı ölç, zaman çizgisi kur, kurala çevir

Olay akışına ek olarak fark yöntemini de kullanırsın. Örneği çalıştırmadan önce kayıt defterinin ve dosya sisteminin bir anlık listesini, örnek çalıştıktan sonra ikincisini alırsın. Regshot gibi araçlar iki listeyi karşılaştırır ve eklenen, değişen, silinen kalemleri tek raporda verir.

Fark yöntemi neyin değiştiğini söyler ama sırasını söylemez. Process Monitor ise sırayı söyler ama binlerce satır içinde.

İkisini birleştirirsin: farktan listeyi, olay akışından sırayı alırsın. Sonra olayları bir zaman çizgisine dizersin. Önce kopyalama, sonra kayıt yazımı, sonra süreç başlatma, sonra ağ bağlantısı gelir. Bu zincir rapora aynen girer.

Laboratuvarda gördüğün davranışı gerçek ağda Sysmon kayıtlarıyla ararsın. Sysmon, Windows olay günlüğüne ayrıntılı kayıt yazan ücretsiz bir Sysinternals aracıdır. 1 numaralı olay süreç oluşturmayı komut satırı ve özet değeriyle kaydeder.

3 numaralı olay ağ bağlantısını, 11 dosya oluşturmayı, 13 kayıt defteri değeri yazımını, 22 ise DNS sorgusunu kaydeder. Altay Kargo örneği için aranacak iz bellidir: kullanıcı dizinindeki bir dosyayı Run anahtarına yazan 13 numaralı olay. Aynı sürecin hemen ardından ağa bağlanması bulguyu güçlendirir.

Event ID 13: Registry value set
RuleName: technique_id=T1547.001
EventType: SetValue
UtcTime: 2026-09-30 07:42:07.240
Image: C:\Users\ali\Downloads\ornek.exe
TargetObject: HKU\S-1-5-21-...-1001\Software\Microsoft\Windows\CurrentVersion\Run\svc
Details: C:\Users\ali\AppData\Roaming\svc.exe
Aynı kalıcılık adımı, bu kez Sysmon olay günlüğünde.

Kaydı satır satır oku. EventType SetValue, bir değerin yazıldığını söyler. Image yazımı yapan süreçtir: İndirilenler klasöründeki ornek.exe. TargetObject yazılan anahtardır.

Sysmon kullanıcı kovanını HKU ve kullanıcının güvenlik kimliğiyle gösterir, bu yüzden laboratuvardaki HKCU yolu burada bu biçimde görünür. Details yazılan değerdir, yani her açılışta çalışacak dosyanın yolu. RuleName, yapılandırmadaki kuralın bu olayı ATT&CK tekniğiyle etiketlediğini gösterir. Kuralı yazarken TargetObject alanında Run ile biten yolu, Details alanında kullanıcı dizinini ararsın.

Kaynaklarsunucu, uçToplayıcıagentSIEMnormalleştirmeKuraltespitAlarmanalist
Laboratuvarda bulduğun iz, gerçek ağda kaynaktan alarma uzanan bu hattın kural adımına girer.

Etkinlik 5 / 6

Sysmon olay kimliğini kaydettiği davranışla eşleştir.

Soldan bir tane seç, sağdan eşini seç. Kullanılmış bir seçeneği yeniden seçersen yeni öğeye taşınır.

İzleme çıktısını ham haliyle rapora koymazsın, çünkü binlerce satırı kimse okumaz. Oluşan dosyaları, değişen anahtarları, doğan süreçleri ve kurulan bağlantıları özetlersin. Her kalemin yanına tam yolu, özet değerini ve saatini yazarsın.

Ölçüm bitince laboratuvar anlık görüntüye döner. Kirli makinede alınan ikinci ölçüm ilkiyle karışır ve hangi izin hangi koşudan geldiği belirsizleşir. Örneği farklı koşulda yeniden denemek istersen her denemeye temiz görüntüden başlarsın.

Derinleş:Process Monitor olayları nereden görür

Process Monitor, Sysinternals'in eski iki aracı Filemon ile Regmon'un birleşimidir. Dosya olaylarını çekirdekte çalışan bir dosya sistemi süzgeç sürücüsüyle, kayıt defteri olaylarını çekirdeğin kayıt geri çağrılarıyla yakalar. Ağ olayları için Windows'un olay izleme altyapısı ETW'yi kullanır.

Her olayla birlikte iş parçacığının çağrı yığınını da saklar. Bir satırı açıp yığın sekmesine baktığında o işlemi hangi modülün hangi yordamının başlattığını görürsün. Bu özellik meşru bir sürecin içine yerleştirilmiş kodu bulmada çok işe yarar.

Yığında modül adı olmayan bir adres, kodun bir dosyaya bağlı olmadan bellekte çalıştığını gösterir. Araç ayrıca açılış sırasında kayıt tutabilir. Bu seçenek sistem başlarken çalışan kalıcılık mekanizmalarını, kullanıcı oturum açmadan önce yakalar. Kayıtlar PML biçiminde saklanır ve başka bir makinede bütün ayrıntısıyla yeniden açılır.

Etkinlik 6 / 6

Doğru mu, yanlış mı?

Örnek çalıştıktan sonra laboratuvar anlık görüntüye geri alınır.

Bu derste bir hata mı gördün? Bildir