jueves, 30 de junio de 2016

Jugando con taxímetros con la ayuda de Shodan

Hace ya varias semanas que leí un artículo escrito por Diego Soto en el blog del "Maligno" en el que nos explicaba los peligros asociados con el llamado "IoT" (Internet of Things). Estos riesgos aumentan exponencialmente a la cantidad de dispositivos inteligentes que conectamos a internet cada día, por lo que ya no nos sorprenden noticias en las que podemos leer que investigadores han conseguido vulnerar remotamente la seguridad de cierto vehículo, o determinados sistemas que controlan infraestructuras críticas, juguetes para niños, incluso armas de fuego, junto a un largo etc ...

Imagen 1: hacking en taxímetros con Shodan 

La cantidad de dispositivos diferentes que existen en la actualidad, nos complica mucho el echo de solucionar todos estos fallos de seguridad existentes, ya que en muchos casos no existe ningún tipo de actualización para estos dispositivos o simplemente el coste del mismo no permite gestionar la seguridad a largo plazo.

Debemos tener en consideración que cuando conectamos cualquier dispositivo a Internet, realmente estamos dejándolo expuesto al resto del mundo. Cualquier persona con el conocimiento suficiente puede testar la integridad de ese dispositivo o plataforma, y como consecuencia explotar sus fallos. Este es el motivo por el que es tan importante tener en cuenta todos los aspectos respectivos a la seguridad de un dispositivo que en algún momento tendrá que conectarse a la red. En el mundo empresarial, los responsables de seguridad muchas veces ni siquiera saben que existen esos dispositivos, esto es lo que llamamos Shadow IoT.

Como nos explicaba Diego en su artículo, algunos tipos de taxímetros utilizados en España están conectados a Internet sin haber tenido muy en cuenta su seguridad. En la actualidad muchos de estos taxis están empezando a utilizar taxímetros con conexión vía 3G a Internet para poder conectarlos con sistemas de Big Data o diferentes aplicaciones que localicen al vehículo en todo momento para enviarle nuevas peticiones de transporte. Esto que en un principio nos parece muy beneficioso se puede convertir en un problema , ya que si un atacante consigue vulnerar la seguridad del taxímetro, podría llegar a modificar el precio del trayecto.

Imagen 2: taxímetros TXD70 de Taxitronic

Vamos a ver un ejemplo en el que utilizaremos los Taxímetros 3G de Taxitronic. Solo tenemos que buscar la documentación oficial publicada en su propia página web para saber que estos utilizan un sistema GNU/Linux embebido, y buscando un poco más por Internet es muy fácil descubrir que la distribución de la que hacen uso es Pengutronix.

Imagen 3: distribución Pengutronix utilizada por Taxitronic

Una vez sabemos el tipo de sistema que utilizan y que están conectados a Internet de forma autónoma, solo nos quedaría hacer un poco de hacking con Shodan para intentar localizar estos dispositivos y descubrir qué servicios tienen abiertos. Para ello localizamos la firma de los banners del dispositivo que vamos a buscar, en este caso para los que usan la plataforma Pengutronix, la firma sería "Ptxdist.

Imagen 4: búsqueda en shodan de la firma de los banners

Imagen 5: puerto 6000 abierto en un server "X" 

En la imagen anterior se puede observar como obtenemos más de 70 resultados, y si nos fijamos tienen abierto el puerto 6000, utilizado por el servicio X11. El echo de que tengan el servicio X11 abierto significa que está haciendo uso de alguna aplicación gráfica, en este caso la aplicación del taxímetro que se está ejecutando en la distribución Linux. Este sistema en particular es especialmente modular, ya que igual que se está lanzando contra el servidor X local, también se podría forzar a ejecutar la aplicación contra un servidor remoto X situado en otra máquina.

Shodan, no solo muestra qué puertos están abiertos en un determinado servidor, sino que además tiene implementado algunos que nos revelan más información pública. Por ejemplo, en el caso de los servidores VNC sin autenticación, Shodan nos devuelve un screenshot de la sesión. En el caso de servidores X11 sin autenticación, muestra una captura de lo que se está ejecutando allí en ese mismo momento. En este caso, varios taxímetros distribuidos por diferentes taxis de España.

