lunes, julio 31, 2017

Sí, un Task Manager en tu sitio web... sin darte ni cuenta!!

Hacía tiempo que no tenía tiempo de investigar algunos de los leaks que mi amigo rootkit me envía, pero aprovechando que en las siestas de verano he sacado algo de tiempo, he mirado este de WestWind Technologies que me ha resultado peculiar.

Figura 1: Un Task Manager en tu servidor web... Sin darte ni cuenta!!

A simple vista, cuando lo ves, es la típica página de administración de servicios Microsoft Internet Information Services que la propia Microsoft ofrecía desde las primeras versiones de su servidor web & FTP. En ella, se pueden ver un montón de opciones, que van desde subir ficheros, hasta tocar configuraciones del servidor, lo que puede resultar muy peligroso. No debería estar expuesta a Internet.

Figura 2: Panel de control de WestWind Technologies

Por supuesto, cuando haces clic en los enlaces, todos llevan a ficheros que están protegidos, ya que de no estarlo los servidores durarían unos segundos en la vorágine de la red, pero sin embargo, se pueden hacer cosas muy curiosas con este página web de administración que no es de Microsoft, sino de Westwind Technologies.

Figura 3: Firma que aparece en el panel del fabricante

Haciendo un poco de Hacking con buscadores con la firma que la compañía pone a sus paneles de administración web se pueden encontrar un buen número de otras herramientas de ayuda, y ejemplos de la compañía, pero yo me voy a centrar en la original.

Figura 4: Buscando paneles de Westwind indexados en Google. Bing y Shodan dan aún más.

Aquí tenéis otro de los paneles de Westwind Technologies con muchas Demos "peligrosas" que recuerdan a los ejemplos que instalaba Microsoft FrontPage en Server-Side.

Figura 5: Otro panel de Westwind Technologies con "Demos" jugosas

En la página original, lo primero que llama la atención es que se puede acceder a la ruta de instalación del software, lo que ya es un leak en sí mismo que puede ser de utilidad en ataques LFI o RFI, como hemos visto en tantas ocasiones (véase Hacking Web Technologies).

Figura 6: Ruta de instalación del sitio web

La segunda cosa que llama poderosamente la atención es que hay un buscador de procesos... What?. Sí en la parte inferior del panel puedes poner una letra por la que quieres filtrar, y accedes a la lista completa de los procesos del sistema - más los del servicio web - que están corriendo, con su PID incluido si pasas el ratón por encima de la opción de matar el proceso, ya que lo usa como parámetro POST.

Figura 7: Lista de procesos que comienzan por s

Con ello, puedes averiguar todo el software de seguridad que está en ejecución, pero también si tiene DNS, servicios extras, etcétera. En este ejemplo se puede ver que este servidor utiliza un antivirus avp.exe que apunta directamente a Kaspersky.

Figura 8: Procesos del antivirus avp.exe

Pero también se puede saber si el administrador de este sitio navega, como en este caso, donde se puede ver cómo se está utilizando el web browser de Moxilla Firefox. Todo esto es debido a que el formulario que refresca la lista de procesos no está llamando a ningún otro fichero del servidor web, sino que es una petición directa sobre la página web que estamos visitando. Es decir, es el propio panel el que gestiona las llamadas al sistema para acceder a la lista de procesos. Y además hay opción de parar procesos, o actualizar constantemente para ver si hay cambios.

Figura 9: Procesos de Firefox

En la imagen superior se puede ver cómo el administrador ha dejado de utilizar Firefox, o bien alguien ha matado los procesos, o simplemente ha cambiado de navegador de Internet. Si alguien pudiera matar desde un sitio web un proceso - incluso los de los vhosts - corriendo en escritorio daría medida de cuáles son los privilegios con los que corre el sitio web (probablemente sin Application Pool), el servicio web, y la falta de uso de niveles de integridad - luego apuntaría a versiones de Windows concretas -.

Figura 10: Procesos de Firefox cerrados

Lo cierto es que estos paneles de Westwind Technologies son de gran utilidad para muchos administradores web, pero nunca, nunca, nunca, deberían estar expuestos a Internet sin estar protegidos por credenciales.

Saludos Malignos!

2017, el año que "bypasseamos" UAC peligrosamente. Bypass UAC en Windows 10 con Environment Variables en Scheduled Tasks

Esta semana también tendremos un Bypass de User Account Control en los sistemas Microsoft Windows de que hablar. En este caso trata de un bypass de UAC de mediados de mayo, pero he querido explicarlo aquí debido a su sencillez para llevar a cabo. Es un bypass de UAC que debe estar parcheado en Windows 10RS2. La técnica utilizada hoy permite, incluso, hacer un bypass UAC cuando la política por defecto ha sido modificada a notificar siempre. El "trick", denominado Environment Variables in Scheduled Tasks, trata de aprovecharse de la debilidad de utilizar variables de entorno en un proceso que ejecuta acciones con integridad alta, como es el caso del programador de tareas.

Figura 1: 2017, el año que "bypasseamos" UAC peligrosamente.

Lo que llamará la atención es la simplicidad para aprovecharse de esta técnica por un pentester o, en el peor de los casos, un atacante o malware. El punto de mira o de estudio es el planificador de tareas. Esta herramienta es interesante de estudiar, ya que puede ejecutar acciones y programas que se ejecutarán con integridad alta o no. Si juntamos la aplicación schtasks con DiskCleanup tenemos la posibilidad de ejecutar acciones con integridad alta aprovechándonos de las variables de entorno. Vamos a explicarlo.

