domingo, julio 31, 2016

Big Data Security Tales: Apache Hadoop expuesto por no configurar HUE (Level 102) #BigData #Hadoop #Pentest

Como ya os anticipé la semana pasada, quería dedicarle varios artículos al mundo de la seguridad de las tecnologías de Big Data desde un vista de pentesting, así que hoy toca una nueva tercera parte después de los artículos dedicados a la configuración sin autenticación en MongoDB y los accesos a Cassandra. Hoy quería hablaros de Apache Hue, un interfaz web para analizar datos que viene dentro de la familia de Apache Hadoop, aunque por lo visto mucha gente no lo sabe.

Figura 1: Apache Hadoop expuesto por no configurar HUE (Level 102)

Cuando alguien se instala un Apache Hadoop desde alguna de las distribuciones que existen para tenerlo On Premise, como HortonWorks, Cloudera o cualquier otra, el paquete viene con muchos interfaces de administración para las diferentes tareas que se necesitan hacer sobre las diferentes tecnologías que se usan en una arquitectura de Big Data.

Hue Web Interface

Uno de esos interfaces es HUE, una solución que aglutina en un único interfaz web las herramientas para acceder y analizar los datos que se tienen en los distintos repositorios. Es una herramienta que permite acceder a los datos en el HDFS, pero también a repositorios SQL, Spark SQL, Solr SQL, bases de datos NoSQL como MongoDB, etcétera. Un punto único de análisis de datos desde donde puedes conectarte a los distintos repositorios con las aplicaciones que integra. Esta la foto.

Figura 2: Conjunto de Apps integradas en Hue para analizar datos

Localizar estos interfaces con un poco de hacking con buscadores no es complicado en Shodan, ya que la aplicación en el backend utiliza un HTTP Header fácil de reconocer del tipo X-Hue-Jframe-Path. Estas variables de servidor son firmas fácilmente utilizables en dorks y que en caso de la aparición de un exploit que los afecte los expone demasiado a los atacantes. Localizar los portales HUE indexados en Shodan es tan sencillo como podéis ver.

Figura 3: Servidores Hue descubiertos en Shodan

Si os fijáis, Shodan no tiene aún una etiqueta "product" para HUE, pero será cuestión de tiempo que añada esa característica y permita reconocer el producto sin importar dónde esté instalado. Como veis, hay cientos de portales abiertos a Internet que pueden ser consultados.

El primer user es el REY

Dependiendo de la distribución que utilices, la herramienta puede venir con un usuario pre-creado o sin ningún usuario en la plataforma. Esto es así porque, el primer usuario que se crea en el interfaz es el que se convierte en superuser y a partir de ese instante él crea desde dentro de la herramienta el resto de los usuarios. Esto es así tanto en Cloudera como en HortonWorks.

Figura 4: Información de Cloudera sobre el primer usuario de HUE

El verdadero peligro radica en que muchas de las instalaciones de Apache Hadoop se hacen sin entender todos los interfaces de acceso que existen, incluidos entre ellos HUE. Esto es debido porque es fácil tener funcionando algunos elementos como el HDFS o las bases de datos, pero si no te creas un usuario en HUE y lo dejas abierto a Internet, cualquiera que llegué se encontrará con el servicio sin colonizar.

Figura 5: A la izquierda un HUE con usuario creado. A la derecha un HUE "sin colonizar"

En algunas distribuciones, el usuario que se crea por defecto es admin/admin - nada rocket science -, así que si la web pide "autenticarse", un pentester lo primero que probaría es esa combinación. Una vez dentro desde este interfaz se pueden hacer muchas cosas. El número de herramientas y conectores a los repositorios es alto, pero es que el atacante ya está dentro del servidor y tendrá acceso al resto de las bases de datos y a los repositorios de ficheros de la DMZ sin pasar por el firewall. Vamos, una alegría.

Figura 6: Con el primer usuario creado se puede administrar el sistema

Además, esta herramienta tiene gestión de usuarios para conectarse a servidores LDAP y permite crear también cuentas con sus ficheros locales, por lo que todo el contenido del disco puede ser accedido con mayor o menor medida desde este interfaz, pero sobre todo cuenta con un gran número de herramientas descritas al principio que permiten sacar datos de todo lo que haya cerca.

Figura 7: Acceso a las apps y los directorios del sistema

Instalar una distribución de Apache Hadoop y no configurar HUE es un serio problema de seguridad, que nosotros añadimos a la lista de plugins de nuestro sistema de Pentesting Persistente Faast, debido a la severidad de este fallo.
- Big Data Security Tales: ¡Vigila que tu MongoDB no le de tus datos a cualquiera! (Level 100)
- Big Data Security Tales: Cómo funcionan las MongoDB Injection
- Big Data Security Tales: MongoDB y Cassandra (Level 101)

- Big Data Security Tales: Apache Hadoop expuesto por no configurar HUE (Level 102)
- Big Data Security Tales: Django en HUE en modo DEBUG y con Directory Listing (Level 103)
- Big Data Security Tales: Las Interfaces de acceso al HDFS
- Big Data Security Tales: Apache Amabari Default Admin
- Big Data Security Tales: WSO2 Carbon y la ayuda para el Login
- Big Data Security Tales: Los Known-Bugs en WSO2 Carbon Server
- Big Data Security Tales: Kibana & ElasticSearch objetivos del ransomware
- Big Data Security Tales: Apache CouchDB Relax... o no
- Big Data Security Tales: Riak NoSQL Database
Saludos Malignos!

