Mostrando entradas con la etiqueta routing. Mostrar todas las entradas
Mostrando entradas con la etiqueta routing. Mostrar todas las entradas

lunes, diciembre 11, 2017

¿Un Backdoor en los routers con ZeroShell?

El pasado mes de octubre, se publicada en este blog el artículo que llevaba por título “Ejecución de Código Remoto en dispositivos GNU/Linux con Zeroshell” donde se explicaba cómo ejecutar código remoto aprovechando la vulnerabilidad CVE 2009-0545 que pone de manifiesto la falta de validación de ciertos parámetros enviados por GET/POST a la aplicación del estándar criptográfico X.590 que soportan.

Figura 1: ¿Un Backdoor en los routers con ZeroShell?

Parece que una buena medida de seguridad sobre este tipo de dispositivos sería detener o no levantar los servicios HTTP y HTTPS para evitar una posible inyección de código de forma remota. Es por anterior que este artículo se mostrará cómo abrir una shell en el dispositivo con privilegios de root.

Explorando la línea de comandos de ZeroShell

En muchos dispositivos destinados a la administración de redes y defensa perimetral, como pueden ser los sistemas ZeroShell, una buena opción para reducir la superficie de exposición es permitir la administración del dispositivo únicamente bajo una interfaz de línea de comandos, a veces de manera remota bajo servicios como SSH, y otras de manera local.

Figura 2: Opciones de la línea de comandos de los dispositivos ZeroShell

Como parece, la superficie de exposición se reduce de manera considerable, pero el sistema sigue quedando expuesto mientras se pueda interactuar con él, aunque sea bajo una interfaz de línea de comandos.

Una primera aproximación es seleccionar la opción <s> Shell Prompt para ver si es posible disponer de una shell sin estar autenticado en sistema. Como es lógico, el sistema solicita la contraseña del usuario que corre en el sistema. Además, como máximo permite tres intentos sobre el password. Si son infructuosos, el sistema regresa a las opciones mostradas en la Figura 2.

Figura 3: Intentos de autenticación fallidos

Ejecución de comandos bajo root

Dado que no conocemos la contraseña de acceso al sistema, se prueban todas posibilidades que ofrece el menú de línea de comandos.

Figura 4: Opciones del router ZeroShell

Ocurre algo curioso si seleccionamos la opción Show Firewall Rules para ver cuáles son las reglas que incorpora en su iptables.


Figura 5: Reglas iptables en el firewall del router ZeroShell

Pulsando la tecla ‘H’ mientras el sistema muestra las cadenas que tiene en iptables, el sistema ofrece diferentes opciones. Una de ellas parece que permite la ejecución de comandos en una subshell. Lo único que hay que hacer es escribir el carácter “!”(ALT+1) seguido del comando que se quiera ejecutar en el sistema.

Figura 6: Opción para abrir una shell "sin privilegios administrativos"
Ejecutando el comando “uname –a”, se observa que la versión de ZeroShell que corre en el sistema es la 3.4.19.

Figura 7: Información del sistema operativo que se está utilizando

Se comprueba que el entorno donde se ejecutan los procesos generados por los comandos que recibe el sistema es el del usuario root y, por lo tanto, es muy posible visualizar archivos críticos del sistema como pueden ser /etc/passwd o /etc/shadow.

Figura 8: El usuario root no utilizado en la ejecución de comandos

Figura 9: Información de los usuarios del sistema en /etc/passwd

Entrando por la puerta de atrás

Dado que el entorno donde se ejecutan los comandos es el del usuario root, probaremos a ejecutar “/bin/sh” o “/bin/bash” para intentar obtener la shell del usuario root, cualquiera de las dos es buena.

Figura 10: Obtención de una shell /bin/bash con privilegios de root

Como se observa, es posible obtener una shell dentro del sistema con privilegios de “root” sin la necesidad de estar autenticado en él.

Consideraciones finales
• Las pruebas realizadas para obtener los resultados expuestos en el artículo, han sido realizadas bajo un entorno virtual con la versión 3.4.19 de Zeroshell, concretamente sobre la máquina virtual proporcionada en uno de los retos de las Cyberolimpiadas organizadas para Centros Educativos en el marco del Cybercamp de este año.