Revisando acciones y propiedades del programador de tareas con SilentCleanUp

En primer lugar, vamos a utilizar Powershell para ver con qué integridad y qué usuario está ejecutando el programador de tareas. Para ello, tenemos en Powershell la posibilidad de ejecutar el cmdlet Get-ScheduledTask. Este cmdlet nos permite obtener el listado de tareas programas que hay en el sistema. Para este caso, aunque se podría estudiar otras posibilidades, nos interesa SilentCleanup. Por ello, ejecutamos la instrucción Get-ScheduledTask SilentCleanup.

Figura 2: Get-ScheduledTask SilentCleanup

Si nos fijamos en la imagen, el nivel de integridad del proceso es alto, por lo que ya es interesante. Un usuario que no esté ejecutando como administrador puede arrancar SilentCleanup. Antes de continuar, vamos a fijarnos en las acciones que lleva a cabo esta tarea. Para verlas, ejecutamos sobre la variable $tarea la instrucción $tarea.Actions.

Figura 3: &tarea.Actions

Como podemos ver, se ejecutan variables de entorno, tanto en el atributo execute como en el atributo arguments. Esto permite a un usuario intentar modificar la variable de entorno en cuestión con el objetivo de que realice cualquier tipo de acción evitando la ejecución de lo programado. Por ejemplo, si modificamos la variable de entorno %windir% por un cmd.exe y metemos el comando REM después del cmd.exe, todo lo que va después del %windir% sería comentado, por lo que no se ejecutaría. Estamos ante una especie de inyección también.

PoC: Probemos este bypass de UAC

En el Github de Tyranid se puede encontrar las instrucciones, que no son más de dos, necesarias para preparar el bypass. Como se puede entender es realmente sencillo de explotar y llevar a cabo, por lo que es un claro candidato a ser utilizado por el malware. Sea como sea, Microsoft ya tiene en el radar su parcheo.

Figura 4: GitHub de Tyranid

En primer lugar, podemos ejecutar la instrucción:
reg add hkcu\Environment /v windir /d "cmd /K reg delete hkcu\Environment /v windir /f && REM "
Esta instrucción lo que hace es crear o modificar la variable de entorno windir en el hive de registro del usuario en cuestión. El valor de la clave es cmd /K reg delete hkcu\Environment /v windir /f && REM.

Esto lo que hace es arrancar una cmd, eliminar la variable de entorno que hemos, previamente, creado y con el comando REM comentar todo lo que hay después, es decir, lo que viene después de la variable de entorno %windir% en el campo execute visto anteriormente. Para el ejemplo, utilizaremos la instrucción reg add hkcu\Environment /v windir /d "cmd && REM”.

Figura 5: Variable Environment creada

Ahora, vamos a arrancar la tarea del SilentCleanup. Para ello, se ejecutará la instrucción schtasks. La instrucción completa que ejecutaremos es:

Figura 6:  schtasks /Run /TN \Microsoft\Windows\DiskCleanup\SilentCleanup /I.

En la imagen se puede ver como obtenemos una cmd.exe y la instrucción fue ejecutada en la Powershell que se puede ver en la imagen, en la parte inferior. Este cmd.exe se está ejecutando con nivel de integridad alto saltándonos el control de UAC. Si abrimos Process Explorer podemos ver, fácilmente, la información del nivel de integridad con el que se ejecuta el cmd.exe.

Figura 7: Nivel de integridad alto para esta consola

Lo interesante es que modificando la política de UAC, el bypass sigue funcionando. Esto no ocurre, generalmente, en el resto de bypasses de UAC. Por esta razón, este caso es una técnica muy interesante.

Figura 8: PoC de Bypass UAC en Windows 10 con Environment Variables en Scheduled Tasks

Una nueva técnica utilizable en tus proyectos de Ethical Hacking. Sin duda, está siendo un año muy negro para el UAC y los diferentes tipos de bypass. En la Defcon 25, @fuzzysecurity, ha realizado un workshop haciendo una recopilación interesante sobre este tipo de temáticas. Esto ya lo habíamos pensado en su día a nosotros y puede que más adelante lo veáis. Sea como sea, os dejamos la documentación utilizada en el workshop de Defcon 25 sobre la temática de UAC Bypass.

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths

domingo, julio 30, 2017

Charlas Dialogando + Carto Locations + Facebook F8 disponibles en vídeo

El mes de Abril de este año me dio para muchas cosas y no puedo decir eso de "¿Quién me ha robado el mes de abril?", ya que lo puedo ver casi en vídeos y fotos. Viajes por muchos sitios, incluidos uno a USA para participar en el evento F8 de Facebook, y otro al regresar para irme a Málaga a participar en una sesión de preguntas y respuestas sobre diversos temas que tienen que ver con la seguridad informática, el hacking y la tecnología en general. Y terminar en Madrid con una charla en el evento de Carto hablando de BigData y Location.

Figura 1: Charlas Dialogando + Carto Locations + Facebook F8 disponibles en vídeo

El vídeo de la participación en el evento F8 de Facebook ya lo publiqué en YouTube, así que lo podéis ver - no es muy largo - y son solo preguntas y respuestas sobre la construcción de AURA y su integración con Facebook Messenger - que será uno de los canales utilizados en algunos territorios -.


Figura 2: Charla sobre AURA & Facebook Messenger en el evento F8 de Facebook

