Wykrywanie systemu operacyjnego
Jedna z najbardziej znanych możliwości Nmapa jest zdalna detekcja
systemu operacyjnego za pomocą odcisków palca (fingerprint) stosu TCP/IP.
Nmap wysyła serię pakietów TCP i UDP do zdalnego systemu i analizuje
praktycznie każdy bit z uzyskanych odpowiedzi. Po wykonaniu dziesiątek
testów takich jak próbkowanie ISN TCP, analiza opcji protokołu TCP i
kolejności, próbkowanie IPID i kontrola początkowych rozmiarów okna, Nmap
porównuje uzyskane wyniki z bazą z pliku
nmap-os-fingerprints
zawierającą ponad 1500 znanych odcisków systemów operacyjnych i wyświetla
wynik, jeśli udało sie go odnaleźć.
Każdy odcisk zawiera tekstowy opis systemu operacyjnego, nazwę jego
producenta (np. Sun), nazwę systemu (np. Solaris), generację (np. 10) i typ
urządzenia (przeznaczenie ogólne, router, switch, konsola do gier itp).
Jeśli Nmap nie może ustalić systemu i warunki do jego wykrycia są wystarczające (np. wykryto przynajmniej jeden otwarty i jeden zamknięty port), Nmap poda adres URL, dzięki któremu, jeśli jesteśmy pewni, możliwe jest wysłanie opisu nieznanego systemu, wraz z jego odciskiem. Wykonanie tej operacji przyczynia się do rozbudowy bazy i poprawy wykrywania, na czym korzystają wszyscy użytkownicy.
Detekcja systemu operacyjnego pozwala na uzyskanie innych informacji,
które są zbierane podczas tego procesu. Jedną z nich jest czas od
uruchomienia hosta, co jest uzyskiwane poprzez wykorzystanie opcji TCP
timestamp (RFC 1323) do ustalenia kiedy host był restartowany. Informacja
ta jest podawana tylko wtedy, jeśli host jej dostarcza. Inną informacją jest
klasyfikacja przewidywalności numerów sekwencyjnych TCP. Badane jest
prawdopodobieństwo możliwości wstrzyknięcia pakietów w przechwycone
połączenie. Informacja ta jest przydatna w przypadku testowania połączeń
opartych na zaufaniu do adresu IP nadawcy (rlogin, filtry firewalla itp)
lub podczas ukrywania źródła ataku. Ten typ ataków jest obecnie rzadko
wykorzystywany, jednak niektóre systemy są nadal na niego podatne.
Podawany poziom trudności jest oparty na statystycznych próbkach i może
się zmieniać. Ogólnie lepiej jest używać angielskich określeń dla
poszczególnych klas, takich jak „worthy challenge” (stanowiący
wyzwanie) lub „trivial joke” (trywialny dowcip). Taki sposób
raportowania jest dostępny tylko przy domyślnym formacie raportu przy
włączonej opcji zwiększającej szczegółowość podawanych informacji
(-v
). Jeśli użyto opcji -v
w połączeniu z
-O
, podane zostaną informacje o generowaniu numerów
sekwencyjnych IPID. Większość adresów należy do klasy
„incremental” (rosnące) co oznacza, że wartość pola ID w
nagłówkach pakietów IP jest zmieniana rosnąco w kolejnych pakietach. Taki
sposób powiększania numerów powoduje podatność na szereg ataków.
Dokument opisujący działanie i używanie detekcji wersji jest
dostępny w wielu językach pod adresem
https://nmap.org/osdetect/
.
Wykrywanie systemu operacyjnego jest włączane i kontrolowane przez poniższe opcje:
-
-O
(Włączenie wykrywania systemu operacyjnego) Włącza wykrywanie systemu operacyjnego opisanego powyżej. Alternatywnie można używać opcji
-A
, która włącza jednocześnie wykrywanie systemu operacyjnego i wersji usług.-
--osscan-limit
(Limitowanie wykrywania do obiecujących celów) Wykrywanie systemu operacyjnego jest dużo bardziej efektywne, jeśli wykryto przynajmniej po jednym otwartym i zamkniętym porcie TCP. Użycie tej opcji spowoduje, że Nmap nie będzie próbował określać systemu operacyjnego, jeśli nie zostały spełnione powyższe kryteria. Wykorzystanie tego ograniczenia pozwala na znaczne skrócenie czasu, zwłaszcza w połączeniu z opcją
-P0
przy skanowaniu wielu adresów. Opcja ma znaczenie tylko w połączeniu z-O
lub-A
.-
--osscan-guess
;--fuzzy
(Zgadywanie wersji systemu operacyjnego) Jeśli Nmap nie może jednoznacznie dopasować systemu operacyjnego, czasami może sugerować kilka różnych, zbliżonych do siebie. Podobieństwo musi być bardzo duże, żeby Nmap zachował się w ten sposób przy domyślnej konfiguracji. Wykorzystanie tej opcji pozwala na większą swobodność przy próbach ustalenia wersji systemu.