lunes, abril 30, 2018

Polymorph: Modificando paquetes de red en tiempo real. Inyectando JavaScript en peticiones HTTP (2 de 3)

Tras la primera parte de esta artículo [Polymorph: Modificando paquetes de red en tiempo real. Inyectando JavaScript en peticiones HTTP (1 de 3)] vamos a continuar con el uso de las plantillas en el framework. Para realizar un filtrado mucho más completo de las plantillas que Polymorph ha generado, podemos utilizar el comando Wireshark, que abrirá esta aplicación con los paquetes capturados.

Figura 9: Polymorph: Modificando paquetes de red en tiempo real.
Inyectando JavaScript en peticiones HTTP (2 de 3)

En nuestro caso vamos a escoger una plantilla que tenga la capa RAW.HTTP. Para escoger la plantilla utilizamos el comando template seguido del número de la plantilla que queremos seleccionar.

Figura 10:  Elección de plantclla con comando template

Una vez elegida, podemos fijarnos como la interfaz cambia, en este punto estamos en el contexto de la plantilla, y todos los comandos se ejecutarán en este contexto. Con el comando show podemos ver todo el contenido de la plantilla.

Figura 11: Contenido de la plantilla

En el caso de paquetes HTTP, el tamaño de la plantilla puede ser muy grande y difícil de visualizar. Para visualizar capas concretas podemos utilizar el comando show -l seguido del nombre de la capa, o acceder al contexto de la capa mediante el comando layer seguido del nombre de la capa y en este contexto ejecutar el comando show.

Figura 12:  Acceso por capas para generar la plantilla

¡Estupendo!, ya tenemos una plantilla generada con el tipo de paquete que queremos interceptar y modificar en tiempo real (HTTP). Ahora vamos a ver como podemos interceptar los paquetes de manera que antes de que lleguen al navegador pasen por Polymorph para que sean modificados.

Precondiciones, Ejecuciones y Postcondiciones

Una vez que tenemos la plantilla generada, llega el momento de añadir código que realice algún procesamiento sobre los paquetes que interceptaremos en tiempo real. Para llevar esto acabo, el framework define el concepto de precondición, ejecución y postcondición.

Estas funciones se escriben en Python y reciben como parámetro el paquete que se intercepta en ese momento en tiempo real, retornando el propio paquete o la palabra reservada None. Su funcionamiento es similar al de una cadena:

Figura 13: Precondiciones, ejecuciones y postcondiciones 

Primero se ejecutan las precondiciones, luego las ejecuciones y por último las postcondiciones. Si en algún momento alguna de las funciones devuelve None, se rompe la cadena y el paquete se reenvía tal cual esté en ese momento.

Vamos a ver un ejemplo rápido de como añadir una de estas funciones y como se comporta cuando llegan paquetes. Vamos a añadir la siguiente precondición sencilla con este fragmento de código:


Figura: 14: Añadiendo una precondición

Cuando lleguen paquetes a Polymorph, se ejecutará la precondición que hemos añadido sobre estos paquetes, en este caso, sacará por pantalla que el paquete ha llegado y el contenido del paquete en bytes. Para añadir la precondición utilizamos el comando precs -a seguido del nombre que queramos ponerle a la precondición, por defecto se abre el editor pico, podemos elegir otro editor mediante con la opción -e.

Hay que recordar que no se debenmezclar espacios y tabulaciones en el caso de utilizar pico. Es mejor utilizar solo espacios para tabular el código. Una vez añadida la precondición, podemos consultarla con el comando precs -s.

Figura 15:  Añadiendo la precondición

Una vez introducida la precondición, vamos a utilizar el comando intercept para que los paquetes que en este momento se están reenviando a nivel de kernel, pasen primero por Polymorph, donde se ejecutarán las funciones que nosotros hayamos añadido sobre ellos y después serán reenviados.

Por defecto, cuando introducimos el comando intercept, Polymorph introduce una regla de iptables que servirá para redirigir los paquetes a la herramienta cuando hayamos interceptado la comunicación entre dos máquinas, como en este caso estamos haciéndolo en localhost, ejecutamos el comando con la regla de iptables que se muestra en la imagen:

Figura 16:  Comando intercept con el comando iptables

Si en este punto, empezamos a navegar o generamos tráfico, veremos como todos los paquetes pasan por Polymorph y se ejecuta sobre ellos la precondición que hemos añadido.

[Continuará en la Parte 3 de 3]

Autor: Santiago Hernández, Security Researcher en ElevenPaths