La siguiente sesión que so dejo tuvo lugar en el evento de Carto en Madrid, donde hablé de los trabajos de LUCA D3 en el uso del Big Data y la ubicación GPS. A pesar de que se hizo en Madrid tuvo que ser en inglés.


Figura 3: Big Data & Location at LUCA D3


Por último, el vídeo de la sesión en la Universidad de Málaga,  de algo más de duración y en Español, lo tenéis aquí, donde hablo de seguridad informática, cosas que hacemos en ElevenPaths, hacking y hackers. No se tocan temas demasiado profundos, pero si no tienes mucho que hacer en una tarde de domingo o quieres compartir ideas básicas con gente, tal vez te sea útil.

Figura 4: Dialogando con Chema Alonso en la Universidad de Málaga

Por lo demás, yo sigo con mis lecturas veraniegas y poniéndome moreno que a mí el sol se me agarra en cuanto me pilla un par de ratitos con sus rayitos amarillos, blancos y naranjas. 

Saludos Malignos!

sábado, julio 29, 2017

Lee para vivir más y mejor preparado

No he sido mal estudiante, al menos siempre se me dieron bien las asignaturas de ciencias - y por supuesto las matemáticas -, pero ni mucho menos he sido o soy una mente privilegiada. He tenido que estudiar y ser constante. He tenido que trabajar para sacar mis estudios. He suspendido y he aprobado. He suspendido exámenes que había estudiado durante mucho tiempo. He sido un estudiante más en mi colegio, instituto o universidad. 

Figura: Lee para vivir más y mejor preparado.

Pero como no tenía otra opción que sacarme mis estudios, cuando he suspendido he vuelto a repetir los contenidos. Cuando no he entendido algo he tenido que volver a leerlo. Volver a estudiarlo. Hacer más ejercicios. Más aún si era necesario. Tenía que sacarme los estudios, pero lo más importante era que tenía que aprender las cosas. Aprender cómo se hacían, cómo se resolvían los problemas.  De nada valía sacar una asignatura de las que  me gustaban si no había entendido los contenidos. Era mejor estudiar después de haber suspendido justamente.

Pero cuando se acaban los estudios y comienzas a trabajar, el tiempo de estudiar no ha acabado. Ni mucho menos. Hay que seguir día a día aprendiendo. Algo que hace que esta profesión sea más bonita que ninguna otra para mí. El saber que siempre hay un campo de posibilidades infinito en el que aprender nuevas cosas. Es genial.

Para ello hay que desarrollar una capacidad de aprendizaje que te va a venir espectacularmente bien en tu futuro. Hoy en día le denotan a eso los que hacer perfiles profesionales con el término de "Learnability", pero no es más que la capacidad de aprender cosas nuevas por tu cuenta. Tú solo, con tus capacidades, aprendiendo lo que haya que aprender para conseguir tus objetivos.

¿Y cómo se desarrolla esa capacidad?

Pues no hay más misterio que hacer el camino andando. Como os dije, lo mejor para encontrar trabajo es comenzar a trabajar desde ya, así que lo mejor para aprender a aprender es ponerse a aprender desde ya. Ponerse un objetivo y trabajar para conseguirlo. Ir descubriendo la forma en la que mejor aprendes, la forma en que mejor consigues que se formen conexiones en tu cerebro para aumentar el nivel de tu cerebro con nuevas capacidades.

En mi caso concreto, con la distancia que dan los años, os puedo decir que, sin duda, la capacidad que me ayudó más a ser capaz de aprender cosas nuevas todos los días es una habilidad que desarrollé cuando era niño. Desde muy, muy, muy pequeño: La lectura.

Leer se convirtió en mi compañero inseparable desde muy pequeño. Comencé con los comics. Siendo un niño los Reyes Magos siempre me traían a mí y a mi hermano un Super Humor de Mortadelo y Filemón. Era lo mejor de los regalos. Leer cómics  desde pequeño fue una rutina que me ayudó a concentrarme a desarrollar la imaginación, a ser capaz de seguir una historia y el curso de los acontecimientos leyendo letras. En aquel entonces eran Mortadelo y Filemón y su máquina del Cambiazo o con el Mundial 78, o con Valor y al Toro....o... 

Bueno, podría seguir al infinito. Creo que he leído prácticamente todas las aventuras de Mortadelo y Filemón. De hecho sigo comprando los comics cada vez que salen, y he ido a hacer cola para conocer a Ibáñez y presentarles a mis hijas al hombre que me introdujo en la lectura.

Siendo más mayor, mi madre me metió con las aventuras de los Hollister, con Gloria Fuertes y su Dragón Tragón, o los comics de superhéroes que mi madre nos compraba a mi hermano y a mí cuando se iba a trabajar y no nos podía dejar con nadie. Nosotros nos sentábamos a leer en el cuarto de servicio donde laboraba mi madre a leer cómics. Con esos comics íbamos luego a una tienda de frutos secos donde te cambiaban los tebeos. Solo tenías que pagar 20 pesetas y dejar un cómic, para poder cambiarlo por otro y seguir leyendo.

Más tarde llegaría a mi casa la colección de libros de Julio Verne como regalo de la enciclopedia que mis padres compraron cuando yo iba a entra en el instituto. Libros de aventuras con ciencia ficción que me metieron de lleno en un universo nuevo. El amo del mundo, 20.000 leguas de viaje submarino o Viaje alrededor de la luna fueron mis primeros libros del gran Jules. 

