İçeriğe atla
0 XP 0
13 dkderinleşmeyle 14 dk55 XP7 etkinlik

Akışı izlemek: follow stream ve konuşmalar

Bu derste
  • Conversations ile şüpheli konuşmayı bulmayı, Follow Stream ile TCP akışını okumayı ve aktarılan dosyayı kayıttan çıkarmayı adım adım öğren.
  • Follow Stream bir bağlantının bütün paketlerini tek bir okunabilir metne birleştirir; Conversations binlerce paketi ikili ilişkilere indirger.
  • Bu derste özet tablodan akışa, akıştan dosyaya inen bir inceleme yapacak ve şifreli akışta neyin görünür kaldığını öğreneceksin.

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

Wireshark'ta tek tek paket okumak yorucudur. Bir HTTP isteği bile birkaç TCP segmentine bölünür, cevabı da başka paketlerde gelir. Soruşturmada asıl soru paket değil konuşmadır: kim kiminle konuştu, ne kadar veri taşındı, içerikte ne vardı. Bu derste üç aracı birlikte kullanacaksın.

Conversations penceresi binlerce paketi ikili ilişkilere indirir ve incelemeye değer satırı gösterir. Follow Stream o satırın bütün paketlerini tek bir okunabilir metne birleştirir. Export Objects akışta taşınan dosyayı diske çıkarır. Sonunda şifreli bir akışta neyin görünür kaldığını da öğreneceksin.

Follow Stream: paketlerden konuşmaya

Follow Stream aynı bağlantıya ait bütün paketleri sıraya dizer ve tek metin olarak gösterir. Bağlantıyı dört değer tanımlar: kaynak IP, kaynak port, hedef IP ve hedef port. Bir paketin üstüne sağ tıklayıp Follow, ardından TCP Stream seçersin.

İstemcinin gönderdiği bayt kırmızı, sunucunun gönderdiği bayt mavi görünür. Aynı menüde UDP, TLS, HTTP ve QUIC akışları da durur. Şifresiz protokollerde (HTTP, FTP, Telnet) akış düz metin olarak okunur; isteğin başlıkları, gövdesi ve sunucunun cevabı tek pencerede sırayla görünür. Şifreli protokollerde (HTTPS, SSH) akış yine birleşir, ama içerik anlamsız bir bayt yığını olarak kalır.

Follow Stream arka planda TCP yeniden birleştirmesi (reassembly) yapar. Her segmentin sıra numarası, verinin akıştaki yerini söyler ve Wireshark segmentleri bu numaraya göre dizer. Aynı veriyi taşıyan yeniden iletilmiş (retransmission) segment metne ikinci kez eklenmez.

Sıra dışı (out-of-order) gelen segment de doğru yerine oturur. Asıl sorun kayıpta çıkar. Yakalama sırasında düşmüş bir segment varsa Wireshark boşluğu dolduramaz.

Akış metni o noktada kesilir ya da eksik kalır, paket listesinde "TCP Previous segment not captured" uyarısı görünür. Eksik görünen bir akışta önce tcp.analysis.lost_segment filtresiyle kaybı ara. Kayıp varsa, metinde göremediğin içeriğin hiç gönderilmediğini varsayma.

Follow Stream penceresini açtığında Wireshark görüntüleme filtresini kendisi değiştirir ve kutuya tcp.stream eq 4 gibi bir ifade yazar. tcp.stream alanı her bağlantıya yakalamanın başından itibaren sırayla bir numara verir. Numara sabit kalır, bu yüzden aynı bağlantıyı tekrar bulmak için de kullanılır. Sık yapılan hata, pencereyi kapattıktan sonra filtrenin hâlâ yerinde olduğunu fark etmemektir.

Listede tek bağlantı kalır ve analist öbür paketlerin kaybolduğunu sanır. Pencerenin Back düğmesi önceki filtreyi geri getirir. Filter Out This Stream düğmesi ise incelediğin akışı listeden çıkarır ve kalan trafiğe bakmanı kolaylaştırır.