sábado, julio 30, 2016

Formaciones Online de Seguridad Informática en Agosto: @ElevenPaths, The Security Sentinel & @0xWord

Ya se acaba el mes de Julio y no sé en el resto del planeta, pero creedme si os digo que el sol calienta en Madrid con tanta fuerza que las ruedas de los monopatines se deshacen en el asfalto. Es tiempo para estar haciendo otros menesteres en el hemisferio norte del planeta, como estar en la playa o ir a visitar alguno de los países caribeños para disfrutar de descanso. Pero si eres como yo que todavía estás "castigado" sin vacaciones, aprovechar la reducción del ruido del día a día en el trabajo y formarse un poco más es una buena idea. Yo me he hecho mi lista de cosas a estudiar, probar y aprender para este mes de Agosto, así me mantengo centrado y enfocado en conseguir algún hito que me ayude a pasar mejor el verano.

Figura 1: Formaciones Online de Seguridad Informática & Hacking para Agosto de 2016

Si lo que quieres es formarte, en Seguridad Informática y/o Hacking desde un sitio con una temperatura agradable y sin desplazamientos, tienes algunas alternativas para hacerlo Online durante este mes de Agosto con las ElevenPaths Talks o los cursos de The Security Sentinel que además llevan los libros de 0xWord. No es un calendario muy extenso, pero más que suficiente si quieres hacer algo. Estas son las formaciones disponibles:

ElevenPaths Talks en Agosto de 2016

Como podéis ver en la imagen, para este mes de Agosto que viene tenemos cuatro sesiones a cargo de nuestros CSA de Chile, Colombia y Brasil.

Figura 2: ElevenPaths Talks para Agosto de 2016
Diferencias entre análisis de infraestructura, análisis web y code review
- 04 de Agosto por Diego Espitia, CSA de Colombia.
Fraude en PoS (Point of Sales)
- 11 de Agosto por Gabriel Bergel, CSA de Chile
 
10 Principales Controles de Seguridad que no pueden faltar en la empresa
- 18 de Agosto por Leandro Bennaton, CSA de Brasil
 
Metodologías de desarrollo Seguro (Secure-SDLC)
- 25 de Agosto por Diego Espitia, CSA de Colombia
Todas las sesiones son gratuitas y online con el ponente en directo para que podáis preguntar e interactuar con él. Solo debes registrarte en la web de las charlas: ElevenPaths Talks.

Cursos Online de The Security Sentinel en Agosto de 2016

Durante este mes de agosto, comenzando ya la semana que viene, tienes tres formaciones online en The Security Sentinel donde además recibirás nuestros libros de 0xWord. Estos son los tres que comienzan este mes, aunque tienen varias semanas de duración. Toma nota.

Figura 3: Cursos Online de The Security Sentinel para Agosto de 2016

La información de cada uno de estos cursos la tienes en las siguientes URLs:
Curso Profesional Online de Python para Pentesters
- Libro de 0xWord: Python para Pentesters
 
Curso Profesional Online de Auditorías Móviles
- Libro de 0xWord: Hacking y Seguridad en Comunicaciones Móviles
 
Curso Profesional de Hacking Ético
- Libros de 0xWord: Metasploit para Pentesters y Pentesting con FOCA
Los cursos duran varias semanas y tendrás un tutor que te ayudará constantemente a resolver todas las dudas que te surjan durante las formaciones.

One more Thing...

Por si quieres, el pasado 27 de Julio se emitió el vídeo de la entrevista que me hicieron en Microsoft Sessions. Ahora puedes verlo Online en la web del evento: Microsoft Sessions

Figura 4: Charla sobre seguridad informática y atacantes en Microsoft Sessions

Y si no te apetece hacer nada este mes de Agosto, pues recarga las pilas que luego llega en nada la cuesta de Septiembre.

Saludos Malignos!

viernes, julio 29, 2016

Tu impresora 3D con OctoPrint protegida con Latch @OctoPrint3D #OctoPrint #Latch

Tras haber estado trabajando en el proyecto de montar un servicio VPN personal integrando OpenVPN + Latch + Virus Total, decidí embarcarme en un nuevo proyecto de verano como patte de mi carta de presentación para la Fábrica de Caramelos. La idea era implementar Latch en OctoPrint, un software de servidor creado para controlar nuestra impresora 3D a través de la red. Este ha sido el resultado.

Figura 1: Tu impresora 3D OctoPrint protegida con Latch

OctoPrint es un proyecto OpenSource escrito en Python que está pensado para funcionar sobre Raspberry Pi en una distribución de Raspbian - una imagen para SD - , aunque se puede instalar en cualquier plataforma teniendo las dependencias correctas. Se puede obtener más información sobre OctoPrint en el sitio web oficial, pero aquí tienes un vídeo tutorial que explica las principales características del proyecto y su puesta en marcha en tu casa.


Figura 2: Getting Started with OctoPrint


Una vez visto, vamos a comenzar a integrar Latch en Octoprint, que como veremos no es muy complicado.

