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 facto de servidores de
correio eletrónico. Entretanto 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, 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 exacto 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 rastreio(scan), a detecção de versão interroga
essas portas para determinar mais informações sobre o que realmente
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 anfitrião(host), tipo de dispositivo (p.ex.: impressora,
router), 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 rastreio(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/versionscan.html
.
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 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 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 default a detecção de versão do Nmap salta 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 directiva
Exclude
nonmap-service-probes
ou pode especificar--allports
para rastrear(scan) todas as portas independente de qualquer directivaExclude
.--version-intensity <intensidade>
(Estabelece a intensidade do rastreio(scan) de versão)Quando está executando um rastreio(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 efectivas 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 rastreios(scans) de alta intensidade levam mais tempo. A intensidade deve estar entre 0 e 9. O default é 7. Quando uma sondagem é registrada na porta-alvo através da directivanmap-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 rastreio(scan) 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 rastreio(scan) de versão)Isto faz com que o Nmap mostre informações de depuração extensivas sobre o que o rastreio(scan) de versão está fazendo. É um sub-conjunto do que obteria com
--packet-trace
.-sR
(Scan RPC)Este método trabalha em conjunto com os vários métodos de rastreio(scan) 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 pode obter efectivamente 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 rastreio(scan) RPC. Isso é habilitado automaticamente como parte do rastreio(scan) de versão (
-sV
) se o solicitar. Como a detecção de versão inclui isso e é muito mais abrangente, o-sR
raramente é necessário.