¿Las mejores prácticas para descubrir hosts de red?

2

Estoy creando un programa de redes Python y necesito descubrir todos los hosts utilizables en la red, como teléfonos y computadoras de escritorio en Linux. ¿Qué funciona mejor, NMAP, Arp-Scan, arp o algo más?

He intentado esto para descubrir hosts con NMAP:

nmap -n -sn 192.168.1.0/24 | awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}'

Esto para Arp-Scan:

sudo arp-scan -I wlp1s0 -l

Y esto para ARP:

arp -a

Ejecutando cada uno de estos comandos, uno tras otro, obtengo estos resultados:

seth@pixel:~$ sudo arp-scan -I wlp1s0 -l
Interface: wlp1s0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.1.1 20:e5:2a:04:85:d2   NETGEAR INC.,
192.168.1.3 bc:c8:10:28:6e:38   Cisco SPVTG
192.168.1.4 e4:e0:a6:3f:45:88   (Unknown)
192.168.1.9 d4:f4:6f:25:0f:c3   (Unknown)
192.168.1.16    c0:ee:fb:ef:a0:90   (Unknown)

5 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9: 256 hosts scanned in 2.271 seconds (112.73 hosts/sec). 5 responded
seth@pixel:~$ nmap -n -sn 192.168.1.0/24 | awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}'
192.168.1.1
192.168.1.3
192.168.1.13
192.168.1.16
seth@pixel:~$ arp -a
? (192.168.1.73) at <incomplete> on wlp1s0
? (192.168.1.14) at <incomplete> on wlp1s0
? (192.168.1.207) at <incomplete> on wlp1s0
? (192.168.1.140) at <incomplete> on wlp1s0
? (192.168.1.77) at <incomplete> on wlp1s0
? (192.168.1.18) at <incomplete> on wlp1s0
? (192.168.1.211) at <incomplete> on wlp1s0
? (192.168.1.144) at <incomplete> on wlp1s0
? (192.168.1.81) at <incomplete> on wlp1s0
? (192.168.1.22) at <incomplete> on wlp1s0
? (192.168.1.215) at <incomplete> on wlp1s0
? (192.168.1.148) at <incomplete> on wlp1s0
? (192.168.1.5) at e4:e0:a6:3e:af:ad [ether] on wlp1s0
? (192.168.1.9) at d4:f4:6f:25:0f:c3 [ether] on wlp1s0
? (192.168.1.4) at e4:e0:a6:3f:45:88 [ether] on wlp1s0
? (192.168.1.16) at c0:ee:fb:ef:a0:90 [ether] on wlp1s0
? (192.168.1.3) at bc:c8:10:28:6e:38 [ether] on wlp1s0
? (192.168.1.3) at bc:c8:10:28:6e:38 [ether] on wlp1s0

Como puede ver, arp -a devuelve la mayoría de los hosts en el tiempo más rápido posible, pero ¿es preciso y confiable? ¿Qué debo usar? ¿Debo escribir un script simple que haga ping a todos los hosts en una subred determinada?

    
pregunta Seth Painter 26.01.2018 - 01:53
fuente

2 respuestas

1
  

Para usuarios de shell Unix sin privilegios, las sondas predeterminadas son un paquete SYN a los puertos 80 y 443 que utilizan la llamada al sistema de conexión. Este descubrimiento del host a menudo es suficiente cuando se escanean redes locales, pero se recomienda un conjunto más completo de sondeos de descubrimiento para la auditoría de seguridad.

Descubrimiento del host de Nmap

Por lo tanto, la ejecución de nmap -sn como usuario sin privilegios puede no generar resultados precisos si los hosts no responden a estas sondas (por ejemplo, firewalls estrictos y / o ninguna respuesta ICMP). La ejecución del mismo escaneo como root usará ARP, produciendo un resultado similar, si no idéntico, a la herramienta arp-scan .

Tenga en cuenta que arp -a no escanea ni siquiera necesariamente muestra todos los hosts en la red. Este comando simplemente descarga su tabla ARP, que contiene entradas de los hosts a los que envió solicitudes de ARP o recibió ARP de forma gratuita.

Además, su idea de hacer ping a todos los hosts puede no funcionar si estos hosts no responden debido a los firewalls (los firewalls generalmente se configuran para bloquear ICMP, independientemente del mérito de esta práctica).

Dicho esto, una exploración ARP (con nmap, arp-scan o su propio script) es probablemente la forma más confiable de determinar los hosts en su red local, ya que no se bloqueará, excepto en casos extremos.

    
respondido por el multithr3at3d 26.01.2018 - 03:08
fuente
1

¿Construye su propio escáner con scapy? Luego, puede dirigir este escáner hacia teléfonos y computadoras de escritorio de Linux mediante la búsqueda de banners conocidos y amp; Servicios de cada uno. Esta sería una gran opción si desea desarrollar una mayor comprensión de la red.

enlace

    
respondido por el dom 26.01.2018 - 11:29
fuente

Lea otras preguntas en las etiquetas