Thsark ile TCP/IP Paket Analizi

Tshark, güçlü bir ağ protokolleri analiz programıdır. Tshark komut satırından çalışır ve yine bir ag trafik analiz programı olan Wireshark’da bulunan  çoğu özelliği destekler.

Komut satırından çalışan ve çok bilinen diğer bir trafik analiz aracı da tcpdump’dır.

Tshark ile tcpdump’ın ayrıldığı en belirgin nokta Tshark’ın trafik analizinde protokolleri tanıyabilmesi ve bunları detaylı bir şekilde gösterebilmesidir. Aşağıda vereceğim örneklerde
protokol tanımanın ne manaya geldiği daha iyi anlaşılacaktır. Kişisel olarak Tshark’ı imkanım olduğu ortamlarda tcpdump’a tercih ediyorum.

Bu ikili, networking konuları ile ilgilenen herkesin a-z’ye bilmesinde fayda olan araçlardır.

Basit Tshark Kullanımı

tshark, çeşitli işlevleri olan bir sürü parametreye sahiptir. Eğer herhangi bir paramnetre kullanmadan çalıştırılırsa ilk aktif ağ arabirimi üzerinden geçen trafiği yakalayıp ekrana basar.

home-labs ~ # tshark
Running as user “root” and group “root”. This could be dangerous.
Capturing on eth0
0.000000 192.168.2.23 -> 80.93.212.86 ICMP Echo (ping) request
0.012641 80.93.212.86 -> 192.168.2.23 ICMP Echo (ping) reply
0.165214 192.168.2.23 -> 192.168.2.22 SSH Encrypted request packet len=52
0.165444 192.168.2.22 -> 192.168.2.23 SSH Encrypted response packet len=52
0.360152 192.168.2.23 -> 192.168.2.22 TCP pcia-rxp-b > ssh [ACK] Seq=53 Ack=53 Win=59896 Len=0
0.612504 192.168.2.22 -> 192.168.2.23 SSH Encrypted response packet len=116
1.000702 192.168.2.23 -> 80.93.212.86 ICMP Echo (ping) request
1.013761 80.93.212.86 -> 192.168.2.23 ICMP Echo (ping) reply
1.057335 192.168.2.23 -> 192.168.2.22 SSH Encrypted request packet len=52
16 packets captured

Eğer çıktıların ekrana değil de sonradan analiz için  bir dosyaya yazdırılması isteniyorsa -w dosya_ismi parametresi kullanılır.

# tshark -w home_labs.pcap
Running as user “root” and group “root”. This could be dangerous.
Capturing on eth0

24

Gerektiğinde home_labs.pcap dosyası libpcap destekli herhangi bir analiz programı tarafından okunabilir. tshark ya da tcpdump ile kaydedilen dosyadan paket okumak
için -r parametresi kullanılır.

Arabirim Belirtme

İstediğiniz arabirim üzerinden dinleme yapılması istenirse -i arabirim_ismi parametresi kullanılır.

#tshark -i eth12
gibi.

-n parametresi ile de host isimlerinin ve servis isimlerinin çözülmemesi sağlanır.

Detaylı Paket Çıktısı

Paketleri ekrandan izlerken ilgili protokole ait tüm detayları görmek için -V parametresi kullanılabilir.

Mesela udp 53(DNS) paketlerini detaylı çıktısını incelyelim.

