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

  1. Uruchom wireshark z prawiami root'a:
su
wireshark
  1. Następnie wybierz Capture - Interfaces.
  2. Wybierz interfejs którym twój komputer łączy się z siecią (zwykle eth0) i naciśnij start.
  3. 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)
  4. Skończ chwytanie pakietów (Capture - Stop).
  5. 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:

  1. Kliknij w wiersz tabelki opisujący pierwszy pakiet protokołu HTTP.
  2. Obejrzyj szczegółowe informacje w środkowej części okna.
  3. Kliknij w Hypertext Transfer Protocol w środkowej części okna.
  4. Obejrzyj które bajty w pakiecie odpowiadają za zawartość HTTP, a które za nagłówki (Ethernet, IP, TCP).
  5. Jaki jest lokalny numer portu? Jaki jest numer portu serwera?
  6. Znajdź pakiet z odpowiedzią serwera.
  7. Z jakiego portu została wysłana odpowiedź? Na jaki port w naszym hoście?
  8. 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).

  1. capture Połącz się jeszcze raz z http://www.mimuw.edu.pl/~krzadca/sieci/pusta.html
  2. Ogranicz pakiety do http (filtr: http && ip.addr == 193.0.96.13)
  3. Co zmieniło się w odpowiedzi serwera?
  4. Dlaczego serwer http mógł odpowiedzieć w ten sposób?

1.4 Złożone strony w HTTP

  1. capture Połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/obraz.html
  2. Ile żądań HTTP przesyła przeglądarka?
  3. Skąd przeglądarka zna adres pliku graficznego?

1.5 Duże strony w HTTP

  1. capture Połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/sklepy.html
  2. W ilu komunikatach HTTP przyszła odpowiedź?
  3. W ilu pakietach TCP przyszła odpowiedź?
  4. Czy możesz przeczytać fragmenty tekstu patrząc bezpośrednio na pakiety TCP?

1.6 XML-RPC

  1. 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).
  2. capture Uruchom klienta.
  3. Zobacz zawartość żądania i odpowiedzi.

1.7 Dalsze pomysły

  1. Połącz się ze stroną używającą ciasteczek (cookies). Czy ciasteczka widać w przechwyconych pakietach? W których?
  2. 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

  1. Zainstaluj telnetd:
su
apt-get install telnetd
/etc/init.d/openbsd-inetd restart
  1. 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.

  1. capture w terminalu napisz: telnet localhost, następnie zaloguj się, wydaj dowolną komendę, wyloguj się.
  2. Zmień filtr na telnet.
  3. Obejrzyj kolejne pakiety, znajdź swój login i hasło.

2.3 Dalsze pomysły

  1. Zaloguj się przez ssh; porównaj przechwycone pakiety.

3 DNS

  1. capture w terminalu napisz dig sands.sce.ntu.edu.sg @a.root-servers.net (pytanie o adres sands.sce.ntu.edu.sg do serwera DNS najwyżej w hierarchii) a następnie dig sands.sce.ntu.edu.sg (pytanie do lokalnego serwera DNS).
  2. Jaki jest adres IP serwera a.root-servers.net? Jaki jest adres IP lokalnego serwera DNS?
  3. Przefiltruj listę pakietów tak, by widać było tylko żądanie do a.root-servers.net. Przeanalizuj zawartość żądania i odpowiedzi DNS.
  4. Porównaj żądania do a.root-servers.net i lokalnego serwera DNS.
  5. Porównaj odpowiedzi a.root-servers.net i lokalnego serwera DNS.

4 TCP

4.1 Nagłówek TCP

  1. capture użyj przeglądarki i połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/pusta.html
  2. Wyłącz analizę protokołu HTTP (Analyze - Enabled Protocols). Ustaw filtr na protokół tcp i adres IP serwera www.mimuw.edu.pl.
  3. Znajdź i zaznacz (Edit - Mark Packet) pakiet w którym przeglądarka przesyła żądanie do serwera.
  4. Co jest w nagłówku TCP? Jakie flagi są związane z żądaniem?
  5. 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

  1. Przeanalizuj pakiety tcp poprzedzające pakiet z żądaniem http.
  2. Ile jest takich pakietów?
  3. Kto inicjuje połączenie?
  4. Jakie flagi są ustawiane?
  5. Przeanalizuj pakiety tcp po pakiecie z odpowiedzią http.
  6. Ile jest takich pakietów?
  7. Kto zaczyna proces zamykania połączenie?
  8. 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.

  1. capture Połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/obraz.html (wyczyść cache przeglądarki)
  2. Znajdź i zaznacz pakiety zawierające dwa żądania http (o pliki obraz.html i email-gmail.gif).
  3. Czy dla każdego żądania nawiązywana była oddzielna sesja TCP, czy też oba żądania były obsłużone w jednej sesji?
  4. 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.

  1. capture Połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/sklepy.html (wyczyść cache przeglądarki)
  2. 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).
  3. Przeanalizuj pierwszy pakiet z danymi i pierwsze potwierdzenie. Dlaczego pakiet z danymi ma seq=1 a odpowiedź ack=1449?
  4. Ile pakietów wysłał serwer, a ile potwierdzeń twój komputer? Czy każdy pakiet jest potwierdzany?
  5. Przeanalizuj końcowe pakiety z danymi i odpowiedzi. Znajdź zależność między numerem potwierdzenia a numerem sekwencyjnym.
  6. 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

  1. capture Połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/pusta.html
  2. Wybierz pakiet zawierający żądanie http.
  3. Przeanalizuj zawartość nagłówka IP.
  4. Wybierz pakiet zawierający odpowiedź http.
  5. Jakie jest TTL?
  6. W jakim celu wprowadzono pole Protocol?
  7. Co sugeruje obecność pola "Fragment Offset"

5.2 Dalsze pomysły

  1. Sprawdź działanie ping www.inf.ufrgs.br, ping -s 10000 www.inf.ufrgs.br.
  2. Sprawdź działanie traceroute www.inf.ufrgs.br.

6 Ethernet

6.1 Adresy fizyczne a adresy IP

  1. capture Połącz się z http://www.mimuw.edu.pl/~krzadca/sieci/pusta.html
  2. Wybierz pakiet zawierający żądanie http.
  3. Przeanalizuj zawartość nagłówka Ethernet.
  4. Czy adres celu w protokole Ethernet jest adresem fizycznym serwera www.mimuw.edu.pl? Czyj to jest adres?
  5. Wybierz pakiet zawierający odpowiedź http.
  6. 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.

  1. Obejrzyj cache arp: napisz w terminalu arp
  2. 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
  3. Obejrzyj pakiety protokołu ARP.
  4. Jakich protokołów ARP używa do komunikacji?
  5. Znajdź pakiet ARP z żądaniem adresu fizycznego bramki. Jaki jest adres źródła? Jaki jest adres celu?
  6. Jakie pola zawiera to żądanie?
  7. Znajdź pakiet z odpowiedzią. Jaki jest adres źródła? Jaki jest adres celu?
  8. Czy odpowiedź jest w jakikolwiek sposób weryfikowane przez twój komputer? Czy każdy komputer może powiedzieć, że jest bramką?

Autor: Krzysztof Rządca

Data: 2011-05-06

HTML generated by org-mode 7.3 in emacs 23