ATENCION: Los ejemplos que se van a mostrar y “tutoriales” tan solo tienen carácter educativo. En ningún aspecto comparto filosofías de invasión a la intimidad, ataques contra un sistema informático o cuestiones similares. En la medida que sea posible siempre se usarán ejemplos y formas que puedan ser usados por cualquier persona, de forma que pueda verificar los contenidos escritos. No obstante, por motivos más que obvios, materiales como contraseñas, nombres de usuarios o de hosts, serán omitidos o modificado en las capturas de pantallas realizadas (o las lineas escritas). Es decir, los ejemplos serán completamente reales, los datos mostrados a vosotros necesarios para poder pertrechar estos ejemplos no siempre lo serán (Sí lo serán los resultados). Para que esto conste de forma clara, todo material sensible modificado o falso estará resaltado en ROJO. Por motivos de seguridad, todo el material que sea expuesto aquí (exceptuando software propietario o libre, citaciones expresas o código de terceros) tanto texto, imágenes y código son propiedad del autor y está completamente prohibido su reproducción completa o parcial en otros lugares, espero que se comprenda.

 

MAC Spoofing

Mientras que podemos decir que la IP es la dirección de nuestros dispositivos y nodos de red, esto tan solo es cierto a partir del nivel 3 del modelo OSI (Nivel de Red). Por debajo del nivel 3 (el Nivel 2 o Nivel de Enlace de datos y Nivel 1 o Nivel físico), tan solo se entiende de direcciones MAC. La dirección MAC es un ID compuesto por 6 octetos que es grabado a cada dispositivo de red en fábrica. Así, los 3 primeros octetos son asignados a cada empresa (las empresas deben de comprar su ID), y los siguientes 5 octetos son administrados por la empresa como ella quiera, normalmente según modelos y otros. No obstante, en el primer octeto (el más significativo) queda reservado sus dos últimos bits. Si el bit 7 es un ‘1’ la MAC establecida no pertecene a nadie, usada para asignación manual y ‘0’ si pertenece a una empresa (o aun está disponible para comprarla para ser asignada). Si el bit 8 del primer octeto es un 1, la direccin MAC pertenecerá a una dirección Multicast (Mismo grupo de direcciones, para poder enviar datos simultaneos a varios clientes), mientras que si es ‘0’ la dirección será Unicast, es decir, individual.

Sabiendo esto, hay que comprender la importancia de una dirección MAC. Dependiendo del ámbito en el que estemos, tendrá una importancia mayor o menor. Si nos encontramos en una red Local ethernet su importancia es mayor incluso a la IP, dado que incluso la IP de cada dispositivo podemos decir que está “asociada” a cada MAC (luego veremos esto en detalle). En cambio, por encima de nuestra red local su importancia puede ser mucho menor. Por ejemplo, para nuestro ISP ADSL la MAC de nuestro router no es importante, dado que la IP que nos asigna nuestro proveedor no está basada en MAC alguna, sino que la IP se asigna mediante protocolo PPPoE (usuario y contraseña) y la conexión es directa a nuestra casa. En cambio en conexiones cables sí la MAC es importante, dado que es esta la que suele reconocer el proveedor por cable para asignar incluso la velocidad de conexion.

¿Cual es el sentido pues de MAC Spoofing? El mismo que en IP Spoofing básicamente:

  • Suplantación de identidad
  • Acceso a servicios no contratados
  • Evasión de filtros MAC
  • Anonimato
  • Envenenamiento ARP


Hay que tener en cuenta que las direcciones MAC suelen actuar a un nivel más básico que IP, esto puede ser bueno o malo según se mire. Para poder entender la importancia de estas direcciones, hay que entender como funcionan o por qué. ¿Como sabe un Router o un Switch a que destino enviar un paquete? La respuesta que se pueda esperar es la IP de dicho cliente claro, pero esto no soluciona el problema. Para que el paquete se dirija a una IP concreta, esa IP debe de estar asociada de alguna manera a un medio físico, un ID único… y esta es la MAC. Dado que la MAC en teoría es única, los dispositivos de red guardan tablas de equivalencias entre estas IPs y sus respectivas MACs. Si un paquete llega a un Switch, el Switch mirará en su tabla que puerto ethernet (en redes ethernet) corresponde a la MAC destino, y será por dicho puerto o interfaz por donde envíe el paquete. Se podría pensar que la IP por tanto podría suprimirse, pero nada mas lejos!! al igual que la MAC es completamente necesaria. Cuando un dispositivo se conecta a un Switch pro ejemplo, lo único que posee este es una MAC. El Switch registra esta MAC en su tabla y de este modo conocerá en que puerto está conectado. A partir de este momento se realiza la asignación de IPs y bueno… esto se comprenderá mejor cuando se explique el envenenamiento ARP (ARP es un protocolo para asociar IPs a MACs, por así decirlo).