• No se han realizado pruebas exhaustivas en entornos de producción real donde corren este tipo de sistemas, por lo que no se puede determinar que exista realmente un backdoor en la versión
3.14.9 de ZeroShell, en versiones inferiores o posteriores, pero habría que probarlo.
Autores: Amador Aparicio de la Fuente (@amadapa) y Álvaro Gutiérrez Rebollo (@alvgut98), alumno de 1º de Administración de Sistemas Informáticos en Red.

domingo, noviembre 19, 2017

Cómo hacer tu primer ataque de diccionario a un router con Python

En este artículo voy a explicar cómo preparé un ataque de diccionario dirigido al sistema de autenticación de routers, switches o dispositivos de red utilizando Python. Con este ataque se va a intentar averiguar los usuarios y contraseñas para acceder al panel de administrador de un dispositivo, utilizando archivos de texto con listas de usuarios y listas de contraseñas, es decir, es un ataque de diccionario.

Figura 1: Cómo hacer tu primer ataque de diccionario a un router con Python

Estos diccionarios se pueden crear manualmente, por medio de herramientas, o encontrar por Internet los ya creados. Hay diccionarios de todo tipo, desde listas generadas en GitHub, hasta diccionarios generados con passwords reales filtradas ordenadas por popularidad. En este caso, como idea, puedes buscar en la siguiente web: https://wiki.skullsecurity.org/Passwords

Figura 2: Passwords en Skullsecurity

La mayoría de los routers vienen con usuarios por defecto y muchos de los dueños no suelen cambiar la contraseña que viene configurada por defecto. Es por esto por lo que se aplica este ataque fácilmente desde hace mucho tiempo - no solo con los routers -.
- Default Passwords: Adelante por favor 
- Gracias por tu password, router
Sin embargo, si se cambia las contraseña que viene por defecto, y se pone una compleja - de cierta longitud y combinación de números, letras minúsculas, mayúsculas y símbolos - entonces este mecanismo tendrá pocas probabilidades de éxito.

Una PoC de BruteForce en Python

He preparado un script en Python para realizar este ataque, que he probado solo en routers CISCO y Huawei. A continuación se puede ver el código, hay que tener en cuenta que esta versión va a recorrer ambos archivos en su totalidad, lo que puede ser lento si los archivos son extensos, al final mostraré un pequeño cambio para parar cuando encontremos la primera combinación exitosa.

Por supuesto, no es una herramienta profesional con multithreading y organización probabilística o que utilice un sistema de medición de latencias para acelerar o decelerar el número de peticiones en paralelo. Es solo una PoC para probar algo que no solo tiene que ver con las contraseñas por defectos, sino con las protecciones de número de intentos fallidos. Como se verá, no hay ninguna protección en la mayoría de los sistemas testeados contra los ataques de fuerza bruta, incluso sin son como éste.

Figura 3: Código de BF para la PoC en Python

Ahora voy a comentar un poco el código: lo primero que hacemos es importar los módulos que necesitamos (urllib.request, http.client, sys). He creado un par de funciones, que se explican por partes:

- Función get_realm: recibe un parámetro, que es la dirección IP del objetivo. Se encarga de realizar una petición GET al objetivo para conseguir el valor de la cabecera www-Authenticate, por ejemplo de la siguiente devolvería myRealm, si no se puede conseguir el valor, se acaba el script:
WWW-Authenticate: Basic realm="myRealm"
- Función attack: recibe 3 parámetros, la dirección IP del objetivo, y 2 ficheros (que son abiertos antes de pasarlo, por comodidad). Creo una variable booleana, para mostrar información al final si no se encuentra una combinación con éxito, llamo a la función get_realm y se va a recorrer los dos ficheros (usuario y contraseñas) con dos bucles for, para comprobar cada posible combinación. Dentro del bucle se van a crear las conexiones, para la autenticación pasamos los siguientes datos: Realm, IP, Usuario y Contraseña