Imagen 6: táximetro en estado libre en ese momento

Imagen 7: táximetro ocupado mostrando el importe

Teniendo todo esto en cuenta, podríamos saber lo que está siendo mostrado en la pantalla del taxímetro de una forma tan sencilla como conectarnos remotamente al servidor X11 cada cierto tiempo, después pedimos una captura de pantalla para generar un archivo con la imagen que allí se está viendo.

De la misma manera, podríamos simular presiones de teclado o ciertos movimientos para controlarlo. En este entorno también podríamos llegar a conseguir que el taxímetro marque 0. Esto se podría conseguir con una shell lanzada sobre el taxímetro. Solo tendríamos que conectarnos a esa dirección IP y ese puerto para tener un terminal y ejecutar comandos en el taxímetro. Incluso podríamos divertirnos un poco poniendo el salvapantallas en el taxímetro o cosas parecidas.

Esto ha sido solo un ejemplo de todos esos riesgos asociados a la evolución del IoT de los que oímos hablar día a día y que parecen tan lejanos, pero que como podemos ver ya están muy presentes en todos los ámbitos de nuestra vida. Como reflexión final comentar que todos los implicados en el comercio y la fabricación de estos dispositivos conectados, son los únicos responsables de este tipo de "fallos" o "configuraciones" que pueden parecer muy inofensivos, pero que extrapolándolos a sistemas críticos estas "tonterías" se convierten en un gran peligro para todos.


Fuente: Un informático en el lado del mal

lunes, 27 de junio de 2016

OnionIRC, la escuela de hackers de Anonymous

Hace un par de meses, distintos miembros pertenecientes al colectivo hacktivista Anonymous lanzaron su propio chat de IRC en la Deep Web. Se trata de OnionIRC, un chat al que sólo podemos acceder con Tor. Su principal objetivo es que en él se intercambien opiniones e inquietudes sobre privacidad y que sirva como lugar de opinión con total libertad de expresión.

Imagen 1: OnionIRC, la escuela de hackers de Anonymous 

También se imparten clases en dos canales diferentes para que todo el que esté interesado puedanaprender conceptos relacionados con el hacking.  Para poder acceder a OnionIRC los responsables de la iniciativa han puesto a nuestra disposición un tutorial con los pasos a seguir. Solo necesitarás descargar el cliente de IRC HexChat y el navegador Tor Browser.


Tor Browser simplemente es un fork de Firefox que a sido especialmente diseñado para que sus usuarios puedan navegar en la Deep Web, viene preconfigurado para que con sólo tengamos que ejecutarlo sin tener que modificar nada más. En esta ocasión  sólo tendremos que abrirlo para conectarnos a Tor y de esta manera poder acceder al IRC.

Imagen 2: opciones de configuración para añadir una nueva red

Por otra parte HexChat simplemente es el cliente IRC que utilizaremos para conectarnos. Lo ejecutamos y solo tendremos que añadir una nueva red con el nombre de Onion IRC y la dirección onionirchubx5363.onion/6697. Dejaremos la conexión tal y como está en la imagen, es importante tener marcadas las opciones para usar SSL en todos los servidores y aceptar los certificados SSL inválidos.

Imagen 3: sesión en OnionIRC a través de HexChat

Una vez dentro nos podemos encontrar con todo tipo de clases, desde aquellas con conceptos básicos como el manejo de máquinas virtuales, hasta otras un poco más avanzadas en las que aprenderemos a sacar partido de vulnerabilidades como la Inyección SQL. También tenemos otro tipo de charlas más filosóficas estilo cuales son los principios de Anonymous y el ciberhacktivismo... Casi todas las clases avanzadas siempre serán impartidas en el canal #class, aunque luego también tenemos uno llamado #school4lulz en el que se nos explican conceptos básicos como networking, OSI Model o TCP. El inicio de todas estas clases lo anunciarán en el canal general del IRC #main y en la cuenta de Twitter de OnionIRC. 