Por tanto, al igual que con IP Spoofing, el empleo de MAC Spoofing puede ser usado para la suplantación de identidad. Si la dirección MAC es única a cada dispositivo, podemos suponer que esta virtud puede ser usada en multitud de sistemas para mejorar la seguridad de estos. Uno de los usos más extendido de esto es la misma premisa que con IP Spoofing. Si podemos ocultar nuestra MAC podemos ocultar un ID que es único para nuestro adaptador. También podemos cambiarlo por otro que pertenezca a un cliente legítimo para hacernos pasar como si fuésemos ellos mismos. Un ejemplo extendido a esto, cuando se desea engañar a un router que esté asignando direcciones IPs de forma estática dependiendo de su dirección MAC. Dicha IP concreta tan solo es posible obtenerla con una MAC concreta, y con dicha IP concreta y MAC concreta podremos simular ser un cliente quizás legítimo en la red.

Veamos un ejemplo de MAC Spoofing para obtener una IP que no podríamos obtener de forma legítima:

La red está configurada para asignar IPs de forma dinámica por medio de DHCP dentro del rango 192.168.2.100-192.168.2.150. Por otro lado la red está configurada para que el rango 192.168.2.2-192.168.2.20 tenga acceso tanto al router como a otras tareas de administración. Por seguridad, dicho rango tan solo es asignado de forma estática por el router según la MAC del cliente. Aun cuando se intentase una asignación IP manual dentro de dicho rango, si la MAC no pertenece a dicha IP, el router no le concederá acceso a la red. A través de MAC Spoofing modificaremos nuestra MAC para que coincida por la de un cliente válida.

 

Fase 1: Conexión estandar al router de un cliente cualquiera:

Anarchy:/home/theliel# nmap -n -sP 192.168.2.1-255

Starting Nmap 5.21 ( http://nmap.org ) at 2010-01-30 23:18 CET
Host 192.168.2.1 is up (0.00057s latency).
MAC Address: 00:25:9C:11:22:33 (Cisco)
Host 192.168.2.2 is up (0.00055s latency).
MAC Address: 00:24:8C:11:22:33 (Asustek Computer)
Host 192.168.2.3 is up (0.00016s latency).
MAC Address: 00:24:8C:22:33:44 (Asustek Computer)
Host 192.168.2.8 is up (0.0092s latency).
MAC Address: 00:1C:BF:11:22:33 (Intel Corporate)
Host 192.168.2.13 is up (0.00039s latency).
MAC Address: 00:1D:60:33:44:55 (Asustek Computer)
Host 192.168.2.131 is up.
Nmap done: 255 IP addresses (6 hosts up) scanned in 3.94 seconds

Con el escaner anterior tendríamos listados todos los host conectados, así como la dirección MAC de cada uno de ellos. Para el último host, no se muestra su MAC dado que es el “atacante” que ha realizado el escaner. Como se puede obsevar tenemos host pertenecientes a la red “segura” y la IP del atacante asignada por DHCP. Por otro lado los datos de red del atacante:

Anarchy:/home/theliel# ifconfig
eth0 Link encap:Ethernet HWaddr 00:11:22:33:44:55
inet addr:192.168.2.131 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fefe:567d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4323 errors:0 dropped:0 overruns:0 frame:0
TX packets:5107 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5075469 (4.8 MiB) TX bytes:433030 (422.8 KiB)

 

C:\Users\Theliel>ipconfig /all

Configuración IP de Windows
Adaptador de Ethernet Local Area Connection:

Sufijo DNS específico para la conexión. . :
Descripción . . . . . . . . . . . . . . . : Marvell Yukon PCI-E Gigabit Ethernet Controller
Dirección física. . . . . . . . . . . . . :
00:11:22:33:44:55
DHCP habilitado . . . . . . . . . . . . . : sí
Configuración automática habilitada . . . : sí
Dirección IPv4. . . . . . . . . . . . . . : 192.168.2.131(Preferido)
Máscara de subred . . . . . . . . . . . . : 255.255.255.0

 

Fase 2: MAC Spoofing

Con los datos de los hots anteriores, podemos realizar el cambio de MAC de una forma muy simple por otra que corresponda a un host que pertenezca a la sección segura. Por razones evidentes, lo ideal es realizar el cambio en un momento en el que el host a sustituir no esté conectado en dicho momento, sino produciría un conflicto entre los dos hots. En este caso vamos a hacernos con el host 192.168.2.13.

Anarchy:/home/theliel# ifconfig eth0 hw ether 00:1D:60:33:44:55
Anarchy:/home/theliel# ifconfig
eth0 Link encap:Ethernet HWaddr
00:1D:60:33:44:55
inet addr:192.168.2.131 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fefe:567d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4466 errors:0 dropped:0 overruns:0 frame:0
TX packets:5197 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5091981 (4.8 MiB) TX bytes:445543 (435.1 KiB)


Adminsitrador Dispositivos -> Adaptador de red -> Propiedades


Fase 3: Renovación IP por DHCP.

Dado que la IP ha sido asignada previamente por DHCP, es necesario renovar la IP para que el router reasigne la IP de la MAC falseada:

Anarchy:/home/theliel# dhclient

Internet Systems Consortium DHCP Client V3.1.3
Copyright 2004-2009 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/00:1D:60:33:44:55
Sending on LPF/eth0/00:1D:60:33:44:55

Sending on Socket/fallback
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPNAK from 192.168.2.1
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
DHCPOFFER from 192.168.2.1
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 192.168.2.1
bound to 192.168.2.13 — renewal in 2147483648 seconds.


C:\Users\Theliel>ipconfig /renew

Configuración IP de Windows
Adaptador de Ethernet Local Area Connection:

Sufijo DNS específico para la conexión. . :
Dirección IPv4. . . . . . . . . . . . . . : 192.168.2.13
Máscara de subred . . . . . . . . . . . . : 255.255.255.0
Puerta de enlace predeterminada . . . . . : 192.168.2.1


Esto que parece realmente muy sencillo, puede resultar tremendamente útil para un atacante en multitud de escenarios. Por ejemplo cuando se desea evadir un filtrado MAC (típico en las conexiones WIFI) para poder acceder a la red. Numerosos AP de bares, particulares, redes públicas… poseen filtrados MAC para permitir o denegar la conexión a sus redes. Dado que no estamos conectados físicamente a la red no podemos hacer uso de escaneos de puertos y otros sistemas, pero en cambio podemos usar utilidades para poder escanerlas, como por ejemplo Airodump-ng. Una vez optenidas MAC válidas que pueden conectarse al AP, podemos proceder a modificar la nuestra tal y como se ha explicado con anterioridad:

CH 13 ][ Elapsed: 30 sec ][ 2010-01-31 01:57 ]