*********************************************************************************************
Polymorph: Modificando paquetes de red en tiempo real (Parte 1 de 3)
Polymorph: Modificando paquetes de red en tiempo real (Parte 2 de 3)
Polymorph: Modificando paquetes de red en tiempo real (Parte 3 de 3)
*********************************************************************************************

domingo, abril 29, 2018

Cursos y Seminarios Online para este mes de Mayo @LUCA_d3 @ElevenPaths @0xWord

El mes de Mayo está ya aquí. Con su Día de la Madre en España (espero que ya estén todos los regalos comprados que yo ya tengo los míos empaquetados y todo), con su Master ATP 1000 de Madrid con Rafa Nadal como cabeza de cartel, con su Moto GP en Jerez, con el Día del Trabajador para el día 1 de Mayo, con el Día de la Comunidad de Madrid para el 2 de Mayo, y con las Fiestas de San Isidro de Madrid para el día 15. Vamos, un mes repleto de actividades que lleva también consigo la entrada en vigor del GDPR en la empresa y hay que tener los deberes hechos.

Figura 1: Curso y Seminarios Online para este mes de Mayo

Además, tendremos eventos presenciales (muchos) de los que ya os iré hablando. Con el e-Woman en Canarias donde participa nuestra compañera Yaiza Rubio (@yrubiosec), y el BigData For Social Good en Madrid, la jornada de Deporte y Tecnología que tenemos en Distrito C el día 4 de Mayo, y un paso por Brasil y Lleida que tengo en la lista de cosas a hacer yo mismo.

Pero para todos los que normalmente os pillan lejos las cosas que hacemos, hay alguna serie de actividades que podéis hacer online. Así que hoy os dejo los cursos online de The Security Sentinel para Mayo en los que colaboramos desde 0xWord, y la lista de seminarios online de ElevenPaths y LUCA que tenemos para las semanas de este mes.

03 de Mayo: SmartContrats, un uso interesante de BlockChain

La primera de las citas que tenemos para este mes online tendrá lugar el día 3 de Mayo en forma de ElevenPaths Talk, en este caso centrada en BlockChain y los SmartContrats, una tecnología más que interesante que nos está dando mucho juego en muchos de los proyectos que hacemos con BlockChain. Será el día 3 por la tarde vía Youtube, así que apúntatelo en la agenda y nos vemos en el Streaming.

Figura 2: ElevenPaths Talk de BlockChain & SmartContrats en ElevenPaths

07 de Mayo: Curso Online de Seguridad en Redes

En The Security Sentinel da comienzo el Curso Online de Seguridad en Redes. Tiene una duración de 200 horas que puedes realizar online, y donde además llevas como complemento de la formación el libro de Infraestructura Críticas y Sistemas Industriales: Seguridad & Hacking de nuestra editorial de 0xWord. Tienes toda la información en la web del curso.

Figura 3: Curso Online de Seguridad en Redes en The Security Sentinel

17 de Mayo: Curso Online de Hacking Avanzado

Para el día 17 de Mayo tenemos el segundo curso online de este mes en The Security Sentinel. Uno de los más demandados por los alumnos. Se trata del Curso Online de Hacking Ético Experto con una duración de 180 horas donde se toca un gran abanico de temas en el mundo del Ethical Hacking y el pentesting. Además, se entrega como material de apoyo el libro de "Pentesting con PowerShell", para que puedas prepararte para el mundo profesional. Tienes toda la información en la web del curso.

Figura: Curso Online de Hacking Ético Experto en The Security Sentinel

23 de Mayo: CoeTalk for Developers - Air Profiling

Para este día tenemos una nueva CodeTalk for Developers, centrada en este caso en las técnicas de Air Profiling y cómo hacer perfilado de usuarios mediante el análisis del tráfico de red que generan. Nos vemos en Youtube por la tarde si quieres asistir. Tienes más info en la web:

Figura: Code Talk for Developers sobre Air Profiling

24 de Mayo: BigData for Social Good

Será una jornada presencial en Madrid, pero tiene habilitado el streaming, así que si quieres venir a ver todas las charlas de la sesión - incluido el panel en el que participaré yo - puedes registrarte a la sesión por Streaming. Te informaremos de todo el proceso para que puedas seguir en directo la jornada desde cualquier rincón del mundo en el que estés.

Figura: Registro para atender vía Online a BigData For Social Good

30 de Mayo: Curso Online de Análisis Forense 2

