Para a maioria dos servidores HTTP, o Nmap simplesmente captura o cabeçalho do servidor, o que pode ser suficiente. Para obter essa informação, tente isto:
printf "HEAD / HTTP/1.0\r\nHost: $TARGET\r\n\r\n" | nc $TARGET 80 | awk '$1=="Server:"{$1="";print}'
Caso contrário, se você quiser usar o Nmap, há algumas maneiras de acelerar o processo.
- Use
-n
para evitar a resolução de nomes - Use
--version-light
ou--version-intensity 0
para reduzir o número de probes enviados. Isso não afetará a maioria dos servidores HTTP, já que o probe padrão geralmente é o que corresponde. - Use
-Pn
para pular a descoberta de host. Você já tem isso como-P0
, o que funciona, mas é uma sintaxe mais antiga.
Todos juntos, eles economizarão alguns milissegundos. Infelizmente, os 6 segundos que você está vendo é o Nmap esperando que o servidor envie os dados primeiro. O Nmap tenta as sondas de detecção de serviço em uma ordem específica: primeiro a sonda NULL (espera que o servidor envie primeiro), então quaisquer sondagens que sejam "para" a porta sendo varrida, então quaisquer outras sondas com uma raridade menor que a intensidade da versão 7). Os probes e suas portas e raridades são definidos no arquivo nmap-service-probes
, que você pode editar. Esta é uma configuração global, portanto, você estará tornando o Nmap menos útil para a detecção de versão geral se você editá-lo. Encontre a linha Probe TCP NULL
e altere o valor totalwaitms
abaixo dela para algo pequeno, como 100
. Deve ser algo como isto:
# This is the NULL probe that just compares any banners given to us
##############################NEXT PROBE##############################
Probe TCP NULL q||
# Wait for at least 6 seconds for data. It used to be 5, but some
# smtp services have lately been instituting an artificial pause (see
# FEATURE('greet_pause') in Sendmail, for example)
totalwaitms 100
Para evitar bagunçar o Nmap em todas as outras digitalizações, faça uma cópia do arquivo nmap-service-probes
e consulte sua localização com a opção --datadir
. Aqui está o resultado que eu consegui:
$ time nmap -Pn -sV -n -p80 $TARGET --datadir=. | grep '^80/tcp'
80/tcp open http Google httpd 2.0 (GFE)
real 0m0.753s
user 0m0.472s
sys 0m0.032s