Y ahí se acabó todo. Desde los trece años el hábito de la lectura fue mi compañero constante. En el banco del parque mientras sacaba a pasear a mi perrito. En las noches antes de dormirme. En el autobús para ir al instituto. En tren y el metro para ir a la universidad. Incluso en la obra, cuando trabajé de pintor, de barnizador y de albañil, aprovechaba para leer en los descansos y en las comidas. Siempre un libro encima.

Leer es uno de los mejores recuerdos de mi infancia. Acompañar a los tres mosqueteros capítulo a capítulo en un folletín infinito para salvar a la reina. Las aventuras escritas por Arturo Pérez Reverte que siempre enganchaban, los textos maravillosos de Eduardo Mendoza, o las aventuras únicas de Andreú Martín, que era capaz de matarte con historias como Protesis o El señor Capone no está en casa.

Pero también los best sellers. Como no. Stephen King era siempre un seguro. Sus desdoblamientos de personalidad en la mente de los antihéroes han hecho que conozca el condado de Maine sin haberlo visitado nunca. Robert Ludlum y sus historias con la suplantación del papa en Gandolfo, las tramas médicas de Robin Cook con Coma a la cabeza, los libros de guerra de Frederick Forsyth como Los perros de la guerra o Chacal. Mary Higgins Clarck, Tom Clancy, ... en fin. Dí tu el autor y te digo lo que me he leído de ellos. 

Leía como si no hubiera un mañana, desde los clásicos como El Quijote, Frankenstein,  Un mundo Feliz o Drácula, hasta las aventuras más modernas como El código DaVinci o la última historia del Capitán Alatriste, pasando por las aventuras de James Bond, libros de Tarzán o aventuras de Isaac Asimov y sus robots y de Arthur C. Clarke.. Y, por supuesto, para aprender inglés las novelas de Star Wars - de las que creo que he leído más de 50 libros distintos (Tengo la colección completa de Martínez Roca - para los entendidos).

He leído y me ha hecho vivir más. He visto cosas que nunca más volveré a ver. He visto las batallas de Napoleón en los ojos del grupo de desertores españoles que planteaba el gran Reverte en su Sombra del Águila. He visto a Alejandro Magno cruzar Asia y conquistar Egipto en los ojos de Valerio Massimo Manfredi. He visto como lloraba Frankenstein por tener un amigo a ojos de Mary Shelley o cómo era la Lluvia amarilla de Julio Llamazares. He seguido la sombra del viento con Carlos Ruiz Zafón o cómo se construyó la dichosa catedral de Los pilares de la tierra a través de las miles de páginas de Ken Follet, pero también sus libros de aventuras y espías anteriores.

Hemingway, Edgard Allan Poe, Anne Rice, Arthur Miller, J.R.R. Tolkien, Pio Baroja, Unamuno, Dashiell Hammett, Kafka, Arthur Conan Doyle y su impagable Sherlock o Patrick Süskind y la lectura olfativa de su Perfume que te mantiene en vilo hasta el final, al estilo de un antiguo Dexter. 

Leer es genial. Es barato. Es divertido. Vives más. Aprendes mucho. Pero lo mejor es que me ayudó a desarrollar una capacidad de concentración y de interpretación de los textos. Aprender a entender las palabras, lo que dice, y lo que quiere decir realmente el autor. Aprender a seguir el hilo de la historia manteniendo en la cabeza los hechos relevantes. A visualizar la escena a cámara lenta en mi cabeza para poder ver con todo lujo de detalles.

Leer desarrolla capacidades difíciles de adquirir de otra forma. Las personas con hábito de lectura que encuentro en mi camino suelen tener algo distinto. Algo único en su forma de ver el mundo, en su forma de afrontar novedades, lo desconocido. Tienen una habilidad que les permite aprender cosas nuevas. Como dicen, leer es la forma de actualizar el software del cerebro.

En estos días que llevo de vacaciones he aprovechado todo el tiempo que he podido para volver a revolcarme en el placer de la lectura por encima de reuniones de trabajo, asuntos profesionales o temas personales. Y es genial. Creo que se me está yendo la mano devorando los libros, pero si os tuviera que dar un consejo para mejorar vuestras capacidades de aprendizaje sería éste: lee. 

Saludos Malignos!

viernes, julio 28, 2017

Un pequeño "leak" o "feature" de privacidad en iPhone

Tengo el mismo número de teléfono desde que tuve mi primer terminal móvil. Eso ha hecho que a lo largo de muchos años mucha gente haya obtenido mi número, algo que durante mucho tiempo generó un volumen de llamadas que no paraba de crecer, lo que a veces incomodaba mi agenda profesional y mi vida personal. Así que opté por cortarlo.

Figura 1: Un pequeño "leak" o "feature" de privacidad en iPhone

Desde hace mucho tiempo apago el móvil a determinadas horas. Y si no, lo tengo en modo "No Molestar". Una característica que hace que al que llame le salga como que el terminal está apagado o fuera de cobertura. 

Figura 2: Modo "No Molestar en iPhone"

Esta opción, unido a que desactivé la opción de que me avisaran de las llamadas perdidas mientras que el terminal esté "Apagado o Fuera de Cobertura", junto con un control mucho mayor a la hora de compartir mi contacto, hizo que el volumen de llamadas que recibo sea gestionable. 

Figura 2: Opción de "Llamada en Espera"

Sin embargo, por necesidades del trabajo, activé la opción de "Llamada en Espera" y el comportamiento es peculiar. El otro día descubrí que cuando estás en una llamada, este modo prevalece sobre el modo "No Molestar". Es decir, que aunque tengas el modo "No Molestar", si has activado la "Llamada en Espera" y estás en medio de una llamada que has comenzado tú, la nueva llamada recibirá tono de llamada.