Para el final de mes tendremos en The Security Sentinel el Curso Online de Análisis Forense 2, una segunda parte en la que se estudian técnicas de análisis forense de comunicaciones de red, con un alto análisis de las herramientas y procedimientos para entender los protocolos de comunicaciones. En el curso, tendrás como complemento para el estudio un libro de nuestra editorial 0xWord. Tienes toda la información en la web del curso.

Figura: Curso Online de Análisis Informático Forense 2 en The Security Sentinel

Además de estas actividades, siempre puedes hacerte alguno de los VBooks de 0xWord, ya que tenemos tres activos para disfrutar online. Estos son:
- VBook 1: Windows Server 2016 Administración & Seguridad 
- VBook 2: Ataques en redes de datos IPv4&IPv6 
- VBook 3: Ethical Hacking
Saludos Malignos!

sábado, abril 28, 2018

Docker: SecDevOps. El nuevo libro de @0xWord

Hoy sábado tenemos una nueva sorpresa en la colección de libros de 0xWord, en este caso un libro de Fran Ramírez, Rafael Troncoso y Elias Grande, todos viejos conocidos si eres un lector asiduo de este blog. El tema elegido es uno de los que probablemente marca la diferencia hoy en día entre los Administradores de Sistemas "clásicos" y los Profesionales de TI hoy en día. El mundo de las DevOps y los SecDevOps.

Figura 1: Docker: SecDevOps. El nuevo libro de @0xWord

El tema central es una de las tecnologías más utilizadas en los equipos de desarrollo de tecnologías modernas, como es Docker, y en este caso centrado en como aplicar técnicas de DevOps y de SecDevOps a ellas. Lo tenéis disponible a la venta en la web de 0xWord: Docker: SecDevOps

Figura 2: Libro de Docker:SecDevOps

Para que podáis ver el contenido completo de este libro de más de 200 páginas, os he subido el índice a mi canal SlideShare y lo tenéis embebido directamente aquí.


Por supuesto, el libro está lleno de ejemplos y prácticas realizadas para hacer mucho más sencillo el inicio en este mundo de los nuevos profesionales.

Saludos Malignos!

viernes, abril 27, 2018

Polymorph: Modificando paquetes de red en tiempo real. Inyectando JavaScript en peticiones HTTP (1 de 3)

Hoy os traigo un artículo - en tres partes - un poco especial. Hace tiempo publiqué un artículo sobre unas debilidades de seguridad que encontré en el protocolo de Registro Remoto de Windows, a través de las cuales, podías llegar a inyectar código remotamente en el registro de una víctima mediante un ataque de red IPv4&IPv6 para hacer un Man in the middle (MITM) y la modificación de paquetes de red en tiempo real.

Figura 1: Polymorph: Modificando paquetes de red en tiempo real.
Inyectando JavaScript en peticiones HTTP (1 de 3)

Este trabajo, junto con otro que tuve la gran suerte de poder realizar con Alejandro Ramos (@aramosf) como Proyecto Final del Máster de Seguridad de la UEM (que co-dirige Chema Alonso) en el que verificábamos la seguridad de diferentes aplicaciones que implementaban el protocolo MQTT mediante Proxy Fuzzing, me llevaron a replantearme la necesidad de que existía de una herramienta capaz de modificar paquetes de red en tiempo real de manera sencilla, proporcionando la capacidad de realizar procesamientos complejos al usuario e interpretando el mayor número posible de protocolos existentes, incluso aquellos que no tienen especificación pública.

Figura 2: Framework de Polymorph

Es así como, después de varios meses de esfuerzo en mis ratos libres, os traigo Polymorph, un framework que permite todo lo anterior y mucho más.

Polymorph

Polymorph es un framework que permite la modificación de paquetes de red en tiempo real de prácticamente cualquier protocolo existente. Esto es posible gracias a que aprovecha los disectores de Tshark para realizar una primera interpretación de los bytes de los paquetes de red capturados y, además, implementa técnicas para que el usuario pueda definir e interpretar los bytes creando sus propios campos o capas. La herramienta la he publicado hace apenas dos semanas y está disponible en su repositorio de Github:

Figura 3 : Repositorio GitHub de Polymorph

En este artículo voy a seguir demostrando la versatilidad del framework y voy a exponer un caso de uso en el que modificaré en tiempo real paquetes que implementan el protocolo HTTP para inyectar JavaScript que se ejecutará en el navegador del usuario. También veremos cómo extender los paquetes para que aparezca más información en el navegador de la víctima, incluso si la petición HTTP (por su tamaño) no se transmite en un solo paquete de red.

