Nmap può aprire solo host con porte specifiche?


18

È possibile nmapelencare tutti gli host sulla rete locale con SSH e HTTP aperti? Per fare ciò, posso eseguire qualcosa del tipo:

nmap 192.168.1.1-254 -p22,80 --open

Tuttavia, questo elenca gli host con QUALSIASI porta dell'elenco aperta, mentre vorrei host con TUTTE le porte aperte. Inoltre, l'output è piuttosto dettagliato:

# 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

Quello che sto cercando è l'output semplicemente come:

192.168.1.16

poiché l'host sopra è l'unico con TUTTE le porte aperte.

Posso sicuramente post-elaborare l'output, ma non voglio fare affidamento sul formato di output di nmap, preferirei che nmap lo facesse, se c'è un modo.


Se vuoi testare solo una porta, 'nmap -p 22 | grep -B3 open 'è un modo semplice.
Luciano Andress Martini,

Risposte:


10

Non esiste un modo per farlo all'interno di Nmap, ma il tuo commento sul non voler "fare affidamento sul formato di output di nmap" mi fa notare che Nmap ha due formati di output stabili per l'analisi leggibile dal computer. Il più vecchio è Grepable output ( -oG) , che funziona bene per l'elaborazione con perl, awk e grep, ma manca alcuni degli output più avanzati (come output di script NSE, motivi di porta, traceroute, ecc.). Il formato più completo è l' output XML ( -oX) , ma potrebbe essere eccessivo per i tuoi scopi.

Puoi salvare questi output in file con -oG, -oXo -oA(entrambi i formati più l'output di testo "normale") oppure puoi inviarli direttamente a stdout:nmap 192.168.1.1-254-p22,80 --open -oG - | awk '/22\/open.*80\/open/{print $2}'


1
È perfetto, proprio quello che stavo cercando (il -oG -)
Brian

2

Considera anche questo awkone-liner:

nmap -Pn -oG -p22,80,443,445 - 100.100.100.100 | awk '/open/{ s = ""; for (i = 5; i <= NF-4; i++) s = s substr($i,1,length($i)-4) "\n"; print $2 " " $3 "\n" s}'

Ti stamperà tutti gli host con tutte le porte aperte specificate come questa:

 100.100.100.100 (some-domain.com)
 22/open/tcp//ssh
 80/open/tcp//http
 443/open/tcp//microsoft-ds
 445/open/tcp//https-alt

Devi aver aggiunto -p dopo averlo testato. Il '-' sulla riga di comando appartiene subito dopo -oG
Wayne il

1

Prova il seguente comando:

nmap --open -p 22,80 192.168.1.1-254 -oG - | grep "/open" | awk '{ print $2 }'

Questo cercherà le tue porte nel tuo intervallo e inoltrerà l'output in formato greppable alla ricerca di porte aperte, quindi stamperà gli indirizzi IP che soddisfano uno di questi criteri.


Benvenuto in U&L! Nota che la risposta accettata da ~ 3 anni fa ha una versione più semplice di questa in cui usa awk per grep e stampa.
Jeff Schaller

1
Direi che il mio è meglio poiché non è necessario aggiungere dati extra per più porte oltre l'opzione di porta. Il suo richiede di aggiornare il tuo awk anche con ciascuna porta, il che è inutilmente dettagliato.
Marshall Hallenbeck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.