Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas Proyectos Sobre

Enumeración y Localización de dispositivos

Read in English
Enumeración y Localización de dispositivos

Tabla de contenidos

Ataques de localización y enumeración Bluetooth

Las cabeceras Bluetooth no están cifradas, lo que abre un abanico de posibilidades de ataque a la capa LM (Link Manager) del protocolo. Aprovechando las capas superiores de la pila de protocolos, un atacante puede:

  • Localizar dispositivos Bluetooth en modo visible (discoverable)
  • Localizar dispositivos en modo no visible (non-discoverable)
  • Enumerar servicios e información detallada del dispositivo

En Linux, la suite BlueZ proporciona todas las herramientas necesarias para estas tareas: hcitool, sdptool, hciconfig y bluetoothctl.

Requisitos previos

Antes de empezar, necesitamos un adaptador Bluetooth funcional y las herramientas de BlueZ instaladas:

bash
# Instalar BlueZ en Debian/Ubuntu
sudo apt install bluez bluez-tools

# Verificar que el adaptador está activo
hciconfig
# Debería mostrar algo como:
# hci0:   Type: Primary  Bus: USB
#         BD Address: AA:BB:CC:DD:EE:FF  ACL MTU: 1021:8  SCO MTU: 64:1
#         UP RUNNING

# Si el adaptador está DOWN, activarlo
sudo hciconfig hci0 up

Escaneo de dispositivos visibles

Cuando un dispositivo Bluetooth está en modo discoverable (visible), responde a las solicitudes de inquiry estándar. El escaneo es directo:

bash
# Escaneo básico: muestra MAC y nombre del dispositivo
hcitool scan
# Scanning ...
#   00:11:22:33:44:55   Nokia-N8
#   AA:BB:CC:DD:EE:FF   Galaxy-S21

# Escaneo con información extendida (clase de dispositivo)
hcitool inq
# Inquiring ...
#   00:11:22:33:44:55   clock offset: 0x1234   class: 0x5a020c
#   AA:BB:CC:DD:EE:FF   clock offset: 0x5678   class: 0x3e0100

El campo class es un valor de 24 bits que codifica el tipo de dispositivo (teléfono, ordenador, auricular, etc.) y sus capacidades (red, audio, telefonía). Se puede decodificar consultando la especificación Bluetooth Assigned Numbers.

Detección de dispositivos no visibles

Muchos fabricantes y usuarios confían en el modo non-discoverable como medida de seguridad: si el dispositivo no aparece en los escaneos, asumen que está protegido. Sin embargo, un dispositivo oculto sigue respondiendo a conexiones directas si se conoce su dirección MAC (BD_ADDR).

bash
# El escaneo estándar NO muestra dispositivos ocultos
hcitool scan
# Scanning ...
# (nada)

# Pero si conocemos la MAC, podemos obtener su nombre directamente
hcitool name 00:11:22:33:44:55
# Nokia-N8

# También podemos hacer ping L2CAP para verificar que está activo
l2ping -c 3 00:11:22:33:44:55
# Ping: 00:11:22:33:44:55 from AA:BB:CC:DD:EE:FF (data size 44) ...
# 44 bytes from 00:11:22:33:44:55 id 0 time 23.45ms
# 44 bytes from 00:11:22:33:44:55 id 1 time 18.72ms

Fuerza bruta de direcciones MAC con RedFang

Si no conocemos la MAC del dispositivo objetivo, herramientas como RedFang permiten descubrirla por fuerza bruta. Las direcciones Bluetooth tienen formato XX:XX:XX:YY:YY:YY, donde los tres primeros octetos corresponden al fabricante (OUI) y los tres últimos al dispositivo específico.

bash
# RedFang puede usar múltiples adaptadores USB simultáneamente
# para acelerar la búsqueda
redfang -r 00:11:22:00:00:00-00:11:22:FF:FF:FF -o output.log

# Con 8 adaptadores USB, el tiempo se reduce de ~11 horas a ~90 minutos

Sin embargo, en la práctica, la fuerza bruta de MAC se puede optimizar conociendo el OUI del fabricante objetivo (consultable en la base de datos IEEE OUI).

Enumeración de información del dispositivo

Una vez localizado el dispositivo, el siguiente paso es extraer la máxima información posible. El proceso asciende por la pila de protocolos: primero HCI (nivel Link), luego SDP (nivel aplicación).

Enumeración HCI con hcitool

El comando hcitool info extrae información a nivel de enlace:

bash
# Obtener información detallada del dispositivo
hcitool info 00:11:22:33:44:55
# Requesting information ...
#   BD Address:  00:11:22:33:44:55
#   Device Name: Nokia-N8
#   LMP Version: 4.0 (0x6) LMP Subversion: 0x1234
#   Manufacturer: Nokia (1)
#   Features page 0: 0xff 0xff 0x8f 0xfe 0xdb 0xff 0x5b 0x87
#   Features page 1: 0x07

# Consultar la clase del dispositivo
hcitool class 00:11:22:33:44:55

# Consultar la versión del Link Manager Protocol
hcitool lv 00:11:22:33:44:55

