- Menu g³ówne
- Newsy
- Forum
- Hackme 1.0
- Hackme 2.0
- Hackme 3.0
- Audiobooki
- Videoarty
- B³edy w PHP
- Linux
- Kurs PHP
- Kurs MySQL
- Kurs Smarty

- JavaScript
- ReverseCraft
- Assembler
- Delphi
- Pozostale
- Materia³y
- Artyku³y
- Security
- Linux
- Software
- Protoko³y
- Poka¿ wszystkie
..:: Tcpdump ::..
Tcpdump jest jednym z popularniejszych analizatorów sieciowych (potocznie nazywanych snifferami) pracuj±cych na platformie uniksowej. G³ównym zadaniem tcpdumpa jest nas³uchiwanie ruchu panuj±cego w sieci. Mo¿na wykorzystaæ ten program w dwóch g³ównych celach takich jak: analiza pakietów, które przep³ywaj± przez siec, oraz w celu przechwytywania informacji wysy³anych przez innych u¿ytkowników. Tcpdumpa mo¿na ¶ci±gn±æ z jego oficjalnej witryny www.tcpdump.org. Do jego dzia³ania wymagana jest biblioteka libpcap, któr± równie¿ mo¿emy ¶ci±gn±æ z wymienionej wcze¶niej strony. Wa¿n± informacj± jest to, ¿e aby móc korzystaæ z tego programu nale¿y posiadaæ w danym systemie konto administratora (root). To tyle tytu³em wstêpu, teraz zajmiemy siê analiz± poszczególnych funkcji oraz mo¿liwo¶ci tego sniffera.
Zanim przyjrzymy siê dok³adniej mo¿liwo¶ci± jakie oferuje nam tcpdump, nale¿y wspomnieæ o metodach zapisywania logów z tego programu, poniewa¿ przegl±danie ich na bie¿±co nie jest wygodne oraz nie pozwana na pó¼niejsz±, dok³adniejsz± analizê pakietów.
Zapisanie logów do pliku poprzez tcpdump wywo³ujemy w nastêpuj±cy sposób:
root# tcpdump -w nazwa_pliku
Parametr "-w" (od ang. "write") w³±cza opcjê logowania danych do pliku. Jednak format tych logów, uniemo¿liwia nam przegl±danie ich w zwyk³ym edytorze tekstowym, tak wiec logicznie my¶l±c aby przegl±daæ logi nale¿y u¿yætego samego programu, ale z parametrem "r" (od ang. "read"). Polecenie bêdzie wygl±daæ nastêpuj±co:
root# tcpdump -r nazwa_pliku
Istnieje jeszcze druga metoda zapisania logów z tcpdump ró¿ni±ca siê od pierwszej tym, ze dziêki niej otrzymujemy plik tekstowy, zdatny do analizy w dowolnym edytorze tekstu.
Jak ³atwo siê domy¶liæ, wystarczy, ¿e przekierujemy wyj¶cie polecenia do pliku:
root# tcpdump > nazwa_pliku
lub
root# tcpdump >> nazwa_pliku
Pierwsza z wy¿ej wymienionych metod (ta ze znakiem ">") utworzy plik do którego zapisywane bêd± logi, lub w przypadku, gdy taki plik ju¿ istnieje, jego zawarto¶æ zostanie wyzerowana. Drugie z poleceñ zapisze nasze logi do danego pliku, dopisuj±c dane na jego koñcu, nie kasuj±c poprzednio zapisanych w nim danych.
To tyle na temat zapisywania logów, teraz przejdziemy do opisu opcji, jakie posiada tcpdump. Podstawowym parametrem z jakim mo¿emy wywo³aæ program, jest "-i" (od ang. interface) a nastêpnie po nim podajemy nazwê interfejsu karty na którym ma nas³uchiwaæ sniffer, przyk³adowo mo¿e to byæ eth0 (pierwsza karta sieciowa). Nasz sniffer z takim parametrem bêdzie nas³uchiwaæ wszystkie pakiety, które przechodz± przez ten interfejs. Kompletne wywo³anie bêdzie wygl±daæ nastêpuj±co:
root# tcpdump -i eth0
Nale¿y wspomnieæ tak¿e o parametrze "-n", którego zastosowanie jest bardzo pomocne, poniewa¿ dziêki niemu nie tracimy czasu na konwertowanie adresów IP na nazwy hostów. Dok³adniej mówi±c nasz log nie bêdzie pokazany w postaci:
IP 10.0.1.247.43533 > m2.gadugadu.pl.8074 (skonwertowany adres IP do DNS)
lecz w postaci:
IP 10.0.1.247.43533 > 217.17.41.85.8074
(adresy nie skonwertowany dziêki u¿yciu parametru "-n")
Kolejnym wa¿nym parametrem, z którym wywo³ujemy program to "-v". Pozwala on na dok³adniejsz± analizê pakietów. Je¶li chcemy uzyskaæ coraz dok³adniejsz± analizê, mo¿emy zwiêkszaæ parametr pisz±c "-vv" lub "-vvv". Przyk³adowo bêdzie to wygl±da³o nastêpuj±co:
root# tcpdump -i eth0 -v
Je¶li mo¿na wywo³aæ program z dok³adn± analiza pakietu, to tak¿e mo¿:na spowodowaæ, by wy¶wietli³ siê nam, coraz dok³adniejszy czas pakietu. S³u¿y do tego parametr "-t" tak jak w poprzednim przyk³adzie, mo¿emy stosowaæ ten parametr w postaci "-tt", "-ttt" oraz "-tttt" co pozwoli nam na coraz dok³adniejsze badanie czasu.
Zajmijmy siê teraz wnêtrzem pakietu, które mo¿na zobaczyæ w postacie heksadecymalnej (szesnastkowej) u¿ywaj±c parametru "x" przyk³adowo:
root# tcpdump -i eth0 -x
rzyk³adowa zawarto¶æ pakietu mo¿e wygl±daæ nastêpuj±co:
0x0000: 4500 003c f74a 4000 4006 3514 0a00 01f7 E..<.J@.@.5.....
0x0010: d911 2955 aa0d 1f8a 34a1 9fe4 8b7c 4119 ..)U....4....|A.
0x0020: 8018 2d40 c3b9 0000 0101 080a 010e 37ca ..-@..........7.
0x0030: 61c1 6a09 0800 0000 0000 0000 a.j.........
Analogicznie, aby zobaczyæ pakiet w postaci ASCII nale¿y u¿yæ parametry "-X" (du¿e X)
Tcpdump mo¿e oprócz nas³uchiwania ca³ego interfejsu sieciowego, przej¶æ na tryb nas³uchiwania poszczególnych portów, protoko³ów albo ruchu pomiêdzy danymi komputerami w sieci itd. Zacznijmy od pierwszej metody. Aby ustawiæ tcpdump na nas³uchiwanie konkretnego portu nale¿y go uruchomiæ w nastêpuj±cy sposób:
root# tcpdump -i eth0 port 80
(zamiast portu 80 mo¿emy wpisaæ dowolny inny port)
Kolejna rzecz±, któr± wymieni³em jest nas³uchiwanie konkretnego protokó³u sieciowego:
root# tcpdump -i eth0 icm
(zamiast protokó³u icmp mo¿emy wpisaæ dowolny inny)
Ostania czynno¶ci± jest ruch pomiêdzy dwoma stacjami:
root# tcpdump -i eth0 host 10.0.1.247 and \(10.0.1.248\)
Wy¿ej wymieniony przyk³ad nas³uchuje ca³y ruch pomiêdzy komputerem o numerze IP: 10.0.1.247, a komputerem o adresie 10.0.1.248
Podam jeszcze jeden przyk³ad metody sniffingu za pomoc± tcpdump, a pó¼niej przejdziemy juz do analizowania logów. Poni¿szy przyk³ad pokazuje jak mo¿emy pods³uchiwaæ dany port na zdefiniowanym komputerze w sieci:
root# tcpdump -i eth0 src 10.0.1.248 and port 80
To chyba tyle na temat najczê¶ciej stosowanych parametrów z jakimi mo¿na wywo³aæ ten program. Je¶li chcesz siê dok³adnie zapoznaæ ze wszystkimi parametrami jakie posiada tcpdump, wpisz w konsoli "man tcpdump".
Przechodzimy teraz do analizy logów. Omówienie tutaj dwa przyk³ady logów. Pierwszym bêdzie log z u¿ycia programu ping, który korzysta z protoko³u diagnostycznego ICMP, drugim za¶ log z komunikatora internetowego.
Log1:
13:29:50.686670 IP 10.0.1.247 > 212.77.100.101: icmp 64: echo request seq 3
13:29:50.704619 IP 212.77.100.101 > 10.0.1.247: icmp 64: echo reply seq 3
Interpretacja:
13:29:50.686670 - czas podany w postaci HH:MM:SS:MS
10.0.1.247 - nadawca
212.77.100.101 - odbiorca
> - kierunek w którym p³yn± pakiety
icmp - protokó³ z którego korzystamy
request - zapytanie
replay - odpowiedz na zapytanie.
Log2:
13:37:46.832958 IP (tos 0x0, ttl 64, id 63716, offset 0, flags [DF], length: 77) 10.0.1.247.43533 > 217.17.41.85.8074: P [tcp sum ok] 883011855:883011880(25) ack 2340185593 win 17376 <nop,nop,timestamp 18040479 1643430965>
0x0000: 4500 004d f8e4 4000 4006 3369 0a00 01f7 E..M..@.@.3i....
0x0010: d911 2955 aa0d 1f8a 34a1 b10f 8b7c 65f9 ..)U....4....|e.
0x0020: 8018 43e0 dd07 0000 0101 080a 0113 469f ..C...........F.
0x0030: 61f4 c435 0b00 0000 1100 0000 21e7 7800 a..5........!.x.
0x0040: 1af9 7801 0800 0000 7465 7374 00 ..x.....test.
Interpretacja:
13:37:46.832958 - czas podany w postaci HH:MM:SS:MStos - typ us³ugi
ttl (time to live) - potêga cyfry 2 która okre¶la d³ugo¶æ zycia pakietu
id - jest to nic innego jak ID pakietu
[DF] - flaga don't framgent (nie fragmentuj)
length: 77 - wielko¶æ pakietu podana w bajtach maksymalna wielko¶æ pakietu w sieciach ethernet wynosi 1500 bajtów
> - kierunek przep³ywu pakietów
10.0.1.247.43533 - adres nadawcy wraz z portem na którym wysy³a
217.17.41.85.8074 - adres odbiorcy wraz z portem na którym odbiera pakiet
883011855:883011880 - numer sekwencyjny
ack - potwierdzenie nastêpnego numeru pakietu danych
win - (window size) wielko¶æ okna podana w bajtach
nop - jest to pusta opcja
timestamp - jak sama nazwa wskazuje, jest to stempel czasu dla pakietu
Pod nag³ówkiem widzimy zawarto¶æ przesy³anego pakietu w postaci heksadecymalnej.
To wszystko co chcia³em wam przedstawiæ na temat ogólnej obs³ugi programu tcpdump.
Uwa¿asz, ¿e prezentowane przez nas informacje s± u¿yteczne? Pomó¿ nam je wypromowaæ!
- Subskrypcja
- Je¶li chcesz byæ powiadamiany o nowo¶ciach na stronie, wpisz tu swój e-mail




Shell status: 