Etkinlik 1 / 7

Her TCP bağlantısına sırayla kimlik veren ve tcp.stream==4 gibi filtrelenen alanın adı nedir? Yalnız alan adını yaz.

Conversations ve Endpoints: kim kiminle konuştu

Follow Stream tek bir konuşmayı derinlemesine gösterir. Hangi konuşmanın incelemeye değer olduğunu bulmak ise ayrı bir iştir. Statistics menüsündeki Conversations penceresi bu işi görür. Pencere Ethernet, IPv4, IPv6, TCP ve UDP gibi sekmelere ayrılır.

Her satır iki uç arasındaki bütün trafiği özetler: paket ve bayt sayısı, başlangıç zamanı, süre ve iki yöndeki hız. A'dan B'ye ve B'den A'ya giden bayt ayrı sütunlarda durur. Sütun başlığına tıklayıp en çok veri taşıyan satırı en üste getirirsin. Veri sızdırmada gönderen taraf iç makinedir; bu yüzden iç adresten dışarı giden yöndeki büyük sayıya bakarsın.

Sekmeleri karıştırmak sık bir hatadır. IPv4 sekmesi iki adres arasındaki bütün trafiği tek satırda toplar. TCP sekmesi ise her bağlantıyı ayrı satırda gösterir. İki makine arasında aynı anda onlarca TCP bağlantısı olabilir; IPv4 sekmesindeki 5 megabaytlık tek satır, TCP sekmesinde yüzlerce küçük satıra dağılabilir.

Tek büyük aktarımı arıyorsan TCP sekmesine, bir makinenin toplam davranışını arıyorsan IPv4 sekmesine bak. Endpoints penceresi ise ikili ilişki yerine her adresin toplam trafiğini listeler ve en çok konuşan adresi hemen gösterir. MaxMind veritabanı tanımlıysa ülke ve AS sütunları da eklenir; bu sütunlar bağlam verir, tek başına kanıt değildir.

Conversations penceresinde iki örüntü göze çarpar. Birincisi süresi kısa ama bayt sayısı yüksek satırdır; hızlı bir veri aktarımını, kimi zaman veri sızdırmayı gösterir. İkincisi aynı kaynağın çok sayıda farklı hedefle kısa ve küçük konuşmalar yapmasıdır; bu tarama ya da yayılma davranışına benzer.

Normal kullanıcı trafiği az sayıda hedefle daha uzun süre konuşur. Bir sunucunun yüzlerce istemciyle konuşması ise olağandır; satırı yorumlarken makinenin rolünü ve trafiğin yönünü birlikte düşün.

Etkinlik 2 / 7

Follow Stream ile Conversations penceresi arasındaki temel fark nedir?

Etkinlik 3 / 7

Conversations penceresinden alınan satırlardan şüpheli hacim gösterenleri seç.

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

Komut satırında özet tablolar

tshark aynı özetleri komut satırından üretir. -z conv,tcp bayrağı dosyadaki bütün TCP konuşmalarını bir tabloya döker. -q paket paket çıktıyı bastırır ve yalnız istatistiği bırakır.

conv,tcp yerine conv,ip yazarsan IPv4 sekmesinin, conv,udp yazarsan UDP sekmesinin karşılığını alırsın. -z endpoints,ip ise Endpoints penceresinin tablosunu verir. Bu tablolarla Wireshark'ı açmadan, bir sunucuda hızlı ön tarama yaparsın. Aşağıdaki kayıtta bir iş istasyonunun (192.168.1.20) ve bir yönetim makinesinin konuşmaları görünüyor.

$ tshark -r olay.pcap -q -z conv,tcp
================================================================================
TCP Conversations
Filter:<No Filter>
                                                           |       <-      | |       ->      | |     Total     |    Relative    |   Duration   |
                                                           | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |      Start     |              |
