¿Cómo descubrir la dirección MAC de las máquinas en una red?

12

¿Cómo descubro la dirección MAC de las máquinas en una red?

Necesito descubrir las máquinas que están disponibles solo con BIOS instalado (sin sistema operativo).

Y necesito encontrar la dirección MAC de las máquinas que están funcionando.

Peter Mortensen
fuente
También vea serverfault.com/questions/260333/…
Stefan Lasiewski
Duplicado entre sitios (en desbordamiento de pila): ¿Cómo descubrir la dirección MAC de máquinas en y sobre una red? .
Peter Mortensen

Respuestas:

8

Tendrá que acceder a la información disponible en sus conmutadores administrados. Si tiene una red no administrada, no veo una manera de hacerlo.

Esto supone que las computadoras de destino son capaces de Wake-on-LAN (WoL). En este caso, se establece un enlace al servidor (busque el LED de enlace llamativo) y la tarjeta de red está escuchando transmisiones de WoL. AFAIK, la tarjeta no responde a nada en este estado. Si no hay ningún WoL, la tarjeta probablemente esté apagada (sin LED de enlace) y no funcionará en absoluto.

Posipiet
fuente
7

Si las máquinas no están encendidas, esto es imposible.

Si están encendidos, supongo que esto también es imposible, ya que necesita una pila de red mínima para al menos responder cosas como consultas ARP, etc., que no funciona sin un sistema operativo instalado.

Lo que podría funcionar (no lo sé y no puedo probar en este momento) es que la NIC y el conmutador se comunican cuando la NIC está enchufada o encendida y el conmutador aprende la dirección MAC de esta manera. Si este es el caso, necesitaría un conmutador manejable y consultarlo para obtener direcciones MAC conectadas.

Sven
fuente
2
Usted puede conseguir sin una pila de red si está pidiendo BOOTP o de arranque PXE. Sin embargo, depende de la máquina si esto funcionaría, creo.
Bart Silverstrim
6

Puede usar Nmap para hacer un escaneo ARP muy rápido utilizando la siguiente sintaxis.

nmap -sn -PR -oX nmap.xml 192.168.1.0/24

Esto utiliza ping ARP (solo solicitudes ARP, sin ICMP, UDP o TCP, sin escaneo de puertos) para escanear el rango de direcciones IP especificado y registrar las respuestas de dirección IP / dirección MAC / nombre de host en un archivo XML (nmap.xml).

Escribí un script de PowerShell que modifica el archivo XML y escupe un archivo CSV . Esto también filtra los hosts inactivos. Encuentro esto más fácil de usar en Excel que el archivo XML. Aquí está el guión si alguien está interesado.

# Define nmap input file
$NmapXMLFile = ".\nmap.xml"

# Initialize object array
$HostItems = @()

# Initialize index
$x = 0

# Load XML
[xml]$NmapXML = Get-Content $NmapXMLFile

# Loop through XML
ForEach ($HostNode in $NmapXML.nmaprun.host) {

  # Check host status
  If ($HostNode.status.state -eq "up") {

    # Create host object
    $HostObj = "" | Select-Object ID, Hostname, 'IP Address', 'MAC Address', Vendor

    # Store ID and increment index
    $HostObj.ID = $x += 1

    # Store hostname
    $HostObj.Hostname = $HostNode.hostnames.hostname.name

    # Loop through addresses
    foreach ($HostAddress in $HostNode.address) {

      # Check IP address
      If ($HostAddress.addrtype -eq "ipv4") {

        # Store IP address
        $HostObj.'IP Address' = $HostAddress.addr
      }

      # Check MAC address
      If ($HostAddress.addrtype -eq "mac") {

        # Store MAC address
        $HostObj.'MAC Address' = $HostAddress.addr

        # Store vendor
        $HostObj.Vendor = $HostAddress.vendor
      }
    }

    # Append host object to array
    $HostItems += $HostObj
  }
}

# Print host items
$HostItems

