CTF forensics sorularında en çok pcap geliyor. Bu yazıda Wireshark ile flag avında izlediğim yolu, filtreleri ve sık görülen tuzakları kendi pratik notlarımdan derledim. Örnekler genel teknik; spesifik yarışma sorusu spoiler'ı yok.
İlk 60 saniye kontrol listesi
- Capture Options değil; File > Open ile pcap'i aç
- Statistics > Protocol Hierarchy: hangi protokoller var?
- Statistics > Conversations / Endpoints: kim kiminle konuşmuş?
- File > Export Objects: HTTP, SMB, IMF... dosya sızmış mı?
Display filter vs capture filter
Capture filter BPF'dir (tcpdump ile aynı aile). Display filter Wireshark'a özgüdür ve daha ifade gücüdür. CTF'de dosya zaten kaydedilmiş olduğu için display filter kullanırsınız.
http.request
dns.qry.name contains "flag"
tcp.stream eq 3
frame contains "CTF{"HTTP üzerinden dosya çıkarmak
# Display filter
http.request.method == "GET"strings -n 8 indirdigim.bin | head
binwalk indirdigim.binTCP stream takip
Şüpheli pakette sağ tık > Follow > TCP Stream. Aynı bağlantının uygulama verisini birleşik görürsünüz. "Show data as" seçeneğini ASCII / Hex / UTF-8 arasında değiştirin; flag bazen Base64'tür.
echo 'Q1RGe2V4YW1wbGV9' | base64 -dDNS tüneli ve şüpheli sorgular
dns.qry.nameUSB / diğer link katmanı
Bazı CTF pcap'leri USBPcap ile alınmıştır. Protocol Hierarchy'de USB görürseniz korkmayın; Wireshark USB dekoratörleriyle cihaz tanımlayıcılarını ve interrupt transferlerini gösterebilir. Flag bazen HID tuş vuruşu olarak gelir (keystroke reconstruction).
Zaman ve parçalama
- View > Time Display Format > Seconds Since Beginning — akışı görmek kolaylaşır
- Parçalanmış IP / yeniden montaj: tercihlerde reassembly açık olsun
- VLAN etiketleri: vlan.id filtresi
Sık tuzaklar
- Yalnızca http.filter ile bakıp HTTPS içine flag aramak (şifreli; anahtar yoksa göremezsiniz)
- Export Objects'te "saved" sanıp aslında boş dosya kaydetmek
- Wrong stream numarası: Conversations'dan stream index doğrulayın
- Flag formatını okumamak (bazen flag{...} değil TEAM{...})
Kaynaklar
- Wireshark User's Guide
- pcap challenge arşivleri (yasal CTF setleri)
- tshark -Y ile aynı filtreleri CLI'da koşturma
tshark -r challenge.pcap -Y 'frame contains "flag"' -T fields -e frame.numberSizin forensics CTF'de "ilk baktığım yer" neresi? USB keystroke sorusu çözenler yorumda ipucu (spoiler etiketiyle) bırakabilir.
TLS trafiğinde flag aramak
Şifreli trafikte düz metin flag yoksa anahtar materyali (SSLKEYLOGFILE) verilmiş olabilir; CTF yazarları bazen bunu ayrı dosyada sunar. Wireshark'ta Preferences > Protocols > TLS > (Pre)-Master-Secret log filename. Key olmadan "HTTPS içinde ara" zaman kaybıdır; başka kanala (DNS, dosya export) bakın.
tshark ile otomasyon
Birden fazla pcap gelen CTF'de bash döngüsü:
for f in *.pcap; do echo "== $f"; tshark -r "$f" -Y 'http.request' -T fields -e http.host -e http.request.uri; doneDoğrulama senaryosu
Bu konuyla ilgili ek bir kontrol: değişikliği yaptıktan sonra en az bir negatif test ve bir pozitif test tanımlayın. Negatif test 'alarm boşyere düşmemeli', pozitif test 'bilinen kötü örneği yakalamalı' der. İkisini de kaydedin.
Lab disiplini
Ortamlar arasında (lab, staging, production) aynı yapılandırmayı kör kopyalamayın. Adresler, sertifikalar ve kimlikler farklıdır. Şablon kullanın, değerleri envanterden doldurun.
Runbook'a taşımak
İlgili log ve kanıtları olaydan sonra en az kurum politikasının öngördüğü süre kadar saklayın. Disk dolunca en eski güvenlik logunu silmek klasik hatadır; ayrı retention politikası tanımlayın.
Ölçüm ve alarm sağlığı
Yanlış pozitifleri susturmak ile körleşmek arasındaki çizgi incedir. Suppress kuralına gerekçe ve gözden geçirme tarihi yazın. Süresi dolunca yeniden değerlendirin.
Kapsam ve izin hatırlatması
Bu adımları change ticket olmadan production'da uygulamayın. Küçük görünen bir audit ayarı bile uygulama uyumluluğunu bozabilir. Önce staging, sonra kontrollü yayılım.
Yedekleme ve geri dönüş
Yılda en az iki kez masabaşı tatbikatı yapın: 'bu kontrol kırılırsa kim fark eder?' sorusunu sorunsuz cevaplayabilmelisiniz. Tatbikat notlarını wiki'ye ekleyin.
Log saklama süresi
Araç çıktısını ekran görüntüsü olarak bırakmak yerine makinece okunur formatta (JSON/CSV) arşivleyin. İki yıl sonraki denetimde arama kolaylaşır.
Yanlış pozitif yönetimi
Yetki ayrımı: bu kontrolü yapılandıran kişi ile alarmı triaj eden kişi mümkünse farklı olsun. Küçük ekiplerde olmasa bile en azından farklı hesap kullanın.
Değişiklik yönetimi ile ilişki
Sürüüm yükseltmelerinden sonra regresyon testi yapın. 'Aynı config' yeni sürümde farklı varsayılanlara bağlanmış olabilir. Release note'daki breaking change bölümünü okuyun.
Eğitim tatbikatı
Dış bağımlılık (feed, imza seti, konteyner imajı) için bütünlük doğrulaması yapın. İmzasız feed ile gelen kural seti tedarik zinciri riskidir.
Doğrulama senaryosu
Bu konuyla ilgili ek bir kontrol: değişikliği yaptıktan sonra en az bir negatif test ve bir pozitif test tanımlayın. Negatif test 'alarm boşyere düşmemeli', pozitif test 'bilinen kötü örneği yakalamalı' der. İkisini de kaydedin.
Lab disiplini
Ortamlar arasında (lab, staging, production) aynı yapılandırmayı kör kopyalamayın. Adresler, sertifikalar ve kimlikler farklıdır. Şablon kullanın, değerleri envanterden doldurun.
Runbook'a taşımak
İlgili log ve kanıtları olaydan sonra en az kurum politikasının öngördüğü süre kadar saklayın. Disk dolunca en eski güvenlik logunu silmek klasik hatadır; ayrı retention politikası tanımlayın.
Uygulama notu
Bu rehberdeki komutları olduğu gibi kopyalamadan önce yolları, arayüz adlarını ve IP adreslerini kendi ortamınıza göre değiştirin. Dağıtım farkları (Debian/Ubuntu/RHEL/Windows sunucu) çıktı biçimini değiştirebilir; man sayfası ve resmi dokümantasyon birincil kaynaktır. Bir adım beklediğiniz sonucu vermezse önce yetki (sudo/Administrator), sonra sürüm, en son da yapılandırma dosyası sırasıyla bakın. Değişiklikleri geri almak için snapshot veya yapılandırma yönetimi (Ansible/Git) kullanın; 'elle bir dokundum' geçmişi denetimde kaybolur. Alarm ve log örneklerini ekip kanalında paylaşırken kişisel veri ve iç IP şemasını maskeleyin.
Yasal uyarı: Bu içerik eğitim amaçlıdır. Anlatılanları yalnızca kendi sistemlerinizde veya yazılı izin aldığınız sistemlerde uygulayın. Yetkisiz erişim ve sistemlere müdahale 5237 sayılı TCK'nın 243, 244 ve 245. maddeleri kapsamında suçtur.