Figura 4: Whitepaper de Polymorph [PDF]

Podéis encontrar más información sobre el framework y sus casos de uso en estos artículos, modificando paquetes ICMP, creando un Proxy Fuzzer para el protocolo MQTT o en el propio Whitepaper sobre Polymorph que escribí, que os recomiendo consultar si necesitáis más información sobre algún concepto a lo largo de este artículo:

Instalación del Framework de Polymorph

Todo lo que se necesita para seguir el contenido de este artículo es tener instalada o virtualizada una máquina Kali Linux e instalar Polymorph en ella. Para realizar la instalación de Polymorph sólo tenemos que ejecutar los siguientes comandos:
apt-get install build-essential python-dev libnetfilter-queue-dev tshark tcpdump python3-pip wireshark 
pip3 install --process-dependency-links polymorph
¡Una vez hecho esto nuestro entorno está listo!

Captura de paquetes y generación de una plantilla

Antes de comenzar, quería señalar que por simplicidad vamos a hacer toda la modificación de paquetes de manera local (en la misma máquina). Para realizarlo entre varias máquinas el proceso sería exactamente igual, con la salvedad de que tenéis que interceptar la comunicación entre ellas. Polymorph proporciona mecanismos para hacer esto, podéis encontrar más información en los artículos citados anteriormente o en el Whitepaper.

Figura 5: Inicio del framework de Polymorph

Vamos a empezar por ejecutar el framework, para ello, introducidos el comando polymorph desde la consola de comandos. Esto nos lleva a la interfaz principal de la herramienta, con la tecla tabulador podemos ver las opciones que nos ofrece esta interfaz. Como podemos observar tenemos pocas opciones en este punto, interceptar la comunicación entre máquinas mediante una técnica de spoofing o comenzar el proceso de sniffing o captura de paquetes de red.

El proceso de sniffing es necesario para poder realizar la modificación de paquetes en tiempo real, la herramienta captura todos los paquetes que circulan por la máquina y los transforma en una estructura que he llamado plantilla. Cada uno de los paquetes de red se convierte en una plantilla distinta.

Polymorph utiliza estas plantillas para facilitar al usuario el acceso a los distintos campos de cada uno de los paquetes interceptados en tiempo real sin conocer a priori el protocolo que implementan. Se puede pensar en este concepto como una plantilla física que posee cada uno de los campos y capas del paquete y la posición que ocupan en el conjunto de bytes, de manera que, cuando se intercepta un paquete de red, que en definitiva es un conjunto de bytes, podemos proyectar esa plantilla sobre los bytes y ver si el paquete se corresponde con el que nosotros estamos buscando.

Nuestro objetivo en este punto es capturar un paquete de red del mismo tipo que los paquetes que queremos modificar, de forma que, la herramienta genere una plantilla que podamos utilizar para filtrar y procesar los paquetes que posteriormente interceptemos en tiempo real.

Para realizar este paso, vamos a introducir en Polymorph el comando capture -f “tcp src port 80” con el que capturaremos paquetes aplicando un filtro que indica que el puerto de origen sea el 80 (HTTP). Una vez introducido el comando, visitamos una página web HTTP, a lo largo del artículo utilizaremos: http://phrack.org/.

Figura 6: Visitando phrack.org con Polymorph capturando

Una vez hayamos visitado la página, pulsamos Ctr-C en Polymorph para salir del modo sniffing. Como podemos observar, la interfaz ha cambiado, con la tecla tabulador podemos ver los nuevos comandos, con el comando show podemos ver los paquetes que hemos capturado y que el framework ha transformado en plantillas.

Figura 7: Plantillas disponibles

Si os fijáis, la mayoría de las plantillas tienen una última capa RAW y ninguna tiene la capa HTTP, esto es porque los primeros disectores que utiliza la herramienta son los que proporciona Scapy, y no son capaces de diseccionar algunos protocolos, para utilizar disectores más avanzados para interpretar los bytes restantes, utilizamos el comando dissect.

Fijaos como en este caso, los paquetes que implementan otros protocolos se interpretan y se muestran cuando introducidos el comando show.

Figura 8: Paquetes diseccionados

En este punto tenemos varias plantillas generadas, y tenemos que seleccionar aquella que se corresponde con los paquetes que vamos a querer modificar en tiempo real, en nuestro caso la respuesta HTTP del servidor que contiene la página web.

[Continuará en la Parte 2 de 3]

Autor: Santiago Hernández, Security Researcher en ElevenPaths