BSSID                                      PWR           Beacons         #Data,       #/s        CH        MB         ENC      CIPHER        AUTH     ESSID

00:25:9C:11:22:33 –                   -70                    120              57          0           13          54e     WPA2 CCMP            PSK         Theliel

BSSID                                STATION                           PWR          Rate           Lost           Packets        Probes

00:25:9C:11:22:33-          00:1C:BF:11:22:33 –           32            54-0                7                     245      Anarchy
(not associated)               -
00:1C:BF:22:33:44 -             7            11-0                5                        23

Anarchy:/home/theliel#airodump-ng -c 13 -w dump wlan0

 

Dentro también de las aplicaciones prácticas de ello podría incluirse la piratería de conexiones a Internet instaladas por algunos ISP de cable. Esta tecnología suele usar un cable de fibra óptica que es común a una zona de abonados. La conexión a estos ISP es simple, tan solo hace falta un módem suministrado por ellos y un terminal que conectar a dicho módem. Luego la pregunta es inmediata. Si el cable es común a todos los abonados y no se requiere de ningún tipo de identificación ¿Cómo conoce/diferencia el ISP al cliente conectado o que servicios tiene contratado? Por la MAC de dicho módem, ni más ni menos. Si se modificase la MAC de nuestro módem por una que tenga contratada 10MB, en teoría, a efectos prácticos nuestro ISP nos daría esos 10MB. El problema evidentemente es modificar la MAC de dichos Módem, los cuales la mayoría de las veces es necesario realizarlo mediante una modificación hardware.

Por último, la técnica de MAC Spoofing juega un papel fundamental en los ataques de envenenamientos ARP, pero esto será tratado en otro artículo.

 

Hemos hablado de aplicaciones prácticas, pero ¿Cómo podemos evitar este tipo de ataques a nuestros sistemas? Al igual que dijimos en IP Spoofing, usar siempre que sea posible protocolos seguros como IPSec en los que sea necesario tunelizar todo el tráfico dentro de una misma red. Por otro lado separar físicamente las redes que serán usadas para propósitos diferentes, y si se requiere, colocar un firewall en la puerta de entrada a las partes sensibles de nuestra red. Por otro lado, si la estructura de nuestra red es relativamente estable, el uso de tablas MAC estáticas asignadas específicamente a cada uno de los puertos de nuestro Switch.

En cambio proteger nuestra red contra MAC Spoofing es más complicado, por ello la única seguridad que podemos aplicar es en primer lugar no permitir conexiones wifi cuando sea posible, y si se deben de usar, usar siempre un nivel de encriptación mínimo de WPA2-PSK, siendo prácticamente obligado el uso de WPA2 más algún protocolo EAP, trabajando así con servidores Radius y certificados digitales. Pero desde luego nunca presuponer que un filtrado MAC garantizará absolutamente nada.