Figura 4: El modo "No Molestar" está activado como se ve en el icono de la "lunita".
La llamada, sin embargo, entra en el terminal.

Esto quiere decir que el que está haciendo la llamada no recibirá un estado de "Apagado o Fuera de cobertura", sino de llamada no atendida. Una pequeñas feature que tiene ciertas implicaciones en la privacidad, y que en conjunción con otras al final acaba formando parte de los trucos de "Hacking iOS". Veremos si le saco partido en el futuro.

Saludos Malignos!

jueves, julio 27, 2017

mASSAP: Controla en tiempo real la seguridad de las apps móviles

Hace ya tiempo que os hablé de Path6, el servicio que habíamos diseñado en ElevenPaths para controlar en tiempo real la seguridad de las apps móviles publicadas en los markets de iOS y Android. La idea es poder saber en tiempo real cuáles son las vulnerabilidades que tienen tanto las apps de tu empresa como las apps que tienes aprobadas en las listas blancas de los MDM para poder actuar en consecuencia.

Figura 1: mASSAP: Controla en tiempo real la seguridad de las apps móviles

El proyecto se construyó sobre la base de Tacyt [Codename Path5] y recibió el Codename Path6, con el que lo presentamos en el pasado Security Innovation Day 2016 en Madrid, con unos casos de uso muy claros, y aún si tener asignado su nombre.


Figura 2: Presentación de Path6 en el Security Innovation Day 2016

Con el paso del tiempo, el producto se hizo mayor y paso de la fase de alpha, a beta, y de beta a versión final con el nombre de "mASAPP" y pudimos verlo en acción en el Security Day 2017, donde nuestro compañero Víctor Mundilla lo presentó.


Figura 3: ¿Qué fue de Path6? Hola mASAPP

Hoy en día el producto ya cuenta con muchos clientes, y lo contamos tal y como se ve en el siguiente vídeo promocional de mASAP.


Figura 4: Vídeo promocional de mASSAP

Pero queríamos dar un paso más y que los técnicos pudieran entender los detalles del mismo, así que hemos hecho una ElevenPaths Talk especial que acaba de ser publicada, y que os dejo por aquí para que podáis ver en detalle su funcionamiento y sus últimas novedades.


Figura 5: ElevenPaths Talk sobre "mASAPP"

Si quieres conocer más de este producto puedes visitar la página de mASAPP en la web de ElevenPaths y pedir una prueba del mismo a través de nuestro formulario de contacto.

Saludos Malignos!

miércoles, julio 26, 2017

T-Pot: Una colmena de Honeypots para atraparlos a todos

Los Honeypots son una gran herramienta para un IDS (Intrusion Detection System), ya que nos ayuda a detectar y estudiar con antelación posibles ataques a nuestra infraestructura real. Todos los que hemos sido administradores de sistemas o estamos en el mundo de la seguridad hemos tenido que trabajar alguna vez con ellos de alguna u otra forma. Existen multitud de honeypots adaptados a funcionar simulando todo tipo de entornos.

Figura 1: T-Pot: Una colmena de Honeypots para atraparlos a todos

Por ejemplo, si necesitas un honeypot para monitoriza tu red de ordenadores, puedes elegir por ejemplo Cowrie (un fork de Kippo y uno de los más utilizados) y si necesitas monitorizar los ataques a una infraestructura industrial (ICS) puedes elegir, por ejemplo, Compot (ICS/SCADA).

Cada instalación de un Honeypot requiere configurarlo y adaptarlo para que parezca lo máximo posible un entorno real (una de las claves del éxito del Honeypot). Además, una vez hemos obtenido y recopilado todos los datos de los posibles ataques, será necesario procesarlos y analizarlos para sacar conclusiones sobre los mismos. Existen muchas herramientas que ayudan a este proceso, como por ejemplo Kippo-Graph (que funciona perfectamente con Cowrie).

T-Pot: Una colmena de Honeypots para atraparlos a todos

Pero existe una solución magnífica que nos permite tener varios Honeypots (incluidos los diseñados para simular ICS) dentro de una sola máquina virtual (o física, según sea necesario) y también nos permite visualizar la información de forma espectacular utilizando ELK.

Figura 2: Dashboard de T-Pot

T-Pot es una plataforma de Honeypots que tiene como base una distribución Linux Ubuntu Server 14.04.4 LTS. Esta plataforma incluye una gran variedad de honeypots ya preparados, configurados y listos para entrar en funcionamiento. Algunos de estos honeypots y herramientas que incluye son:
Conpot: es un honeypot para ICS el cual permite simular un entorno industrial completo, capaz de hacer ver al atacante de que está accediendo a un entorno industrial. 
Cowrie: es un honeypot que simula un servidor con SSH y Telnet diseñado para monitorizar los ataques de acceso, así como la iteración con la Shell. 
Dionaea: otro honeypot de caracter general diseñado para simular vulnerabilidades de red y servicios como SMB, http, FTP, MSSQL e incluso VoIP. 
Elasticpot: es un honeypot basado en una versión simplificada de ElasticSearch. 
EMobility: otro honeypot de infraestructuras ICS que simula un centro de carga eléctrica de vehículos (incluso simula usuarios que están cargando los vehículos).
Tiene una web central de gestión desde la cual el posible atacante tendría acceso a todos los nodos de carga de la falsa infraestructura.
Glastopf: es un honeypot orietando a aplicaciones web como, por ejemplo, webmail, wikis, etc, cualquier aplicación en la que el cliente la ejecute desde su navegador web. 
Honeytrap: este honeypot se centra especialmente en observar ataques contra servicios TCP y UDP. 
Suricata: un monitor de seguridad de red para detectar intrusiones en tiempo real inspeccionando el tráfico de red. 
ELK: son tres herramientas en una, Elasticsearch (servidor de búsquedas), Logstash (administración de logs) y Kibana (visualización y gestión de los datos almacenados).
La gran ventaja de esta distribución T-Pot es que los integra todo es una misma instalación (en el mismo servidor) y todos virtualizados con Docker. Esto permite tener en ejecución varios demonios actuando sobre la misma tarjeta de red sin problemas. Además, al tener cada Honeypot su entorno dockerizado, es muy sencillo su mantenimiento (actualizaciones, por ejemplo), gestión y personalización.

