Süper zaman çizelgesi kurma
- Disk, olay günlüğü ve ağ damgalarını mactime, plaso ve Hayabusa ile tek çizelgede birleştirir, pivot noktasından olayı yeniden kurarsın.
- Bu derste Altay Kargo'nun fin-pc12 olayını dakika dakika sıraya dizeceksin.
- Saat dilimi, saat kayması ve çift kayıt tuzaklarını tanıyıp çizelgeyi savunulabilir kılacaksın.
Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +60 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.
Tek tek bulgular hikâye kurmaz. Önceki modüllerde fin-pc12 makinesinden pek çok iz topladın: bir kısayol dosyası, bir $MFT kaydı, bir Prefetch dosyası, bellekte bir ağ bağlantısı, pcap kaydında bir TLS el sıkışması. Her biri kendi saatini söyler, ama neden ile sonucu tek başına göstermez. Zaman çizelgesi bu izleri tek eksende sıraya koyar.
Sıra görünür olunca soru da değişir: ne oldu yerine, önce ne oldu ve ardından ne geldi diye sorarsın. Altay Kargo'nun güvenlik ekibi olayın ertesi sabahı tam bu noktadaydı. Elinde disk imajı, bellek dökümü, olay günlükleri ve bir saatlik ağ kaydı vardı.
Çizelge türleri ve araç seçimi
Zaman çizelgesinin tek bir türü yoktur; sorduğun soruya göre farklı çizelgeler kurarsın. Dosya sistemi çizelgesi yalnız disk damgalarını kullanır. Sleuth Kit'in fls ve mactime ikilisi dosyaların doğum, erişim ve değişiklik anlarını sıralar.
Süper zaman çizelgesi ise birçok kaynağı birleştirir. plaso paketindeki log2timeline.py dosya sistemi kayıtlarını, olay günlüklerini, kayıt defterini ve Prefetch dosyalarını tek depoya yazar. Olay günlüğü çizelgesi yalnız EVTX dosyalarına bakar.
Hayabusa ve Chainsaw bu dosyaları Sigma kurallarıyla tarar ve şüpheli satırları önem derecesiyle işaretler. Eric Zimmerman'ın araçları hedefli çizelge üretir; MFTECmd ve EvtxECmd çıktılarını Timeline Explorer'da yan yana açarsın. Ekipçe çalışırken Timesketch devreye girer.
fin-pc12 olayında elindeki izler bir zincir oluşturur. Zincir web01 sunucusunda başlar: 198.51.100.77 adresi dizin taraması yapar. Kısa süre sonra mkaya kullanıcısına makrolu bir fatura belgesi ulaşır ve belge açılır.
WINWORD.EXE altında PowerShell çalışır ve Temp klasörüne update.exe dosyasını indirir. Ardından 203.0.113.19 adresine şifreli bir kanal kurulur. Saldırgan kanal açıldıktan sonra WinUpdateSvc hizmetini kaydeder.
En sonda dc01 sunucusuna 445 portundan bağlantı görülür. Çizelgenin işi, bu sırayı iddia olmaktan çıkarıp her adımı bir kayda bağlamaktır.
Etkinlik 1 / 8
fin-pc12 olayının bulgularını zaman sırasına diz.
Bir öğeye odaklan, yukarı ve aşağı ok tuşlarıyla taşı. Home tuşu en üste, End tuşu en alta alır.
- 1203.0.113.19 adresine TLS bağlantısı kurulur
- 2dc01 üzerinde 445 portuna yanal hareket görülür
- 3WinUpdateSvc hizmeti kalıcılık için kaydedilir
- 4web01 access.log: 198.51.100.77 adresinden dizin taraması
- 5mkaya kullanıcısına kimlik avı eki ulaşır ve belge açılır
- 6WINWORD.EXE altında PowerShell çalışır
- 7Temp klasöründe update.exe oluşur
Aracı soruna göre seçersin. Bir dosyanın diske ne zaman düştüğünü soruyorsan mactime yeter. Olay günlüğünde hangi alarmların durduğunu görmek istiyorsan Hayabusa birkaç dakikada özet verir.
Olayın bütününü kurmak için plaso gerekir, ama bütün ayrıştırıcılarla çalışan bir tarama büyük diskte saatler sürer. Deneyimli ekipler önce hızlı araçlarla şüpheli pencereyi bulur, plaso'yu sonra yalnız gereken ayrıştırıcılarla çalıştırır. Hangi aracı seçersen seç, hedef aynıdır: her satırın bir zamanı, bir kaynağı ve bir anlamı olan tek tablo.
Etkinlik 2 / 8
Aracı yaptığı işle eşleştir.
Saat dilimi ve saat kayması
Çizelgedeki en sinsi hata saattir. Kaynakların bir kısmı UTC yazar, bir kısmı yerel saat, bir kısmı da dilim belirtmez. NTFS damgaları, EVTX kayıtları ve Prefetch zamanları UTC'dir.
Apache erişim günlüğü satıra +0300 gibi bir fark ekler. Bazı güvenlik duvarları syslog satırını yıl ve dilim olmadan, cihazın yerel saatiyle yazar. plaso olayları depoda UTC olarak tutar ve psort.py çıktıyı varsayılan olarak UTC verir.
Kural basittir: bütün çizelge tek dilimde durur ve o dilim başlıkta yazar. Türkiye 2016'dan beri yıl boyu UTC+3 kullanır. Daha eski delilde yaz saati uygulamasını da hesaba katarsın.
Dilimi birleştirmek yetmez, saatler de kayar. NTP ile eşitlenmeyen bir cihaz haftalar içinde saniyeler, aylar içinde dakikalar sapabilir. Kaymayı ölçmenin yolu, aynı olayı iki bağımsız kaynakta bulmaktır. fin-pc12'nin komuta sunucusuna ilk bağlantısı hem pcap kaydında hem güvenlik duvarı günlüğünde durur.
Adresler ve kaynak port aynı olduğu için olay da aynıdır. Referans olarak NTP ile eşitlenmiş kaynağı seçersin. Ölçümü pencerenin başında, ortasında ve sonunda tekrarlarsın. Fark sabitse tek düzeltme yeter, büyüyorsa düzeltmeyi zamana göre hesaplarsın.
Kaynak Bağlantı Damga (+03) Zeek conn.log 10.20.30.61:49868 -> 203.0.113.19:443 03:09:02.114 Güvenlik duvarı 10.20.30.61:49868 -> 203.0.113.19:443 izin 03:08:47 Kontrol 1 49880 portu: pcap 03:12:05, duvar 03:11:50 fark 15 sn Kontrol 2 49911 portu: pcap 03:58:40, duvar 03:58:25 fark 15 sn Düzeltme duvar damgasına +15 sn, ayrı sütunda
Tabloyu satır satır oku. İlk iki satır aynı bağlantıdır: kaynak port 49868, hedef 203.0.113.19'un 443 portu. pcap 03:09:02 der, duvar 03:08:47. Duvarın saati 15 saniye geride.
Kontrol satırları pencerenin ortasında ve sonunda aynı farkı verir. Bu yüzden duvar kayıtlarına sabit 15 saniye eklersin. Düzeltilmiş damgayı ayrı sütuna yazar, ham damgayı silmezsin. Raporu okuyan biri ölçümü de düzeltmeyi de görür ve hesabı tekrarlayabilir.
Etkinlik 3 / 8
Üç ayrı kaynaktan gelen kayıtları tek çizelgede birleştirirken ilk yapman gereken nedir?
Dosya sistemi çizelgesi: fls ve mactime
Dosya sistemi çizelgesi en hızlı başlangıçtır ve iki adımda kurulur. Önce fls imajdaki dosya kayıtlarını gövde dosyası (body file) biçiminde yazar. -m bu biçimi açar ve yolların başına verdiğin bağlama noktasını ekler.
-r bütün dizinleri dolaşır, -o bölümün başladığı sektörü verir. Sonra mactime gövde dosyasını okur ve damgaları sıralar. -d çıktıyı virgülle ayırır, -z saat dilimini seçer.
Sona yazdığın aralık çizelgeyi olay penceresine daraltır. Aralığa saat de ekleyebilirsin.
$ fls -r -m C: -o 2048 fin-pc12.dd > body.txt $ mactime -b body.txt -d -z UTC 2026-09-14T00:05:00..2026-09-14T00:10:00 > fs.csv $ cut -d, -f1,3,7,8 fs.csv Date,Type,Meta,File Name Mon Sep 14 2026 00:07:11,macb,812-48-2,"C:/Users/mkaya/AppData/Local/Temp/update.exe ($FILE_NAME) (deleted)" Mon Sep 14 2026 00:07:19,.a..,812-128-3,"C:/Users/mkaya/AppData/Local/Temp/update.exe (deleted)" Mon Sep 14 2026 00:07:44,macb,2231-48-2,"C:/Users/Public/svcupd.exe ($FILE_NAME)" Mon Sep 14 2026 00:07:46,..c.,812-128-3,"C:/Users/mkaya/AppData/Local/Temp/update.exe (deleted)" Mon Sep 14 2026 00:08:04,macb,90871-128-1,"C:/Windows/Prefetch/SVCUPD.EXE-3A1F02C4.pf"
Çıktıyı satır satır oku. Type sütunu MACB harflerini taşır: m içeriğin değiştiğini, a erişimi, c $MFT kaydının değiştiğini, b doğumu gösterir. Nokta, o damganın bu satırda olmadığını söyler.
İlk satırdaki ($FILE_NAME) etiketi, NTFS'in ikinci zaman kümesini gösterir. Bu kümenin dört damgası da 00:07:11'dir. (deleted) etiketi, adın artık bir dizine bağlı olmadığını söyler.
İkinci ve dördüncü satırlar aynı dosyanın $STANDARD_INFORMATION kümesidir. Bu kümenin doğum ve içerik damgaları 2009'a bükülmüştü, o yüzden pencerede yoklar.
Dördüncü satırdaki ..c. bükmenin yapıldığı anı ele verir. Son satır, svcupd.exe ilk çalıştıktan birkaç saniye sonra yazılan Prefetch dosyasıdır.
Etkinlik 4 / 8
mactime çıktısındaki bu satıra göre 00:07:46'da update.exe için ne oldu?
Önce kodu oku, sonra çıktıyı seç.
Mon Sep 14 2026 00:07:46,..c.,812-128-3,"C:/Users/mkaya/AppData/Local/Temp/update.exe (deleted)"
Süper çizelge: log2timeline, pinfo ve psort
Süper çizelge üç adımda kurulur. log2timeline.py imajı tarar ve bulduğu her zaman damgasını bir plaso deposuna yazar. pinfo.py depoyu açar ve hangi ayrıştırıcının kaç olay ürettiğini söyler. psort.py depoyu süzer, sıralar ve okunur bir dosyaya döker.
Toplama ile süzmeyi ayırmak zaman kazandırır: depoyu bir kez üretir, farklı pencerelerle defalarca süzersin. --parsers seçeneği taramayı daraltır. win7 gibi hazır ön ayarlar da vardır. Tam listeyi log2timeline.py --info gösterir.
$ log2timeline.py --parsers 'winevtx,prefetch,mft,usnjrnl,winreg,lnk' \
--storage-file fin-pc12.plaso fin-pc12.dd
...
Processing completed.
$ pinfo.py fin-pc12.plaso
...
************************* Events generated per parser **************************
Parser (plugin) name : Number of events
--------------------------------------------------------------------------------
lnk : 1184
mft : 402118
prefetch : 2210
usnjrnl : 611207
winevtx : 248930
winreg/winreg_default : 97516
total : 1363165
$ psort.py -o dynamic --fields datetime,source,message \
--output-time-zone Europe/Istanbul -w fin-pc12.csv fin-pc12.plaso \
"date > DATETIME('2026-09-14T00:00:00') AND date < DATETIME('2026-09-14T01:30:00')"
...
Stored Events : 1363165
Events Included : 18412
Duplicate Removals : 2207Komutları satır satır oku. --parsers yalnız altı ayrıştırıcıyı açar: olay günlükleri, Prefetch, $MFT, USN günlüğü, kayıt defteri ve kısayollar. pinfo çıktısı her ayrıştırıcının katkısını gösterir.
Sıfır olay üreten bir ayrıştırıcı uyarıdır: ya kaynak imajda yoktur ya da okunamamıştır. psort komutunda -o dynamic virgülle ayrılmış çıktı seçer, --fields sütunları belirler. Süzgeç en sonda durur.
DATETIME yardımcısı tarih dizgesini karşılaştırılabilir zamana çevirir. Depodaki zamanlar UTC olduğu için süzgeci de UTC yazarsın: 00:00 ile 01:30 arası, Türkiye saatiyle 03:00 ile 04:30 arasıdır. --output-time-zone yalnız çıktıyı yerel saate çevirir. Sondaki sayaç, kaç olayın süzgeçten geçtiğini ve kaç çift kaydın ayıklandığını söyler.
Etkinlik 5 / 8
fin-pc12.dd imajından plaso depo dosyası üret.
Üç hata sık görülür. Birincisi bütün ayrıştırıcılarla tarama yapıp saatlerce beklemektir. İkincisi UTC ile yerel saati karıştırmaktır: süzgeci 03:00 diye yazıp çıktıyı UTC okursan pencere üç saat kayar.
Üçüncüsü çift kayıtları iki ayrı olay saymaktır. Aynı olay günlüğü kaydı hem canlı dosyada hem gölge kopyada durabilir. psort çift kayıtları varsayılan olarak birleştirir ve sayısını Duplicate Removals satırına yazar.
-a seçeneği bu ayıklamayı kapatır. Kapatırsan aynı olayı iki kez saymamak için kaynak yolunu karşılaştırırsın.
Derinleş:l2tcsv biçiminin 17 alanı
psort'un eski uyumlu çıktısı l2tcsv'dir. Perl ile yazılan ilk log2timeline sürümünden kalır ve 17 sabit sütun taşır: date, time, timezone, MACB, source, sourcetype, type, user, host, short, desc, version, filename, inode, notes, format ve extra. Eski analiz şablonları ve betikler hâlâ bu sütunları bekleyebilir.
İki ayrıntıya dikkat edersin. Birincisi tarih sütunudur. Tarih ay, gün, yıl sırasıyla yazılır, yani 09/14/2026 gibi görünür.
Türkçe yerel ayarlı bir hesap tablosu bu değeri yanlış ayrıştırabilir. İkincisi MACB sütunudur. plaso aynı zamana düşen damgaları tek satırda toplar ve harfleri yan yana yazar. Yeni çalışmada dynamic biçimi daha esnektir: --fields ile yalnız gereken sütunları seçer, --additional_fields ile ek alan eklersin.
Etkinlik 6 / 8
plaso depo dosyasını süzüp okunur çıktı üreten araç: ____
Olay günlüğü çizelgesi, pivot ve ana çizelge
Milyonlarca olay günlüğü kaydını elle taramak gerçekçi değildir. Hayabusa bu işi Sigma kurallarıyla yapar. 4.0 sürümünden beri zaman çizelgesi komutunun adı dfir-timeline'dır; eski csv-timeline ve json-timeline komutları bu komutta birleşti.
-d bir klasördeki bütün EVTX dosyalarını okur, -o çıktıyı dosyaya yazar. -w soru soran sihirbazı kapatır, -m en düşük önem derecesini seçer. Zaman varsayılan olarak analiz makinesinin yerel saatiyle yazılır, -U seçeneği UTC verir.
$ hayabusa dfir-timeline -d evtx/ -w -m high -o hayabusa.csv $ cut -d, -f1,3,4,5,7 hayabusa.csv Timestamp,Channel,EventID,Level,RuleTitle 2026-09-14 03:07:05.318 +03:00,Sysmon,1,high,Suspicious Microsoft Office Child Process 2026-09-14 03:10:24.207 +03:00,Sysmon,13,high,Service Binary in Suspicious Folder 2026-09-14 03:31:07.118 +03:00,Sys,104,high,Important Log File Cleared 2026-09-14 03:31:07.205 +03:00,Sec,1102,high,Log Cleared
Çıktıyı satır satır oku. İlk satır, Office uygulamasının PowerShell başlattığını gösteren Sysmon olayıdır.
İkinci satır, hizmet kaydına Public klasöründen bir yol yazıldığını söyler. WinUpdateSvc burada doğar ve bu kayıt ilk kalıcılık adımıdır. Son iki satır Security ve System günlüklerinin 03:31'de silindiğini gösterir. Silmeden önceki yerel kayıtlar gitti; hizmet kurulumunu gösteren 4697 ve 7045 olayları bu yüzden çıktıda yok.
Sysmon günlüğü silinmemiş ve aynı olayları başka açıdan taşır. Altay Kargo'nun SIEM'i Security kayıtlarını merkeze de iletiyordu. 03:15:42'deki 4720 hesap oluşturma olayı orada duruyor.
Pivot noktası, çizelgede iki yöne yürümeye başladığın satırdır. İyi pivot genelde ilk kalıcılık kaydıdır, çünkü saldırgan kalıcılığı erişimi aldıktan sonra kurar. Burada pivot 03:10:24'teki hizmet kaydıdır.
On beşer dakikalık bir pencere açarsın: 02:55 ile 03:25 arası. Geriye yürüdükçe TLS kanalı, svcupd.exe'nin ilk çalışması, update.exe indirmesi ve belgenin açılışı çıkar. Pencerenin başında web01'e gelen istek durur.
İleri yürüdükçe yeni hesap ve dc01 oturumu görünür. Zincir pencere sınırına dayanıyorsa pencereyi genişletirsin. 03:31'deki günlük silme ve 04:11'deki yeniden başlatma böyle bulunur.
Etkinlik 7 / 8
Pivot 03:10:24'teki hizmet kaydı. 02:55 ile 03:25 arasındaki bu satırlardan saldırı zincirine ait olanları işaretle.
Şüpheli satırlara tıkla. Birden fazla olabilir.
Saat (+03) Makine Olay Kaynak 03:02:11 web01 198.51.100.77 /admin dizin taraması access.log 03:04:55 web01 ayar.php'ye komut gönderilir (c=id) pcap, HTTP POST 03:05:31 fin-pc12 fatura_eylul.docm Downloads klasörüne iner $MFT 03:05:48 fin-pc12 belge açılır LNK 03:07:05 fin-pc12 WINWORD.EXE altında powershell.exe Sysmon 1 03:07:09 fin-pc12 update.exe indirilir pcap, HTTP GET 03:07:11 fin-pc12 update.exe Temp klasöründe doğar $MFT 812 ($FILE_NAME) 03:07:44 fin-pc12 svcupd.exe Public klasöründe doğar $MFT 2231 ($FILE_NAME) 03:07:46 fin-pc12 update.exe damgaları bükülür USN, Sysmon 2 03:07:54 fin-pc12 svcupd.exe ilk kez çalışır Prefetch 03:09:02 fin-pc12 203.0.113.19:443 TLS kanalı Zeek ssl.log 03:09:30 fin-pc12 update.exe silinir USN FileDelete 03:10:24 fin-pc12 WinUpdateSvc hizmeti yazılır (pivot) SYSTEM kovanı, Sysmon 13 03:15:42 fin-pc12 svc_update hesabı oluşur SIEM, 4720 03:19:05 dc01 10.20.30.61'den ağ oturumu (tür 3) dc01 Security 4624 03:31:07 fin-pc12 Security ve System günlükleri silinir 1102, 104 04:11:41 fin-pc12 yeniden başlatma sonrası svcupd.exe çalışır Prefetch
Bu tablo ana çizelgedir: milyonlarca satırdan seçilmiş, her biri bir kaynağa bağlı on yedi satır. Ayrıntılı çizelge ekte kalır ve iki dosya kaynak sütunuyla birbirine bağlanır. Boşlukları da işaretlersin. 03:31'den önceki yerel Security kayıtlarının yokluğu bir boşluktur ve sebebi bellidir.
Çelişen damgaları silmez, ikisini de yazarsın. Doğrulanmamış hipotezi ayrı işaretlersin: dc01 oturumunu hangi hesabın açtığı ikinci bir kaynakla kanıtlanmadıysa bunu açıkça belirtirsin. Son olarak tabloyu baştan sona okursun. Satırlar bir hikâye anlatmıyorsa ya bir kaynak eksiktir ya da sıralama hatalıdır.
Çizelge yalnız geçmişi anlatmaz, savunmanın eksiklerini de gösterir. fin-pc12 çizelgesinden üç ders çıkar. Birincisi merkezi günlük toplamadır: Security kayıtları SIEM'e gitmeseydi 4720 olayı silinen dosyayla birlikte kaybolurdu. İkincisi saat disiplinidir: bütün cihazlar aynı NTP kaynağına bağlanırsa kayma ölçümüne gerek kalmaz.
Üçüncüsü ayrıntılı uç nokta kaydıdır. Sysmon olaylarını yakalayan iki Hayabusa kuralı, canlı ortamda SIEM alarmı olarak da çalışabilirdi. Çizelgede kalan her boşluğu bir düzeltme maddesine çevirirsin. Kök neden analizi bu listeden beslenir.
Derinleş:Timesketch ile ortak çizelge
Büyük olaylarda çizelgeyi tek kişi okumaz. Timesketch, Google'ın başlattığı açık kaynaklı bir ortak çizelge aracıdır. plaso deposunu, CSV ya da JSONL dosyasını doğrudan içeri alır.
Bir vakaya birden çok çizelge eklenir. Her çizelgeye ad verir, disk, bellek ve ağ çizelgelerini yan yana açar, tek aramayla hepsinde ararsın. Analistler aynı çizelgede olaylara yıldız ve etiket koyar, satırlara yorum yazar.
Kayıtlı aramalar ve hikâye sayfaları bulguların nasıl bulunduğunu da saklar. Ekip büyüdükçe asıl kazanç tutarlılıktır: herkes aynı süzgeci ve aynı saat dilimini görür. psort'un opensearch_ts çıktı biçimi de olayları Timesketch'in kullandığı OpenSearch dizinine yazar. Çizelge kişisel veri taşıdığı için kimin hangi çizelgeyi göreceğini baştan planlarsın.
Etkinlik 8 / 8
Doğru mu, yanlış mı?
Zaman çizelgesindeki her satır, hangi artefakttan geldiğini göstermelidir.
Okumayı istediğin sırayla sürdürebilirsin. Ders, bütün etkinlikleri cevapladığında tamamlanır.
- Etkinlik 1· Çizelge türleri ve araç seçimi
- Etkinlik 2· Çizelge türleri ve araç seçimi
- Etkinlik 3· Saat dilimi ve saat kayması
- Etkinlik 4· Dosya sistemi çizelgesi: fls ve mactime
- Etkinlik 5· Süper çizelge: log2timeline, pinfo ve psort
- Etkinlik 6· Süper çizelge: log2timeline, pinfo ve psort
- Etkinlik 7· Olay günlüğü çizelgesi, pivot ve ana çizelge
- Etkinlik 8· Olay günlüğü çizelgesi, pivot ve ana çizelge