Para poder impartir las clases sin problemas se pone el canal en modo +m o moderado para que sólo los admin puedan escribir. Normalmente es solo una persona la que va explicando la temática y poniendo ejemplos. Aunque puede haber aclaraciones o añadidos que haga otro de los moderadores. Cuando termina cada una de las explicaciones del tema se quita el modo moderado del canal para que quién tenga dudas pueda tener la oportunidad de preguntarlas. Luego vuelven a moderar el canal para seguir con el tema sin interrupciones y viceversa.

Imagen 5: logs extraídos del cliente de IRC

Otra cosa bastante interesante es que los responsables de la red también van colgando los logs de todas las clases impartidas en esta página onion. Simplemente son logs extraídos directamente del cliente de IRC.

Imagen 6: chat y lista de canales de OnionIRC

Decir que para ser un IRC casi recién nacido no está mal el numero de usuarios con el que nos podemos encontrar, unos 300 usuarios, los cuales se van organizando entre los 14 canales públicos. En ellos nos podemos encontrar todo tipo de temáticas, ya que tenemos desde canales dedicados al cracking y explotación de vulnerabilidades hasta otro en el que se comparte información y se solidarizan con otros miembros de Anonymous que han sido detenidos.

También hay un canal dedicado a hablar sobre las últimas filtraciones, otro para charlar de películas, otro de soporte e incluso uno especialmente dedicado a los que hablan español. En definitiva un espacio libre donde poder aprender y combatir conocimiento sin limitaciones.

miércoles, 8 de junio de 2016

¿Qué distribución GNU/Linux debería instalar?

Muchos son los que se preguntan cuál sería la mejor distribución GNU/Linux para instalar en su ordenador personal. Otros incluso puede que siendo ya usuarios de Linux, aun no estéis del todo satisfecho con él y queráis buscar alguna otra alternativa. 

Imagen 1: ¿Qué distribución GNU/Linux debería instalar?

Hoy veremos una serie de distribuciones GNU/Linux que seguro que te serán de interés y utilidad.
Las hemos dividido en cuatro categorías diferentes según el enfoque principal de cada una.

Para los que buscan estabilidad


Debian: una de las distribuciones más estables y 100% libre, Debian destaca principalmente por su sistema de paquetería .deb y su gestión de paquetes APT. Es una de las distribuciones más importantes de GNU/Linux, ya que en ella se basan muchas otras distribuciones importantes. 


Red Hat Enterprise: es una Distribución comercial de Linux desarrollada por la empresa Red Hat. Ofrece bastante estabilidad y flexibilidad, lo que la posiciona como una de las más recomendadas para empresas y servidores.

Fedora: una versión gratuita ofrecida por la empresa Red Hat y que utiliza el sistema de paquetería RPM (Red Hat Package Manager). Consta de tres versiones diferentes para escritorio, servidores y sistemas en la nube, y también destaca por su seguridad gracias al sistema SELinux ("Security-Enhanced Linux").

CentOS: principalmente nació como una versión gratuita de la distribución comercial Red Hat Enterprise Linux (RHEL) destinada al uso empresarial. Recientemente unió sus fuerzas con el propio  equipo de Red Hat, y en la actualidad sigue siendo una apuesta segura para los que buscan un código de calidad.

OpenSUSE: Es una de las apuestas más potente contra la familia de distribuciones basadas en Debian. Está disponible con los entornos de escritorio KDE y Gnome, y una de sus mejores armas es la robusta herramienta de instalación y configuración YaST , junto con el configurador gráfico SaX.

Arch Linux: esta es una distribución modular en la que empiezas desde cero y tienes que ir añadiéndole los componentes que quieras, por lo que al final acabas con una distribución echa a tu medida. Nada apta para principiantes, y utiliza pacman, su propio gestor de paquetes. Se trata de una Rolling Release, lo que quiere decir que todos sus componentes van actualizándose sin necesidad de instalar versiones nuevas del sistema operativo.


Para principiantes


Ubuntu: la distribución para principiantes por excelencia y una de las más utilizadas gracias a su gran facilidad de uso. Está basada en Debian, es amada y odiada por partes iguales por su exclusivo entorno de escritorio Unity, con el que busca convertirse en una distribución versátil que pueda ser utilizada tanto en ordenadores como smartphones y tablets.


Linux Mint: basada en Ubuntu, esta también es una de las más recomendadas para todos aquellos que tocan Linux por primera vez. Su entorno de escritorio, Cinnamon, tiene bastantes similitudes con Windows, y es también uno de los más personalizables.