Figura 3: Arquitectura de T-Pot

Los puertos que serán utilizados por los Honeypot instalados en T-Pot tendremos que redireccionarlos hacia el Honeypot desde nuestro firewall o router si fuera necesario:

Figura 4: Lista de puertos a utilizar por los diferentes servicios

La instalación de T-Pot es bastante sencilla, simplemente se puede descargar la imagen ISO y montarla en un sistema virtual o uno físico. También crear la imagen ISO desde este enlace.

Figura 5: Arranque de la ISO de T-Pot

Las recomendaciones de hardware varían en función de si quieres activar todos los Honeypots y herramientas. En esta captura puedes ver las diferentes opciones que aparecerán durante el proceso de instalación. En nuestro caso hemos optado por la opción “E” (todo) en una máquina virtual:

Figura 6: Opciones para elegir tipo de instalación

Durante el proceso de instalación (el equipo se reiniciará dos veces) no se realizan apenas preguntas más allá de la configuración del teclado y el usuario y contraseña para el acceso vía web al panel del control (el usuario para acceder al servidor Linux con T-Pot es “tsec” y la contraseña “tsec”):

Figura 7: Datos de inicio de sesión en T-Pot con el usuario "tsec"

Para acceder al Honeypot de forma segura tendremos que hacerlo desde SSH. Desde Windows podemos utilizar OpenSSH y Putty como puedes ver en este video. Desde Linux o macOS podemos abrir un terminal y ejecutar:
ssh -p 64295 -l tsec -N -L8080:127.0.0.1:64296 192.168.56.100
Ya solo tenemos que abrir el navegador utilizando http://127.0.0.1:64296

Figura 8: Dashboard de T-Pot en la primera ejecución con todos los marcadores a cero

Para comprobar el estado de los contenedores Docker podemos utilizar el plugin ya instalado “UI-For-Docker” el cual nos permite de forma fácil, controlar todos los parámetros de los contenedores como reiniciarlos, pararlos, configuración de red, puertos, etcétera:

Figura 9: Control de todos los contenedores Docker desde T-Pot, "UI-For-Docker"

Para ver el funcionamiento de T-Pot y también como organiza y muestra los resultados, vamos a realizar simular algunos intentos de acceso desde la red interna donde hemos ubicado el Honeypot (no está conectado a Internet para esta demostración) utilizando Kali Linux 2. Antes de continuar es importante decir que toda la información contenida en los Honeypot (contenedores Docker) se pierde cada vez que la aplicación falla o se produce un reinicio del servidor. Es posible activar la persistencia de esta información accediendo a la carpeta /etc/systemd y ajustar los parámetros individualmente de cada servicio para que mantenga la información.

Figura 10: Ficheros con todos los servicios de cada Honeypot para su configuración individual

Vamos a realizar un ataque por fuerza bruta utilizando Metasploit, en concreto utilizaremos el módulo ssh_login. De esta forma veremos cómo es la estructura del Honeypot una vez se ha conseguido acceso (Cowrie). Posteriormente accederemos al dashboard de T-Pot para ver cómo ha registrado el ataque:

Figura 11: Metasploit utilizando el módulo ssh_login

Figura 12: Acceso por SSH al falso servidor para ver su estructura

En el siguiente vídeo muestra la información que ha recopilado T-Pot en su Dashboard después de nuestro acceso. Hemos omitido algunos paneles que no tienen información como por ejemplo la ubicación geográfica (en este enlace puedes ver cómo sería un ejemplo real de T-Pot):

Figura 13: Dashboard de T-Pot después del ataque y los datos registrados

Para probar los Honeypot orientados a ICS, vamos a realizar un acceso al Honeypot Conpot. Este Honeypot simula un contador de consumo eléctrico modelo Kamstrup 382 con conexión Telnet y sin contraseña de acceso.

Figura 14: Acceso al honeypot Conpot (simulando un Kamstrup 382) desde Telnet

Otro ejemplo sería la web del Honeypot eMobility, que simula centros de carga para vehículos eléctricos (sólo tendríamos que poner la IP del Honeypot con el puerto 8080):

Figura 15: Acceso al Honeypot eMobility

Los Honeypot en entornos ICS y IoT (hay que empezar a crear honeypots que simulen el hardware de los ordenadores de placa simple como Raspberry Pi por ejemplo) son una herramienta imprescindible para las instalaciones industriales. En este enlace encontraréis una estupenda selección de recursos para Honeypot que podríamos añadir añadir a T-Pot. Seguro que volveremos a hablar pronto de los Honeypot como parte de la Seguridad de los sistemas de control industriales y las infraestructuras críticas.