Parcheando OctoPrint para integrarlo con Latch

Para empezar con OctoPrint debemos descargar el software desde el repositorio oficial del proyecto en GitHub oficial [OctoPrint] o simplememte con el siguiente comando:
# git clone https://github.com/foosel/OctoPrint.git
Ahora descargaremos Latch for OctoPrint, que es el código que he tenido que desarrollar para integrarlo y que contiene las librerías del SDK de Latch para Python y los ficheros parcheados para que Latch funcione en OctoPrint.

Figura 3: Sección de código de OctoPrint parcheado para usar Latch

Una vez hecho esto, copiaremos la carpeta "octoprint" de LatchForOctoPrint en  la carpeta "src" de OctoPrint, dónde veremos que ya hay una carpeta con el mismo nombre para reemplazar los ficheros originales por los ficheros parcheados así como las librerías de Latch. Podemos usar los comandos:
# git clone https://github.com/toolsprods/LatchForOctoPrint
# cp -r LatchForOctoPrint/octoprint OctoPrint/src/
Emparejando la OctoPrint con Latch

Ahora pasamos a configurar Latch. Antes de empezar hay que crear una aplicación desde el panel de desarrolladores de Latch. Generamos una nueva, y apuntamos el ID de aplicación y el Secreto que lo necesitamos más adelante.

Figura 4: Creando la app de Latch en la web de desarrolladores de Latch

Hay que emparejar la nueva app que hemos creado con nuestro dispositivo móvil que contiene la aplicación de Latch. Para ello, primero tenemos que editar el archivo de configuración "config.py" que se encuentra dentro del directorio "src/octoprint/server/latch". Para generar el emparejamiento correctamente es necesario escribir las variables del ID de aplicación y el secreto para generar el ID de la cuenta de la que posteriormente se comprobará el estado del pestillo digital.

Figura 5: Configuración de Application ID y Secret en Latch for OctoPrint

Desde el dispositivo móvil con la aplicación de Latch que queremos emparejar generamos un nuevo Token Temporal de Paredado para realizar el proceso de creación del pestillo.

Figura 6: Petición de Token Temporal de Pareado en app de Latch

Después, desde el servidor con Raspbian donde está instalado OctoPrint ejecutamos "python latch -p PAIRING_CODE_HERE" desde la ruta "src/octoprint/server" tal y como se ve en la imagen siguiente. Es decir, ejecutamos el comando Python sobre el directorio "latch". Este paso debe hacerse antes de que expire el Token Temporal de Pareado generado por el dispositivo, esto son 2 minutos.

Figura 7: Pareando OctoPrint con Latch

Si todo ha salido correctamente nos debe aparece la nueva aplicación emparejada en nuestro dispositivo con Latch y la terminal nos devolverá el valor del ID de la cuenta que tenemos que copiar en su variable correspondiente en el archivo de configuración "config.py" en "src/octoprint/server/latch".

Figura 8: OctoPrint pareado con Latch

Si en algún momento deseamos desemparejar la cuenta basta con ejecutar "python latch -u" en el mismo directorio que hemos utilizado anteriormente para emparejarlo, es decir, "src/octoprint/server/".

Instalación final de OctoPrint "Parcheado y Pareado"

Para finalizar se realiza la instalación de OctoPrint en un directorio virtual tal y como se detalla en su GitHub y se ejecuta el servidor OctoPrint:

Figura 9: Instalación de OctoPrint
# virtualenv venv
# ./venv/bin/python setup.py install
# ./venv/bin/octoprint

Y ya se puede disfrutar de nuestro servidor OctoPrint con la seguridad de estar bien protegidos por Latch, nuestro pestillo digital. En el siguiente vídeo se puede ver su funcionamiento, aunque para hacer este vídeo reutilicé un Application ID en Latch con un logo distinto al que vienen en el artículo.


Figura 10: Vídeo de Latch para OctoPrint funcionando

Como veis, su funcionamiento es igual que en el resto de plugins de Latch y si revisáis el código es una implementación estándar similar a la que se muestra en el artículo de "Cómo cocinar una aplicación PHP con Lath".

Autor: Álvaro Núñez

jueves, julio 28, 2016

Los hackers son para el verano: "Coches, Dinero y Sexo"

Si os digo que las bicicletas son para el verano seguro que todos estaréis más que de acuerdo que con la llegada del buen tiempo, las noches largas y fresquitas junto con las mañanas de luz y temperaturas bajas, se produce una buena combinación que incita a salir con la bicicleta a dar pedales. Pero no es solo temporada de bicicletas, ya que con la llegada de DefCON y BlackHat USA salen a la luz un buen número de investigaciones de seguridad realizadas por hackers que han guardado sus papers, sus PoCs y sus nuevas charlas para estos eventos.

Figura 1: Los hackers son para el verano "Coches, Dinero y Sexo"

Ya hemos ido viendo algunos avances en los medios que han ido calentando la agenda, pero aún deberemos esperar unas horas para que comiencen a salir demos hechas, artículos, herramientas. Habrá que leer, ver y aprender mucho para disfrutar del trabajo que hayan hecho estos investigadores durante los últimos meses.