192.168.1.20:51888         <-> 198.51.100.44:9001               4 256 bytes      47 62 kB          51 62 kB         3.000000000         0.1560
192.168.1.20:51600         <-> 203.0.113.21:21                  9 565 bytes      11 632 bytes      20 1197 bytes     1.000000000         0.3200
192.168.1.35:50222         <-> 203.0.113.10:23                  7 397 bytes       9 506 bytes      16 903 bytes     5.000000000         0.2550
192.168.1.20:51620         <-> 203.0.113.10:80                  6 3442 bytes       6 431 bytes      12 3873 bytes     2.000000000         0.1750
192.168.1.20:51514         <-> 203.0.113.10:80                  4 332 bytes       6 468 bytes      10 800 bytes     0.000000000         0.1650
================================================================================
TCP konuşma tablosunun ilk beş satırı (tshark 4.6 çıktısı).

Tabloyu okurken yön oklarına dikkat et. Her satırın solundaki uç A, sağındaki uç B'dir. -> sütunu A'dan B'ye, <- sütunu B'den A'ya giden çerçeve ve baytı sayar.

İlk satırda 192.168.1.20, 198.51.100.44 adresinin 9001 portuna 47 çerçevede 62 kilobayt göndermiş, karşılığında yalnız 256 bayt almış. Bağlantı 0,156 saniye sürmüş. Tek yönlü, kısa ve standart dışı porta giden bu aktarım ilk incelenecek satırdır.

Dördüncü satırda durum tersine döner: sunucu 80 portundan istemciye 3442 bayt göndermiş, yani istemci bir şey indirmiş. 23 numaralı porttaki satır ise şifresiz bir Telnet oturumunu ele verir.

Etkinlik 4 / 7

kayit.pcap dosyasındaki TCP konuşmalarının özet tablosunu, paket paket çıktı basmadan çıkar.

ogrenci@lab

Uçtan uca inceleme: özetten dosyaya

Şimdi üç aracı bir soruşturma sırasıyla kullan. Altay Kargo'nun güvenlik ekibi bir iş istasyonundan mesai dışı veri çıkışı ihbarı aldı ve kısa bir yakalama yaptı. Birinci adımda Conversations penceresini TCP sekmesinde açar, gönderilen bayta göre sıralarsın. En üstte 9001 portuna giden aktarım durur.

İkinci adımda satırı seçip Follow Stream ile akışı açarsın. Aynı kayıttaki öbür akışlara da bakarsın, çünkü saldırgan çoğu zaman önce kimlik bilgisi toplar. tshark'ta aynı işi -z follow bayrağı yapar; protokol, gösterim biçimi ve akış numarası virgülle yazılır.

