İçeriğe atla
0 XP 0
14 dkderinleşmeyle 15 dk60 XP8 etkinlik

Süper zaman çizelgesi kurma

Bu derste
  • 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.

Sürükleyip doğru sıraya koy.

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.

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

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
Aynı bağlantılar iki kaynakta. Fark üç noktada da 15 saniye, yani kayma sabit.

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"
cut yalnız tarih, MACB, kayıt ve ad sütunlarını bırakır. Saatler UTC'dir.

Çı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 : 2207
Çıktılar kısaltıldı. Süzgeçteki saatler UTC'dir, çıktı Türkiye saatiyle yazılır.

Komutları 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.

ogrenci@lab

Üç 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
Sütunlar zaman, kanal, olay numarası, önem derecesi ve kural başlığıdır. Sec Security, Sys System kanalının kısaltmasıdır.

Çı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
Ana çizelge. Her satırın ayrıntısı ekteki tam çizelgede, kaynak sütunu üzerinden bulunur.

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.

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