Pero antes de que lleguen, hay otros trabajos que se han ido publicando estos días que merece la pena que hable de ellos un poco, porque me algunos me han encantado. Con mis compañeros le hemos dedicado tiempo a HTTPoxy, Time-Based Info Leak en OpenSSH, al robo de datos con ataques Time-Based a Facebook, Twitter y Linkedin o el nuevo ByPass de UAC en Windows 10, pero ha habido otros hacks que no quiero que se me pasen sin citar. Estos son los que he seleccionado:

Cómo pude hacerme rico robando a Microsoft, Google, Instagram y Facebook

Sin duda, este trabajo de Arne Swinnen, investigador de seguridad belga, me ha parecido de lo más divertido e ingenioso. De hecho, me eché unas risas mientras lo leía por lo out-of-the-box que es el pensamiento y cómo lo trabajó. La idea es lo que viene siendo "muy hacker", al estilo del gran John Draper "Captain Crunch" y las viejas historias de hackers.

Figura 2: Configurando como 2FA de un número de teléfono Premium

¿Qué hizo Arne Swinnen? Pues darse cuenta de que puedes asociar tu número de teléfono a tus cuentas de Google, Facebook, Instagram y Microsoft Office 365 para que den vía llamada telefónica el OTP (One-Time Password) como 2FA (Second Factor Authentication) de tus cuentas. Pero... ¿y si ponemos un número Premium de pago? Pues no pasa nada, tanto Google, Facebook, Instagram como Microsoft Office365 permitían eso, por lo que cada vez que te enviaban usando una centralita de voz para darte el OTP tenían que pagar.

Figura 3: Cada vez que hacía login, Google llama al número Premium de pago.

¿Y si sacamos Kali Linux y automatizamos la petición de tokens OTP vía llamadas telefónicas con un script en Python? Pues nada, el resultado sería de varios millones de Euros robados s las grandes empresas. Eso sí, como buen hacker, descubrió los bugs, los explicó a las empresas, los comunicó, le dijeron que no era un bug, que era una feature, lo volvieron a pensar, volvieron a comunicar con él y al final todos han tomado medias de prevención de este fraude y le han dato el crédito que merecía y unos miles de dólares - además de la libra que le sacó por la cara a Instagram -. Muy hacker. Mis respetos.

Cómo controlar los servidores de PornHub

En el mundo de los investigadores de seguridad hay sitios que son hacking friendly - que a mí me gustaría que lo indicaran mediante información en un fichero hackers.txt - y otros que directamente abren procesos de Bug Bounty abiertos al público o mediante plataformas cerradas como HackerOne. Ahí podemos encontrar cualquier tipo de empresas y de todas las industrias. La de la pornografía en Internet también, como es el caso de PornHub.

Figura 4: PornHub tiene su Bug Bounty de hasta 25.000 USD

Y ahí unos investigadores han explicado como participando en ese Bug Bounty descubrieron dos Zero Days de USE-AFTER-FREE en PHP que explotaron tras descubrir que el sitio web utilizada PHP Objects. Así que, hicieron un ataque de PHP Object Injection a través de una cookie que acababa en la función unserialized de PHP donde se encontraban los 0Days de Use-After-Free, consiguieron el Info-Leak necesario de memoria, se saltaron ASLR, construyeron el Payload con técnicas ROP y consiguieron un RCE para controlar completamente el servidor.

Figura 5: Descripción del fake PHP Object que inyectaban en la cookie
Una obra de arte preciosa de exploiting que lleva técnicas de explotación web como PHP Object Injection, técnicas de generación de exploits y el descubrimiento de dos 0days en PHP de por medio. Muy hacker y un premio de 20.000 USD por descubrir este bug en la compañía.

Y controla todas las cuentas de UBER

La última de las historias de estos días que os quería contar afecta a UBER, en este caso también a través de un proceso de Bug Bounty hecho a través de de Hacker1, donde un usuario ha sido capaz de descubrir un llamada web en el proceso de registro que permitía cambiar la contraseña a todas las cuentas del sistema. Con solo una petición web.

Figura 6: Petición para cambiar la password de cualquier usuario de UBER

Vamos, un fallo de los gordos que UBER ha premiado con 10.000 USD a este investigador por haberlo descubierto, pero que no deja más que claro que los grandes bugs pueden ser muy sencillos y aparecer en cualquier lugar. 

Y son solo tres ejemplos de lo que hemos visto antes de que comiencen las charlas de DefCON y BlackHat USA, así que... Wait for it!

Saludos Malignos!

miércoles, julio 27, 2016

Nuevo Bypass de UAC en Windows 10 usando Disk Cleanup #Windows10 #Pentesting #Powershell

Recientemente Matt Graeber (@mattifestation) ha publicado una nueva vía para llevar a cabo un bypass del sistema de seguridad UAC de Microsoft. UAC, es User Account Control, y protege a los usuarios de Windows de ejecutar acciones con el máximo privilegio sin que ellos se den cuenta, siendo una pieza fundamental de la fortificación de sistemas Microsoft Windows. En un test de intrusión es interesante conocer este tipo de técnicas para conseguir el máximo privilegio, y poder ejecutar procesos como SYSTEM. La técnica de bypass de UAC funcionará siempre y cuando el usuario pertenezca al grupo administradores, entre otras cosas, además de ciertos condicionantes en cada caso.