Se comprobará la respuesta, si se obtiene un código 200 es que todo fue bien, por lo que tenemos usuario y contraseña, y se muestra que fue correcto, en caso contrario el login no es válido y saltará una excepción en la siguiente línea:
pag = ur.urlopen("http://" + str(ip))
Entonces, se informa de que la combinación usuario y contraseña no es correcta.

- Main: Por último tenemos la parte main del script, donde se pregunta al usuario la dirección IP y los ficheros (que  son abiertos, si algo va mal se informa y se sale del programa), y con esta información se llama a la función attack vista antes. Los archivos de texto que he usado aquí son pequeños y ambos contienen el mismo contenido, por ejemplo en la siguiente imagen se puede ver el de usuarios:

Figura 4: Ficheros users.txt

Si ejecutamos el código sobre un router de prueba que tiene cambiada la contraseña, tenemos la siguiente salida:

Figura 5: Resultados de un router con las contraseñas por defecto cambiadas

Ahora vamos a ejecutarlo contra un router en el que se encontrarán 2 combinaciones válidas, aquí esta la captura:

Figura 6: Router con dos aciertos de combinaciones

Existe una librería distinta a la usada aquí, que te permitirá también realizar conexiones HTTP de manera más sencilla: request. Por si no la conocías, puedes echarla un vistazo. Como comente antes, para que el script acabe en la primera combinación exitosa de usuario y contraseña, hay que hacer una pequeña modificación en la función attack, borrando la variable find y teniendo el siguiente código en el if que comprueba si el código de respuesta es 200:

Figura 7: Comprobación de salida con éxito 

Llega el momento de despedirse. Este solo es un ejercicio para los que estamos aprendiendo que he querido compartir. Por supuesto, no solo faltan los controles que he indicado al principio, sino que se podrían añadir fases de fingerprinting del dispositivo para probar solo las contraseñas de esos modelos, se podrían detectar la existencia de sistemas de autenticación con 2FA, detectar errores por límites de intentos y bloqueos de cuenta, o incluso si son vulnerables a algún exploit conocido que leakee usuarios. Cuanto más aprendas, más puedes ampliar estos ataques contra los sistemas de login. Puedes seguir aprendiendo a escribir scripts en Python que se encuentren destinados al hacking con dos libros que utilizo yo: Python para Pentesters y Hacking con Python. Hasta la próxima.

Autor: Josué Encinar García (@JosueEncinar). Ingeniero de Software, estudiante del Máster Universitario en Seguridad de Tecnologías de la Información y de las Comunicaciones en la Universidad Europea de Madrid. Analista de Seguridad en Accenture.

miércoles, enero 11, 2017

Cómo ataca DNS Changer al router de tu casa

Allá por el año 2011 hablamos en nuestro blog Seguridad Apple acerca de un malware que afectaba a sistemas operativos OS X denominado DNS Changer. Ni mucho menos era nuevo, pero lo cierto es que fue un malware sencillo, efectivo y potente para lograr realizar ataques de pharming, es decir, poder redirigir un nombre de dominio a otra máquina distinta para obtener acceso al tráfico de los equipos víctimas.

Figura 1: Cómo ataca DNS Changer al router de tu casa

Como ocurrió con el caso de las malas prácticas en la configuración de los servicios SSH en Internet y el famoso ataque de la botnet Mirai, nos encontramos una gran cantidad de fallos de seguridad en distintos routers del mercado. Estos fallos de seguridad desembocan en que el malware use prácticas de DNS Changer sobre ellos y no en los navegadores o equipos de los usuarios. Es decir, el objetivo es afectar a toda la red doméstica que obtenga las direcciones IP de los servidores DNS a través de configuraciones DHCP servidas del router de casa.

¿Cómo funciona DNS Changer hoy en día?

Hoy en día, investigadores de ProofPoint han publicado un nuevo estudio dónde se puede ver como más de 160 modelos diferentes de routers son vulnerables a ataques DNS Changer. ¿Cuáles son los modelos? Algunos de los modelos son muy comunes en nuestros entornos, como las marcas D-Link, Netgear, Pirelli o Comtrend, entre otros.

Figura 2: Esquema de Malvertising utilizado para infectar equipos a través de Yahoo! ad Network

