Detecção de Serviço e Versão
Aponte o Nmap para uma máquina remota e ele poderá lhe dizer que
as portas 25/tcp, 80/tcp e 53/udp estão abertas. Utilizar o banco de
dados nmap-services
, com cerca de 2.200 serviços
bastante conhecidos, do Nmap iria relatar que aquelas portas
provavelmente correspondem a um servidor de correio eletrônico (SMTP), a
um servidor de páginas web (HTTP) e a um servidor de nomes (DNS)
respectivamente. Essa pesquisa normalmente é precisa -- a grande maioria
de daemons escutando na porta TCP 25 é, de fato, de servidores de
correio eletrônico. Entretanto, você não deveria apostar a sua segurança
nesta informação! As pessoas podem e executam serviços em portas
estranhas.
Mesmo que o Nmap esteja certo, e o servidor hipotético acima esteja executando os serviços SMTP, HTTP e DNS, isso não é informação o bastante. Quando fizer uma avaliação de vulnerabilidades (ou mesmo um simples inventário da rede) de sua empresa ou clientes, você realmente deseja saber qual o programa-servidor de correio eletrônico ou de nomes e as versões que estão rodando. Ter um número de versão exato ajuda substancialmente na determinação de quais explorações (exploits) o servidor está vulnerável. A detecção de versão ajuda a obter esta informação.
Depois que as portas TCP e/ou UDP forem descobertas usando
qualquer um dos outros métodos de scan, a detecção de versão interroga
essas portas para determinar mais informações sobre o que realmente está
sendo executado nessas portas. O banco de dados
nmap-service-probes
do Nmap contém sondagens para
pesquisar diversos serviços e expressões de acerto (match expressions)
para reconhecer e destrinchar as respostas. O Nmap tenta determinar os
protocolos de serviços (p.ex.: ftp, ssh, telnet, http), o nome da
aplicação (p.ex.: ISC Bind, Apache httpd, Solaris telnetd), o número da
versão, o nome do host, tipo de dispositivo (p.ex.: impressora,
roteador), a família do SO (p.ex.: Windows, Linux) e às vezes detalhes
diversos do tipo, se um servidor X está aberto para conexões, a versão
do protocolo SSH ou o nome do usuário do KaZaA. É claro que a maioria
dos serviços não fornece todas essas informações. Se o Nmap foi
compilado com o suporte ao OpenSSL, ele irá se conectar aos servidores
SSL para deduzir qual o serviço que está escutando por trás da camada
criptografada. Quando os serviços RPC são descobertos, o "amolador" de
RPC (RPC grinder) do Nmap (-sR
) é automaticamente
utilizado para determinar o nome do programa RPC e o número da versão.
Algumas portas UDP são deixadas no estado
aberta|filtrada
depois que scan de porta UDP não
consegue determinar se a porta está aberta ou filtrada. A detecção de
versão irá tentar provocar uma resposta dessas portas (do mesmo jeito
que faz com as portas abertas), e alterar o estado para aberta se
conseguir. Portas TCP do tipo aberta|filtrada
são
tratadas da mesma forma. Note que a opção -A
do Nmap
habilita a detecção de versão, entre outras coisas. Um trabalho
documentando o funcionamento, uso e customização da detecção de versão
está disponível em https://nmap.org/vscan/
.
Quando o Nmap recebe uma resposta de um serviço mas não consegue encontrá-la em seu banco de dados, ele mostra uma identificação (fingerprint) especial e uma URL para que você envie informações se souber com certeza o que está rodando nessa porta. Por favor, considere dispor de alguns minutos para mandar essa informação de forma que sua descoberta possa beneficiar a todos. Graças a esses envios, o Nmap tem cerca de 3.000 padrões de acerto para mais de 350 protocolos, tais como o smtp, ftp, http, etc.
A detecção de versão é habilitada e controlada com as seguintes opções:
-sV
(detecção de versão)Habilita a detecção de versão, conforme discutido acima. Alternativamente, você pode usar a opção
-A
para habilitar tanto a detecção de SO como a detecção de versão.--allports
(Não exclui nenhuma porta da detecção de versão)Por padrão, a detecção de versão do Nmap pula a porta TCP 9100 por causa de algumas impressoras que imprimem qualquer coisa que seja enviada para essa porta, levando a dezenas de páginas com requisições HTTP, requisições de sessões SSL binárias, etc. Esse comportamento pode ser alterado modificando-se ou removendo a diretiva
Exclude
nonmap-service-probes
, ou você pode especificar--allports
para escanear todas as portas independente de qualquer diretivaExclude
.--version-intensity <intensidade>
(Estabelece a intensidade do scan de versão)Quando está executando um scan de versão (
-sV
), o nmap envia uma série de sondagens, cada qual com um valor atribuído de raridade, entre 1 e 9. As sondagens com números baixos são efetivas contra uma ampla variedade de serviços comuns, enquanto as com números altos são raramente úteis. O nível de intensidade especifica quais sondagens devem ser utilizadas. Quando mais alto o número, maiores as chances de o serviço ser corretamente identificado. Entretanto, scans de alta intensidade levam mais tempo. A intensidade deve estar entre 0 e 9. O padrão é 7. Quando uma sondagem é registrada na porta-alvo através da diretivanmap-service-probes
ports
, essa sondagem é tentada independentemente do nível de intensidade. Isso assegura que as sondagens DNS sempre serão tentadas contra qualquer porta 53 aberta, e a sondagem SSL será realizada contra a 443, etc.--version-light
(Habilita o modo leve (light))Esse é um apelido conveniente para
--version-intensity 2
. Esse modo leve torna o escaneamento de versão muito mais rápido, mas é ligeiramente menos provável que identifique os serviços.--version-all
(Tenta simplesmente todas as sondagens)Um apelido para
--version-intensity 9
, assegurando que todas as sondagens sejam tentadas contra cada porta.--version-trace
(Monitora as atividades do scan de versão)Isto faz com que o Nmap mostre informações de depuração extensivas sobre o que o escaneamento de versão está fazendo. É um sub-conjunto do que você obteria com
--packet-trace
.-sR
(Scan RPC)Este método trabalha em conjunto com os vários métodos de escaneamento de portas do Nmap. Ele pega todas as portas TCP/UDP descobertas no estado aberta e inunda-as com comandos NULL do programa SunRPC, em uma tentativa de determinar se elas são portas RPC e, se forem, quais programas e números de versão elas mostram. Dessa forma você pode obter efetivamente a mesma informação que o rpcinfo -p mesmo se o portmapper do alvo estiver atrás de um firewall (ou protegido por TCP wrappers). Chamarizes não funcionam ainda com o scan RPC. Isso é habilitado automaticamente como parte do scan de versão (
-sV
) se você o solicitar. Como a detecção de versão inclui isso e é muito mais abrangente, o-sR
raramente é necessário.