Figura 1: Nuevo Bypass de UAC en Windows 10 usando Disk Cleanup

Algunas de las técnicas de Bypass de UAC son conocidas, y dependen de la configuración que tenga en cada sistema. Se puede hacer un ataque remplazando los accesos directos de un usuario como se vio en Windows Vista en al año 2007, o usando algunas de las técnicas previamente conocidas desde Metasploit o con PowerShell Empire, tal y como vimos ya por aquí.

Figura 2: Windows7Elevate. Una herramienta para hacer ByPass de UAC en Windows 7

Matt Graeber encontró una tarea programada llamada SilentCleanup en Windows 10, la cual está configurada para ser ejecutada por usuarios sin privilegios, pero con integridad alta. Matt descubrió esto de forma sencilla, viendo la tarea programada se puede observar como cualquier usuario que haya iniciado sesión ejecutará dicha tarea en un contexto de integridad alta.

Según la investigación de Matt y haciendo uso de la herramienta Procmon, se encontró que el proceso real comenzó con la tarea cleanmgr.exe y autoelevada debido a que se ejecuta con “ejecutar con alto privilegio” o “Run with highest privileges”. Esto se encuentra, como se ha visto en la imagen anterior, en la configuración de la tarea. Cuando cleanmgr.exe se ejecuta, se crea una nueva carpeta con el nombre de GUID en la ruta \users\[usuario]\appdata\local\temp\[GUID]. Una vez que el proceso cleanmgr.exe crea la carpeta temporal copia múltiples archivos DLL junto con dismhost.exe en la nueva carpeta.

Figura 3: Configuración de privilegios de la tarea SilentCleanup

Después de que dismhost.exe y los archivos DLL se copien en la ruta especificada anteriormente, cleanmgr.exe ejecuta dismhost.exe como un proceso de alta integridad. Cuando dismhost.exe es ejecutado, éste comienza a cargar las diferentes DLL en cierto orden. Debido a que el usuario que está ejecutando la tarea tiene un nivel de integridad medio, éste tiene acceso de escritura al directorio %TEMP%. Entonces es posible realizar un Hijacking DLL cargado por dismhost.exe y obtener la ejecución de código en un proceso de alta integridad, y es aquí dónde obtenemos el bypass UAC.

Escenario de explotación

El escenario presentado es sencillo. Nosotros tenemos la posibilidad de escribir en la carpeta indicada anteriormente, por lo que podremos realizar un secuestro de DLL o hijacking DLL. Tenemos que ser capaces de escribir la DLL en cuestión antes de que dismhost.exe la cargue. Tras la investigación de Matt se sabe que la DLL denominada LogProvider.dll es la última en ser cargada, por lo que es idónea para ser secuestrada. Si lo hacemos de forma correcta el binario dismhost.exe cargará nuestra DLL y no la original, por lo que conseguiremos ejecutar código en un proceso con integridad alta, consiguiendo el bypass.

La técnica solo valdrá para usuarios administrativos y nunca para usuarios estándar. No es una escalada de privilegios total, pero sí es un bypass UAC, ya que nos permitiría ejecutar código saltándonos el UAC. Esto puede ser realmente útil cuando, por ejemplo, conseguimos una sesión de Meterpreter con Metasploit de un usuario del grupo administrador, pero que no es el administrador real de la máquina. Con esta técnica podríamos lograr ser SYSTEM y control total sobre la máquina. Por supuesto, el mundo del cibercrimen lo podría utilizar para explotar con mayor virulencia los esquemas de ransomware.

La PoC de Matt Graeber

Matt Graeber escribió una prueba de concepto en Powershell, la cual registrará un evento WMI para supervisar la creación de la carpeta GUID por cleanmgr.exe. Una vez detectada la carpeta, se tomará la DLL especificada y la copiará a la carpeta con el GUID para sobrescribir LorProvider.dll. El código se encuentra disponible en Github.

Figura 4: PoC en PowerShell publicada por Matt Graeber

Una vez dismhost.exe vaya a cargar LogProvider.dll será nuestra DLL maliciosa la que se ejecute, en lugar de la DLL legítima. Además, también proporcionan una DLL de prueba para probar la ejecución de código a través de un MessageBox.

Figura 5: Ejecución de la PoC con el Bypass de UAC en Windows 10

Como se puede ver el concepto es realmente sencillo. El script que podemos descargar que implementa la PoC es Invoke-ByPassUAC.ps1, el cual implementa una función que podemos cargar a nuestra Powershell a través del comando import-modude. La ejecución de la función se llevaría a cabo con la siguiente sintaxis:
invoke-bypassuac -DllPath [ruta de la DLL a copiar en la carpeta target]
Esta nueva forma de realizar Bypass UAC en Windows 10 es una técnica que debemos llevar en nuestra mochila en las auditorias y por supuesto, fortificar al máximo nuestro Windows para evitar estos ataques.

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

martes, julio 26, 2016

Descubrir usuarios de Drupal con FOCA y ZAP Proxy