Autor: Fran Ramirez (@cyberhadesblog) escritor de libro "Microhistorias: anécdotas y curiosidades de la historia de la informática" e investigador en ElevenPaths.

martes, julio 25, 2017

WhatsApp: Cómo conseguir que los mensajes lleguen a contactos que te bloquean

Después de haber estado jugando con WhatsApp para encontrar una forma de saber si alguien había leído o no los mensajes, empezamos a jugar con los grupos. Primero utilizándolos como forma de saber si alguien te tiene bloqueado en WhtasApp y luego, para comprobar que dos personas en un mismo grupo de WhtasApp pueden hablar aunque se tengan bloqueados,  lo que abrió una posibilidad de hacer algo gracioso.

Figura 1: WhatsApp: Cómo conseguir que los mensajes lleguen a contactos que te bloquean

Con la idea en la cabeza de conseguir hacer que un contacto pudiera enviar mensajes a una persona que lo tenga bloqueado se me ocurrió hacer una prueba con mis compañeros. La persona A tiene bloqueada a la persona B, entonces la persona B no puede enviarle mensajes. La alternativa es que la persona B le pida a la persona C que cree un grupo, y meta en él a la persona A y B, con lo que podrán enviarse mensajes incluso si están bloqueados.

Figura 2: Dos usuarios bloqueados pueden hablar (con check azul)
si un tercero los mete en un grupo juntos

Como esto funcionaba, se me ocurrió que lo suyo sería que hubiera un servicio en Internet al que alguien pudiera poner el número de teléfono de WhatsApp al que quiere enviar un mensaje y que le desbloqueara para que pudiera enviarle mensajes. El proceso sería tan sencillo como automatizar con alguna herramienta los clics que hay que hacer en un cliente WhatsApp Desktop o WhatsApp para algún terminal, para realizar este proceso, así que pedimos una SIM y le pedí a mis compañeros Pablo González y Ioseba Palop que lo implementaran.

Figura 3: El servicio web para desbloquearte en WhatsApp

Tras unos minutos de hablarlo entre ellos, fueron a hablar con nuestro compañeros César Calatrava, miembro del QA Team de CDO (área que abarca ElevenPaths, LUCA D3, 4ª Plataforma y AURA). César es un experto en la automatización de pruebas y el uso de herramientas como Selenium y Appium. Fue ésta última la que César nos recomendó y nos pasó documentación sobre cómo en QA la utilizaban para realizar pruebas automáticas sobre dispositivos móviles y Latch.

El proceso que debería tener el servicio es bastante sencillo, y exigiría la siguiente arquitectura:
1. Sitio web en el que se introduzcan el número de teléfono del usuario bloqueado y el número de teléfono del usuario que te tiene bloqueado. 
2. La web lanzará por detrás una llamada al código Python. 
3. El script se conectará con el emulador de Android y se llevarán a cabo las acciones. 
4. En primer lugar, se verificará si los números de teléfono recibidos se encuentran en la agenda. 
5. En caso de que estén, directamente se crea el grupo. 
6. En caso de no estén, se crearán los contactos en la agenda, para poder interactuar con ellos a través de WhatsApp. 
7. Una vez comprobado esto, se crea el grupo metiendo al contacto que te ha bloqueado y a tu contacto. 
8. Tienes un grupo llamado “Desbloqueando…” dónde podrás hablar con el usuario que te bloqueó.
9.- El servicio captura la imagen y el mensaje de perfil y te la envía en el caso de que esté pública 
10.- Recibes el control del grupo Desbloqueando y el que lo creo desaparece.
Aquí tenemos un ejemplo de código utilizado en Appium para automatizar la interacción con el emulador de Android.

Figura 4: Código en Appium para la PoC de Desblouqéame

Esto es una prueba de concepto de un servicio, que sin duda daría mucho juego a muchos usuarios, y que cualquiera podría hacerse en un pequeño rato. Como se puede ver la idea es sencilla y permite hablar con la persona que te bloqueó a través de WhatsApp. Aquí tenéis una demo en vídeo del proceso.

Figura 5: PoC de "Desbloquéame WhatsApp"

Al ser un grupo nuevo, si el destinatario entra a ver qué hay ahí, se enviará el doble check - ya se explicó que no se puede deshabilitar en los grupos -. Además, el servicio puede capturar la imagen y el mensaje de perfil de la cuenta A que tiene bloqueada a B - siempre que la tenga abierta para todos - y enviarla al usuario B. Y luego le podría entregar la administración del grupo y salirse de él para no dejar rastro y que para el usuario B el usuario C no exista. Por supuesto, el usuario A podría bloquear al usuario C en el futuro, pero de momento, el servicio funcionaría creando el grupo de conexión.

Saludos Malignos!

Más información en: Proteger WhatsApp a Prueba de Balas y Cómo Espiar WhatsApp

lunes, julio 24, 2017

Bypass UAC en Windows 7 usando DLL Hijacking con .NET Code Profiler [Otro más en 2017]

Los bypasses sobre UAC están cayendo casi semanalmente. Es cierto que Microsoft no los considera una vulnerabilidad, pero pueden ayudar en un pentest bastante, ya que, si el proceso comprometido pertenece a un usuario del grupo administrador, tendríamos una puerta abierta a lograr ejecutar código con el máximo privilegio. En esta ocasión, el bypass de UAC ha sido descubierto por el investigador Stefan Kanthak.

