Pode nmap
listar todos os hosts na rede local que possuem SSH e HTTP abertos? Para fazer isso, eu posso executar algo como:
nmap 192.168.1.1-254 -p22,80 --open
No entanto, isso lista os hosts que possuem QUALQUER porta de lista aberta, enquanto eu gostaria de hosts que possuem TODAS as portas abertas. Além disso, a saída é bastante detalhada:
# nmap 192.168.1.1-254 -p22,80 --open
Starting Nmap 6.47 ( http://nmap.org ) at 2015-12-31 10:14 EST
Nmap scan report for Wireless_Broadband_Router.home (192.168.1.1)
Host is up (0.0016s latency).
Not shown: 1 closed port
PORT STATE SERVICE
80/tcp open http
Nmap scan report for new-host-2.home (192.168.1.16)
Host is up (0.013s latency).
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 254 IP addresses (7 hosts up) scanned in 3.78 seconds
O que eu estou procurando é uma saída simplesmente como:
192.168.1.16
como o host acima é o único com TODAS as portas abertas.
Certamente posso pós-processar a saída, mas não quero contar com o formato de saída do nmap, prefiro que o nmap faça isso, se houver uma maneira.
Respostas:
Não existe uma maneira de fazer isso no Nmap, mas seu comentário sobre não querer "confiar no formato de saída do nmap" permite-me destacar que o Nmap possui dois formatos de saída estáveis para análise legível por máquina. A mais antiga é a saída Grepable (
-oG
) , que funciona bem para processar com perl, awk e grep, mas está faltando algumas das saídas mais avançadas (como saída de script NSE, motivos de porta, traceroute etc.). O formato mais completo é a saída XML (-oX
) , mas pode ser um exagero para seus propósitos.Você pode salvar essas saídas para arquivos com
-oG
,-oX
ou-oA
(ambos os formatos mais saída de texto "normal"), ou você pode enviar qualquer um direto para stdout:nmap 192.168.1.1-254-p22,80 --open -oG - | awk '/22\/open.*80\/open/{print $2}'
fonte
-oG -
)Considere também este
awk
one-liner:Ele imprimirá todos os hosts com todas as portas abertas especificadas, assim:
fonte
Tente o seguinte comando:
Isso irá procurar por suas portas no seu intervalo e canalizar a saída em formato greppable, procurando por portas abertas, depois imprimir os endereços IP que atendem a qualquer um desses critérios.
fonte