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.