Listar todas las direcciones MAC y sus direcciones IP asociadas en mi red local (LAN)

84

¿Cómo puedo enumerar todas las direcciones MAC y sus direcciones IP asociadas de las máquinas conectadas a mi red local (LAN)?

Maythux
fuente
66
Es importante comprender que tan pronto como atravieses un equipo de nivel 3 de la capa de red, no será posible obtener el MAC y la IP detrás de este equipo
Kiwy
¿Por qué coloca !después de un signo de interrogación? No es necesario y solo se usa en casos en los que la pregunta se grita o es de gran importancia.
kiri
@ minerz029 gracias por aclarar eso
Maythux
1
sudo tail -f /var/log/messages, luego desenchufe y vuelva a conectar el dispositivo en el que está tratando de encontrar la dirección MAC, o grep / leer mensajes para encontrar el dispositivo.
IceArdor

Respuestas:

63

Puede usar la utilidad Nmap para esto. Nmap es una utilidad de escáner de red gratuita.

Intenta solo:

sudo nmap -sn 192.168.1.0/24

Sustituya su identificador de red y máscara de subred.

Cómo encontrar una ID de red y una máscara de subred

Usar comando ip a:

bash~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether c4:85:08:94:ee:9a brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0
    inet6 fe80::c685:8ff:fe94:ee9a/64 scope link valid_lft forever preferred_lft forever

Aquí en el punto 2, tengo el wlan0dispositivo. Se dice inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0, la dirección IP: 192.168.3.66, máscara de subred: 24. ID de red es 192.168.3.0, simplemente sustituya el último número por 0.

O como nmapdice el hombre :

sudo nmap -sn 192.168.1.0/24

Aquí hay una pequeña cita de la página del manual, nmap (1) :

-sn (No port scan)

Esta opción le dice a Nmap que no realice un escaneo de puertos después del descubrimiento del host, y solo imprima los hosts disponibles que respondieron al escaneo. Esto a menudo se conoce como un "escaneo de ping", pero también puede solicitar que se ejecuten los scripts de host traceroute y NSE.

Este es, por defecto, un paso más intrusivo que el escaneo de la lista, y a menudo se puede utilizar para los mismos fines. Permite el reconocimiento ligero de una red objetivo sin atraer mucha atención.

Saber cuántos hosts están activos es más valioso para los atacantes que la lista proporcionada por el análisis de la lista de cada dirección IP y nombre de host.

Los administradores de sistemas a menudo también encuentran valiosa esta opción. Se puede usar fácilmente para contar máquinas disponibles en una red o monitorear la disponibilidad del servidor. Esto a menudo se llama un barrido de ping, y es más confiable que hacer ping a la dirección de difusión porque muchos hosts no responden a las consultas de difusión.

El descubrimiento de host predeterminado realizado -snconsiste en una solicitud de eco ICMP, TCP SYN al puerto 443, TCP ACK al puerto 80 y una solicitud de marca de tiempo ICMP de forma predeterminada.

Cuando lo ejecuta un usuario sin privilegios, solo se envían paquetes SYN (mediante una connectllamada) a los puertos 80 y 443 en el destino.

Cuando un usuario privilegiado intenta escanear destinos en una red ethernet local, se utilizan solicitudes ARP a menos que --send-ipse especifique lo contrario . La -snopción se puede combinar con cualquiera de los tipos de sonda de descubrimiento (las -P*opciones, excluyendo -Pn) para una mayor flexibilidad.

Si se utiliza cualquiera de esas opciones de tipo de sonda y número de puerto, las sondas predeterminadas se anulan. Cuando existen firewalls estrictos entre el host de origen que ejecuta Nmap y la red de destino, se recomienda utilizar esas técnicas avanzadas. De lo contrario, podrían perderse los hosts cuando el firewall deje de sondear o sus respuestas.

En versiones anteriores de Nmap, -snse conocía como -sP.