$ tshark -r olay.pcap -q -z follow,tcp,ascii,0
===================================================================
Follow: tcp,ascii
Filter: tcp.stream eq 0
Node 0: 192.168.1.20:51514
Node 1: 203.0.113.10:80
144
GET /giris HTTP/1.1
Host: portal.altaykargo.example
User-Agent: curl/8.5.0
Authorization: Basic bWVydC5rYXlhOkthcmdvMjAyNg==
Accept: */*


	116
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html
Content-Length: 37

<html><body>Hos geldin</body></html>
===================================================================

$ tshark -r olay.pcap -q -z credentials
===================================================================
Packet     Protocol         Username         Info
------     --------         --------         --------
4          HTTP basic auth  mert.kaya
20         FTP              mert.kaya        Username in packet: 16
===================================================================
0 numaralı akışın metni ve kayıttaki açık metin kimlik bilgileri.

Çıktının başı akışı tanıtır. Filter satırı uygulanan tcp.stream eq 0 filtresidir, Node 0 istemci, Node 1 sunucudur. 144, istemcinin gönderdiği parçanın bayt uzunluğudur.

Sunucunun parçaları sekmeyle girintili başlar ve 116 onun uzunluğudur. Asıl bulgu Authorization satırındadır. HTTP Basic kimlik doğrulaması kullanıcı adıyla parolayı iki nokta üst üste ile birleştirir ve Base64 ile kodlar.

Base64 bir kodlamadır, şifreleme değildir; anahtar gerekmez, herkes geri çevirir. -z credentials aynı işi toplu yapar ve açık metin kimlik bilgilerini paket numarasıyla listeler. FTP satırı kullanıcı adının 16 numaralı pakette geçtiğini söyler.

Üçüncü adımda aktarılan dosyayı çıkarırsın. File > Export Objects > HTTP penceresi, HTTP ile taşınan her nesneyi paket numarası, sunucu adı, içerik türü, boyut ve dosya adıyla listeler. Aynı menü SMB, TFTP, FTP-DATA ve IMF (e-posta) için de vardır.

Komut satırında --export-objects bayrağı aynı işi yapar. Aşağıdaki örnekte al adlı nesne, 9001 portuna POST ile gönderilen 60000 baytlık gövdedir. Böylece sızan verinin kendisini de kayıttan geri alırsın.

Çıkan dosyayı açma ve çalıştırma. Önce sha256sum ile özetini al, özeti tehdit istihbaratı kaynaklarında ara ve olay kaydına ekle. Dosyanın kendisini yalıtılmış bir analiz makinesinde incele.

$ tshark -r olay.pcap -q --export-objects http,./cikti
$ ls -l cikti/
-rw-r--r--  1 analist  analist  60000 Sep 13 10:20 al
-rw-r--r--  1 analist  analist      2 Sep 13 10:20 al(1)
-rw-r--r--  1 analist  analist   3031 Sep 13 10:20 fatura.pdf
-rw-r--r--  1 analist  analist     37 Sep 13 10:20 giris
$ sha256sum cikti/al
bab66c78f72b74df9fd1e7d1575cc8979ed51ad4c25b111ac57cad09bf16261c  cikti/al
HTTP nesnelerini çıkarmak ve sızan gövdenin özetini almak.

Etkinlik 5 / 7

Conversations penceresinde şüpheli bir satır buldun ve içeriğini görmek istiyorsun. Sıradaki adım hangisidir?

Etkinlik 6 / 7

Aynı kayıttaki başka bir akışta şu satırı buldun: Authorization: Basic ZGVwby5zb3J1bWx1c3U6WWF6MjAyNg== Değeri çöz. Kullanıcı adı ve parola nedir?

Araçları sırayla dene. Yanlış araç bozuk çıktı verir.

ZGVwby5zb3J1bWx1c3U6WWF6MjAyNg==

Savunma ve şifreli akışın sınırı

İncelemenin savunma karşılığı açıktır. FTP, Telnet ve HTTP Basic gibi açık metin taşıyan her servis aynı riski taşır. Önce envanteri çıkar; Conversations ve Protocol Hierarchy bu protokolleri konuşan makineleri gösterir. Sonra servisleri şifreli karşılıklarına taşı: FTP yerine SFTP, Telnet yerine SSH, HTTP Basic yerine TLS üzerinden oturum.

Sızan parolayı hemen değiştir ve bulguyu akış numarası, paket numarası ve dosya özetiyle olay kaydına yaz. NIST SP 800-61 Rev. 3, olay müdahalesini NIST CSF 2.0 işlevleriyle ilişkilendirir. Kanıtı böyle belgelemek hem müdahaleyi hem sonraki iyileştirmeyi besler.

Şifreleme analisti de kör eder, ama el sıkışmada bazı alanlar açık gider. İstemcinin ilk mesajı ClientHello'dur. İçindeki SNI (Server Name Indication) uzantısı, istemcinin bağlanmak istediği sunucunun adını açık metin taşır; filtrede tls.handshake.extensions_server_name alanıyla okursun. ALPN uzantısı istemcinin konuşmak istediği uygulama protokolünü, örneğin h2'yi söyler.

TLS 1.2'de sunucu sertifikası da açık gider, içindeki alan adını ve yayıncıyı okursun. TLS 1.3'te ise ServerHello'dan sonraki bütün el sıkışma mesajları, sertifika dahil, şifrelenir. İstek yolu, başlıklar ve gövde iki sürümde de görünmez; IP adresleri, portlar, zamanlama ve bayt miktarı ise her zaman görünür.

ClientHelloanahtar payıServerHelloanahtar payıSertifikazincir + imzaFinishediki tarafŞifreli verioturum anahtarı
TLS 1.3 el sıkışması. ClientHello ve ServerHello açık gider, sertifikadan itibaren her şey şifrelidir.

ClientHello'daki şifre takımı ve uzantı listesi istemci yazılımına göre değişir. Bu listeden üretilen özet bir parmak izidir. JA3 bu alanları birleştirip MD5 özetini alır.

Yeni nesil JA4 uzantıları sıralayarak özetler, bu yüzden tarayıcıların uzantı sırasını rastgele karıştırmasından etkilenmez. Aynı zararlı ailesi farklı sunuculara bağlansa da parmak izi çoğu zaman aynı kalır. Görünürlük azalmaya da devam ediyor: ECH (Encrypted Client Hello, RFC 9849) SNI'yi de şifreler.

QUIC, HTTP/3'ü UDP 443 üzerinden taşır ve TCP akışı hiç oluşmaz. Bu yüzden şifreli trafikte içerik yerine meta veriye bakarsın: kim, ne zaman, hangi ada, hangi parmak iziyle bağlandı.

Kendi makinende ürettiğin trafiği çözmenin yasal ve temiz bir yolu vardır. Firefox, Chrome ve curl, SSLKEYLOGFILE ortam değişkeni tanımlıysa oturum sırlarını bir anahtar kayıt dosyasına yazar. Wireshark'ta Preferences > Protocols > TLS altındaki (Pre)-Master-Secret log filename alanına bu dosyayı verdiğinde akış çözülür ve Follow Stream düz metni gösterir. Bu yöntem yalnız sırlarını senin tuttuğun oturumlarda çalışır ve başkasının trafiğini çözmez.

TLS 1.3'te sunucunun özel anahtarı da trafiği çözmeye yetmez. Kurumlar bunun yerine TLS inceleme vekili kullanır; bu vekiller gizlilik dengesi nedeniyle ayrı politika ve hukuki değerlendirme ister.

Derinleş:JA4 parmak izini okumak

JA3, 2017'de üç araştırmacının geliştirdiği bir yöntemdir. ClientHello'daki TLS sürümünü, şifre takımlarını, uzantıları, eliptik eğrileri ve nokta biçimlerini virgülle birleştirir ve MD5 özetini alır. 2023'te Chromium tabanlı tarayıcılar uzantı sırasını her bağlantıda karıştırmaya başladı. Aynı tarayıcı her seferinde farklı bir JA3 üretir oldu.

JA4 bu sorunu listeleri sıralayarak çözer ve okunabilir bir biçim kullanır. Örnek: t13d1516h2_8daaf6152771_e5627efa2ab1. İlk parçadaki t, TCP üzerinde TLS demektir; QUIC için q yazılır. 13, TLS 1.3'ü gösterir.

d, ClientHello'da SNI olarak bir alan adı bulunduğunu söyler; SNI yoksa i yazılır. 15 şifre takımı, 16 uzantı sayısıdır. h2, ilk ALPN değerinin ilk ve son karakteridir. İkinci parça sıralanmış şifre takımlarının 12 karakterlik SHA256 özetidir.

Üçüncü parça sıralanmış uzantılarla imza algoritmalarının özetidir. Parçalar ayrı ayrı aranabilir; yalnız ilk ve üçüncü parçayı eşleştirip aynı istemci ailesini farklı şifre ayarlarında bile yakalarsın. Wireshark güncel sürümlerde tls.handshake.ja4 alanını hesaplar.

Etkinlik 7 / 7

TLS 1.3 kullanan, ECH içermeyen bir HTTPS akışını pasif olarak izliyorsun. Her öğeyi doğru gruba yerleştir.

Ö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/6 seçenek yerleşti.

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