Drupal es un sistema de gestión de contenidos (CMS) de código abierto muy popular y ampliamente utilizado en Internet, debido a características tales como su facilidad de uso, flexibilidad gracias a la cantidad de módulos de los que dispone creados por una amplia comunidad de desarrolladores y a la escalabilidad que proporciona para sitios webs personales o empresariales. Hoy vamos a ver en este artículo cómo se puede sacar información de la plataforma para hacer un pentesting a un sistema Drupal configurado en el sitio web de una empresa.

Figura 1: Descubrir usuarios de Drupal con FOCA y ZAP Proxy

Cuando se realiza un ethical hacking, es importante conocer quiénes son los usuarios válidos que tienen acceso al sistema. De esta forma, en un ataque de fuerza bruta, el espacio de búsqueda se reduce a la mitad si el proceso de autenticación únicamente solicita usuario y contraseña y no hay un segundo factor de autenticación, como por ejemplo Latch para Drupal.


Figura 2: Cómo proteger Drupal con Latch

En esta PoC (Prueba de Concepto) se muestra cómo obtener usuarios válidos en sistemas de gestión de contenidos (CMS) basados en Drupal a través de los metadatos presentes en los documentos ofimáticos alojados en él. Latch, metadatos, MetaShield Protector, FOCA, hacking web... ¿cómo no le iba a gustar este artículo a Chema Alonso?

Drupal y el fichero robots.txt

Por defecto, Drupal incorpora un fichero robots.txt para tratar de evitar el rastreo e indexación en buscadores de ciertas partes del sitio web. Su contenido varía versión a versión y en la web de Drupal se puede acceder a la información del fichero robots.txt en cada una de las ramas. Así, si te encuentras un fichero robots.txt en su servidor podrás saber qué versión tienes en frente en función de su contenido. Un contenido tipo de robots.txt para un Drupal 6.x es como el que sigue.

Figura 3: Contenido de un fichero robots.txt para Durpal 6.x

Si tras la instalación del sitio basado en Drupal y su puesta en producción no ha sido modificado el fichero robots.txt, por ejemplo, podría realizarse un poco de fingerprinting para ver cuál es la versión actual del CMS y el número de veces que ha sido actualizado: tantas como líneas con el patrón “Drupal X.X.X, año-mes-día” aparezcan en el fichero CHANGELOG.txt cuya ruta proporciona el fichero robots.txt.

Figura 4: Changelog.txt de la propia web de Drupal

Esta información puede ser importante porque es posible conocer si el sitio web está actualizado a la última versión o no, o si existe algún exploit o vulnerabilidad conocida para la versión actual del CMS que corre en el servidor web.

Figura 5: Algunos exploits y vulnerabilidades para diferentes versiones de Drupal

El fichero robots.txt también proporciona una ruta importante para intentar realizar el descubrimiento de usuarios: /?q=user/password/ ¿Para que utilizar Drupal esta URL en su sistema?

Solicitar una nueva contraseña por correo electrónico

Drupal permite, por defecto, solicitar una nueva contraseña por correo electrónico. Para ello, únicamente hay que realizar una petición como la siguiente:
http: //www.sitioweb.com?q=user/password
De esta forma, el sistema solicitará el nombre de usuario o la cuenta de correo electrónico del usuario que desea solicitar una nueva contraseña.

Figura 6: Solicitud de una nueva clave por correo electrónico en una web con Drupal

En caso de introducir un nombre de usuario o dirección de correo electrónico de un usuario presente en el sistema, la respuesta por defecto será: “Se le han enviado más instrucciones a su dirección de correo-e.”

Figura 7: Respuesta frente a un usuario o cuenta de e-mail presente en el sistema

Si el nombre de usuario o la cuenta de correo electrónico no pertenece a ningún usuario presente en el sistema, el sistema por defecto responderá: “Lo siento, XXX no se reconoce como nombre de usuario o dirección de correo electrónico”.

Figura 8: Respuesta frente a un usuario o cuenta de e-mail incorrecta

Es decir, por defecto, Drupal “proporciona” un mecanismo que permite descubrir qué nombres de usuario están en el sistema y cuáles no, debido a las dos respuesta anteriores.

Obtención de nombres de usuarios de documentos ofimáticos

Los sitios web basados en Drupal de organismos públicos, como por ejemplo ayuntamientos, suelen tener muchos documentos ofimáticos con metadatos asociados. Haciendo un poco de Hacking con buscadores es fácil localizarlos:

Figura 9: Dorking para la búsqueda de sitios web de ayuntamientos hechos con Drupal

La idea es extraer el nombre de todos los usuarios presentes en los documentos ofimáticos y ver con cuáles de ellos pueden solicitar a Drupal una nueva contraseña por correo electrónico. Esos serán usuarios válidos presentes en el sistema.

Para ello, seleccionamos a uno de los ayuntamientos devueltos en los resultados de la Figura 9 y utilizamos la FOCA para la extracción de los usuarios presentes en los metadatos de los documentos ofimáticos alojados en la web.

Figura 10: Usuarios extraídos con FOCA de los documentos de un ayuntamiento

Almacenamos en un fichero de texto los usuarios encontrados por FOCA en los documentos ofimáticos, ya que será el payload que utilizaremos en el proceso de automatización para el descubrimiento de usuarios válidos.

Fuerza bruta basada en diccionario de usuarios de metadatos