c0rp
fuente
No funciona
Maythux
44
Será necesario ajustarlo para que 192.168.1.0/24se cambie al rango de direcciones IP del usuario.
kiri
@ minerz029 Claro que sí cambié la IP
Maythux
No sé si esa es la razón, pero en Linux lo uso nmap -sP 192.168.1.0/24para un escaneo de ping.
tiktak
2
¿Sabes por qué se requieren privilegios de raíz para leer los destinatarios MAC de la red?
Michael Aquilina
45

arple devolverá lentamente una lista de direcciones MAC activas e IP o sus nombres de host si tienen una. Si desea que vaya más rápido, puede usar el arp -nque debería omitir las búsquedas de DNS. Si necesita analizarlo en algo arp -an, omitirá las columnas de ancho fijo.

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
10.10.0.11               ether   00:04:ff:ff:ff:d0   C                     eth0
10.10.0.16               ether   00:04:ff:ff:ff:a6   C                     eth0
raspbmc.local            ether   00:1f:ff:ff:ff:9c   C                     eth0
10.10.0.19               ether   00:04:ff:ff:ff:c9   C                     eth0
10.10.0.12               ether   bc:f5:ff:ff:ff:93   C                     eth0
10.10.0.17               ether   00:04:ff:ff:ff:57   C                     eth0
10.10.0.1                ether   20:4e:ff:ff:ff:30   C                     eth0
HPF2257E.local           ether   a0:b3:ff:ff:ff:7e   C                     eth0
10.10.0.15               ether   00:04:ff:ff:ff:b9   C                     eth0
tim                      ether   00:22:ff:ff:ff:af   C                     eth0
10.10.0.13               ether   60:be:ff:ff:ff:e0   C                     eth0

De lo contrario, su enrutador debería poder darle una idea de los dispositivos activos (la mayoría lo hace).


Editar el comentario de Per davidcl, esta respuesta no es tan perfecta como esperaba.

arpdepende del contacto previo de algún tipo para trabajar. Sin embargo, en mi opinión, los dispositivos modernos son tan comunicativos (realmente deberías ver wireshark, es una educación) a nivel de transmisión que es poco probable que un dispositivo esté presente en la red sin al menos responder a una transmisión. (Para asegurarse de que puede hacer ping a todos los dispositivos en la red con 10.10.0.255 primero y luego probablemente obtendrá más del 90% de los dispositivos).

Para darle una idea de lo que quiero decir, 10.10.0.16 anterior es nuestro PVR. No hay interacción directa entre mi PC y el PVR y no hay ningún servicio que se ejecute en el PVR (tampoco UPNP / DLNA).

Solo para jugar los argumentos rápidamente ...

  • ¿Pero qué pasa con los piratas informáticos en mi red? 1
    También pueden bloquear los pings de ICMP. Pueden bloquear todas las respuestas a cada tipo de escaneo.
  • Ah, pero seguramente nmapsigue siendo la mejor solución posible.
    Cuando se ejecuta aquí, todavía faltan cuatro dispositivos. Cuatro dispositivos que están activos en la red. O no están respondiendo a los pings o nmap no está esperando el tiempo suficiente para que respondan ... No lo sé. nmapes una gran herramienta (especialmente para el escaneo de puertos que quizás quiera hacer a continuación) pero aún es un poco torpe (y un poco lento) para este problema. Y no me llames Shirley.