Los ataques DNS Changer comienzan con esquemas de Malvertising, es decir, los cibercriminales compran y colocan anuncios en sitios web convencionales que contienen código Javascript malicioso. A través de este código, son capaces de acceder a la dirección IP local de un usuario al realizar una solicitud WebRTC a un servidor Mozilla STUN, Session Traversal Utilities for NAT, un data leak que se conoce desde hace mucho tiempo y que afecta a clientes Google Chrome y Mozilla Firefox.

Figura 3: En esta PoC puedes comprobar cómo obtiene tu dirección IP local

Estos servidores envían una conexión a un servidor controlado para ser capaces de obtener también la dirección IP pública y el puerto del cliente, obteniendo la dirección pública de la víctima y la dirección privada. Las direcciones IP locales y públicas del usuario pueden obtenerse a través de estas solicitudes con el código Javascript malicioso que es inyectado en el anuncio.

Una vez que el atacante determina la dirección IP local de un objetivo, tratan de determinar si es factible o merece la pena atacar. Si no es factible o no merece la pena, se muestra un anuncio benigno. Los objetivos deseables reciben un anuncio falso en forma de imagen PNG. El código Javascript es utilizado para extraer código HTML del campo de comentarios de la imagen PNG y se redirige a las víctimas a la página de destino de DNS Changer.

En este punto DNS Changer utiliza Google Chrome u otro navegador para cargar diferentes funciones, incluyendo una clave AES oculta con esteganografía en una imagen pequeña. La clave AES se utiliza para ocultar el tráfico. Una vez se realizan las funciones de reconocimiento, el navegador informa de nuevo al servidor que controla el malware de DNS Changer, el cual devuelve las instrucciones adecuadas para realizar un ataque a ese router.

Figura 4: Esquema de funcionamiento de DNS Changer

El navegador del cliente funcionará correctamente, pero el router puede tener vulnerabilidades que pueden ser explotadas. Esto es debido a que, generalmente e históricamente, es más fácil encontrar vulnerabilidades en estos dispositivos. Contraseñas por defecto, vulnerabilidades en los firmware de los routers, configuraciones débiles, contraseñas por defecto o ninguna protección contra ataques de CSRF (Cross-Site Request Forgery), como ya vimos en el pasado, donde con un simple correo electrónico a un cliente de e-mail que cargue las imágenes por defecto en mensajes HTML se puede hacer un ataque CSRF a un router.


Figura 5: Demo de cómo hacer un ataque CSRF a un router a través de cliente Mail


Pero también se pueden explotar debilidades de los navegadores que permitían enviar contraseñas por defecto en las URLs sin generar alertas.  Existen una gran cantidad de debilidades para los routers de Internet y esto es de lo que se aprovecha esta amenaza. En este caso, se explotan para cambiar la configuración DNS del router y poder redirigir el tráfico hacia dónde los atacantes quieran.

¿Qué hacen los atacantes si el router no es vulnerable?

Los atacantes utilizan DNS Changer para intentar usar las credenciales por defecto y poder acceder al dispositivo. Cuando los atacantes lograban cambiar los DNS de los routers, se redirigía el tráfico de la víctima hacia dominios como Fogzy y TrafficBroker.

Figura 6: Tráfico y explotación con DNS Changer de un router Netgear 

Los ataques a routers ocurren en campañas vinculadas con malvertising, y que actualmente están ocurriendo con mucha frecuencia. El patrón de ataque y las similitudes de los vectores de infección hacen pensar a los investigadores que quién está detrás de este tipo de ataques sean los responsables de otras campañas basadas en ataques CSRF llamada operación Soho Pharming, en la mitad del año 2015. Hay que tener en cuenta que en esta nueva campaña y forma de actuar existen varias mejoras respecto al pasado:
• Resolución de DNS externo para direcciones internas.
• Esteganografía para ocultar.
• Clave AES para cifrar y descifrar información.
• Diseño de los comandos enviados para atacar routers.
• Adición de una base de conocimiento extensa y moderna. Más de 160 vulnerabilidades en diferentes modelos y marcas del mercado actual.
• Se acepta dispositivos Android para hacer las peticiones a los routers.
¿Cómo protegerse frente a esta amenaza?

