Cambiando de Direccion Mac dinamicamente en Linux.

Las direcciones MAC(control de acceso al medio, por sus siglas en inglés “Media Access Control”) es una dirección de 48bits la cual sirve como identificador único para cada dispositivo de red(mas info http://es.wikipedia.org/wiki/Direcci%C3%B3n_MAC). En algunas ocasiones los administradores de red restringen determinados servicios(p.e. el Internet)  teniendo como único parámetro esta dirección.

En el momento que los dispositivos se conectan a una red propagan su dirección MAC, en sistemas operativos como Linux y Unix es fácil hacer que nuestro equipo propaguen/escuchen otra dirección, especialmente el comando ifconfig nos permite visualizar y configurar los parametros de nuestras interfaces de red p.e. para visualizar las configuración de nuestras interfaces:

#visualizando la información de nuestros dispositivos

ifconfig

#nos deberia aparecer algo similar a.

eth0      Link encap:Ethernet  direcciónHW 00:2b:d1:1a:3f:25
ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:0 (0.0 B)  TX bytes:0 (0.0 B)
Interrupción:20 Dirección base: 0xa000

lo        Link encap:Bucle local
Direc. inet:127.0.0.1  Másc:255.0.0.0
Dirección inet6: ::1/128 Alcance:Anfitrión
ACTIVO BUCLE FUNCIONANDO  MTU:16436  Métrica:1
Paquetes RX:140 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:140 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:0
Bytes RX:75659 (75.6 KB)  TX bytes:75659 (75.6 KB)

wlan0     Link encap:Ethernet  direcciónHW 00:d3:e1:cb:75:98
Direc. inet:192.168.1.47  Difus.:255.255.255.255  Másc:255.255.255.0
Dirección inet6: fe80::216:e3ff:fe6b:8588/64 Alcance:Enlace
ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
Paquetes RX:131087 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:91988 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:136309413 (136.3 MB)  TX bytes:11742724 (11.7 MB)

#si deseamos ver la configuración de la interface eth0

ifconfig eth0

#el cual nos deberia mostrar algo similar a

eth0      Link encap:Ethernet  direcciónHW 00:2b:d1:1a:cf:98
ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:0 (0.0 B)  TX bytes:0 (0.0 B)
Interrupción:20 Dirección base: 0xa000

Como podemos ver nos aparece un parámetro el cual se denomina direcciónHW que refiere a la dirección de hardware o MAC. Para modificar la dirección lo primero que se requiere es tener permisos de administrador en el sistema(root) y ejecutar las siguiente sentencia:

#formato de sentencia
ifconfig [INTERFACE] hw ether [MAC]

#Si quisiéramos asignarle la direccion 00:2b:d1:1a:3f:25 a la interface eth0 la sentencia seria
ifconfig eth0 hw ether 00:2b:d1:1a:3f:25

Existe un comando denominado macchanger el cual nos realiza esta tarea la cual nos ayuda si p.e. nuestra MAC esta en una lista negra entonces con el macchanger podemos cambiar nuestra dirección por cualquier otra(incluso tiene un parámetro para hacerlo de forma aleatoria) si embargo, si podemos acceder a la red pero no tenemos determinado servicio entonces lo que podemos hacer es preguntarle a los demas hosts cual es su dirección MAC pues seguramente a alguna de ellas le brindan el servicio.

Para hacer esto lo se requiere de mapear la la red para esto el programa que recomiendo es el nmap(se puede con mucho otros como ettercap) esto lo hariamos con la sig intruccion.

#las siguientes instrucción se deberán ejecutar en modo super usuario.
#Supongamos que pertenecemos a la red 192.168.1.0 con la mascara de red
# 255.255.255.0 o bien 24 bits activados
# esto es Binario(11111111)=decimal(255)  8bits+8bits+8bits+0bits=24bits

#revisamos por los hots activos toda la red 192.168.1.0/24
nmap -sP 192.168.1.0/24

#Nota: con ettercap basta con hacer
ettercap -C
#nos aparecerá una interface bastante intuitiva.

Ahora si tenemos una lista de MAC validas para determinado servicio es posible identificarnos en el sistema como usuarios validos, esto siempre y cuando la MAC este disponible en la red(es decir el equipo propietario de dicha interface).

Fue cuando me puse a pensar en una solucion para este problema y se me ocurrio hacer un script que haga lo siguiente.

Nota: suponemos que que ya estamos conectados a la red(por que esa es otra historia) ya tenemos la lista de MACs validas.

1.- Escuchamos los equipos y sus MAC conectados a la red.

2.- De la lista de MACs validas seleccionamos una de forma aleatoria.

2.1. Si el equipo propietario de dicha MAC esta activo: Regresamos al paso (2)

2.2. Si no es asi: Asignamos la MAC al nuestro dispositivo y concluye el programa.

Nota: El script requiere que se tenga instalado el programa para mapeo de puertos ‘nmap’ en el sistema.

Como un detalle del código podemos ver como se puede cachar la MAC de un dispositivo a través de un grep y una expresión regular como se muestra en  la siguiente sentencia:

#mostrando la MAC de la interface eth0
ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'

#mostrando la MAC de la interface wlan0
ifconfig wlan0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'

#lo cual es muy util para procesar a la hora de hacer un script p.e. en Bash
MyMAC=`ifconfig wlan0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'`
#ahora que en MyMAC tenemos la MAC de wlan0 podemos utilizar dicha variable
echo $MyMAC

A los administradores de red espero les sea útil y utilicen otras métricas(no solo la MAC)  para restringir los accesos a determinados servicios.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s