# Export host items to CSV
$HostItems | Export-CSV -NoType .\nmap.csv
John Homer
fuente
Intenté el comando anterior y obtuve el error Scantype n not supported. Aparentemente, la bandera -snno es compatible con Nmap 4.x.
Stefan Lasiewski
Desde el nmap 5.30BETA1 ChangeLog:
John Homer
2
Cambió a -Pn y -sn y como la sintaxis preferida para omitir el escaneo de ping y el escaneo de puertos, respectivamente. Anteriormente, se recomendaban las opciones -PN y -sP. Esto establece una sintaxis más regular para algunas opciones que deshabilitan las fases de un escaneo: -n sin DNS inverso -Pn sin descubrimiento de host -sn sin escaneo de puertos También sentimos que la antigua opción -sP ("escaneo de ping") era un poco engañosa porque las versiones actuales de Nmap pueden ir mucho más allá (incluyendo -sC y --traceroute) incluso con los escaneos de puertos deshabilitados. Retendremos el soporte para los nombres de opciones anteriores en el futuro previsible.
John Homer
Entonces, en base a eso, debería poder usar la sintaxis '-sP' en lugar del parámetro más nuevo '-sn'. Desafortunadamente, no tengo una versión de nmap4 para probar.
John Homer
3
  1. Ver información en su conmutador / enrutador, si el conmutador es lo suficientemente avanzado.
    (En el interruptor de Cisco el comando es show mac-address-table).
  2. Si las máquinas tienen BIOS / tarjeta de red habilitada para PXE, lea la información de los registros de DHCP, ya que intentarán obtener la concesión de DHCP. Si no tiene DHCP, simplemente descargue todo el tráfico de difusión con Wireshark y filtre el tráfico DHCP. Todas las máquinas nuevas sin sistema operativo se mostrarán en el tráfico.
Kristaps
fuente
3

Desde una máquina Unix, escuchando las computadoras sin SO en la misma LAN, y si es posible a través de un Hub (no un Switch), puede intentar

arp
cat /proc/net/arp

También es posible que desee probar wireshark(desde una máquina con sistema operativo). Nuevamente, es mejor usar un Hub para capturar cualquier comunicación de las máquinas BIOS, incluidas las transmisiones.

Ø de anillo
fuente
1

El problema básico aquí es que esta es información de Capa 2, por lo que solo los conmutadores la ven. Algunos conmutadores proporcionarán una interfaz que le permite echar un vistazo a esta información, pero si no lo hacen, la única forma de obtenerla es interceptar en la capa física, por ejemplo, instalando un concentrador entre el conmutador.

Si usa conmutadores administrados, es probable que esta información esté disponible en el conmutador. Algunos enrutadores / conmutadores integrados por el usuario final (como los que a menudo también incluyen módems ADSL) a veces tienen una lista de clientes DHCP que incluye direcciones MAC.

Si está utilizando conmutadores no administrados y realmente desea conocer esta información, le recomiendo que compre un concentrador y reemplace temporalmente el conmutador con él. Luego, puede conectar una computadora que ejecute wireshark al concentrador y capturar paquetes ARP para registrar direcciones MAC. Alternativamente, puede usar Echolot para hacer esto por usted: rastrea selectivamente los paquetes ARP y crea una base de datos de direcciones MAC.

imoatama
fuente
Editar: solo vuelva a leer la parte de que solo son BIOS. Esto presenta desafíos adicionales más allá del problema de interceptar los datos de la capa 2: los clientes pueden incluso no enviar ningún dato a través de la red. Si los clientes tienen una BIOS que hace DHCP, o envía paquetes ARP, debería ser posible verlos desde el switch. No estoy seguro de qué ediciones de BIOS admiten esto, aunque sé que algunas lo hacen.
imoatama
1

Aquí hay una solución que funcionó para mí:

  1. Habilite el arranque de red en el BIOS. (Por ejemplo, configure su adaptador de red en "Habilitado con PXE")
  2. Arrancar la máquina.
  3. La máquina intentará arrancar desde la red, mostrándole la dirección MAC en el proceso.
Igor Ostrovsky
fuente
1