Es necesario tener actualizado el firmware de los fabricantes o proveedores de los routers que podamos tener en casa, empresas, organizaciones, etcétera. Además, se deben cambiar las contraseñas de estos dispositivos y disponer de soluciones que minimicen la exposición de servicios y protejan estos con un segundo factor de autenticación o de autorización.

Figura 7: Explotación de credenciales por defecto en estos routers

Otra recomendación para mitigar los ataques es cambiar el rango de direcciones IP locales de estos routers, inhabilitar funciones de administración remota y usar add-ons que ayuden a bloquear la publicidad, ya que, en este caso, la publicidad puede ser algo peligroso.

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell

miércoles, octubre 26, 2016

Descarga el libro gratuito de "Seguridad en Redes"

Se acaba de publicar este nuevo libro gratuito denominado “Seguridad en Redes”. Esta obra presenta un enfoque eminentemente técnico de la experiencia de varios años de trabajo en grandes redes en las áreas de “Planificación y Operación de red”, “Seguridad de redes y TI” y “Auditoría de seguridad”, que podríamos afirmar, son los pilares fundamentales de toda red. Los prólogos de este libro están escritos por Chema Alonso y Antonio Castro Lechtaler, que como todos conocemos, son dos referentes internacionales en Redes y Seguridad.

Figura 1: Descarga el libro gratuito de "Seguridad en Redes"

El autor soy yo, Alejandro Corletti Estrada, que después de la publicación del libro “Seguridad por Niveles” en el año 2011  que alcanzó las 100.000 descargas, nuevamente me animé a crear esta obra para difusión y descarga gratuita para cualquier uso docente, quedando prohibida toda acción y/o actividad comercial o lucrativa, como así también su derivación y/o modificación sin autorización expresa del autor. Aquí tienes el prólogo que Chema Alonso escribió para este libro.
Ser un hacker y no un profesional 
Quiere el destino que escriba este prólogo solo un par de días después de que tuviera lugar el, hasta ahora, ataque de denegación de servicio distribuida más grande que se recuerda. Con una potencia de hasta 1.2 Terabits por segundo la botnet Mirai ha conseguido marcar el record en tráfico generado para hacer un ataque contra un objetivo concreto.

Corremos tiempos beligerantes en las redes de comunicaciones en los que los cibercriminales han encontrado en ellas un medio para perpetrar sus ataques con cierta percepción de impunidad al ocultarse en la distancia de países remotos con leyes no adaptadas que dejan que se escapen como polvo en los dedos.

Proteger este activo tan preciado que la tecnología nos ha dado es responsabilidad de todos. Desde el dueño de una impresora en su casa hasta el administrador de una pequeña red de equipos en una empresa pasando, lógico está, por los grandes proveedores de servicios en Internet. Cada fallo de seguridad en esta vasta y creciente red de redes puede ser utilizado por un adversario para conseguir una ventaja en un ataque y así, como hemos visto en el ataque que citaba al principio, la botnet Mirai se ha aprovechado de dispositivos como impresoras, routers, switches o cámaras de vigilancia mal configuradas, con bugs conocidos o contraseñas por defecto, para conseguir un número tal de equipos infectados que una empresa como DYN, que da soporte a una parte importante de los servicios DNS de Internet, no pueda contenerla.

Conocer nuestras redes, los rincones más pequeños y escorados de las mismas, para evitar que el eslabón más débil de esta cadena sea un dispositivo que forma parte del Shadow IT o el Shadow IoT de nuestra organización es fundamental. Pero más lo es conocer cómo funcionan y mantener la seguridad del mismo a lo largo del tiempo.

Decía la definición que hace el Internet Engineering Task Force en su RFC 1983 titulado Internet User’ Glossary que un Hacker es:

