MACWatch 1.0 (Python NAC)

Iniciado por Aryenal.Bt, Marzo 27, 2013, 12:37:56 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Nadie puede negar que las redes Wifi han supuesto un avance en cuanto a conectividad, han permitido crear un ecosistema de aparatos interconectados de una forma muy fácil y cómoda.

No obstante, desde el punto de vista de la seguridad, las redes Wifi rompen los paradigmas de las redes conectadas por cable: ahora para acceder a tu red ya no hace falta estar físicamente frente a la toma de red.

Esto supone un reto a la hora de monitorizar la red y auditar quien y cuando se conecta a dicha red Wifi.

Mucha gente usa ARPWatch como herramienta para monitorizar su red Wifi, a mi, personalmente, no termina de convencerme, creo que tiene aspectos mejorables y por ello he creado mi propia versión con bastantes mejoras frente al original.

De entrada, MACWatch hace lo siguiente:

- Monitoriza nuevas direcciones MAC en la red

- Además de validar por MAC conocida / MAC desconocida, añade una comprobación basada en su perfil tcp/ip (puertos abiertos)

- Permite bloquear esa nueva dirección MAC (actúa como NAC)

- Envía un correo electrónico con las nuevas MACs detectadas

Respecto a monitorizar MACs, nada nuevo bajo el sol, se buscan MACs conocidas y MACs desconocidas. Donde empieza lo bueno es en la parte del perfil TCP/IP.

Lo que hace MACWatch es lanzar un escaneo vía Nmap contra la máquina y comprobar si tiene los puertos TCP abiertos que nosotros conocemos previamente

Esta comprobación añade seguridad frente a la comprobación de la MAC ya que es fácil conectarse a una red Wifi y 'clonar' la MAC de un cliente legítimo. Ahora, si alguien clona esa MAC pero el resultado de Nmap difiere, será bloqueada.

La parte del NAC funciona mediante envenenamiento ARP, esto ya lo hacen muchos sistemas NAC, lo que pasa es que algunos, desde mi punto de vista, lo hacen mal.

Envenenan la caché ARP del atacante, y eso me parece un poco ingenuo ya que un atacante podría fijar una entrada ARP estática y eludir el ataque.

MACWatch funciona de forma diferente: se definen una serie de hosts a proteger, típicamente el router, servidores que anden por la red, etc.

Cuando MACWatch detecte una MAC desconocida, procederá a aislarla de la red envenenando la caché ARP de los hosts protegidos, de esa forma el atacante no puede hacer -en teoría- nada para eludir el ataque.


Para configurarlo hay que editar dos ficheros:

macok.txt

En este fichero configuramos las direcciones MAC de nuestros equipos en la red y sus puertos abiertos.

La dirección MAC es fácilmente obtenible vía comando arp, los puertos abiertos se pueden sacar empleando nmap -sT -Pn contra el host que vayamos a defender.

Una vez hecho eso, el fichero queda tal que así

0f:71:20:f9:7c:4f<->22,23,110
a4:ba:49:c7:b6:ca<->600,900
6f:a8:f5:b4:70:55<->21

Como se puede ver, a la izquierda va la dirección MAC, luego un separador <-> y la lista de puertos abiertos separados por comas.

isolated.txt

En este fichero ponemos el listado de direcciones IPs de la red que queremos aislar del potencial atacante

192.168.33.1
192.168.33.55

Luego, hay que editar No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y definir:

- el correo electrónico origen de los mensajes, el correo destinatario y el servidor

- Si queremos que haga bloqueo de las nuevas MAC o no, recomiendo de inicio no hacerlo hasta tener todo funcionando. Para ello localizamos la variable

isolate = 0

Y la cambiamos a 1 si queremos bloqueo.

Finalmente ejecutamos tal que así (cambiando la red por la que toque):

python No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 192.168.33.0/24

MACWatch genera un fichero de log llamado maclog.txt con información de los eventos.

Para descargar:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Requiere tener instalado python-nmap (disponible a través de pip)

De momento no deja de ser una versión inicial, pero sabiendo que por aquí nos visitan muchos 'Pythoneros', lanzo el guante: si os motiva la idea y queréis que vaya un poco más allá, escribidme un correo a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y podemos crear un proyecto en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta para evolucionarlo !

Y no solo gente que tire código, también sería genial tener un logo o mejor documentación

Fuente: SBD