Elementary OS: es otra distribución basada en Ubuntu, pero se diferencia de "Mint" por ejemplo, en que imita el del sistema operativo OS X de Apple. Muy rápida y fácil de usar, ofrece al usuario todo lo que pueda necesitar desde el primer momento.

Zorin OS: también basada en Ubuntu y nació en principio con la intención de ayudar a que el usuario diera el salto a Linux, ofreciéndole una interfaz lo más similar posible a Windows. Tiene varias versiones, algunas gratuitas como Core (versión básica), Lite (para PCs poco potentes) y Educational (incluye aplicaciones educativas), y otras tantas de pago muy parecidas al estilo de las versiones de Windows.


Para amantes de la privacidad

Tails: aconsejada por el mismísimo Edward Snowden y basada en Debian, es una distribución lista para ser ejecutada desde un USB o DVD. Tails se conecta directamente a TOR tan pronto termina el proceso de inicio del sistema operativo, y toda conexiones a Internet salen a través de esta red.

Kali Linux: aunque principalmente estás enfocada en explotar la seguridad, Kali es una distribución basada en Debian con una inmensa colección de herramientas que nos ayudarán proteger nuestros equipo. Utiliza un kernel personalizado con parches de seguridad y tiene soporte para la arquitectura ARM.

BlackArch Linux:  distribución orientada a la seguridad informática que en sus inicios nació como una expansión de Arch Linux, pero que ha seguido por su propio camino. Nos da acceso a una inmensa cantidad de herramientas de hacking entre las que destaca Sploitctl (un script que permite instalar, actualizar y buscar exploits).

Qubes OS: es un sistema operativo centrado en la seguridad del escritorio a través de aislamiento. No es una distribución al uso, sino que despliega Linux con un hipervisor (un monitor de máquinas virtuales) con el que gestionar diversas instancias de software. En esencia Qubes OS ejecuta Xen directamente sobre el hardware, lo cual, obviamente, dificulta el control de la máquina por atacantes externos. 


Para los apasionados de sus hobbies


SteamOS: todavía está en fase beta, es la distribución basada en Debian desarrollada por Valve, y  está enfocada a ser una especie de media center para videojuegos integrando el modo big picture que es un sistema de sobremesa.


Ubuntu Studio: basada en Ubuntu y orientada a la edición multimedia profesional de audio, video y gráficos. Utiliza el entorno Xfce y no lleva preinstalado ningún tipo de software ofimático.

Scientific Linux: Se trata de un clon a nivel binario de la distribución Red Hat Enterprise Linux, y está desarrollada y mantenida por los laboratorios de Física del CERN junto con Fermilab, con el objetivo de tener un sistema operativo específico para la computación científica.

CEELD: distribución basada en OpenSUSE que hace uso del entorno KDE y está especialmente dirigida a los ingenieros electrónicos y estudiantes de esta carrera, al permitirles diseñar o simular circuitos electrónicos.

Edubuntu: otro derivado de Ubuntu, pero en esta ocasión especialmente dirigido a escuelas y profesores. Ofrece una gran colección de software y herramientas educativas, por lo que también es una buena opción para instalar en los ordenadores de los más jóvenes de la casa.


Para terminar decir que la mejor distribución para instalar, es aquella que se adapte mejor a tus necesidades, y con la que te sientas más a gusto a la hora de trabajar. Cada distribución GNU/Linux es distinta y está enfocada de manera diferente pero todas tienen muchas cosas en común, lo que nos facilita su uso a la hora de cambiar de distribución.

miércoles, 1 de junio de 2016

Introducción a XSS (Cross Site Scripting)

Cross-Site-Scripting o XSS , es una vulnerabilidad que se produce debido a un incorrecto filtrado de los valores que un usuario puede introducir en una web, permitiendo que cualquiera pueda inyectar código HTML y Javascript en la misma. El código al no ser filtrado, se ejecuta en la página como si formase parte de ella. Se puede ejecutar mediante consultas en cuadros de texto, o en la URL. 

Imagen 1: Introducción a XSS (Cross Site Scripting)