home-labs#thsark -i eth0 udp port 53
Frame 2 (100 bytes on wire, 100 bytes captured)
Arrival Time: Jan 17, 2009 11:54:34.174323000
[Time delta from previous captured frame: 0.001332000 seconds]
[Time delta from previous displayed frame: 0.001332000 seconds]
[Time since reference or first frame: 0.001332000 seconds]
Frame Number: 2
Frame Length: 100 bytes
Capture Length: 100 bytes
[Frame is marked: False]
[Protocols in frame: eth:ip:udp:dns]
Ethernet II, Src: Arcadyan_a7:22:5c (00:1a:2a:a7:22:5c), Dst: Giga-Byt_5a:1b:96 (00:1f:d0:5a:1b:96)
Destination: Giga-Byt_5a:1b:96 (00:1f:d0:5a:1b:96)
Address: Giga-Byt_5a:1b:96 (00:1f:d0:5a:1b:96)
…. …0 …. …. …. …. = IG bit: Individual address (unicast)
…. ..0. …. …. …. …. = LG bit: Globally unique address (factory default)
Source: Arcadyan_a7:22:5c (00:1a:2a:a7:22:5c)
Address: Arcadyan_a7:22:5c (00:1a:2a:a7:22:5c)
…. …0 …. …. …. …. = IG bit: Individual address (unicast)
…. ..0. …. …. …. …. = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol, Src: 192.168.2.1 (192.168.2.1), Dst: 192.168.2.23 (192.168.2.23)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
…. ..0. = ECN-Capable Transport (ECT): 0
…. …0 = ECN-CE: 0
Total Length: 86
Identification: 0x0000 (0)
Flags: 0x04 (Don’t Fragment)
0… = Reserved bit: Not set
.1.. = Don’t fragment: Set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 64
Protocol: UDP (0x11)
Header checksum: 0xb52e [correct]
[Good: True]
[Bad : False]
Source: 192.168.2.1 (192.168.2.1)
Destination: 192.168.2.23 (192.168.2.23)
User Datagram Protocol, Src Port: domain (53), Dst Port: blueberry-lm (1432)
Source port: domain (53)
Destination port: blueberry-lm (1432)
Length: 66
Checksum: 0x2a35 [correct]
[Good Checksum: True]
[Bad Checksum: False]
Domain Name System (response)
[Request In: 1]
[Time: 0.001332000 seconds]
Transaction ID: 0x0001
Flags: 0x8100 (Standard query response, No error)
1… …. …. …. = Response: Message is a response
.000 0… …. …. = Opcode: Standard query (0)
…. .0.. …. …. = Authoritative: Server is not an authority for domain
…. ..0. …. …. = Truncated: Message is not truncated
…. …1 …. …. = Recursion desired: Do query recursively
…. …. 0… …. = Recursion available: Server can’t do recursive queries
…. …. .0.. …. = Z: reserved (0)
…. …. ..0. …. = Answer authenticated: Answer/authority portion was not authenticated by the server
…. …. …. 0000 = Reply code: No error (0)

Questions: 1
Answer RRs: 1
Authority RRs: 0
Additional RRs: 0
Queries
1.2.168.192.in-addr.arpa: type PTR, class IN
Name: 1.2.168.192.in-addr.arpa
Type: PTR (Domain name pointer)
Class: IN (0x0001)
Answers
1.2.168.192.in-addr.arpa: type PTR, class IN, RT
Name: 1.2.168.192.in-addr.arpa
Type: PTR (Domain name pointer)
Class: IN (0x0001)
Time to live: 2 hours, 46 minutes, 40 seconds
Data length: 4
Domain name: RT

Benzer bir paketin tcpdump ile görüntüsü aşağıdaki gibi olacaktır. Her iki çıktıdan da görüleceği gibi Tshark ile protokol ve katmanlara ait tüm detaylar çözümlenirken tcpdump’da sadece özet bilgiler yer alır.

# tcpdump -i eth0 -n udp port 53 -vv
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

11:57:12.096474 IP (tos 0x0, ttl 128, id 21291, offset 0, flags [none], proto UDP (17), length 59) 192.168.2.23.1446 > 192.168.2.1.53: [udp sum ok] 2+ A?

www.linux.com. (31)
11:57:12.820246 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 215) 192.168.2.1.53 > 192.168.2.23.1446: 2 q: A? www.linux.com. 2/3/3

www.linux.com. CNAME linux.com., linux.com.[|domain]

Tshark’da Filtreler

Tshark aynı Wireshark’da olduğu gibi iki çeşit filtreleme özelliğine sahiptir. Bunlardan biri trafik yakalama esnasında kullanılan ve tcpdump ile hemen hemen aynı
özelliklere(Berkley Paket Filter) sahip olan capture filter, diğeri de yakalanan trafik üzerinde detaylı analiz yapmaya yarayan Display filter dır.
Display filterlar aynı zamanda paket yakalama esnasında da kullanılabilir.