*********************************************************************************************
Polymorph: Modificando paquetes de red en tiempo real (Parte 1 de 3)
Polymorph: Modificando paquetes de red en tiempo real (Parte 2 de 3)
Polymorph: Modificando paquetes de red en tiempo real (Parte 3 de 3)
*********************************************************************************************

jueves, abril 26, 2018

Cómo entrenar tu AI para jugar a Vídeo Juegos clásicos y Cómo descubrir las Hidden Networks de tu empresa en YouTube

Esta semana están ya disponibles dos seminarios de nuestras charlas en ElevenPaths y LUCA que puedes ver ya en YouTube. Las dos sesiones son de dos temas que me encantan, y que os recomiendo que miréis con cariño y atención, ya que son dos curiosidades a tener en cuenta. Una para el futuro, otra para la revisión de seguridad de tu compañía.

Figura 1: Cómo entrenar tu AI para jugar a Vídeo Juegos clásicos y
Cómo descubrir las Hidden Networks de tu empresa en YouTube

Las dos charlas están disponibles en Youtube, y por eso os las voy a dejar incrustadas en este post, pero también os dejo las referencias para que podáis leer el material asociado.

Cómo entrenar a tu AI para jugar a Vídeo Juegos clásicos

A día de hoy estamos trabajando mucho en mi equipo de Ideas Locas de CDO con sistemas de Visión Artificial, y no se nos ocurre mejor forma que trabajarlos que utilizarlos para resolver problemas "sencillos" como jugar a vídeo juegos clásicos. Al final, en cada frame nuestra AI debe elegir el mejor movimiento para poder continuar con la partida. 


Figura: 2 Cómo entrenar tu AI para jugar vídeo juegos clásicos

El resultado es que, al final, la AI puede jugar sola, y con el entrenamiento va avanzando en su experiencia, sacando más y mejores puntuaciones partida tras partida. Aquí tenéis un vídeo de cómo juega al poco de llevar un tiempo siendo entrenada.


Figura 3: OpenAIGym Breakout

Para que puedas tener lecturas sobre el tema, tienes en estos artículos todo lo que estamos haciendo y cómo lo estamos haciendo.

Serie "Cómo entrenar a tu AI jugando a Vídeo Juegos"
- La rejilla de juegos 
- Observando el entorno 
- Resolviendo CartPole con RandomSearch 
- Aprende Q-Learning con el juego "Taxi" parte 1 
- Aprende Q-Learning con el juego "Taxi" parte 2 
- Deep Learning vs. Atari Parte 1
Cómo localizar las Hidden Networks en tu empresa

Dentro de las auditorias de seguridad internas que hagas en tu empresa, hay una cosa que no todas las compañías miran. Se trata de saber si internamente se están utilizando dispositivos de almacenamiento USB no autorizados para copiar documentación o archivos de un equipo a otro. No sería la primera vez que un malware se expande por una red, o por sistemas air-gapped utilizando este mecanismo de transmisión.


Figura 4: Hidden Networks

En este seminario que tienes aquí puedes ver cómo localizar estas "Hidden Networks" en tu organización mediante unos scripts y herramientas que hemos creado en ElevenPaths. Para que tengas todas las referencias, tienes aquí los artículos.
Espero que estos dos temas sean de tu interés. Son dos líneas de investigación de mi equipo de Ideas Locas en CDO, y a mí personalmente me tienen con mucho interés.

Saludos Malignos! 

miércoles, abril 25, 2018

Phis.AI: Una AI para saber si una URL es un sitio de phishing

Las técnicas de phishing evolucionan y lo hacen en forma de diferentes amenazas asociadas a distintas tecnologías. Esto es una realidad, ya hemos visto en este blog ejemplos como el de nuestro querido SAPPO o el funcionamiento del QRLJacking y el caso práctico de WhatsApp. Hoy quería mostrar una nueva herramienta, que se encuentra en fase beta, la cual puede ayudar al descubrimiento de phishing en un sitio web. La herramienta se denomina Phis.AI.

Figura 1: Phis.AI: Una AI para saber si una URL es un sitio de phishing

El proyecto puede verse en su repositorio de GIthub o en su propia web. Según indican aplican inteligencia artificial para detectar incidentes de phishing, aunque si el usuario discrepa con lo que le dice el motor de Intieligencia Artificial, siempre se puede enviar una discusión y analistas de seguridad, es decir, el factor humano lo evaluará.

Figura 2: GitHub de Phish.AI