A person who delights in having an intimate understanding of the internal workings of a system, computers and computer networks in particular. The term is often misused in a pejorative context, where "cracker" would be the correct term. 
Y es así lo que necesitamos todos que seas en tu red. Un auténtico hacker que tenga un conocimiento íntimo de cómo funciona tu red. Cuáles son los protocolos que están circulando por ellas, cómo están configurados, cómo se pueden mejorar y cuáles son los rastros que deben levantar una alerta en tus mecanismos de detección para saber que algo está pasando por ellas que no debiera.

Debes conocer todo lo que puedas tu red de comunicaciones. Saber cómo siente, piensa y respira cada poro de ella. Cada router, cada switch, cada firewall, cada equipo que envía o recibe tráfico por el medio que sea, por el protocolo que sea, por la aplicación que sea. Es tu red y debes conocerla como si la hubieras construido tú, debes ser el hacker de tu red y aprender de ella día a día.

En mi vida profesional, ya más larga de lo que me gustaría para poder disfrutar más de los muchos momentos que me toquen por venir aún, me he topado con una gran cantidad de informáticos que realmente no adoraban esta profesión. Profesionales que lo eran porque trabajaban de esto, pero que por falta de pasión y dedicación a conocer lo que tenían entre manos no deberían tener ese título.

Los que de verdad amamos este trabajo no escatimamos esfuerzos en aprender más día a día de lo que tenemos entre manos, en conocer aquello que desconocemos, en disfrutar del trabajo que nos llevó a meternos en esta afición que se convirtió en profesión.

Llegados a este punto debes hacerte a ti mismo esta pregunta. Debes preguntarte qué tipo de profesional quieres ser. Uno de esos que lo es por la tarjeta y la posición laboral o uno de esos que aprende todo lo que puede porque es un hacker que adora la tecnología. Decide tú. Tú manejas tu tiempo, tu vida, tus esfuerzos y tu carrera profesional. Hoy, y ahora, es el momento de que aprendas un poco más para que mañana puedas aprender un poco más sobre lo ya aprendido. Sé un hacker y no un trabajador de la informática.

Aprende todo lo que puedas y haz que tu trabajo sea tu pasión y que tu pasión sea tu trabajo. Solo así podrás ocuparte correctamente de la seguridad de tus redes.

Chema Alonso
El objetivo de esta obra es poder compartir conocimientos para que el nivel de seguridad de nuestras arquitecturas de red pueda mejorarse. El libro comienza con una detallada descripción de la historia y evolución de las redes, como punto de partida y pilar básico para ir abordando las diferentes estrategias y procesos. El texto presenta al detalle los dispositivos que forman el verdadero corazón mundial de la red fija y móvil.

Figura 2: Arquitecturas de redes para mitigar ataques DDoS 

Poco a poco sigue abordando los niveles de Switching y Routing desde un enfoque práctico y con ejemplos vigentes en las diferentes configuraciones y el empleo de los protocolos de red. Uno de los aspectos que más destacan de la obra, es la experiencia que intento transmitir por medio del uso de herramientas, comandos y programas que no pueden ser dejados de lado en el día a día de la seguridad de estas infraestructuras.

Figura 3: WireShark para analizar tráfico de red

Trata con suficiente grado de detalle los aspectos de seguridad que deben reunir los CPDs o centrales dónde se aloja el equipamiento de red. Y, como no podía ser de otra forma, el autor otra vez nos propone una importante cantidad de ejemplos prácticos en el empleo de comandos y herramientas, que tal cual menciona Chema Alonso en su prólogo, son la forma en la que operará todo hacker sobre nuestras redes y sistemas. Por lo tanto desde el punto de vista de los responsables de las mismas, deben conocerlas, saber emplearlas y sacarles provecho, previamente a que lo haga un intruso. Por supuesto, si quieres conocer más de tu adversario debes conocer cuáles son los ataques que hacen en redes IPv4 &IPv6.


Las versiones impresas de esta obra - estas sí son de pago - se distribuyen únicamente en España y se pueden solicitar a través de la cuenta  de correo info@darFe.es.  Si quieres descargar una copia, puedes hacerlo en esta URL "Libro Seguridad en Redes" y aquí lo tienes subido a SlideShare.

Autor: Alejandro Corletti Estrada
Doctor en Ingeniería y ex-jefe de redes del Ejército argentino

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares