Czy serwer DHCP może określić system operacyjny klienta?
Pracuję nad narzędziem do monitorowania bram w sieciach lokalnych opartym na sieci i chciałbym móc w jakiś sposób ustalić, na jakim systemie operacyjnym działa urządzenie w sieci i wydaje mi się, że jest to najbardziej oczywiste miejsce, w którym można to odkryć czas przydzielenia adresu IP przez serwer DHCP.
W przeciwnym razie wiem, jak filtrować ruch na porcie 80 i pobierać informacje nagłówka HTML, ale ta metoda polega na czekaniu, aż urządzenie będzie surfować po Internecie, a zatem mniej pożądane niż wczesne wykrycie / rozwiązanie, szczególnie. ponieważ nie każde urządzenie będzie używane do przeglądania Internetu.
Mam pełną kontrolę nad konfiguracją bramy - działa ona z ograniczoną dystrybucją Debiana, więc wszelkie inne narzędzia, które by to zrobiły - DHCP, DNS, ARP itp., Jestem otwarty na sugestie!
źródło
Odpowiedzi:
Wykonano pewne prace w celu ustalenia subtelnych różnic w pakietach DHCP z różnych systemów operacyjnych, w wyniku czego powstają odciski palców DHCP. Przykłady obejmują opcje występujące w żądaniu DHCP i ich kolejność oraz treść niektórych opcji, takich jak opcja 55 (lista parametrów).
Zobacz dokumenty i podpisy na fingerbank.org . Sugeruje to (nie testowałem tego osobiście) pasywne odciski palców systemu operacyjnego na podstawie ruchu DHCP. Wynik można ewentualnie poprawić, włączając inne informacje, takie jak ogólne właściwości IP (TTL, diffserv, ...).
Aktywne pobieranie odcisków palców może zapewnić lepszy wynik, ale może nie być opcją w twoim przypadku użycia.
Witryna Fingerbank wymienia kilka produktów o otwartym kodzie źródłowym, które wykorzystują podpisy. Zastrzeżone urządzenie DHCP Infoblox wydaje się zawierać podobną funkcję, ale nie podano żadnych szczegółów technicznych.
źródło
Niektórzy klienci DHCP nie ujawniają w wiarygodny sposób informacji o systemie operacyjnym podczas rozruchu. Jak wspomniano powyżej, z tymi technikami wiąże się pewna własność intelektualna; na przykład Infoblox i Cisco ISE mogą budować profile systemu operacyjnego klienta na podstawie pakietów dhcp, które widzą. W rzeczywistości Cisco ISE zawiera dość wyrafinowane algorytmy klasyfikacji systemu operacyjnego, jeśli można wysłać do niego więcej niż dhcp.
Ewentualnie możesz użyć heurystyki, takiej jak błąd endiana systemu Windows, w polu „Upłynęły sekundy”, ale poleganie na błędzie systemu operacyjnego jest złym sposobem radzenia sobie z wykrywaniem systemu operacyjnego.
Jeśli naprawdę musisz wykryć system operacyjny bez dedykowanego urządzenia dostawcy, po prostu podaj adres IP i zeskanuj host za pomocą NMAP po wysłaniu potwierdzenia DHCP. Używanie nagłówków HTTP nie jest tak niezawodne jak nmap , ponieważ każdy może zmienić ciąg UserAgent, jeśli chce. nmap nie jest w 100% wiarygodny w wykrywaniu systemu operacyjnego, ale jest tak dobry, jak okaże się, jeśli musisz wybrać jedną metodę do wszystkiego.
Uczyniłbym to konfigurowalną opcją na serwerze, ponieważ niektórzy ludzie mogą nie lubić domyślnego skanowania nmap na każdym hoście DHCP.
Przykład skanowania systemu operacyjnego nmap pod Windows7:
źródło
-T5
flagą, aby znacznie przyspieszyć .W ramach samego procesu DHCP nie sądzę. Możesz jednak zeskrobać dzienniki dhcpd, obserwować pakiety dhcp i na ich podstawie wykonać zewnętrzny proces, np. Odcisk palca nmap os, aby sprawdzić, czy możesz dowiedzieć się, co kryje się za przypisanym właśnie adresem IP.
źródło
Najkrótsza dokładna odpowiedź to nie. Masz już przydatne odpowiedzi
nmap
, ale jeśli musi to być DHCP, wielu klientów wysyła swoje identyfikatory klas dostawców (opcja DHCP 60) w swoich pakietach wykrywania, aby serwer DHCP mógł dostarczyć ofertę z opcjami specyficznymi dla dostawcy (opcja DHCP 43). Jeśli uruchomisz tcpdump i spojrzysz na pakiety wykrywania DHCP wysyłane przez klientów dla opcji 60, możesz zobaczyć rzeczy takie jakMSFT 5.0
dla klientów Windows,udhcpc
zwykle dla urządzeń wbudowanych z klientem micro dhcp itp. Pamiętaj, że ta informacja nie jest bardzo szczegółowa, ponieważ jest używana aby odróżnić klienta DHCP zamiast systemu operacyjnego.źródło