La herramienta dispone, además, de una API con la que se puede realizar interacciones y comprobaciones. La aplicación web es muy sencilla de utilizar, como vamos a ver a continuación. Al acceder al sitio web, uno se encuentra un Scan URL en el que se puede introducir la URL de la que se sospecha.

Figura 3: Scan URL en Phis.AI

Cuando introducimos un sitio web, el motor IA del sitio web trabaja durante unos segundos o minutos. Un poco de tiempo después se obtiene un resultado en el que se indican las siguientes cosas:
• ID. Este ID identifica de forma unívoca la URL, por lo que si otro usuario la intenta evaluar se podrá acceder a la información conocida. Esto se hace de forma similar al ID de Virus Total en el caso del malware.

• Verdict. Este es el veredicto del motor. Puede indicarnos que es malicioso o que está limpio.
 
• Dispute Verdict. Si el usuario no está de acuerdo con el resultado obtenido se puede enviar para que los analistas puedan observar con mayor detalle. 
• El campo “Targeted Brand” nos indica qué tipo de branding se utiliza en el phishing, es decir, a quién están suplantando. Además, obtenemos en la parte de Details un Screenshot de la pantalla.
Como se puede ver en la siguiente imagen, se ha evaluado una página que no es un sitio de phishing y el motor ha funcionado correctamente. Como es lógico, una automatización puede fallar, por eso tenemos disponible el “Dispute Verdict”, con lo que además estamos ayudando a entrenar la red neuronal.

Figura 4: Sumario de incidente

En el apartado Incidents nos aparecen los últimos incidentes de phishing descubiertos por el motor de AI. Como se puede ver en la siguiente imagen, se tiene una serie de campos en la tabla que nos van proporcionando la información. Además, tenemos las fechas del descubrimiento y el Targeted Brand. El campo URL apunta a la dirección web del sitio de phishing detectado por Phis.AI, por lo que si se quiere comprobar si la URL es detectada o no por las API como Safebrowsing se puede probar.

Figura 5: Lista de incidentes

Cuando entramos en un incidente, a través del identificador del incidente, se puede ver información detallada, tal y como vimos en el ejemplo anterior. Además, la aplicación es capaz de geolocalizar el phishing a través de la dirección IP.

Jugando con la API

La aplicación dispone de una API pública y otra privada. Con la API pública el usuario puede enviar las direcciones URL sospechosas para ser escaneadas. Con la API pública se pueden hacer unas 1000 peticiones por día, incluyendo POST y GET.

Para ver el uso sencillo de la API vamos a generar un script en Ruby que realice la petición POST con el valor de una URL con el objetivo de entregarle al motor de AI la información. Cuando éste la haya procesado, podremos recuperar, también vía API, la información del reporte. En la parte de documentación de la API se puede ver un ejemplo básico con CURL.

Figura 6: Ejemplo de uso con CURL

El primer script lo hemos llamado send.rb. El script, a modo de ejemplo, realiza una petición POST a la API de Phish.AI. En este ejemplo, se ha solicitado informar sobre la URL http://flu-project.com.

Figura 7: Script send.rb

Si ejecutamos el código anterior, se puede observar que la respuesta de la API se sencilla, simplemente nos da la información sobre el ID del scan. Esta información podría ser tratada automáticamente, para procesarla y recoger el reporte.

Figura 8: Ejemplo desde Kali Linux

Por otro lado, se ha escrito un pequeño script denominado getReport.rb. Este script se encarga de realizar una petición por GET a la API de Phish.AI e indicar el ID del scan del que se quiere reporte. Al obtener la respuesta en el JSON se obtiene la información conocida tras el análisis del motor de AI de Phish.AI.

Figura 9: Información completa del incidente en fichero JSON

Como se puede ver en la imagen, se obtiene la información conocida. En este caso, estamos ante un caso negativo, es decir, no es un phishing. Los resultados y parámetros que se obtienen son los mismos que se obtienen a través del sitio web.

Figura 10: Incidente negativo

Es una herramienta a tener en cuenta, la cual se encuentra en fase beta y la cual proporciona una API para automatizar ciertos procesos y para que los equipos de vigilancia digital estén al tanto de los nuevos phishing que se pueden descubrir gracias a este motor que aplica inteligencia artificial a la evaluación. Si quieres conocer más sobre la evolución del phishing y la aparición de los ataques SAPPO no te pierdas mi charla en la CON Pilar 2018, el próximo sábado 28 de abril.

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

martes, abril 24, 2018