Un pequeño truco muy fácil que puedes hacer en 2 segundos es trabajar con el hecho de que cualquier sistema operativo escribe una tabla con la dirección MAC e IP de cualquier dispositivo con el que interactúa. Esto se conoce como ARP TABLE. ¿Entonces la pregunta es cómo forzar una interacción con todos los dispositivos? Simplemente puede hacer ping a la dirección IP de transmisión. Esto no es perfecto, ya que algunos dispositivos o firewall pueden bloquear la solicitud de ping ICMP, pero funciona en muchos escenarios.

Los comandos son (en una dirección de difusión ipv4 192.168.0.255):

ping 192.168.0.255

En uso de Linux:

ping -b 192.168.0.255

Espere unos segundos para que los dispositivos respondan, luego haga lo siguiente:

arp -a

Para ping IPV6 ver el comentario de Giedrius Rekasius

No es perfecto, pero sin herramientas, sin investigación, sin pérdida de tiempo, funciona en todos los principales sistemas operativos y es rápido.

Giovanni Silva
fuente
Me resulta más fácil y más confiable hacer tales pings a través de IPv6 que a través de IPv4. Un comando de ejemplo podría verse así ping6 -c2 -n ff02::1%wlan0. Solo es necesario actualizar el nombre de la interfaz de red que se utilizará, la dirección IP que se utilizará para ese propósito siempre es ff02::1independiente de la red en la que se encuentre.
Kasperd
1

Escanee la red con Nmap y luego verifique la tabla ARP ( arp -aen distribuciones de Linux).

MihaiM
fuente
0

Iba a sugerir cambiar la tabla de direcciones MAC, pero alguien ya ha cubierto esa de arriba.

Si alguna de las computadoras son ejecutando un sistema operativo y tiene una dirección IP, puede conectarse a la misma LAN, puede usar NMAP (o una versión GUI como Zenmap) desde http://nmap.org/ ... si ejecuta esto en la misma LAN, debe obtener información de la dirección MAC de cualquier máquina que responda.

Sería útil comprender más acerca de por qué necesita obtener las direcciones MAC, en caso de que haya una mejor manera de lograr el mismo resultado.

Mitch Miller
fuente
0

Puede recopilar información ARP con, por ejemplo, un arpalert que se ejecuta continuamente. Con eso, tendrá el conjunto de direcciones ARP vistas después del inicio.

Las máquinas apagadas no le enviarán respuestas ARP.

Para acelerar el proceso, puede usar un escaneo de ping nmap (nmap -sP) en su red desde el servidor en el que está ejecutando arpalert, para activar todos los hosts posibles (en vivo y en ejecución) para responder su consulta arp. Con la ejecución de escaneo de ping de nmap regularmente más tarde, tiene más posibilidades de atrapar a un host de corta vida.

fragmento de arpalert:

Si el MAC no está en la lista, arpalert lanza un script de usuario predefinido con la dirección MAC y la dirección IP como parámetros.

fragmento de nmap:

Nmap ("Network Mapper") es una utilidad gratuita y de código abierto (licencia) para exploración de red o auditoría de seguridad

Mira por aquí:

asdmin
fuente
0

Yo uso: nmap -sP 192.168.1.1/24

(reemplace 192.168.1.1/24 con su rango de IP)

Le mostrará solo las máquinas que están funcionando y le dará algo como:

[root@x ~]# nmap -sP 192.168.1.1/24
Starting Nmap 6.40 ( http://nmap.org ) at 2014-11-22 14:20 EST
Nmap scan report for 192.168.1.1
Host is up (0.0019s latency).
MAC Address: ZZ:ZZ:54:2E:E9:B4 (Unknown)
Nmap scan report for 192.168.1.33
Host is up (0.035s latency).
MAC Address: ZZ:ZZ:FA:2D:D7:D8 (Intel Corporate)
Nmap scan report for 192.168.1.254
Host is up (0.0020s latency).
MAC Address: ZZ:ZZ:31:02:98:19 (Asustek Computer)
Nmap scan report for 192.168.1.34
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 1.88 seconds

Si no tiene un sistema operativo instalado, puede usar un Live CD de Linux, probablemente nmap esté disponible en la mayoría de ellos

neofutur
fuente