Oli
fuente
1
SI cambio mi ID de MAC con Mac Changer, ¿puede mostrar el original?
rɑːdʒɑ
2
@BYEAskUbuntu si usa el cambiador de MAC, su MAC es lo que configura. Para todos los usuarios de la red, su origen es generalmente desconocido, por lo que no, no puede.
Ruslan
3
@Ruslan Eso es paranoico de que los elimine ... Estoy seguro de que sería bastante difícil para una persona hacer algo con ellos, pero nunca se sabe quién te está acosando.
Oli
99
Estoy sorprendido por esta respuesta. "arp" no muestra una lista de direcciones MAC activas en la red local. "arp" muestra una lista de direcciones MAC correspondientes a máquinas que han interactuado con la máquina en la que se está ejecutando. Si no ha habido comunicación entre la máquina local y otra máquina en la red recientemente, esa máquina no aparecerá en la lista "arp".
davidcl
55
Acabo de hacer una prueba rápida en mi red, y arp muestra solo alrededor del 25% de los dispositivos que existen. Si la computadora que ejecuta arp no ha recibido un paquete de otro dispositivo, no estará en la lista de arp. Me interesaría saber más sobre los dispositivos que nmap no pudo detectar en su red; hay formas de esconderse de nmap pero he encontrado que el escaneo nmap predeterminado es bastante efectivo. Dicho esto, no hay una respuesta a prueba de fallos porque si un dispositivo no genera tráfico y no responde solicitudes, es invisible, pero la mayoría de los dispositivos responderán algún tipo de solicitud.
davidcl
37

Yo uso arp-scanpara esto:

$ sudo arp-scan -l
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.2.1     ec:1a:59:61:07:b2       (Unknown)
192.168.2.50    90:59:af:3d:6d:bc       (Unknown)
192.168.2.51    3c:97:0e:48:22:12       (Unknown)
192.168.2.52    00:18:31:87:8f:b0       Texas Instruments

4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 256 hosts scanned in 1.282 seconds (199.69 hosts/sec). 4 responded
jcrigby
fuente
1
Si desea especificar la interfaz de red, como inalámbrica, utilice este comandosudo arp-scan -l -I wlan0
HarlemSquirrel
Sí, arp-scan es de hecho la "mejor herramienta para el trabajo".
mivk
Esto no funciona para mí ... el dispositivo no responde por alguna razón.
Andrew Wagner
para que arp-scan funcione, tuve que hacer brew install arp-scanen OSX El Capitan.
jamescampbell
17

Puedes usar arp-scan.

Instalar usando este comando:

sudo apt-get install arp-scan

Para enumerar todas las direcciones IP y las direcciones MAC asociadas, use:

sudo arp-scan --interface=eth0 --localnet

La salida se verá así:

Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 16777216 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.1.3 38:60:77:29:31:36   (Unknown)
192.168.1.8 4c:72:b9:7c:bb:7e   (Unknown)
192.168.1.110   00:15:17:5f:d2:80   Intel Corporate
192.168.1.111   00:ff:88:5f:fd:f0   (Unknown)
192.168.1.153   00:15:17:5f:d2:82   Intel Corporate
192.168.1.180   52:54:00:70:04:02   QEMU
192.168.1.199   52:54:00:fe:7f:78   QEMU
Peter Mortensen
fuente
1
Esto no es encontrar un dispositivo que todavía no tenga una IP ...
Andrew Wagner
9

GUI

Puedes probar avahi-discoverInstalar avahi-discover .

  1. Instálelo con este comando (o haciendo clic en el enlace anterior):

    sudo apt-get install avahi-discover
    
  2. Ejecute el navegador Avahi Zeroconf o avahi-discoverdesde una terminal.
  3. Debería ver una ventana con una lista de dispositivos en su red local.
    La dirección MAC será la cadena entre corchetes.

Línea de comando

Puede usar este comando en una terminal:

avahi-browse -a -t -d local

Se instala por defecto.

kiri
fuente
1
¿Funciona para mostrar la dirección MAC de una máquina que no ejecuta ningún tipo de servicio?
Eliah Kagan
3
En mi caso, esto no funciona para todos los dispositivos en la red. Es bastante ordenado, pero no mostrará clientes tontos sin los servicios avahi / upnp.
Oli
5
  1. Primero, escanee la red para ver qué hosts son accesibles / en línea usando nmap -sn 1.2.3.4/24ofping -g 1.2.3.4/24

  2. Luego consulte la dirección MAC correspondiente a la dirección IP usando arping. Pseudocódigo adelante:

    for i in $(cat list-of-reachable-hosts)
    do 
        arping $i
    done
    
  3. Cheatery: consulte el arp-cache de su conmutador local; eso debería darte una buena visión general ...