Figura 1: ByPass UAC en Windows 7 usando DLL Hijacking con .NET Code Profiler

Como el propio investigador comenta en su publicación realizada a través de Seclists, todas las versiones de .NET Framework pueden cargar un objeto COM como Code Profiler, el cual se habilita a través de dos variables de entorno. Como indica Microsoft, un Profiler DLL es una librería de vínculo dinámica no administrada, la cual se ejecuta sin restricciones de código gestionado. La única limitación sobre el Profiler DLL la impone el sistema operativo sobre el usuario que ejecuta la aplicación.

Figura 2: Publicación del Bypass UAC en Seclist

Cuando las comprobaciones de variables de entorno existen se resuelven de forma satisfactoria, se instancia el generador de perfiles. Al final, la técnica utilizada por el investigador ha sido un DLL Hijack de una forma interesante. La técnica consiste en habilitar las variables de entorno COR_ENABLE_PROFILING y COR_PROFILER.

Figura 3: Detalles en el proyecto UACME

Sabiendo que eventvwr.msc y secpol.msc están escritas en .NET y en su ejecución, si las variables de entorno anteriores están habilitadas, harán uso de código no administrado, se puede lograr un bypass de UAC. La técnica ha sido validada en Windows 7, como se puede ver en el proyecto UACMe.

¿Cómo conseguimos el bypass de UAC?

Realmente es sencillo. Lo primero es habilitar las variables de entorno. COR_ENABLE_PROFILING a 1, para habilitarla. COR_PROFILER deberá apuntar a una clave de registro, un CLSID. En otras palabras, el CLSID se encontrará en HKCU\Software\Classes\CLSID\[ID del CLSID]. El ID del CLSID da igual el que se ponga, por ejemplo 44444444-4444-4444-4444-444444444444. Ahora, hay que pensar que el valor de clave CLSID que tenemos que crear debe apuntar a una ruta dónde tendremos el código, en forma de DLL, que se quiere ejecutar.

Figura 4: Creación del CLSID apuntando a la DLL que usará COR_PROFILER 

Cuando desde una cmd.exe ejecutemos "start mmc.exe eventvwr.msc", la Microsoft Management Console se arrancará y cargará el complemento del visor de eventos. Como las variables de entorno, mencionadas anteriormente están habilitadas, se utilizará código no administrador, la cual será nuestra DLL. Como la instrucción "mmc.exe eventvwr.msc" se ejecuta en un contexto de integridad alto y ésta es la que carga el código de la DLL, éste también se ejecutará con el mismo nivel de integridad alto, realizando de este modo el bypass de UAC.

PoC: Consiguiendo el bypass

Antes de empezar, vamos a resumir el proceso con este pseudocódigo:
1. Configurar variables de entorno: 
a. Set COR_ENABLE_PROFILING=1
b. Set COR_PROFILER={XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
2. Crear la DLL con código que nos interese ejecutar. En este caso, se puede utilizar msfvenom de la siguiente manera:
msfvenom –p [payload] –b ‘\x00\x0d\x0a’ –f dll –o [ruta salida DLL]. 
3. Crear el hive del registro para apuntar a la DLL que nos interese, que la hemos creado en el paso anterior. En la imagen se puede ver un ejemplo de lo que tenemos que crear, lo cual, lógicamente, lo podríamos crear por línea de comandos. 
4. Cuando se ejecuta una aplicación .NET, la cual detecta que tiene la variable de entorno COR_ENABLE_PROFILING habilitado mirará qué valor tiene la variable COR_PROFILER. Al recoger el valor de la segunda variable de entorno el proceso consulta la ruta HKCU\Software\Classes\CLSID y comprueba si la clave existe.
Figura 5: Como la hemos creado antes, existe y devuelve el valor de la clave
5. La DLL se ejecutará por el proceso que lo invoque. 
6. El truco está en que si es un proceso con integridad alta quién consulta estos valores, tendremos código nuestro ejecutándose con privilegio. Por esta razón, se deberá ejecutar start mmc.exe eventvwr.msc para lograr la ejecución de código privilegiada.
Cuando lanzamos la instrucción "start mmc.exe eventvwr.msc" encontramos un messagebox en el que se nos indica el nivel de integridad del proceso y se abre una cmd.exe. Este interfaz de comandos ya se está ejecutando con un privilegio alto, debido a que es el eventvwr.msc realmente el que la ha invocado.

Figura 6: Interfaz de comandos ejecutado con nivel de integridad alto

En la siguiente imagen, se puede ver el contexto de integridad en el que se están ejecutando los procesos. Como se puede ver, tenemos una cmd.exe con integridad media, esta es desde dónde desembocamos todo el proceso.

Figura 7: Nivel de Integridad "High" por haber autoelevado el mmc.exe

Después vemos el mmc.exe con integridad alta y sin notificar UAC, ya que el eventvwr está autoelevado y, por último, tenemos una nueva cmd.exe creada por mmc.exe con integridad alta. Aquí tenemos el bypass UAC. Por último, os dejamos un video para que veáis el proceso en funcionamiento y cómo funciona este bypass de UAC.

Figura 8: PoC en vídeo de Bypass UAC usando DDL Hijacking con .NET Code Profiler

Hay que indicar que el bypass de UAC podría ser aprovechado a través, por ejemplo, de una sesión de Meterpreter y lograr conseguir ejecutar código en un contexto elevado en proyecto de Ethical Hacking. Sin duda, interesante técnica y de sencilla explotación.

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths