¿Puede nmap
enumerar todos los hosts en la red local que tienen abiertos tanto SSH como HTTP? Para hacerlo, puedo ejecutar algo como:
nmap 192.168.1.1-254 -p22,80 --open
Sin embargo, esto enumera los hosts que tienen CUALQUIERA de los puertos de lista abiertos, mientras que me gustaría que los hosts tengan TODOS los puertos abiertos. Además, el resultado es bastante detallado:
# 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
Lo que estoy buscando es la salida simplemente como:
192.168.1.16
ya que el host anterior es el único con TODOS los puertos abiertos.
Ciertamente puedo postprocesar la salida, pero no quiero confiar en el formato de salida de nmap, prefiero que nmap lo haga, si hay alguna manera.
Respuestas:
No hay una forma de hacerlo dentro de Nmap, pero su comentario sobre no querer "confiar en el formato de salida de nmap" me permite señalar que Nmap tiene dos formatos de salida estables para el análisis legible por máquina. El más antiguo es la salida Grepable (
-oG
) , que funciona bien para procesar con perl, awk y grep, pero le falta algo de la salida más avanzada (como salida de script NSE, razones de puerto, traceroute, etc.). El formato más completo es la salida XML (-oX
) , pero puede ser excesivo para sus propósitos.Puede guardar estas salidas en archivos con
-oG
,-oX
o-oA
(ambos formatos más salida de texto "normal"), o puede enviar uno directamente a stdout:nmap 192.168.1.1-254-p22,80 --open -oG - | awk '/22\/open.*80\/open/{print $2}'
fuente
-oG -
)Considere también esta
awk
frase:Le imprimirá todos los hosts con todos los puertos abiertos especificados como este:
fuente
Pruebe el siguiente comando:
Esto buscará sus puertos en su rango y canalizará la salida en formato greppable buscando puertos abiertos, luego imprimirá las direcciones IP que cumplan con cualquiera de esos criterios.
fuente