far4d
fuente
3

En los casos en que el protocolo NetBIOS es compatible, prefiero usar

nbtscan 192.168.1.1-192.168.1.255.

Silveri
fuente
55
Esto solo detecta clientes que admiten el protocolo NetBIOS (Windows y Linux + Samba).
Eric Carvalho
2

Estaba intrigado por esta publicación. He tenido la necesidad de esto.

Escribí un script de shell que analiza el arpresultado usando awkdeclaraciones y genera un resultado HTML. Si ejecuta la secuencia de comandos y redirige la salida a un archivo HTML, le queda un archivo HTML que muestra la IP, la dirección MAC completa y un enlace a la página de búsqueda IEEE OUI. Esto ayuda a determinar el cliente a través del fabricante de NIC.

printf "<html>\n<title>LAN IPs and their MACs</title>\n<body>\n"
arp -a | awk '{print $2,$4}' | awk -F'[().: ]' '{print $2"."$3"."$4"."$5,$6,$7":"$8":"$9":"$10":"$11":"$12,"<a href=\"http://standards.ieee.org/cgi-bin/ouisearch?"$7$8$9"\">IEEE OUI Lookup "$7"-"$8"-"$9"</a><br>"}'
printf "\n</body>\n</html>\n"

Ayuda a ejecutar un nmapescaneo en su LAN primero para que tenga entradas en la tabla ARP. Ojalá el formato traducido. Podría arreglar esto para tener el texto en formato de tabla.

usuario38537
fuente
2

Después de trabajar y buscar he descubierto este comando:

nmap -sP -PE -PA21,23,80,3389 192.168.1.*

nmap: Herramienta de exploración de red y escáner de seguridad / puerto

-sP(Saltar escaneo de puertos). Esta opción le dice a Nmap que no realice un escaneo de puertos después del descubrimiento del host, y solo imprima los hosts disponibles que respondieron al escaneo. Esto a menudo se conoce como "escaneo de ping", pero también puede solicitar que se ejecuten los scripts de traceroute y del host NSE. Este es, por defecto, un paso más intrusivo que el escaneo de la lista, y a menudo se puede usar para los mismos fines. Permite el reconocimiento ligero de una red objetivo sin atraer mucha atención. Saber cuántos hosts están activos es más valioso para los atacantes que la lista proporcionada por el análisis de la lista de cada IP y nombre de host.

-PE; -PP; -PM (Tipos de ping ICMP). Además de los tipos de descubrimiento de host TCP, UDP y SCTP inusuales discutidos anteriormente, Nmap puede enviar los paquetes estándar enviados por el omnipresente programa de ping. Nmap envía un paquete ICMP tipo 8 (solicitud de eco) a las direcciones IP de destino, esperando un tipo 0 (respuesta de eco) a cambio de los hosts disponibles. Desafortunadamente para los exploradores de red, muchos hosts y firewalls ahora bloquean estos paquetes, en lugar de responder como requerido por RFC 1122 [2]. Por esta razón, los escaneos solo de ICMP rara vez son lo suficientemente confiables contra objetivos desconocidos en Internet. Pero para los administradores de sistemas que monitorean una red interna, pueden ser un enfoque práctico y eficiente. Use la opción -PE para habilitar este comportamiento de solicitud de eco.

-A(Opciones de escaneo agresivo). Esta opción habilita opciones avanzadas y agresivas adicionales.

21,23,80,3389 Puertos para buscar

192.168.1.* Rango de IPs. reemplazar con el tuyo

Maythux
fuente
1

Después de cansarme de usar nmap y ARP combo, creé este pequeño programa que consulta todas las direcciones MAC para un rango de IP dado: https://github.com/drkblog/findmacs

drk.com.ar
fuente
¿Consulta secuencialmente o en paralelo?
Peter Mortensen
0

puedes usar arp.

Esto le mostrará el MAC y las IP.


fuente
Esto solo funciona para aquellos dispositivos que se han conectado (por ejemplo, mediante un ping).
Peter Mortensen