Wireshark: laboratorium
Laboratorium luźno oparte o materiały z książki "Computer Networking", James F. Kurose, Keith W. Ross, Addison-Wesley Longman 2006.
Spis treści
1 Jak to zrobić + HTTP
1.1 Łapanie pakietów
-
Uruchom
wireshark
z prawiami root'a:
su wireshark
-
Następnie wybierz
Capture - Interfaces
. -
Wybierz interfejs którym twój komputer łączy się z siecią (zwykle
eth0
) i naciśnij start. -
Przeglądarką połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/pusta.html (uwaga: za drugim razem wyczyść cache przeglądarki,
C-S-del
) -
Skończ chwytanie pakietów (
Capture - Stop
). -
Przefiltruj listę pakietów by zostawić tylko te opisujące komunikację z hostem
www.mimuw.edu.pl
(IP:193.0.96.13
): wpisz w okienko filter:ip.addr == 193.0.96.13
.
1.2 Analiza pakietów
Okno wireshark podzielone jest na trzy części:
- górna część zawiera listę złapanych pakietów (przefiltrowanych przez filter)
- środkowa część to analiza wybranego pakietu
- dolna część to zawartość pakietu (binarna i reprezentacja ASCII)
Zadania:
- Kliknij w wiersz tabelki opisujący pierwszy pakiet protokołu HTTP.
- Obejrzyj szczegółowe informacje w środkowej części okna.
- Kliknij w Hypertext Transfer Protocol w środkowej części okna.
- Obejrzyj które bajty w pakiecie odpowiadają za zawartość HTTP, a które za nagłówki (Ethernet, IP, TCP).
- Jaki jest lokalny numer portu? Jaki jest numer portu serwera?
- Znajdź pakiet z odpowiedzią serwera.
- Z jakiego portu została wysłana odpowiedź? Na jaki port w naszym hoście?
- Jaka jest zawartość odpowiedzi serwera?
1.3 Cache'owanie w HTTP
Uwaga: w dalszej części tekstu fragmenty scenariusza które trzeba wykonać z włączonym łapaniem pakietów oznaczone są przez capture
Uwaga 2: po wstępnym wybraniu interfejsu, łapanie pakietów można włączać przez Capture - Start
(C-e
).
- capture Połącz się jeszcze raz z http://www.mimuw.edu.pl/~krzadca/sieci/pusta.html
-
Ogranicz pakiety do http (filtr:
http && ip.addr == 193.0.96.13
) - Co zmieniło się w odpowiedzi serwera?
- Dlaczego serwer http mógł odpowiedzieć w ten sposób?
1.4 Złożone strony w HTTP
- capture Połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/obraz.html
- Ile żądań HTTP przesyła przeglądarka?
- Skąd przeglądarka zna adres pliku graficznego?
1.5 Duże strony w HTTP
- capture Połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/sklepy.html
- W ilu komunikatach HTTP przyszła odpowiedź?
- W ilu pakietach TCP przyszła odpowiedź?
- Czy możesz przeczytać fragmenty tekstu patrząc bezpośrednio na pakiety TCP?
1.6 XML-RPC
- Uruchom serwer xml-rpc z poprzednich zajęć, ale zmień port na 8080 (inaczej wireshark będzie miał kłopoty z interpretacją pakietów jako http).
- capture Uruchom klienta.
- Zobacz zawartość żądania i odpowiedzi.
1.7 Dalsze pomysły
- Połącz się ze stroną używającą ciasteczek (cookies). Czy ciasteczka widać w przechwyconych pakietach? W których?
- Połącz się przez www z twoją skrzynką pocztową. Jak wygląda proces logowania? Czy serwer używa http czy https? Czy w przechwyconych pakietach jest hasło?
2 telnet
2.1 Setup
- Zainstaluj telnetd:
su apt-get install telnetd /etc/init.d/openbsd-inetd restart
-
Upewnij się, że serwer telnet działa:
telnet localhost
.
2.2 Szukanie hasła w telnet
Uwaga: łączysz się z lokalnym komputerem, więc zmień interfejs na którym chwytasz pakiety na localhost
.
-
capture w terminalu napisz:
telnet localhost
, następnie zaloguj się, wydaj dowolną komendę, wyloguj się. -
Zmień filtr na
telnet
. - Obejrzyj kolejne pakiety, znajdź swój login i hasło.
2.3 Dalsze pomysły
- Zaloguj się przez ssh; porównaj przechwycone pakiety.
3 DNS
-
capture w terminalu napisz
dig sands.sce.ntu.edu.sg @a.root-servers.net
(pytanie o adressands.sce.ntu.edu.sg
do serwera DNS najwyżej w hierarchii) a następniedig sands.sce.ntu.edu.sg
(pytanie do lokalnego serwera DNS). -
Jaki jest adres IP serwera
a.root-servers.net
? Jaki jest adres IP lokalnego serwera DNS? -
Przefiltruj listę pakietów tak, by widać było tylko żądanie do
a.root-servers.net
. Przeanalizuj zawartość żądania i odpowiedzi DNS. -
Porównaj żądania do
a.root-servers.net
i lokalnego serwera DNS. -
Porównaj odpowiedzi
a.root-servers.net
i lokalnego serwera DNS.
4 TCP
4.1 Nagłówek TCP
- capture użyj przeglądarki i połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/pusta.html
-
Wyłącz analizę protokołu HTTP (
Analyze - Enabled Protocols
). Ustaw filtr na protokół tcp i adres IP serwerawww.mimuw.edu.pl
. -
Znajdź i zaznacz (
Edit - Mark Packet
) pakiet w którym przeglądarka przesyła żądanie do serwera. - Co jest w nagłówku TCP? Jakie flagi są związane z żądaniem?
- Znajdź i zaznacz pakiet z odpowiedzią serwera zawierającą stronę internetową. Jakie flagi są ustawione? Czy jest to jedyna odpowiedź tcp serwera? Jeśli nie - dlaczego jest ich więcej? Czym różnią się pozostałe odpowiedzi?
4.2 Zestawianie i zamykanie połączenia TCP
- Przeanalizuj pakiety tcp poprzedzające pakiet z żądaniem http.
- Ile jest takich pakietów?
- Kto inicjuje połączenie?
- Jakie flagi są ustawiane?
- Przeanalizuj pakiety tcp po pakiecie z odpowiedzią http.
- Ile jest takich pakietów?
- Kto zaczyna proces zamykania połączenie?
- Jakie flagi są ustawiane?
4.3 Połączenia keep-alive w http
Zobaczymy jak przeglądarka i serwer obsługują strony wymagające więcej niż jednego żądania http.
- capture Połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/obraz.html (wyczyść cache przeglądarki)
-
Znajdź i zaznacz pakiety zawierające dwa żądania http (o pliki
obraz.html
iemail-gmail.gif
). - Czy dla każdego żądania nawiązywana była oddzielna sesja TCP, czy też oba żądania były obsłużone w jednej sesji?
- Co daje niezamykanie połączeń (czyli http w trybie keep-alive)? Jakie są możliwe problemy?
4.4 Numery sekwencyjne w tcp
Zobaczymy jak protokół tcp kwituje otrzymanie danych.
- capture Połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/sklepy.html (wyczyść cache przeglądarki)
- Przeanalizuj numery sekwencyjne w kolejnych pakietach odebranych z serwera (zarówno numer względny, podawany przez wireshark jak i bezwzględny, widoczny w dolnym oknie).
-
Przeanalizuj pierwszy pakiet z danymi i pierwsze potwierdzenie. Dlaczego pakiet z danymi ma
seq=1
a odpowiedźack=1449
? - Ile pakietów wysłał serwer, a ile potwierdzeń twój komputer? Czy każdy pakiet jest potwierdzany?
- Przeanalizuj końcowe pakiety z danymi i odpowiedzi. Znajdź zależność między numerem potwierdzenia a numerem sekwencyjnym.
- Wróć do pakietów zestawiających połączenie. Jaki jest numer sekwencyjny pierwszego pakietu wysłanego przez twój komputer? Jaki jest numer sekwencyjny pierwszej odpowiedzi serwera? Jaki jest numer potwierdzenia w pierwszej odpowiedzi serwera (pakiecie z flagami SYN,ACK)? Jaki jest numer potwierdzenia w trzecim pakiecie (wysłanym przez twój komputer)? W jakim celu potwierdza się początkowe numery sekwencyjne?
5 IP
5.1 Nagłówek IPv4
- capture Połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/pusta.html
- Wybierz pakiet zawierający żądanie http.
- Przeanalizuj zawartość nagłówka IP.
- Wybierz pakiet zawierający odpowiedź http.
- Jakie jest TTL?
- W jakim celu wprowadzono pole Protocol?
- Co sugeruje obecność pola "Fragment Offset"
5.2 Dalsze pomysły
-
Sprawdź działanie
ping www.inf.ufrgs.br
,ping -s 10000 www.inf.ufrgs.br
. -
Sprawdź działanie
traceroute www.inf.ufrgs.br
.
6 Ethernet
6.1 Adresy fizyczne a adresy IP
- capture Połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/pusta.html
- Wybierz pakiet zawierający żądanie http.
- Przeanalizuj zawartość nagłówka Ethernet.
-
Czy adres celu w protokole Ethernet jest adresem fizycznym serwera
www.mimuw.edu.pl
? Czyj to jest adres? - Wybierz pakiet zawierający odpowiedź http.
- Jaki jest adres źródła? Jaki jest adres celu?
6.2 Address Resolution Protocol (ARP)
Skąd twój komputer zna adres fizyczny bramki? Wyczyścimy cache adresów fizycznych i zobaczymy jak sobie poradzi.
-
Obejrzyj cache arp: napisz w terminalu
arp
-
capture Wyczyść cache przez:
sudo arp -d adres-routera
, następnie połącz się przeglądarką z http://www.mimuw.edu.pl/~krzadca/sieci/pusta.html - Obejrzyj pakiety protokołu ARP.
- Jakich protokołów ARP używa do komunikacji?
- Znajdź pakiet ARP z żądaniem adresu fizycznego bramki. Jaki jest adres źródła? Jaki jest adres celu?
- Jakie pola zawiera to żądanie?
- Znajdź pakiet z odpowiedzią. Jaki jest adres źródła? Jaki jest adres celu?
- Czy odpowiedź jest w jakikolwiek sposób weryfikowane przez twój komputer? Czy każdy komputer może powiedzieć, że jest bramką?
Data: 2011-05-06
HTML generated by org-mode 7.3 in emacs 23