¿Nos escuchan por los micrófonos Google, Facebook, Apple y Microsoft? Claro que sí. Parte 2

Continuando con la historia que vimos en al primera parte de este artículo, la pregunta que puede aparecer es...¿qué pasa si no tenemos un asistente como Alexa Echo o Google Home?, ¿cómo podemos protegernos ante estas posibles escuchas no autorizadas en el ordenador, realizadas por ejemplo por un malware?

Figura 10: ¿Nos escuchan por los micrófonos Google, Facebook, Apple y Microsoft?
Claro que sí. Parte 2

Aunque podemos tapar con una pegatina la webcam como ya hacemos (el propio Mark Zukerberg lo hace también), usar los botones “mute” o desactivar el micrófono, ninguna de estos métodos es efectivo al 100%. Un programa malware con derechos de administrador podría activar la webcam sin mostrar el led de activación o reactivar el micrófono en caso de estar desactivado, así como controlar el volumen.

Figura 11: El ordenador de Mark Zuckerberg con la webcam tapada

Una buena práctica para protegernos pasa por analizar y monitorizar en todo momento el uso de este dispositivo de adquisición de audio. De esta forma si algún proceso, programa o servicio accede al micrófono, seremos capaces al menos de identificar el proceso que la ha realizado.

Figura 12: "Latch" físico de ElevenPaths para tapar la webcam

Para equipos macOS, el programa Oversight es una aplicación gratuita que hace exactamente este trabajo. Eso sí, no distingue entre una aplicación maliciosa y otra que sí le hayamos dado acceso al micrófono, pero al menos nos avisa de una forma eficiente sobre su actividad. Su funcionamiento es sencillo, ya que sólo está alerta al posible uso de la cámara web y del micrófono. Si detecta alguna actividad, muestra un mensaje indicando el id del proceso y el nombre de este permitiéndonos activarla o bloquearla:

Figura 13: Mensajes de alerta de la aplicación Oversight

En sistemas Microsoft Windows, podemos utilizar el siguiente método un poco más manual pero muy efectivo donde utilizaremos la fantástica utilidad Process Explorer de SysInternals. El primer paso será identificar el nombre físico de nuestro dispositivo de grabación. Esto podemos hacerlo desde el administrador de dispositivos donde obtendremos un valor parecido a este: \Device\00000055

Figura 14: Identificación del dispositivo de grabación en Windows

El siguiente paso es usar Process Explorer (abierto siempre como administrador) para detectar el proceso que está utilizando dicho dispositivo. Es tan sencillo como buscar la cadena que antes hemos identificado y obtendremos un listado similar a este dónde aparece toda la información de dichos procesos:

Figura 15: Detección del proceso que utiliza el micrófono usando Process Explorer

En sistemas GNU/Linux a fortificar el proceso de identificación es similar, primero obtener el pid del proceso que está accediendo al dispositivo y luego identificar la aplicación. El controlador del micrófono y la tarjeta de sonido se encuentran ubicados en está dentro de la siguiente ruta: /dev/snd. Con el siguiente comando identificaremos rápidamente el proceso que está accediendo en ese momento a cualquier componente del dispositivo de audio:

Figura 16: Identificación del proceso que está utilizando la tarjeta de sonido en GNU/Linux

En los smartphones tenemos las mismas preocupaciones que en el ordenador. Esta vez primer paso pasaría por desconectar el acceso al micrófono por parte de estas aplicaciones. En este enlace puedes encontrar las diferentes formas de evitar que las apps de Facebook o Siri no utilicen el micrófono. Pero al igual que ocurre en el ordenador, si un malware está usando el micrófono es posible que no lo detectes.

Figura 17: Más de 652.000 apps para Android con permisos de grabación de audio

En nuestro BigData de apps móviles Tacyt, que utilizamos en los servicios de CyberThreats, hemos localizado ya más de 600.000 apps, de las cuáles puede que alguna tengas instalada en tu terminal, que tienen el permiso de grabación de audio. Y si miramos solo en Google Play, tenemos más de 423.000.

Figura 18: Apps en Google Play con permisos de grabación de audio

Es más, cientos de aplicaciones que posiblemente tengas instaladas en tu smartphone están utilizando el micrófono sin tu permiso o a lo mejor, sin querer :) le hemos dado acceso al aceptar en el aviso que nos aparece siempre que se intenta utilizar algún componente o acceso a una carpeta crítica del sistema (como en este caso el micrófono):

Figura 19: Detección del proceso que utiliza el micrófono desde Process Explorer