La información obtenida incluye:

  • BD Address: dirección MAC Bluetooth
  • Device Name: nombre configurado por el usuario
  • LMP Version: versión del Link Manager Protocol (indica la versión de Bluetooth soportada)
  • Manufacturer: fabricante del chip Bluetooth
  • Features: capacidades del dispositivo (cifrado, roles, tipos de paquetes soportados)

Enumeración SDP con sdptool

El protocolo SDP (Service Discovery Protocol) permite descubrir los servicios que ofrece un dispositivo Bluetooth. Esta es la fase más reveladora para un atacante:

bash
# Listar TODOS los servicios del dispositivo remoto
sdptool browse 00:11:22:33:44:55
# Browsing 00:11:22:33:44:55 ...
# Service Name: Dial-Up Networking
# Service RecHandle: 0x10001
# Service Class ID List:
#   "Dialup Networking" (0x1103)
# Protocol Descriptor List:
#   "L2CAP" (0x0100)
#   "RFCOMM" (0x0003)
#     Channel: 1
#
# Service Name: OBEX Object Push
# Service RecHandle: 0x10002
# Service Class ID List:
#   "OBEX Object Push" (0x1105)
# Protocol Descriptor List:
#   "L2CAP" (0x0100)
#   "RFCOMM" (0x0003)
#     Channel: 9
#   "OBEX" (0x0008)

# Buscar un servicio específico
sdptool search SP 00:11:22:33:44:55   # Serial Port
sdptool search DUN 00:11:22:33:44:55  # Dial-Up Networking
sdptool search FTP 00:11:22:33:44:55  # File Transfer
sdptool search NAP 00:11:22:33:44:55  # Network Access Point

Los servicios más interesantes desde el punto de vista ofensivo son:

  • Serial Port (SP): acceso al canal serie, potencial ejecución de comandos AT
  • Dial-Up Networking (DUN): acceso a la conexión de datos del móvil
  • OBEX Object Push: envío de archivos al dispositivo (vectore de ingeniería social)
  • OBEX File Transfer (FTP): acceso al sistema de archivos del dispositivo
  • Headset/Handsfree: control de audio (escucha remota en dispositivos vulnerables)

Herramientas modernas: bluetoothctl

En distribuciones modernas, bluetoothctl reemplaza progresivamente a hcitool:

bash
# Iniciar bluetoothctl
bluetoothctl

# Dentro de bluetoothctl:
[bluetooth]# power on
[bluetooth]# scan on
# [NEW] Device 00:11:22:33:44:55 Nokia-N8
# [NEW] Device AA:BB:CC:DD:EE:FF Galaxy-S21

[bluetooth]# info 00:11:22:33:44:55
# Device 00:11:22:33:44:55
#   Name: Nokia-N8
#   Alias: Nokia-N8
#   Class: 0x005a020c
#   Paired: no
#   Trusted: no
#   RSSI: -45
#   UUIDs: Serial Port, OBEX Object Push, ...

[bluetooth]# scan off
[bluetooth]# exit

Script de enumeración automatizada

Podemos automatizar todo el proceso con un script en Bash:

bash
#!/bin/bash
# bt-enum.sh — Enumeración Bluetooth automatizada
# Uso: ./bt-enum.sh [MAC_opcional]

echo "[*] Bluetooth Device Enumerator"
echo "================================"

if [ -n "$1" ]; then
    # Enumerar un dispositivo específico
    TARGETS="$1"
else
    # Escanear dispositivos visibles
    echo "[*] Escaneando dispositivos visibles (10s)..."
    TARGETS=$(hcitool scan --flush | tail -n +2 | awk '{print $1}')
fi

for MAC in $TARGETS; do
    echo ""
    echo "[+] Dispositivo: $MAC"
    echo "----------------------------"

    # Nombre del dispositivo
    NAME=$(hcitool name "$MAC" 2>/dev/null)
    echo "    Nombre: ${NAME:-desconocido}"

    # Información HCI
    echo "    [*] Información HCI:"
    hcitool info "$MAC" 2>/dev/null | grep -E "LMP|Manufacturer|Features" | \
        sed 's/^/    /'

    # Servicios SDP
    echo "    [*] Servicios SDP:"
    sdptool browse "$MAC" 2>/dev/null | grep "Service Name" | \
        sed 's/^/    /'

    # Ping L2CAP
    echo "    [*] L2CAP ping:"
    l2ping -c 1 -t 2 "$MAC" 2>/dev/null | tail -1 | sed 's/^/    /'
done

echo ""
echo "[*] Enumeración completada."

Contramedidas

Para minimizar la exposición a ataques de enumeración Bluetooth:

  • Desactivar Bluetooth cuando no se esté utilizando activamente
  • Configurar el dispositivo como no visible (aunque no es suficiente por sí solo)
  • Usar Bluetooth 4.2+ con LE Privacy, que rota las direcciones MAC periódicamente
  • Rechazar solicitudes de emparejamiento de dispositivos desconocidos
  • Desactivar servicios Bluetooth innecesarios (OBEX, FTP, DUN) si el dispositivo lo permite

Es importante entender que el modo no visible no equivale a seguridad: es simplemente oscuridad. Un atacante determinado con las herramientas adecuadas puede descubrir y enumerar cualquier dispositivo Bluetooth activo en su rango de alcance.

:wq!

Comentarios