Red Teaming with Security Descriptors (by @attl4s & @leurian #hc0n2019)

Hoy os traemos otra charla de la h-c0n, concretamente la de Daniel López aka @attl4s autor también de varios artículos en este blog y de Roberto López aka @leurian con el que tuve la suerte de coincidir profesionalmente en el pasado. Se trata de 'Red teaming with security descriptors' en la que se explicaba cómo elevar privilegios en dominios Windows a través de técnicas basadas en descriptores de seguridad o security descriptors.

Active Directory está formado de objetos, muchos objetos: objetos de tipo usuario, de tipo ordenador, de tipo dominio…, etcétera. Cada uno de estos objetos tiene ciertas características y, entre ellas, existen los descriptores de seguridad. El objetivo de los descriptores de seguridad es llevar un control sobre cada objeto del AD y su relación con el resto objetos, por este motivo son una parte fundamental de la seguridad en entornos Windows.

En dominios de empresas grandes es prácticamente imposible llevar un control total de estas relaciones entre objetos, lo que puede llevar a malas configuraciones que podrán ser aprovechadas. Es más, en ocasiones una configuración perfectamente establecida puede desembocar también en escenarios útiles para un atacante.

El uso de técnicas que se aprovechan de debilidades en descriptores de seguridad son poco conocidas y utilizadas actualmente pero son tremendamente útiles en grandes compañías con inmensos Directorios Activos. De hecho, su uso es un tema que ha estado tratando estos últimos años Will ‘harmj0y’ Schroeder y es precisamente en su trabajo en el que se basaron junto con otras fuentes.

Este tipo de técnicas pueden servir como una alternativa más al arsenal de un red teamer para realizar tanto elevación de privilegios y como creación de persistencia en ejercicios Red Team. Destacan por una serie de puntos:

- No se aprovechan de exploits ni CVEs, se hace un uso exclusivo de herramientas propias de Active Directory.
- Técnicas silenciosas que modifican ligeramente el entorno y dejan un mínimo de rastro.
- Su causa no tiene por qué ser debida a malas configuraciones, en ocasiones podemos aprovechar relaciones entre objetos totalmente legítimas.

Presentación:

La presentación se enfocó de la siguiente manera:

- Teoría básica de descriptores de seguridad.
- Teoría explicada a través de ejemplos reales en un entorno real de dominio (con DC, equipos, dominio…, etc.)
- Explicación de herramientas modernas utilizadas en ejercicios Red Team.
- Resumen breve de ataques comunes y modernos.


Hacking Wireless con Airgeddon (by @OscarAkaElvis #hc0n2019)

El siguiente material de h-c0n 2019 que vamos a liberar es el de Oscar Alfonso aka OscarAkaElvis o v1s1t0r, amigo y compi también de l1k0rd3b3ll0t4, creador de máquinas y retos en Vulnhub y HacktheBox, programador, researcher,... y entre tanto de lo que hace (y lo hace muy bien, os lo aseguro), fundador del proyecto Airgeddon. Precisamente su charla fue enseñarnos a hackear Wireless con su suite Airgeddon.

Si veis la presentación que os pongo a continuación comprobaréis que no tiene mucho contenido porque la charla fue básicamente varias demos en vivo y en directo que pudieron disfrutar los asistentes al Congreso. Pero, tanto como si pudisteis asistir como si no, os recomiendo echar un vistazo a su Github y seguro que (si no lo habíais hecho antes) os preguntaréis cómo habéis podido vivir sin esta herramienta hasta ahora... y rápida e irremediablemente lo incorporáis a vuestro arsenal para pwnear wi-fi. Enjoy it!

URL: https://github.com/v1s1t0r1sh3r3/airgeddon
Wiki: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki
Docker: https://hub.docker.com/r/v1s1t0r1sh3r3/airgeddon

Presentación:


Buscando malware en volcados de memoria mediante Volatility y Yara

Aunque prácticamente todos los parámetros de Volatility pueden ayudarnos a encontrar e identificar malware en volcados de memoria, hay algunos que fueron diseñados específicamente para cazar rootkits y código malicioso. Uno de ellos es el plugin "yarascan", que nos puede ayudar a encontrar mediante reglas Yara cualquier secuencia de bytes (como instrucciones de ensamblador con wild cards), expresiones regulares, cadenas ANSI o cadenas Unicode en el modo de usuario o en la memoria del kernel.

Al usar las reglas específicas de Yara, una de las "navajas suizas" de los analistas, se puede detectar la presencia de artefactos relacionados con las familias de malware más comunes en la imagen de memoria analizada.

Para el ejemplo de este post usaremos una muestra de memoria disponible online, como el archivo stuxnet.vmem, que los autores del libro The Malware Analyst Cookbook's hicieron para practicar y que proviene de una máquina virtual infectada con Stuxnet.

Una vez descargada la imagen, lo primero que haremos como siempre será ejecutar una pequeña identificación:
$ volatility -f stuxnet.vmem imageinfo

Volatility Foundation Volatility Framework 2.6
INFO    : volatility.debug    : Determining profile based on KDBG search...
          Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86)
                     AS Layer1 : IA32PagedMemoryPae (Kernel AS)
                     AS Layer2 : FileAddressSpace (/tools/hunting/stuxnet.vmem)
                      PAE type : PAE
                           DTB : 0x319000L
                          KDBG : 0x80545ae0L
          Number of Processors : 1
     Image Type (Service Pack) : 3
                KPCR for CPU 0 : 0xffdff000L
             KUSER_SHARED_DATA : 0xffdf0000L
           Image date and time : 2011-06-03 04:31:36 UTC+0000
     Image local date and time : 2011-06-03 00:31:36 -0400

Ahora que tenemos el profile tendremos que especificarlo junto con la imagen y la yara o yaras a analizar. Para esto último tendremos varias opciones. La primera de ellas podría ser hacer un "merge" del conjunto de yaras disponible.

Manipulación de WhatsApp en Android (by @peritotec #hc0n2019)

El siguiente material de la h-c0n 2019 que publicamos es el de la charla de Pablo Espada Bueno, perito judicial e ingeniero informático, que también se acercó desde Cáceres a Madrid para presentarnos "Manipulación de WhatsApp en Android".

En esa charla, además de repasar los conceptos básicos de Whatsapp desde un punto de vista forense (algo que ya se ha hecho en charlas como la de Manu Guerra en Cybercamp 2017), explicó cómo utilizando un segundo teléfono (este sí que estará "rooteado") se pueden manipular los mensajes de Whatsapp sin necesidad de manipular el teléfono original, lo que hace que dicha manipulación resulte indetectable para cualquier perito.

La técnica se basa en el uso de copias de seguridad locales cifradas, que pueden ser descifradas en otro teléfono siempre que se pueda acceder a las llamadas o a los SMS utilizados como 2FA. Aprovechando esto, se extrajo la BBDD de Whatsapp en abierto en el teléfono auxiliar, pudiendo manipular los mensajes y devolviéndolos luego al teléfono original, de nuevo a través de una copia de seguridad.

Como dice Pablo esta técnica no es nada especial, ni requiere unos conocimientos exahustivos para realizarla, pero no hemos encontrado que haya sido mostrada en ningún artículo técnico, por lo que elevó aún más el interés de la charla.

Presentación:



Demo:

Paso 1

Técnicas de detección de VMs y contramedidas

Los desarrolladores de malware saben que sus artefactos va a ser irremediablemente analizados por threat hunters, forenses y demás "azulones" que intentarán destriparlos para obtener el detalle de su funcionamiento y obtener los IoCs correspondientes para contenerlos.  También saben que la mayoría serán analizados en  sandboxes con máquinas virtuales que pueden proporcionar un entorno aislado para que el malware se active, para que sus acciones puedan ser controladas e interceptadas.

Por ello los programas maliciosos de esta era detectan que se están ejecutando en una máquina virtual y actúan en consecuencia: se abstienen de inyectar código dentro de las aplicaciones, mantienen cifrado o encodeado el código malicioso, no conectan con los servidores de C&C, etc. y buena parte de sus esfuerzos se centran en utilizar técnicas más avanzadas para la detección. Por ejemplo, las últimas versiones del ransomware Locky añadían un nuevo "truco" anti-VM bastante curioso: realizaba dos llamadas a la API de Windows, GetProcessHeap () y CloseHandle () y dependiendo del tiempo de respuesta determinaba si estaba o no en una VM.

Pero veamos las técnicas más genéricas utilizadas por el malware de hoy en día para detectar el entorno virtualizado:

TÉCNICAS PARA DETECTAR ENTORNOS VIRTUALIZADOS

ARTEFACTOS DE UN ENTORNO VIRTUALIZADO

- Comprobación del registro: cada vez que generamos una nueva máquina virtual en el sistema operativo invitado hay muchas entradas en el registro relacionadas con el producto de virtualización utilizado y, como no podía ser de otra manera, el malware consulta la presencia de estas entradas. Por ejemplo en VMWare:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000\DriverDesc
VMware SCSI Controller
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000\ProviderName
VMware, Inc.

- Verificación de memoria: la ubicación de varias estructuras de memoria, especialmente la IDT (Interrupt Descriptor Table), varía en la máquina virtual en comparación con una máquina física.
El malware verifica el uso de varias estructuras de memoria como:

     . Almacenar tabla de descriptor de interrupciones (SIDT): en una máquina virtual, normalmente se encuentra en 0xffXXXXXX, mientras que, en una máquina física, se ubica algo más bajo que la típica alrededor de 0x80ffffff.

     . Otras estructuras que a menudo son controladas por malware son:
Store Local Descriptor Table (SLDT)
Store Global Descriptor Table (SGDT)
Store Task Register (STR)

- Verificación de procesos y archivos/directorios: por ejemplo, en todas las máquinas virtuales creadas con VMWare hay varios procesos que se siguen ejecutando en segundo plano, como VMwareService.exe, VMwareTray.exe, etc. Además, a veces VMware también instala algunas herramientas en la máquina virtual creada. También hay algunos drivers del sistema específicos para software de virtualización, que se pueden ubicar en la ruta: %windir%\system32\drivers\ con algunos nombres como: vmci.sys, vmhgfs.sys, vmmouse.sys, vmscsi.sys, vmusbmouse.sys, vmx_svga.sys, vmxnet.sys, VBoxMouse.sys. El software malicioso vigila todos los procesos y archivos para detectar el entorno VM.

Inmersión en la post-explotación tiene rima (by @CyberVaca_ #hc0n2019)

Vamos a empezar a publicar las presentaciones de las charlas de la h-c0n 2019 con la de uno de los ponentes mejor valorados durante la primera edición: Luis Vacas aka CyberVaka, compañero de batallas de nuestro grupo l1k0rd3b3ll0t4 y severo "castigador" de Güindous xD

En su charla de este año nos traía la suite Salsa Tools, un conjunto de herramientas escritas en C# que nos permitirán tener una shell reversa en cualquier entorno de Windows sin la necesidad de tener PowerShell para su ejecución. Esta suite está enfocada a tener mayor versatilidad, bypassear el antivirus y dificultar que obtengan el código.

La idea es separar el loader del payload, cifrar el payload, cargarlo en memoria y añadir métodos de transferencia. El payload siempre lo usaremos como string.

El resultado es un crypter, un payload y el loader:

- EncrypterAssembly: cifra el payload usando RC4. Tenemos la versión en python o exe.

- EvilSalsa: es el payload. Básicamente, lo que hace es cargar  System.Management.Automation.dll. Crea un espacio de ejecución con cuatro tipos de shells (TCP/UDP/ICMP/DNS). Cuando se carga EvilSalsa en el sistema, lo primero que hace es verificar si se encuentra "c:\windows\system32\amsi.dll" en el sistema, si lo está parcheado :D. El parche es una variante del parche de CyberArk y Rastamouse.

- SalseoLoader: se encarga de cargar el payload cifrado. SalseoLoader puede compilarse como una librería o como un ejecutable. En el caso de que se compile como ejecutable, solo debemos pasar el argumento que queremos ejecutar. Si lo compilamos como una librería tendremos que realizar una exportación del descriptor "main", y la forma de crear el argumento se realiza a través de la lectura de variables de entorno.

Podéis encontrar todo el software en el repo de Github: https://github.com/Hackplayers/Salsa-tools/

Os dejo la presentación y los videos de demo que usó en su charla de la h-c0n 2019:


Bashfuscator: un framework para ofuscar Bash


Bashfuscator es un framework modular y extensible escrito en Python 3 para ofuscar Bash. A través de esta herramienta dispondremos de muchas formas diferentes de hacer que los one-liners o scripts en bash sean mucho más difíciles de entender. Esto se logra generando un código Bash aleatorio y enrevesado que, en tiempo de ejecución, se evalúa en la entrada original y la ejecuta. Bashfuscator hace que la generación de comandos y scripts Bash muy confusos sea fácil, tanto desde la línea de comandos como desde una librería de Python.

El propósito de este proyecto es dar a un Red Team la capacidad de evitar las detecciones estáticas en un sistema Linux, y el conocimiento y las herramientas para escribir mejor las técnicas de ofuscación de Bash. Aunque también este framework fue desarrollado teniendo en cuenta al Blue Team, ya que puede generar fácilmente miles de comandos o comandos ofuscados únicos para ayudar a crear y probar las detecciones de la ofuscación de Bash.

Soporte de payloads

Aunque Bashfuscator funciona en sistemas UNIX, muchos de los payloads que genera no lo harán. Esto se debe a que la mayoría de los sistemas UNIX utilizan utilidades basadas en BSD, y Bashfuscator fue construido para funcionar con utilidades basadas en GNU. En el futuro, se puede agregar el soporte de payload BSD, pero por ahora los que se generan con Bashfuscator deberían funcionar en sistemas GNU Linux con Bash 4.0 o más reciente.

Requisitos de instalación

Bashfuscator requiere Python 3.6+.

En una distribución basada en Debian, ejecuta este comando para instalar las dependencias:

sudo apt-get update && sudo apt-get install python3 python3-pip python3-argcomplete xclip

En una distribución basada en RHEL, ejecuta este comando para instalar las dependencias:

sudo dnf update && sudo dnf install python3 python3-pip python3-argcomplete xclip

Luego, ejecuta estos comandos para clonar e instalar Bashfuscator:

git clone https://github.com/Bashfuscator/Bashfuscator
cd bashfuscator
python3 setup.py install --user

Solo se admiten las distribuciones basadas en Debian y RHEL. Aunque Bashfuscator ha sido probado en algunos sistemas UNIX no llega ser todavía compatible.

#hc0n2019 : Crónica de la segunda conferencia de @Hackplayers


Cuando era pequeño recuerdo que una vez mi padre me dijo que era mucho más difícil y valioso construir algo que destruirlo. Él era albañil así que usó el símil de una pared de ladrillos: reventar un muro a mazazos es mucho más fácil y rápido que tener que construirlo... y realmente es así, crear es más laborioso y debe hacerse "ladrillo a ladrillo", desde la base del suelo hacia el cielo, tan alto como quieras o te empeñes que llegue. Así nació Hackplayers hace 10 años, desde abajo del todo, empecé con un ladrillo, luego con otro, después otro tras otro y hoy todavía esa construcción sigue creciendo, un viaje en el que muchos amigos se han ido sumando poniendo también ladrillos, levantando juntos nuevos proyectos como nuestra propia conferencia: la h-c0n.

No sé cuánto tiempo resistirá en pie esta parte del muro, ni qué tan alto llegará; sólo que estoy tremendamente satisfecho de lo que hemos construido hasta ahora, un evento con una gran acogida donde todos los participantes terminan contentos (nuestro mayor logro) para convertirse en un punto de encuentro entre profesionales, estudiantes y en definitiva apasionados por un interés común: el hacking y la in-seguridad informática.

En esta nuestra segunda edición, que tuvo lugar el 8 y 9 de febrero, intentamos ser bastante continuistas con respecto a la anterior. ¿Por qué?, pues porque creemos que el año pasado salió todo muy bien y porque teníamos prácticamente la posibilidad de contar con los mismos ingredientes, lo que se traducía en una oportunidad de consolidar el Congreso y dar un pasito más. Así que el formato fue similar: mismo escenario, mismo tipo de CTF, sorteos y descuentos para los asistentes y la posibilidad de disfrutar de 12 charlas y 4 talleres de una temática amplia y diversa. Precisamente porque una de las novedades de este año fue poner en liza un "Call For Papers" para poder elegir análisis de malware, Threat intelligence, Red Team, Wireless hacking, Exploiting, Reversing, Hardware, IoT, Pentesting, Mobile, Radio, Privacidad y anonimato... casi nada.