Una vez que tenemos el fichero con los usuarios presentes en los documentos ofimáticos, lo único que tenemos que hacer es automatizar el proceso “de probar uno por uno” para ver, con cuál de ellos, el sistema es capaz de generar una nueva contraseña y enviarla por correo electrónico. Serán los nombres de usuarios válidos en el proceso de autenticación.

Para ello, mediante un Proxy HTTP/S como ZAP, tal y como explico en el capítulo de nuestro libro de Hacking Web Technologies, capturamos la petición HTTP de solicitud de cambio de contraseña con un usuario cualquiera:

Figura 11: Captura de petición HTTP para el cambio de contraseña

Tras capturar la petición HTTP, la reenviamos modificando el valor del parámetro name. Utilizamos para ello el Fuzzer que proporciona ZAP. Como payload usaremos el fichero con los usuarios descubiertos por la FOCA para que ZAP realice fuerza bruta basada en diccionario con todos ellos. Drupal por defecto no restringe este tipo de ataque.

Figura 12: Fuzzer preparado con el payload de usuarios

Tras esta primera prueba, ZAP Proxy arroja un resultado positivo con dos usuarios: Administrador y ADMIN.

Figura 13: Usuarios descubiertos en esta instalación de Drupal con el diccionario

Además, si analizamos las respuestas devueltas por el servidor web, puede observarse que el tiempo de respuesta con esos dos usuarios es menos al del resto de respuestas, el código HTTP también varía: 302 frente a 200 para el resto de usuarios. El tamaño de la cabecera HTTP también es diferente para estos dos usuarios: pasa de 391 bytes a 472 bytes y 473 bytes. El fuzzer de ZAP indica también, a través del TASK ID, el orden de los usuarios encontrados en el fichero generado con FOCA: el 2 y 23.

Figura 14: Orden de los dos usuarios descubiertos por ZAP y FOCA

Probando con uno de ellos vemos como efectivamente se trata del user de uno de los usuarios almacenados en Drupal.

Figura 15: Usuario ADMIN presente en el sistema

Conclusiones sobre esta PoC

A parte de eliminar los metadatos de los documentos ofimáticos antes de que estos sean colgados en Internet para que ningún usuario pueda quedar expuesto, tal y como indica el Esquema Nacional de Seguridad utilizando herramientas como las de MetaShield Protector, también es recomendable eliminar toda la información del fichero robots.txt que pudiera facilitar el descubrimiento de rutas y recursos de autenticación o de cambio de contraseñas, como de todas las actualizaciones y de la versión actual de Drupal que corre en el servidor web.

Figura 16: MetaShield Protector Client para Windows

Parece también una buena idea restringir la autenticación y la solicitud de nuevas contraseñas únicamente a ciertas direcciones IP utilizando el módulo de seguridad.

Figura 17: Módulo de Login Security para Drupal

Para ello, Drupal ofrece el módulo login security que, aparte de permitir o denegar (de manera temporal o permanente) el acceso por dirección IP a ciertas partes de Drupal, también permite limitar el número de intentos fallidos de autenticación antes de bloquear una cuenta de usuario, o avisar al administrador por correo electrónico o vía Nagios cuando se hayan adivinado cuentas o realizado realizado ataques de fuerza bruta. Por supuesto, no olvides poner un segundo factor de autenticación a todas las cuentas de tu Drupal por si alguien es capaz de conseguir la password de uno de esos usuarios.

Autor: Amador Aparicio de la Fuente (@amadapa) escritor de libro "Hacking Web Technologies"

lunes, julio 25, 2016

Big Data Security Tales: MongoDB & Cassandra (Level 101)

Llevo un tiempo estudiando y aprendiendo mucho sobre el mundo del Big Data. No es que el mundo del Big Data fuera un gran desconocido para mí, pero he querido focalizarme este tiempo en dedicar más esfuerzos en jugar un poco más a fondo con las tecnologías más populares y unirlo con mi pasión por la seguridad informática. Hay muchas caras, a diferentes niveles, en el prisma que se crea cuando se juntan las tecnologías de Big Data y las de Seguridad Informática.

Figura 1: Big Data Security Tales: MongoDB & Cassandra (Level 101)

Quizá la más evidente es la posibilidad de crear nuevas herramientas de seguridad que manejen grandes volúmenes de datos para tener plataformas que antes no se podían ni imaginar imaginar. Nuestros servicios Tacyt, Sinfonier, FaastSandas o CyberThreats son claros ejemplos de tecnologías de seguridad que antes no eran ni imaginables sin el incremento en el volumen de datos que es posible manejar a día de hoy con ellas. 


Figura 2: Tecnologías de Big Data y CiberSeguridad

Por supuesto, el gran manejo de datos que es posible realizar hoy en día permite a las empresas capturar detalles, insignificantes a priori, de sus usuarios que llevan a un conocimiento tal de los mismos que la privacidad queda en serio riesgo. Exponente de este tipo son las tecnologías de WebBrowsing Fingerprinting que son capaces de llegar al mínimo detalle de los usuarios para saber quién es quién sin necesidad de que se lo diga. De esto hice una charla hace ya unos años.


Figura 3: Big Data y Privacidad

