Detecção de SO

Uma das características mais conhecidas do Nmap é a detecção remota de SO utilizando a identificação da pilha (stack fingerprinting) do TCP/IP. O Nmap envia uma série de pacotes TCP e UDP ao anfitrião(host) remoto e examina praticamente todos os bits das respostas. Após executar dezenas de testes como a amostragem TCP ISN, suporte e ordenamento das opções do TCP, amostragem IPID e a observação do tamanho inicial da janela, o Nmap compara os resultados com o banco de dados nmap-os-fingerprints com mais de 1500 identificações de SO conhecidas e mostra os detalhes do SO se houver uma correspondência. Cada identificação inclui uma descrição textual livre do SO e uma classificação que fornece o nome do fabricante (p.ex.: Sun), SO base (p.ex.: Solaris), geração do SO (p.ex.: 10) e tipo de dispositivo (genérico, router, switch, consola de jogo, etc.).

Se o Nmap não conseguir identificar o SO da máquina e as condições forem favoráveis (p.ex.: pelo menos uma porta aberta e uma porta fechada foram encontradas), o Nmap irá fornecer uma URL onde poderá enviar a identificação se souber (com certeza) o SO em execução na máquina. Fazendo isso, contribui para o pool de sistemas operacionais conhecidos pelo Nmap e, com isso, ele será mais preciso para todos.

A detecção de SO habilita diversos outros testes que usam as informações coletadas durante o processo. Um deles é a medição de uptime, que utiliza a opção timestamp do TCP (RFC 1323) para supor quando uma máquina foi reiniciada pela última vez. Isso apenas é mostrado para as máquinas que fornecem essa informação. Outro é a Classificação de Previsibilidade da Seqüencia do TCP. Ele mede aproximadamente o grau de dificuldade de se estabelecer uma conexão TCP forjada contra um anfitrião(host) remoto. É útil para se explorar relações de confiança baseadas no IP de origem (rlogin, filtros de firewall, etc.) ou para ocultar a origem de um ataque. Esse tipo de enganação (spoofing) raramente é executada hoje em dia, mas muitas máquinas ainda estão vulneráveis a ele. O número de dificuldade real é baseado em amostragens estatísticas e pode variar. Normalmente é melhor usar a classificação em inglês, do tipo worthy challenge (um desafio que vale a pena) ou trivial joke (uma piada, muito fácil). Isso só é mostrado na saída normal do modo verbose (-v). Quando o modo verbose é habilitado juntamente com o -O, a Geração de Seqüencia IPID também é mostrada. A maioria das máquinas é classificada como incremental , o que significa que elas incrementam o campo ID no cabeçalho IP para cada pacote que envia. Isso torna-as vulnerável a diversos ataques avançados de levantamento e forjamento de informações.

Um trabalho documentando o funcionamento, utilização e customização da datecção de versão está disponível em mais de uma dezena de línguas em https://nmap.org/osdetect/.

A deteção de SO é habilitada e controlada com as seguintes opções:

-O (Habilita a detecção de SO)

Habilita a deteção de SO como discutido acima. Alternativamente pode usar -A para habilitar tanto a detecção de SO quanto a detecção de versão.

--osscan-limit (Limitar a detecção de SO a alvos promissores)

A detecção de SO é bem mais eficiente se ao menos uma porta TCP aberta e uma fechada for encontrada. Escolha esta opção e o Nmap não irá nem tentar a detecção de SO contra anfitriões(hosts) que não correspondam a este critério. Isso pode economizar um tempo considerável, particularmente em rastreios(scans) -P0 contra muitos anfitriões(hosts). Isso só importa quando a detecção de SO é solicitada através de -O ou -A.

--osscan-guess; --fuzzy (Resultados de tentativas de detecção de SO)

Quano o Nmap não é capaz de detectar uma correspondência exacta de SO, às vêzes ele oferece possibilidades aproximada. A correspondência tem que ser muito próxima para o Nmap fazer isso por default. Qualquer uma dessas opções (equivalentes) tornam as tentativas do Nmap mais agressivas.