Con un ataque XSS, se puede llegar a robar las cookies de un administrador web, manipular a alguien para que descargue software malicioso, modificar contenido, eliminar restricciones impuestas desde el lado del cliente, etc... Prácticamente cualquier lugar que contenga un cuadro de texto, puede ser explotado con XSS. Para ver en primera persona como funciona primero tenemos que encontrar un sitio vulnerable a XSS. Tardaremos algo más de tiempo que con una vulnerabilidad SQLi para comprobar si realmente es vulnerable. Con SQLi, bastaría con añadir: ". En cambio para XSS, tenemos que presentar (a veces) varias consultas, para verificarlo.

Primero hay que tener claro que nos podemos encontrar con dos tipos de XSS:

  • Indirecto o reflejado: modifica valores que una web pasa entre página. Sucede cuando se envía un mensaje o ruta en una URL, cookie o en la cabecera HTTP.
  • Directo o persistente: almacena código en la web para que se ejecute.

En el siguiente ejemplo vemos como funciona un XSS básico con una página que pasa valores a otra a través del método GET. Tenemos la siguiente web con un campo de texto que envía una cadena de texto a otra página para procesarla. Una vez que el usuario inserte una cadena y mande el formulario se generará la siguiente url: www.rememberhackingsite.blogspot.com/server.php?cadena=test

Imagen 2: web con un campo de texto que envía una cadena 

"PRUEBA" es el valor enviado a través del formulario y que nos mostrará en la siguiente página.

Imagen 3: página mostrada tras insertar la cadena

Al revisar el código fuente podemos ver como se inserta "PRUEBA" en la web:

Imagen 4: vemos como se inserta "PRUEBA" en la web

Ahora intentaremos inyectar código dentro de la web y que este sea ejecutado, por lo que en este caso vamos a pasarle la siguiente cadena a través del formulario o de la url:

<script>alert('XSS')</script>

Para ejecutarlo a traves de la URL solo tenemos que cambiar "PRUEBA", por la cadena anterior: www.rememberhackingsite.blogspot.com/server.php?cadena=<script>alert('XSS')</script>

Una vez actualicemos la web nos debe mostrar una alerta con el texto XSS, ya que el código, al no ser filtrado, se ejecuta en la página como si formase parte de ella. Si miramos el código, podemos observar como la cadena que hemos introducido se ha integrado en el código fuente de la página:

Imagen 5: integración del código fuente en la página

Imagen 6: alerta con el texto XSS
Ya hemos completado la inyección y comprobado que la web es vulnerable, ahora solo tendríamos que aplicar el payload que corresponda para el ataque. Aunque hay que tener en cuenta que en la vida real lo más habitual sería encontrarnos las entradas filtradas, ya bien sea desde el lado del cliente o desde el servidor. Tras ver como funciona, vamos a implementar algunos filtros simples para que entendáis la idea de los bypasses. Para el siguiente ejemplo filtraremos el string "script" con la función str_replace() de PHP.

Imagen 7: filtrado del string "script" con la función str_replace()

Pasamos el mismo string que antes:
www.rememberhackingsite.blogspot.com/server.php?cadena=<script>alert('XSS')</script>

Y en este caso la palabra "script" será eliminada y el código no será ejecutado, quedando el código fuente de esta manera:

Imagen 8: en este caso el código no será ejecutado

Este tipo de filtros es muy fácil saltárselo, por ejemplo alternando entre mayúsculas y minúsculas en la palabra filtrada (ejemplo: "ScRiPt"). Por lo que solo tenemos que pasar la cadena modificada y habremos logrado nuestro objetivo. Cómo habréis imaginado la idea principal a la hora de realizar un ataque XSS es tratar de engañar al filtro para conseguir ejecutar código, para esto una buena parte del trabajo se realiza a la hora de analizar que tipo de filtrado aplica el objetivo y encontrar la manera de evadirlo. Para terminar os dejo algunos dorks para XSS y  un enlace con información sobre evasión de filtros.

Filter Evasion Cheat Sheet

Dorks:
inurl:search.php?
inurl:find.php?
inurl:search.html
inurl:find.html
inurl:search.aspx
inurl:find.aspx


Fuentes: shellshocklabscalebbuckerelhacker.net