Otra de las caras del prisma en el que convergen la seguridad y el mundo del Big Data son los servicios de pentesting y auditoría de los mismos. No son nuevos los problemas con estos entornos, como ya vimos en el caso de los servidores MongoDB que podemos localizar por Internet sin ningún control de seguridad, y con todos los datos expuestos con solo hacer un poco de hacking con buscadores. Además, tampoco son inmunes a las técnicas de inyección de comandos, como ya vimos en el artículo de técnicas de MongoDB Injection.
Pero esto se exacerba aún más cuando vemos la gran miriada de tecnologías que Big Data que aparecen y desaparecen rápidamente. Cómo una tecnología puede o no eclosionar en este mundo y desaparecer rápidamente. Es un entorno joven en el que las tecnologías más conocidas apenas tienen unos años de vida. La primera versión de MongoDB es del año 2009 y la primera de Apache Cassandra es del año 2010 - aunque el proyecto lo liberara Facebook en el año 2008 -.

Cassandras inseguros en Internet

De esas primeras versiones a meterse de lleno en el mundo de las empresas aún les faltaría un tiempo, así que podemos decir que son tecnologías que se han hecho populares en los últimos tres o cuatro años. Si miramos el ecosistema de aplicaciones creadas alrededor de ellas aún estamos hablando de proyectos mucho más jóvenes de dos, tres años de vida, por lo que aún están lejos de alcanzar la madurez a la que deberán llegar si sobreviven.

En muchos de estos entornos nos volvemos a encontrar los mismos errores de pasado una y otra vez, y debido a su juventud no es complicado ver que muchas de ellas adolecen de seguridad por defecto en sus plataformas. Al igual que sucedía con MongoDB, con las bases de datos Cassandra sucede un poco lo mismo. Cassandra es una base distribuida en la que los datos almacenados se copian en diferentes nodos con un factor de replicación y es fácil localizar muchos entornos en los que no hay ninguna autenticación por defecto. 

Figura 5: Casi 2.000 clusters de bases de datos Cassandra publicadas en Internet

Es tan sencillo como realizar una búsqueda en Shodan - o en Censys - por el puerto 9160 y localizar las bases de datos de Cassandra que no tienen ninguna autenticación Shodan ya lo pone fácil ya que basta con localizar aquellos en los que los KeySpaces están disponibles en los resultados. En la imagen se puede ver que hay casi 2.000 bases de datos alcanzables directamente por el puerto 9160 desde Internet.

Una vez que se localiza una base de datos que tiene abierto el sistema sin ninguna autenticación, es fácil ir al siguiente paso y buscar algún cliente para conectarse a ellas y analizarlas. No hay tantos por Internet, pero se pueden utilizar alguno como Helenos o Datastax OpsCenter.

Figura 6: Datastax OpsCenter abierto a Internet

La gracia es que estas tecnologías, como el caso de Datastax OpsCenter son también muy jóvenes y también adolecen de problemas de seguridad por defecto. De hecho puede realizarse una búsqueda en Google para localizar paneles de Datastax OpsCenter abiertos a Internet que ya contienen clusters de bases de datos Cassandra expuestas a todo el mundo.

Figura 7: Datastax OpsCenter indexados en Google

También se pueden localizar por medio de Shodan sacando la firma "Server:" del software utilizado, algo que ya sabemos que hay que quitar para evitar el dorking, y que en este caso es Twistedweb por el puerto 8888, y localizar algunos paneles más que tienen abierto el panel sin autenticación alguna.

Figura 8: Paneles OpsCenter publicados en Internet

Desde estos paneles se puede gestionar la lista de clusters que estén ya conectados, o conectar un nuevo cluster de Cassandra de los que Shodan informa que están abiertos al público. Es decir, localizando un panel de OpsCenter se puede usar dicho servidor para gestionar remotamente un cluster Cassandra ubicado en otro lugar de Internet.

Figura 9: Agregar un cluster Cassandra a OpsCenter para administrarlo remotamente

Este es solo un ejemplo de cómo errores del pasado se repiten una y otra vez, y en este nuevo entorno de tecnologías de Big Data es fácil localizar muchas nuevas herramientas que hay que fortificar con el mismo cariño que las más tradicionales. Como esto da mucho juego, en las siguientes partes - porque serán varios artículos sobre este tema - os iré contando cómo están otras herramientas utilizadas habitualmente en el mundo de las tecnologías Big Data.
- Big Data Security Tales: ¡Vigila que tu MongoDB no le de tus datos a cualquiera! (Level 100)
- Big Data Security Tales: Cómo funcionan las MongoDB Injection
- Big Data Security Tales: MongoDB y Cassandra (Level 101)

- Big Data Security Tales: Apache Hadoop expuesto por no configurar HUE (Level 102)
- Big Data Security Tales: Django en HUE en modo DEBUG y con Directory Listing (Level 103)
- Big Data Security Tales: Las Interfaces de acceso al HDFS
- Big Data Security Tales: Apache Amabari Default Admin
- Big Data Security Tales: WSO2 Carbon y la ayuda para el Login
- Big Data Security Tales: Los Known-Bugs en WSO2 Carbon Server
- Big Data Security Tales: Kibana & ElasticSearch objetivos del ransomware
- Big Data Security Tales: Apache CouchDB Relax... o no
- Big Data Security Tales: Riak NoSQL Database
Saludos Malignos!