21T33 DHCP w Wireshark’u [Tego nie wiesz]
Opcje DHCP
Więcej miejsc do posłuchania:
Link do artykułu.
Transkrypcja:
0:00 Wprowadzenie
0:21 Środowisko
1:04 Analiza Protokołu DHCP
5:44 Odkrycie Serwera DHCP od strony Klienta
8:45 Podsumowanie
Cześć! Zastanawiałeś się, jak szczegółowo działa DHCP? Oprócz tego, że wszyscy wiemy, że adresy IP dynamicznie nadawane są właśnie rozdawane przez serwer DHCP?
Jeżeli chciałbyś się dowiedzieć, jakie są szczegółowe flagi, jak to wygląda na poziomie pakietu, to dzisiaj właśnie o tym opowiem.
Zacznijmy od naszego środowiska, mam tutaj serwer DHCP uruchomiony i mam stację końcową.
To, jak widzisz, jest terminal stacji końcowej i zaczynamy od uwolnienia adresu IP, czyli z poziomu Windowsa: ipconfig /release. To jest wydanie komendy, żeby zwolnić adres IP.
Kolejnym krokiem będzie odnowienie adresu IP, czyli odpytanie przez DHCP polecenie: ipconfig /renew i mamy teraz już pełną transakcję DHCP między klientem a serwerem przeprowadzoną. Teraz to, co potrzebujemy zrobić, to przeanalizować protokół DHCP. Możemy zastosować w Wiresharku ograniczenie przez udp port 68, czyli ograniczmy komunikację, czy to, co nam się wyświetla w ramach Wiresharka tylko do tego protokołu.
Mamy jednocześnie ograniczoną teraz tutaj jedną sesję, którą wygenerowaliśmy przed chwilą w ramach protokołu DHCP. Mamy dwa adresy, które się pojawiają: z końcówką 107. To jest adres mojego hosta, który miał taki adres przydzielony przez serwer DHCP i z końcówką 01 – to jest adres routera, który serwuje tutaj funkcję DHCP. Oprócz tego pojawiają się adresy 0.0.0.0, czyli to jest etap, w którym nasz host, czyli stacja końcowa, nie ma adresu IP, więc wypuszcza zapytanie na adres broadcastowy IP, na poziomie ramki Ethernetowej, to jeszcze też za chwilę zobaczysz.
Mamy tutaj po prawej stronie też informację, jaki to jest rodzaj zapytania,
czyli DHCP Release, zwolnienie adresu; DHCP Discover, czyli odkrycie serwera DHCP; odpowiedź DHCP Offer, to jest odpowiedź od serwera z końcówką 1, zauważ, do naszego hosta z końcówką 107, to jest DHCP Offer.
Mamy tutaj DHCP Request następnie, czyli wysłanie zapytania, prośba o przyznanie adresu IP i to jest od adresu 0.0.0.0, czyli od hosta broadcastowo do serwera DHCP. Na końcu mamy ACK, czyli acknowledge ze strony serwera DHCP.
Czyli to jest pełna transakcja i widzimy, że wtedy unicastem już potwierdzenie idzie od serwera DHCP do hosta.
Okej, teraz rozwińmy sobie te nasze komunikaty i możemy zobaczyć, co my tutaj mamy, jeżeli chodzi o szczegółowe flagi.
Zauważ, że jak patrzymy sobie na ten poziom protokołu DHCP, czyli to, co jest w udp, to widzimy typ komunikatu Release i zauważ, że my wiemy, że to jest typ komunikatu Release z opcji 53 Message Type. Czyli jaki rodzaj wiadomości jest to przekazywany teraz w tym protokole DHCP.
Okej, teraz zobaczmy według naszego schematu, czyli według standardu,
co za pola mamy. Mamy typ operacji, rodzaj sprzętu, długość adresu, ilość hopów, identyfikator transakcji, to jest ważne, bo zauważ, że DHCP jest transakcyjne.
Zobacz, że tutaj mamy od 0x87, czyli to jest heksadecymalny zapis, ale mamy tutaj informację, że to jest numer transakcji zaczynający się od 87-zapamiętaj ten numer, za chwilę przejdziemy do kolejnych wpisów i zobaczysz, że ten numer będzie inny.
Dobrze, czyli mamy transakcję. Mamy tutaj adres IP klienta. Czyli mamy adres IP, który tu był zwalniany i w tym komunikacie zwolnienia adresu jest ta informacja wysyłana do serwera DHCP.
Czyli wie wtedy serwer, że z końcówką 107 adres jest zwalniany z puli. Mamy możliwość przeanalizowania poszczególnych pól. Tu nie ma więcej nic, Client IP przy komunikacie nie występuje, więc nie mamy tutaj nic, jest 0.0.0.0.
I mamy tu oczywiście jeszcze cały zakres flag, czyli możemy zobaczyć sobie, jakie parametry w tym zapytaniu, czy w tej informacji DHCP zostały wysłane.
Mamy na końcu opcję 255, że to jest koniec opcji. Zauważ, że te opcje rosną. Czyli mamy opcję 61, opcję 53-już mówiłem, rodzaj komunikatu, 54-identyfikator serwera DHCP, opcja 61-identyfikator klienta, czyli tutaj w postaci MAC adresu i opcja 255, ostatnia, mówiąca, że więcej opcji nie ma.
Zauważ, że te opcje są rosnące. Dobrze, to mamy pierwszy komunikat i teraz zobaczmy, co się dzieje dalej.
Czyli najpierw zwolniliśmy adres od strony klienta, a teraz przeprowadzamy odkrycie serwera DHCP od strony klienta. Czyli idzie broadcastem zapytanie z adresu 0.0.0.0, bo tutaj adresu nie mamy, w związku z tym nie wiadomo, jaki adres ma przypisać host, jest wpisany 0.0.0.0, adres broadcastowy 255.255.255.255 w tym przypadku.
Widzimy, jaki jest MAC adres klienta. Widzimy też, że na poziomie ramki Ethernetowej, mamy adres broadcastowy, czyli same ff, czyli widać, że broadcast jest na poziomie ramki IP i ramki Ethernetowej. Mamy tutaj na poziomie udp protokołu komunikację z portu 68 na port 67, czyli widać, że idzie na port serwera.
Serwer odpowiada na porcie 67. Następnie mamy Offer i teraz spójrz na Transaction ID. Czyli mamy Transaction ID 0x15. Czyli już widać, że to jest inny
typ komunikacji, jakby inna transakcja dla tej komunikacji pobierania adresu niż była przy zwalnianiu adresu. Czyli mamy tę identyfikację.
Mamy tutaj informację klient IP i adres 107, czyli to jest odpowiedź od strony serwera DHCP do klienta, że jego adres IP będzie z końcówką 107.
Mamy MAC adres tego klienta i to jest zestaw naszych odpowiedzi. Widzimy, że adres destination jest 107. Tutaj też widać, że odpowiedź, czyli DHCP Offer idzie już unicastem.
Widzimy, że jest konkretny MAC adres, konkretny IP adres. Okej.
I co się ciekawego tu dalej dzieje?
Mimo że serwer DHCP wysłał do klienta DHCP Offer, to klient i tak jeszcze wysyła raz DHCP Request, czyli prośbę o nadanie adresu IP.
Zauważ, że idzie z portu 68 na 67 z adresem broadcastowym MAC.
Czyli to, że przesłał do DHCP ofertę, to jeszcze nie jest koniec procesu, jeszcze w ramach tego Transaction ID musi pójść Request od strony klienta.
Okej i tak się właśnie dzieje. Teraz w ramach tej samej Transaction ID 0x15, tylko już teraz od strony serwera do klienta, idzie DHCP ACK. Czyli w tym momencie potwierdza ten serwer, że adres z końcówką 107 może być przypisany dla tego hosta.
To jest koniec całej transakcji i przypisanie adresu IP dla klienta. Mam nadzieję, że to było dla Ciebie ciekawe.
Prześledzenie wszystkich tych kroków, myślę, że warto raz na jakiś czas przypomnieć, jak to działa. Na co dzień się raczej nie zagłębiamy aż w taki niski
poziom szczegółowości, ale jeżeli będziesz sobie przypominał o takich rzeczach
co jakiś czas, to Twój poziom wiedzy będzie niewątpliwie na wyższym poziomie.
Jeżeli jesteś ciekaw szerszego kontekstu na temat serweru DHCP,
to zapraszam Cię do mojego podcastu. Jeżeli masz jakieś inne pytania, to oczywiście zachęcam do pisania w komentarzu.
Na dzisiaj Ci dziękuję i do zobaczenia za tydzień.