Existen muchas aplicaciones que te permiten monitorizar y avisarte del uso del micrófono, tanto para iOS como para Android. Y ahora que mencionamos Android, una de las plataformas más utilizada también otros dispositivos como por ejemplo las Smart TV, otro elemento para tener en cuenta y que daría para otro artículo.

Figura 20: Términos y condiciones de la Samsung SmartTV sobre servicios de voz

Así que la mejor forma de evitar este problema de las escuchas no autorizadas por el micrófono de cualquier dispositivo pasa por estos sencillos tres pasos:
1. Desactivar el micrófono desde las opciones de configuración del dispositivo o apps siempre que no sea necesaria su utilización. 
2. Utilizar alguna aplicación o solución antivirus para monitorizar su actividad. 
3. Leer las políticas de privacidad de uso y los avisos que incluyan el uso del micrófono.
Hay una 4 opción, la más paranoica de todas, pero a la vez la más efectiva. Y es la solución que nos recomienda nuestro amigo Kevin Mitnick y también Edward Snowden que hemos mencionado en el título de este artículo. Aunque Snowden recomienda directamente desinstalar la placa del micrófono y de la webcam del dispositivo, tal y como explica en esta entrevista de Vice, existe otra solución menos drástica.

Figura 21: Entrevista de Vice a Edward Snowden

Esta solución pasa por pasa por utilizar un jack digamos “tonto” (dummy mic plug) que haga creer al ordenador o smartphone que hay un micrófono conectado sin realmente estarlo. Esta opción es realmente efectiva que sirve para prácticamente cualquier dispositivo y sistema operativo: utilizar una clavija “dummy”. Pero ahora veremos que no es tan sencillo de implementar y, además, cada vez más, sobre todo Apple, el audio ya no se envía o recibe a través de este tipo de conector tipo jack. Si te atreves con los auriculares de Apple (los de cable de siempre), aquí tienes un análisis completo de cómo desmontarlo.

Figura 22: The Art of Invisibility de Kevin Mitnick

Kevin Mitnick en su libro “The Art of Invisibility” describe cómo crear esta clavija realizando algunos cambios en unos viejos auriculares e insertarlo en el conector de audio del dispositivo. Existen dos opciones, equipos con la entrada de micrófono independiente (normalmente equipos de sobremesa) y equipos con la entrada de micrófono integrada en la de salida de audio (la mayoría de los equipos hoy día como portátiles y smartphones).

Figura 23: Contactar con Kevin Mitnick en MyPublicInbox

En ambos casos no basta con conectar una clavija simplemente ya que el equipo detectará la conexión, pero al no cerrarse el circuito se activará el micrófono interno. Por lo tanto, en ambos casos será necesario realizar alguna modificación.

Figura 24: Fran Ramírez, Kevin Mitnick y Chema Alonso en una visita de Mitnick a ElevenPaths

Algunas técnicas pasan por incluir una resistencia que sustituya el micrófono en unos auriculares que lo tengan integrado, para crear un circuito cerrado pero MUCHO CUIDADO CON ESTO, esta manipulación podría provocar un cortocircuito y estropear la tarjeta de audio de tu equipo, no nos hacemos responsables de los daños que pueda ocasionar este hack. Si no quieres arriesgarte, siempre puedes conectar unos auriculares con micrófono y tapar o sellar de alguna forma la entrada de audio de este. Pero también existen soluciones comerciales baratas como esta que puedes encontrar en Amazon:

Figura 25: Conector dummy para emular un micrófono

Resumiendo, parece que en principio las empresas como Google, Apple, Amazon o Facebook no nos escuchan SIN nuestro consentimiento, pero el problema de las escuchas no autorizadas (ya sea algún gobierno o algún tipo de malware) en tu equipo es algo absolutamente real, como ha quedado demostrado olvidemos el caso destapado por WikiLeaks de las escuchas ilegales realizadas por la CIA. Así que ya sabes, si evitas que te espíen con la webcam, también tienes que preocuparte por el micrófono, y si queréis más protección aún, el proyecto de Instrocpetion de Edward Snowden para evitar ninguna señal desde tu smartphone.

Autor: Fran Ramírez, (@cyberhadesblog) es investigador de seguridad y miembro del equipo de Ideas Locas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps", también de "Machine Learning aplicado a la Ciberseguridad” además del blog CyberHades. Puedes contactar con Fran Ramirez en MyPublicInbox.
 Contactar con Fran Ramírez en MyPublicInbox