Cómo encontrar qué otras máquinas están conectadas a la red local

27

¿Cómo puedo ver una lista de todas las máquinas que están disponibles en la LAN de la que soy parte?

tshepang
fuente

Respuestas:

28

¿Cuánto sabes sobre la LAN en cuestión? Supongo que no sabes nada solo enchufado el cable o conectado a wifi.

  1. Intente solicitar una dirección IP con DHCP. ¿Tienes uno? Entonces ya sabe algunas cosas: la IP de la puerta de enlace, la IP del servidor DHCP, la máscara de subred y quizás los servidores DNS.
  2. Si no obtiene uno, no hay servidor DHCP o la red está filtrada por MAC.
  3. De cualquier manera, comience a capturar paquetes con wireshark . Si tiene conexión inalámbrica o está conectado a un concentrador, es fácil. Si está conectado a un conmutador, puede intentar la inundación de MAC para volver al "modo concentrador", pero un conmutador más inteligente simplemente deshabilitará su puerto. Si quieres probarlo, ettercap puede hacerlo por ti. (O macchanger y un script de shell :))
  4. Mirando los paquetes puede encontrar direcciones IP, pero lo más importante, puede adivinar los parámetros de red. Si sospecha que el filtrado MAC cambie su dirección MAC a una de las observadas después de que se vaya (no envía nada por un tiempo).
  5. Cuando tenga una buena idea sobre la configuración de la red (máscara de red, puerta de enlace, etc.) use nmap para escanear. Nmap puede hacer mucho más que -sPen caso de que algunos hosts no respondan al ping (consulte la documentación ). Es importante que nmap solo funcione si la configuración y las rutas de su red son correctas.
  6. Posiblemente pueda encontrar aún más hosts con el escaneo inactivo de nmap .

A algunos (¿la mayoría?) Administradores del sistema no les gustan algunos de los métodos anteriores, así que asegúrese de que esté permitido (por ejemplo, es su red). También tenga en cuenta que su propio firewall puede evitar algunos de estos métodos (incluso obtener una IP con DHCP), así que primero verifique sus reglas.

Nmap

Aquí se explica cómo hacer un descubrimiento de host básico con nmap . Como dije, su configuración de red debería ser correcta cuando intente esto. Digamos que usted es 192.168.0.50 está en una subred / 24. Su dirección MAC es algo que se puede conectar, etc. Me gusta tener cables de ejecución para ver qué estoy haciendo.

Primero me gusta probar el escaneo de la lista, que solo intenta resolver los registros PTR en DNS para las direcciones IP especificadas. No envía nada a los hosts, por lo que no hay garantía de que esté realmente conectado o encendido, pero hay una buena posibilidad. Este modo obviamente necesita un servidor DNS que esté dispuesto a hablar con usted.

nmap -vvv -sn -sL 192.168.1.0/16

Esto puede no encontrar nada o puede decirle que cada IP está activa.

Luego suelo ir a la exploración ARP. Envía solicitudes ARP (las ve como "Who has <target IP>? Tell <your IP>"en wireshark). Esto es bastante confiable ya que nadie filtra o falsifica ARP. La principal desventaja es que solo funciona en su subred.

nmap -vvv -sn -PR 192.168.1.0/24

Si desea escanear algo detrás de enrutadores o firewalls, use escaneos SYN y ACK. SYN inicia una conexión TCP y obtienes un RST o un SYNACK en respuesta. De cualquier manera, el anfitrión está arriba. Es posible que se prohíba la comunicación ICMP o algo así si hay un firewall. La mayoría de las veces, si un firewall filtra sus paquetes, no obtendrá nada. Algunos tipos de cortafuegos solo filtran los paquetes TCP SYN y dejan pasar cualquier otro paquete TCP. Por eso es útil el escaneo ACK. Obtendrá RST en respuesta si el host está activo. Como no sabe qué firewall está instalado, intente con ambos.

nmap -vvv -sn -PS 10.1.2.0/24
nmap -vvv -sn -PA 10.1.2.0/24

Entonces, por supuesto, puede usar los escaneos basados ​​en ICMP con -PE -PP -PM.

Otro método interesante es -PO con un número de protocolo inexistente. A menudo, solo se consideran TCP y UDP en los firewalls y nadie prueba lo que sucede cuando prueba algún protocolo desconocido. Obtiene un protocolo ICMP inalcanzable si el host está activo.

nmap -vvv -sn -PO160 10.1.2.0/24

También puede indicarle a nmap que omita el descubrimiento de host (-Pn) y realice una exploración de puertos en cada host. Esto es muy lento, pero es posible que encuentre otros hosts que el descubrimiento de host no haya detectado por algún motivo.

Stribika
fuente
Esta parece una excelente respuesta, y ahora voy a tener que pedirte que me alimentes con una cuchara al incluir qué comandos ejecutar para cada tarea. Estoy específicamente interesado en cómo usar Nmap para responder mi pregunta (no me hagas leer los documentos :)
tshepang
55
@Tshepang: agregué algunos ejemplos de nmap pero espero que consideres leer los documentos. Nmap es una de las mejores herramientas de red y la documentación está bien escrita, realmente vale la pena.
Stribika
9

Me gusta el ip neighcomando, que viene con IpRoute2.

ip neigh
192.168.1.1 dev eth0 lladdr 00:1d:7e:f8:21:66 REACHABLE

Sin embargo, creo que solo funciona con arpnodos habilitables.

xenoterracida
fuente
¿Qué hace exactamente? Padre, solo enumera algunas entradas.
tshepang
Creo que solo envía un arp a la IP de transmisión y enumera lo que responde. Sinceramente, no sé cómo funciona.
xenoterracide
1
man ipmuestra lo que hace el vecino o vecino.
slm
9

Instalar nmap y ejecutar nmap -sP <mynetwork>.

Keith
fuente
Consigo Nmap done: 1 IP address (1 host up) scanned in 0.01 seconds.
tshepang
1
@Tshepang - Lo hice nmap -sP 192.168.0.*y me devolvió una lista de resultados del formulario:Nmap scan report for justin-desktop2 (192.168.0.61) Host is up (0.00056s latency).
Justin Ethier
@justin Estoy usando la versión 5.00 y ahora muestra varias máquinas en mi red, con el formulario Host 192.168.2.23 is up (0.0088s latency)..
tshepang
3
¿Con qué debería reemplazar <mynetwork>?
tshepang
@tshepang El número de red, con la parte del host puesta a cero y una máscara CIDR. Así: 192.169.1.0/24
Keith
0

Para ambas respuestas: NO se requiere nmap / NO se requiere sudo .

respuesta 1

$ arp

Respuesta 2

Sobre la base de xenoterracides respuesta con ip neighy hosts:

#!/usr/bin/env python

"""List all hosts with their IP adress of the current network."""

import os

out = os.popen('ip neigh').read().splitlines()
for i, line in enumerate(out, start=1):
    ip = line.split(' ')[0]
    h = os.popen('host {}'.format(ip)).read()
    hostname = h.split(' ')[-1]
    print("{:>3}: {} ({})".format(i, hostname.strip(), ip))

Descargar vía

wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py
Martin Thoma
fuente