Display filter Kavramı

Display filter özelliği ile Tshark çözümleyebildiği protokollere ait tüm detayları gösterebilir ve sadece bu detaylara ait paketleri yakalamaya yardımcı olur. Mesela
amacımız tüm dns trafiği değil de dns trafiği içerisinde sadece www.lifeoverip.net domainine ait sorgulamaları yakalamak istersek aşağıdaki gibi bir filtreleme işimize yarayacaktır.

Note: Display Filter için  -R ‘filtreleme detayı’ seçeneği kullanılır.

# tshark -i eth0 -n -R ‘dns.qry.name==www.lifeoverip.net’
Running as user “root” and group “root”. This could be dangerous.
Capturing on eth0
11.467730 192.168.2.23 -> 192.168.2.1  DNS Standard query A www.lifeoverip.net
13.467968 192.168.2.23 -> 192.168.2.1  DNS Standard query A www.lifeoverip.net
17.936486 192.168.2.23 -> 192.168.2.1  DNS Standard query A www.lifeoverip.net
17.938038  192.168.2.1 -> 192.168.2.23 DNS Standard query response A 80.93.212.86

Böylece normal snifferlarda sadece udp 53’u dinleyerek bulmaya çalıştığımız detaylar Tshark ile kolayca belirtilebiliyor.

Display Filterlari akılda tutmak ya da ilgili protokole ait tüm detayları bilmek zor olabilir. Bunun için gerektiğinde başvurulacak sağlam bir kaynak var: wireshark
Display Filter Reference
. Bu adresten ilgili protokole ait desteklenen tüm filtrelemeler incelenebilir.

dns_filter

Örnek: HTTP trafiği içerisinde GET, PUT ve OPTIONS kullanılan istekleri yakalama.

home-labs#tshark -i eth0 -n -R ‘http.request.method contains GET or http.request.method contains PUT or http.request.method contains OPTIONS’

Running as user “root” and group “root”. This could be dangerous.
Capturing on eth0
7.571543 192.168.2.22 -> 80.93.212.86 HTTP OPTIONS / HTTP/1.111
14.925700 192.168.2.22 -> 80.93.212.86 HTTP GET / HTRTP/1.1

Bir TCP Bağlantısına ait başlangıç ve bitiş  paketlerini yakalama

İçerisinde SYN veya FIN bayrağı set edilmiş paketleri yakalamak için

# tshark -n -R ‘tcp.port==80 and tcp.flags.fin==1 or tcp.flags.syn==1’
Running as user “root” and group “root”. This could be dangerous.
Capturing on eth0
1.245831 192.168.2.22 -> 80.93.212.86 TCP 36566 > 80 [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=2759271 TSER=0 WS=5
1.259797 80.93.212.86 -> 192.168.2.22 TCP 80 > 36566 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1452 WS=1 TSV=2754203455 TSER=2759271
3.966800 80.93.212.86 -> 192.168.2.22 TCP 80 > 36566 [FIN, ACK] Seq=212 Ack=11 Win=66240 Len=0 TSV=2754206160 TSER=2759947
3.966919 192.168.2.22 -> 80.93.212.86 TCP 36566 > 80 [FIN, ACK] Seq=11 Ack=213 Win=6912 Len=0 TSV=2759952 TSER=2754206160

Filtrelemelerde kullanılacak operatörler(==, !=, contains, vs) için http://www.wireshark.org/docs/dfref/ adresi incelenebilir.

This entry was posted in Network Security, Network Tools, Sniffer and tagged , , , . Bookmark the permalink.

3 Responses to Thsark ile TCP/IP Paket Analizi

  1. Pingback: Netsec Güvenlik Bülteni - 7

  2. Pingback: Netsec Güvenlik Bülteni VII « Elektronik Yayın Arşivi

  3. Pingback: Thsark ile TCP/IP Paket Analizi « İnternetfaresi.net

Leave a Reply

Your email address will not be published. Required fields are marked *

twelve − eight =