Implementación de process hollowing en VBA

Ya sabéis que Process hollowing, también conocido como Process Replacement o RunPE, es una técnica que hoy en día utiliza mucho el malware y consiste en que un proceso legítimo se carga en el sistema únicamente para actuar como contenedor de código hostil: el proceso legítimo se inicia en un estado suspendido y su área de memoria se reemplaza con el código de un segundo programa. Eso será ejecutado en lugar del original. Hoy recopilamos la implementación de esta técnica en VBA gracias al francés Clément Labro.

Su código se puede utilizar para lanzar ejecutables desde la memoria de Word o Excel. Es compatible con versiones de Microsoft Office 2010 y superiores y con arquitecturas de 32 bits y 64 bits.


Uso 1 - Archivo PE en disco

1. En el exploit al final del código, hay que establecer la ruta del archivo que se desea ejecutar.

strSrcFile = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"

Nota: Si se está utilizando una versión de Microsoft Office de 32 bits en un sistema operativo de 64 bits, se deben especificar binarios de 32 bits.

strSrcFile = "C:\Windows\SysWOW64\cmd.exe"
strSrcFile = "C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"

2. También se pueden especificar los parámetros del comando (opcional).

strArguments = "-exec Bypass"

Esto nos dará el equivalente a:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -exec Bypass

3. (Opcional) Enable View > Immediate Window (Ctrl+G) para comprobar si se ejecuta bien y ver los logs.

4. Ejecuta el exploit con la macro!

pyattck: un paquete en Python para interactuar con el framework MITRE ATT&CK

Si te dedicas a threat hunting y tienes el foco en las tácticas, técnicas y procedimientos (TTP) utilizados por ciertos actores/grupos, entonces ya sabes que el framework de MITRE ATT&CK es muy valioso...


MITRE proporciona una guía con un diseño simple y directo, pero puede ser útil también usarlo mediante programación para medir (o asignar) ciertos controles de seguridad utilizando su framework. Afortunadamente el equipo de investigación de Swimlane ha lanzado pyattck, un paquete Python para interactuar con el framework Mitre ATT&CK de una manera bastante sencilla y que nos permitirá identificar relaciones conocidas entre todas las verticales en MITRE ATT&CK.

Imagina que queremos asegurarnos que estamos protegidos contra las TTP relacionadas con Dragonfly y en lugar de mirar a través de un mapa visual la información sobre este actor, podremos usar pyattck para extraer las herramientas, el malware y las técnicas asociadas o utilizadas por este grupo. Entonces, para recuperar las técnicas usadas por Dragonfly podemos instalar pyattck (pip install pyattck) y programar un sencillo script como este:
import sys
from pyattck import Attck
attack = Attck()
for actor in attack.actors:
 if sys.argv[1] in actor.name:
  for technique in actor.techniques:
   print(technique.name)

Inyección reflejada de DLLs en Windows

Normalmente cuando se carga una DLL en Windows se llama a la función LoadLibrary, que toma la ruta del archivo de la DLL y la carga en la memoria. Sin embargo, existe una técnica que permite a un atacante inyectar una librería en un proceso remoto (víctima) desde la memoria en lugar de desde disco, una forma más sigilosa de ejecutar código malicioso: hablamos de la inyección reflejada de DLLs o, en inglés, "reflective DLL loading".

No obstante, Windows no tiene una función como LoadLibrary para llevarlo a cabo, así que para obtener la funcionalidad tendremos que escribirla nosotros mismos.

Implementando la técnica

La técnica más común para inyectar DLLs de una forma reflejada, bien documentada por el irlandés Stephen Fewer, es doble. En primer lugar, la DLL que queremos inyectar debe estar escrita en el espacio de direcciones del proceso de destino/host. En segundo lugar, la DLL debe cargarse en ese proceso host de tal manera que se cumplan todos los requisitos de tiempo de ejecución de la librería, como resolver sus importaciones o reubicarlas en una ubicación adecuada en la memoria.

Suponiendo que tenemos ejecución de código en el proceso del host y que la librería que deseamos inyectar se ha escrito en una ubicación arbitraria de la memoria en el proceso del host, la inyección reflejada de DLLs funciona de la siguiente manera:

- La ejecución se pasa, ya sea a través de CreateRemoteThread(), una función de API no documentada equivalente como RtlCreateUserThread o un pequeño shellcode bootstrap, a la función ReflectiveLoader de la librería, que es una función exportada que se encuentra en la tabla de exportación de la librería.
- Como la imagen de la librería existirá actualmente en una ubicación arbitraria en la memoria, ReflectiveLoader primero calculará la ubicación actual de su propia imagen en la memoria para poder analizar sus propios headers para su uso posterior.
- ReflectiveLoader luego analizará la tabla de exportación de los procesos del host kernel32.dll para calcular las direcciones de las tres funciones requeridas por el cargador, a saber, LoadLibraryA, GetProcAddress y VirtualAlloc.
- ReflectiveLoader ahora asignará una región continua de memoria en la que procederá a cargar su propia imagen. La ubicación no es importante ya que el cargador re-ubicará correctamente la imagen más adelante.
- Los headers y las secciones de la librería se cargarán en sus nuevas ubicaciones en la memoria.
- ReflectiveLoader procesará la copia recién cargada de la tabla de importación de su imagen, cargando las librerías adicionales y resolviendo sus respectivas direcciones de función importadas.
- ReflectiveLoader procesará la copia recién cargada de la tabla de reubicación de su imagen.
- ReflectiveLoader llamará a la función de punto de entrada de su imagen recién cargada, DllMain con DLL_PROCESS_ATTACH. La librería ahora se habrá cargado con éxito en la memoria.
- Finalmente, ReflectiveLoader devolverá la ejecución al shellcode inicial que lo llamó, o si fue llamado a través de CreateRemoteThread, el hilo terminará.

* Si queréis ver código C/C++ para implementar muchas de las funciones necesarias os aconsejo que echéis un vistazo al post de 0x00Sec aquí.

Reflective dll inject en Metasploit

Asumimos que el atacante ya ha obtenido una shell de meterpreter en el sistema víctima y ahora intentará realizar una inyección reflexiva de DLL en un proceso remoto, más específicamente en un proceso notepad.exe con PID 6156.

¿Has conseguido credenciales en un pentest y necesitas ayuda para encontrar info sensible? Scavenger, un script que puede ayudarte

Durante un pentest interno, si tenemos suerte y/o la suficiente pericia, obtendremos acceso de nivel administrativo al dominio de Active Directory de Windows. Sin embargo, muchas veces tendremos el problema de tener demasiado acceso a demasiados sistemas con días limitados para pruebas. Necesitamos encontrar información valiosa y lo antes posible...

Scavenger es una herramienta creada por Trustwave que nos permitirá encontrar rápidamente esos archivos y carpetas "interesantes" una vez que hayamos obtenido credenciales (post-explotación). Es multi-hilo y permite escanear sistemas remotos (*nix, Windows y OSX) a través de los servicios SMB y SSH para analizar cada sistema en busca de información valiosa y luego almacenar en caché el resultado de forma ordenada en una base de datos.

La información confidencial puede tomar muchas formas dependiendo de lo que se busca, pero en el caso de un pentester, generalmente reside en contraseñas y nombres de usuario de otros sistemas o incluso de diferentes dominios de Windows. Scavenger busca y peina proactivamente este tipo de información:

- lista de los "últimos" archivos/carpetas accedidos/modificados/creados.
- archivos que contengan palabras interesantes, por ejemplo, "password" o "secret". Una vez detectados, Scavenger los descargará a local.
- archivos que contengan información de cuentas y tarjetas (PCI).
- hashes de contraseñas del archivo SAM local o de la base de datos de Active Directory (ntds.dit).
- contraseñas guardadas en algunas aplicaciones, por ejemplo, las contraseñas que se guardan en Chrome, y también otras aplicaciones como WinSCP.


Además, Scavenger tiene la capacidad de comparar y contrastar la lista almacenada en caché de archivos y carpetas previamente obtenidos con una lista recientemente escaneada y adquirida después de un período de tiempo no determinado (horas o días). Por ejemplo, si obtuvimos acceso de nivel de administrador de dominio el día inicial de la prueba de instrusión, el pentester puede esperar varios días y usar Scavenger para volver a escanear y comparar la lista "nueva" anterior de archivos encontrados con la última lista de archivos.

Esto le da al analista la capacidad de determinar rápidamente qué ha cambiado en ese período de tiempo, por ejemplo, si se han creado nuevos archivos y/o si se ha accedido o modificado los archivos antiguos de alguna manera. Por ejemplo, si vemos que el administrador accede con frecuencia a ciertas contraseñas o archivos, es seguro que lo que hay en esos archivos tiene un valor importante.

Requisitos

Instalar CrackMapExec - CrackMapExec Installation Page

Repo

git clone https://github.com/SpiderLabs/scavenger.git

Ejemplos

$ python3 ./scavenger.py smb -t 10.0.0.10 -u administrator -p Password123 -d test.local

$ python3 ./scavenger.py smb --target iplist --username administrator --password Password123 --domain test.local --overwrite


Fuente:

https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/scavenger-post-exploitation-tool-for-collecting-vital-data/

The Dog Whisperer’s Handbook: una guía para BloodHound

La semana pasada, en la Cumbre de seguridad de Active Directory de ERNW Insight que tuvo lugar en Heidelberg (Alemania), Enno Rey (@Enno_Insinuator) y Walter Legowski (@SadProcessor) impartieron un taller de BloodHound. La mayoría de los mortales no tuvimos suerte de poder asistir al mismo, pero durante el mismo se comprometieron con los alumnos a escribir una Guía de capacitación que luego compartirían con la Comunidad... Y aquí está, recién sacada del horno y disponible para descargar: 

The Dog Whisperer’s Handbook – A Hacker’s Guide to the BloodHound Galaxy.
Este PDF es una colección de fragmentos y piezas que se dispersaron por la web y que recogieron en los últimos dos años mientras escribían el módulo CypherDog.

En el encontraremos una buena cantidad de información sobre cómo comenzar con BloodHound y Cypher y un montón de enlaces a recursos para llevar nuestro conocimiento aún más lejos.

El resumen del contenido de esta guía es el siguiente:

A - Concepto de BloodHound y evolución de la herramienta
B - Instalación de BloodHound e interfaz de usuario
C - Recopilación de datos e ingesta
D - Cypher básico y consultas comunes
E - Cypher avanzado y manipulación de DB
F - API REST y otras cosas interesan

Además, para aquellos que quieran jugar con BloodHound pero que no tienen un AD a mano para recopilar datos, también crearon algunos Datos de AD de ejemplo para alimentar a BloodHound.

Ahora ya no tienes excusas para sacar a pasear al perro ...

Sliver: un framework para implants muy interesante

Sliver es un sistema de Comando y Control (C2) creado para pentesters, redteamers y APTs avanzadas. Genera implants o implantes (slivers) que pueden ejecutarse en prácticamente todas las arquitecturas, y administrar estas conexiones de forma segura a través de un servidor central.

Sliver admite varios protocolos de callback, incluidos DNS, TCP y HTTP(S), para simplificar la conexión callback, incluso cuando esos molestos equipos azules bloquean dominios. También es posible tener múltiples operadores (jugadores) al mismo tiempo al mando de tu ejército de slivers.



¿Por qué Sliver y no Cobalt Strike, Metasploit u otros sistemas C2?

Sliver tiene muchas características que otras herramientas C2 no tienen, como:

- Generación de código dinámico con ofuscación por binario (en tiempo de compilación).
- Inyección de procesos local o remota.
- Asegura las conexiones cifradas del implante al servidor C2 (mTLS, HTTP(S) y DNS) y anti-anti-anti-forensics.
- Migración de procesos de Windows y manipulación de tokens de usuario.
- Soporta múltiples operadores controlando simultáneamente sus implantes.
- Autocompletado. Registro de auditoría completo en el lado del servidor.
- Múltiples y extensibles protocolos egress.
- Integración con Let's Encrypt.
- Ejecución en memoria .NET assembly.
- DNS Canary Blue Team Detection
- Es completamente de código abierto (licencia GPLv3).

Instalación del servidor

El servidor es compatible con Linux, Windows y MacOS. Sin embargo, se recomienda ejecutar el servidor en un host Linux porque algunas funciones pueden ser más difíciles de ejecutar en un servidor Windows o MacOS, aunque todas las funciones básicas integradas deberían funcionar bien.

Hay dos opciones, descargar la última versión para nuestra plataforma y simplemente ejecutar el binario o compilarlo nosotros mismos desde la fuente:

1. https://github.com/BishopFox/sliver/releases   
2. https://github.com/BishopFox/sliver/wiki/Compile-From-Source

La primera vez que ejecutemos el servidor tendrá que desempaquetar algunos activos, lo que puede demorar un minuto o dos, los inicios posteriores deben ser más rápidos.

"Hackeando" los avisadores de restaurantes con HackRF

Este video muestra cómo usar HackRF, ya sabéis nuestro sistema SDR de facto, para activar los típicos avisadores de restaurantes, esos que pitan para avisarnos que nuestro pedido está listo. También conocidos en inglés como 'restaurant pagers', los que se muestran en este video son fabricados por Long Range Systems y su frecuencia de operación es de 467.750 Mhz. Eso sí, tened en cuenta que este video no muestra ningún fallo de seguridad, HackRF simplemente genera el mismo paquete de datos que la estación base para activar los avisadores.


Referencias:

Nueva vulnerabilidad en "Vim" y "Neovim" permite la ejecución de comandos

No hace mucho el investigador Armin Razmjou descubrió un fallo que hace vulnerable a cualquier Linux que cuente con el famoso y querido editor de texto "Vim" y su Fork "Neovim", vulnerabilidad registrada como CVE-2019-12735.

(Si no eres de este mundo) Pero ... ¿Qué es Vim?

Vim, por sus siglas en Ingles "Vi improved" es una versión mejorada del editor de texto vi, presente en todos los sistemas UNIX. Su autor, Bram Moolenaar, presentó la primera versión en 1991, fecha desde la que ha experimentado muchas mejoras.

Vulnerabilidad

Este fallo es debido a una característica llamada "modelines", que básicamente le permite al editor de texto (incluyendo Neovim) cargar desde cualquier fichero una configuración personalizada.

Esta característica viene habilitada por defecto en estos editores que, si el usuario lo desea, la puede desactivar. El problema yace es que la mayoría de usuarios no lo hacen, ocasionando un posible control total a un atacante.

Como apoda el título de este artículo con un simple archivo de texto con un modeline específico y simple es posible conseguir ejecutar código directamente en la memoria del sistema. Aunque Vim y Neovim pueden ejecutar los comandos peligrosos dentro de un sandbox, al utilizar "source" en la línea del código se consigue salir de este aislamiento.

Winp: Una botnet desde tu casa

No hace mucho hice un pequeño aporte a la comunidad enseñando mi mini-proyecto para la creación de una botnet: "https://underc0de.org/foro/hacking/winp-una-botnet-desde-tu-casa!/", pocos usuarios pero con palabras que debo escuchar, requerían de documentación o algún tutorial acerca de esto, así que les traigo "Tutorial de Winp".

Antes de seguir debemos saber ... ¿Que es una botnet?

Una pequeña definición según wikipedia:

"Botnet es un término que hace referencia a un conjunto o red de robots informáticos o bots, que se ejecutan de manera autónoma y automática.​ El artífice de la botnet puede controlar todos los ordenadores/servidores infectados de forma remota."

¿Que es Winp?

Winp, es un proyecto de código abierto para la interacción múltiple de varias terminales remotas o... básicamente un script para la creación de una botnet.

Características

* - Cifrado híbrido (AES256 y RSA)
* - Múltiples conexiones
* - Uso de un proxy o Tor en el cliente
* - Auto-completado semi-inteligente
* - Uso sencillo y de forma simplificada
* - Rápido
* - Probado en Android (Userland), Linux y Windows (Por lo tanto esta disponible para dos plataformas muy usadas)

Instalación
Windows:

pip install win-inet-pton
pip install pyreadline
PyCrypto en windows se tiene que instalar "manualmente". Puedes descargarlo desde http://www.voidspace.org.uk/python/modules.shtml#pycrypto

Linux:

pip install readline
pip install pycrypto

Los dos:

pip install PySocks
pip install rsa
pip install terminaltables
git clone https://github.com/DtxdF/Winp 

Ofuscar código python con Intensio-Obfuscator

Intensio-Obfuscator es una herramienta, todavía en beta, para ofuscar código fuente en python. Reemplaza el nombre de las variables, clases y funciones por caracteres aleatorios de longitud definida, elimina comentarios, saltos de línea y agrega a cada línea un script aleatorio con valores siempre diferentes. Requiere Python >= 3.5 pero puede ofuscar python 2.x y 3.x.

Instalación

git clone https://github.com/Hnfull/Intensio-Obfuscator.git
cd Intensio-Obfuscator/intensio/

Caraterísticas

Param. Descripción
Replace Cambia todos los nombres de las variables, clases y funciones definidas y elimina los saltos de línea.
Padding Añade scripts aleatorios después de cada línea y elimina todos los saltos de línea.
Remove Borra todos los comentarios y los saltos de línea.
Secret Sólo para curiosos :)
Mixer lower
Genera palabras con 32 caracteres que reemplazan variables, clases y funciones definidas en el código fuente y en scripts aleatorios si se especifican las características 'replace' o 'padding'.
Mixer medium Genera palabras con 64 caracteres que reemplazan variables, clases y funciones definidas en el código fuente y en scripts aleatorios si se especifican las características 'replace' o 'padding'.
Mixer high Genera palabras con 128 caracteres que reemplazan variables, clases y funciones definidas en el código fuente y en scripts aleatorios si se especifican las características 'replace' o 'padding'.

Uso

-h, --help              -> show this help message and exit.
-f, --onefile           -> if only one file.
-d, --multiplefiles     -> if multiple files (project).
-i, --input             -> source file or directory - if multiple files indicate a directory that contain all your files.
-c, --code              -> language used in input file or directory. value: [python]
-o, --output            -> output file or directory that will be obfuscated - if multiple file indicate a empty directory that will contain all your files.
-m, --mixer             -> length level of variables mix output. values: [lower,medium,high]
-r, --replace           -> activate the 'replace' obfuscation feature.
-p, --padding           -> activate the 'padding' obfuscation feature.
-rm, --remove           -> activate the 'remove' obfuscation feature.
-s, --secret            -> activate the 'secret' bullshit feature.

Se pueden excluir variables, clases o funciones para que no sean tratadas por 'replace' editando intensio/exclude_python_words.txt.
Si por el contrario quieres incluir variables, clases o funciones que no están incluidos en la función 'replace', edita intensio/include_python_words.txt.

Es importante no poner los mismos nombres de variables locales, clases o funciones que los de keywords y/o librerías importadas de python.

Ejemplos
  • Múltiples archivos básico: python3.x intensio_obfuscator.py -d -i test/python/multiplefiles/basic/input/basicRAT -c python -o test/python/multiplefiles/basic/output/basicRAT -m lower -r -rm
  • Múltiples archivos avanzado: python3.x intensio_obfuscator.py -d -i test/python/multiplefiles/advanced/input/basicRAT -c python -o test/python/multiplefiles/advanced/output/basicRAT -m high -r -p -rm
  • Si solo se trabaja con un archivo el comando es el mismo que para varios, simplemente no hay que apuntar a un directorio sino a un archivo de Python directamente con los parámetros -i y -o, luego cambiar el parámetro -d por el parámetro -f.
Posibles fallos
  • Si una variable, clase o función tiene un nombre idéntico a una palabra entre '' o "" en una función print(), el texto tendrá el mismo valor que las variables, clases o funciones mezcladas.
  • Si una variable, clase o función tiene un nombre idéntico con una palabra después de # (comentario), el texto tendrá el mismo valor que las variables, clases o funciones mezcladas, pero si está entre """ or ''' sin una variable antes no se realiza ninguna sustitución.
  • Si se nombró una variable, clase o función de la misma manera que alguna palabra clave de python o nombre de función/clase de librerías de python importadas, puede aparecer un error. Hay que editar intensio/excluded_python_words.txt para agregar las variables para no ofuscar o cambiar los nombres.
Proyecto: https://github.com/Hnfull/Intensio-Obfuscator

Ya llega BlueKeep... aka ejecución remota de código en RDP

El pasado martes 14 de mayo Microsoft lanzaba un parche para la vulnerabilidad CVE-2019-0708 bautizada también como BlueKeep, una vulnerabilidad en Remote Desktop Services de Windows que permite ejecución remota de código sin pre-autenticación, mandando simplemente paquetes especialmente modificados.


Tal y como reza Microsoft en su boletín, Windows 7, Windows Server 2008 R2 y Windows Server 2008 son vulnerables, así como los Windows 2003 y Windows XP, estos últimos y como ya sabemos ya fuera de soporte.

Evidentemente la criticidad de la vulnerabilidad causó un gran revuelo porque además abre la posibilidad de nuevo de armar malware "wormable" o autopropagable del tipo WannaCry. El resultado ha sido una avalancha de búsquedas de un exploit funcional que todavía hoy no ha cesado. Pero antes de avanzar cualquier PoC entendamos un poco en qué consiste la vulnerabilidad...

Análisis técnico CVE-2019-0708

Nos enfrentamos a una vulnerabilidad del tipo use-after-free en termdd.sys, un driver de kernel que usa el RDP (Remote Desktop Protocol) de Microsoft. Para entenderlo un poco mejor vamos a ilustrar el inicio de una comunicación RDP gracias a un buen esquema que encontré en el blog de Ixia:


Primero, tenemos una conexión X.224 iniciada por el cliente que se utiliza para realizar una solicitud de conexión al servidor, seguido de una confirmación de esta conexión.

Las siguientes peticiones "MCS Connect Initial y GCC Create", dentro del intercambio de mensajes para la Configuración Básica, contienen información de creación de canales virtuales, información relacionada con la seguridad y otros parámetros de capacidad y compatibilidad del cliente RDP. Dentro hay un campo de 8 bytes terminado en un byte nulo llamado "channelName_N" que se usa para especificar el nombre del canal.

Llegan nuevos 0-days de Windows... ¡SandboxEscaper ha vuelto!

Así es ella, repentina como el primer rayo de una tormenta, sin campañas ni anuncios rimbombantes, sólo necesita un repositorio en Github para desatar de nuevo toda su ira. Hablamos de SandboxEscaper, la enigmática investigadora que el año pasado sorprendió con la publicación de varios 0-days de escalado local de privilegios (en adelante LPE) y que hace unas horas publicó el código del primero de una serie de cinco exploits que irán desvelándose en breve: cuatro para LPEs y uno para escapar del Sandbox de IE.

Evil is coming!:
https://github.com/SandboxEscaper/polarbearrepo/

El primer 0-day (Bearpe) publicado y el que vamos a ver en este post es una vulnerabilidad que se aprovecha de las funciones de asignación de permisos a la hora de importar las tareas programadas (.job) antiguas, y permite a un usuario regular ejecutar cualquier cosa como SYSTEM. 

Descripción

Los componentes de front-end de Task Scheduler, como schtasks.exe, son interfaces que permiten a los usuarios ver, crear y modificar tareas programadas. La parte de back-end de Task Scheduler es un servicio de Windows que se ejecuta con privilegios de SYSTEM. Una de las librerías utilizadas por el servicio del Programador de tareas, schedsvc.dll, tiene una función llamada tsched::SetJobFileSecurityByName(), que establece los permisos de los archivos jobs. Los permisos de los archivos jobs en el directorio %Windir%\system32\tasks se modifican para otorgar al usuario llamante permisos completos al archivo de jobs que han creado.

En el punto donde se llama a la función SetSecurityInfo(), el servicio del Programador de tareas tiene el token de seguridad NT Authority\SYSTEM. Esto significa que el servicio del Programador de tareas puede otorgar permisos de acceso de usuario total a los archivos que solo pueden ser controlados por SYSTEM u otras cuentas privilegiadas.

El código de de la PoC de SandboxEscaper usa los binarios schtasks.exe y schedsvc.dll de Windows XP para aprovechar estos niveles de privilegios al configurar los permisos de archivos. Las versiones de Windows anteriores a Vista usaban archivos jobs en el directorio %Windir%\tasks. Las versiones heredadas de schtasks.exe harán que estos trabajos se migren al directorio %Windir%\system32\tasks cuando esas versiones de los programas se ejecuten en plataformas modernas de Windows. Junto con el token de seguridad de SYSTEM usado por el servicio del Programador de tareas, se puede aprovechar este comportamiento de migración junto con los hard links para otorgar permisos completos de archivos protegidos a cualquier usuario en un sistema Windows.

Resumiendo, el código del exploit simplificado realiza por tanto lo siguiente:

CopyFile(L"bear.job", L"c:\\windows\\tasks\\bear.job",FALSE);
    system(command.c_str());
    DeleteFile(L"c:\\windows\\system32\\tasks\\Bear");
    CreateNativeHardlink(L"c:\\windows\\system32\\tasks\\bear", L"C:\\Windows\\system32\\drivers\\pci.sys");
    system(command.c_str());


Y paso a paso:

1.- Primero se copia la tarea (el fichero bear.job) en la carpeta de tareas antigua.
2.- Luego se ejecuta "schtasks /change /TN "bear" /RU username /RP password", esto dará como resultado una llamada al siguiente RPC "_SchRpcRegisterTask", que está expuesto por el servicio del programador de tareas.
3.- Después de eso se borra el archivo que se creó y se pone un hard link y se vuelve a ejecutar el mismo comando. De esa manera se llamará a  SetSecurityInfo en el enlace físico.

PoC

1. copiar polarbear.exe, bear.job, schtasks.exe, schtasks.dll de la carpeta "poc files" a una máquina virtual de prueba
2. ejecutar polarbear.exe pasando un nombre de usuario y contraseña de una cuenta local que no sea de administración. Ej. "polarbear.exe essbee polarbear"


Impacto

Se ha confirmado que el código publicado funciona en Windows 10 de 32 y 64 bits, así como en Windows Server 2016 y Windows Server 2019.

Obviamente para explotar la vulnerabilidad se necesita usuario y contraseña pero, una vez obtenido (guest por ej.) y al aprovechar el servicio del Programador de tareas de Windows, un atacante autenticado puede obtener acceso total a los archivos protegidos. Esto puede permitir un compromiso completo del sistema desde una cuenta de usuario de Windows limitada.

Por el momento no se han lanzado parches... y hace unas horas ya se han publicado dos nuevos exploits y quedan otros dos...

NAXSI: un WAF para NGINX

NAXSI es un WAF de código abierto, de alto rendimiento y de bajo mantenimiento para NGINX. El acrónimo significa Nginx Anti XSS y SQL Injection.

Técnicamente, es un módulo de Nginx disponible como paquete para muchas plataformas tipo UNIX. De manera predeterminada, lee un pequeño subconjunto de reglas sencillas (y legibles) que contienen el 99% de los patrones conocidos involucrados en las vulnerabilidades web. Por ejemplo, <, | o drop se supone que no son parte de una URI.

Siendo muy simples, esos patrones podrían coincidir con consultas legítimas, es deber del administrador de Naxsi agregar reglas específicas que incluyan en lista blanca los comportamientos legítimos. El administrador puede agregar listas blancas manualmente analizando el registro de errores de Nginx, o (recomendado) iniciar el proyecto con una fase de aprendizaje automático intensivo que generará automáticamente reglas de listas blancas con respecto al comportamiento de un sitio web.

En resumen, Naxsi se comporta como un firewall que dropeará todo por defecto, la única tarea es agregar las reglas de ACEPTAR requeridas para que el sitio web de destino funcione correctamente.


¿Por qué es diferente?

Contrariamente a la mayoría de los firewalls de aplicaciones web, Naxsi no se basa en una base de firmas como un antivirus, y por lo tanto no puede ser evitado por un patrón de ataque "desconocido".

¿En qué se ejecuta?

Naxsi debería ser compatible con cualquier versión Nginx. Depende de libpcre para su compatibilidad con expresiones regulares, y funciona muy bien en NetBSD, FreeBSD, OpenBSD, Debian, Ubuntu y CentOS.

Más info:

- Documentación
- Algunas reglas para el software principal
- Nxapi/nxtool para generar reglas.

Proyecto: https://github.com/nbs-system/naxsi

The hacker's hardware toolkit: un catálogo con más de 100 gadgets para hackers

El gran Yago Hansen (@yadox) ha decidido compartir "The hacker's hardware toolkit" que fue presentado en #HITBAMS2019 y #HITBHaxpo. Se trata de un catálogo con una gran colección de dispositivos de hardware para hackers, pentesters y red teamers.


Incluye más de 120 gadgets clasificados en ocho categorías diferentes, para que sea más fácil buscarlos:
  1. Mini Computers: La mejor selección de mini PCs, mini placas base, etc. Las mejores herramientas para manejar todos los demás periféricos de hardware de tus proyectos. 
  2. RF: Las mejores herramientas para hackear, analizar, modificar o responder a cualquier señal de radiofrecuencia. Herramientas para hackear controladores inalámbricos, GPS, teléfonos celulares, señales satelitales, etc. 
  3. Wi-Fi: El kit de herramientas para un experto en Wi-Fi como Yago. Estas herramientas permiten el sniffing en modo monitor, enumeración, inyección, etc. Algunas herramientas como deautenticadores y amplificadores solo deben usarse en entornos de laboratorio. 
  4. RFID / NFC: Bonita colección de herramientas profesionales y para principiantes para investigar sobre las tecnologías RFID y NFC basadas en tarjetas contactless LF (baja frecuencia) y HF (alta frecuencia), etiquetas y tarjetas. Herramientas de hacking para controles de acceso, garajes, tiendas, etc. 
  5. HID / Keyloggers: HID (hardware input devices) como los ratones y los teclados USB están abiertos a un ataque de inyección de pulsaciones de teclas (keystrokes). Muchos de estos dispositivos como rubberducky, badusb, badusb ninja, etc. están aumentando sus capacidades y efectividad. Los keyloggers de hardware siguen siendo una de las mejores opciones para la captura de credenciales. 
  6. Network: Los routers pequeños, los taps y otros dispositivos de red similares basados en Linux pueden ser el compañero perfecto para un pentesting interno. Aquí encontraremos muchos mini routers basados en OpenWRT / LEDE que se pueden personalizar para pentesting de red. 
  7. BUS: Hay muchas tecnologías y protocolos de bus diferentes, y un hacker de hardware debe poseer muchas herramientas para descubrir y "hablar" con dichos buses. Algunas de las categorías incluidas aquí son: hacking de automóviles, hacking de placas base y PCB, industrial, etc. 
  8. Accesorios: No son suficientes solo las herramientas anteriores para crear nuestro dispositivo de hacking propio. Si vamos a construir un sistema funcional, también necesitaremos muchos accesorios como baterías, cargadores, gps, sensores, DC-DC, equipos de laboratorio, etc.
El catálogo puede descargarse en formato PDF desde aquí.

Nota del autor: Aclarar que NO es un catálogo comercial, incluso si se ve así. Yago no tiene ningún interés personal en vender ninguna de las herramientas mostradas, sólo compartir muchas de las herramientas que ha usado para diferentes propósitos de hacking. Cualquier herramienta que no esté disponible para ser comprada online, será excluida del catálogo. Todas las herramientas muestran un precio aproximado y una tienda online donde se puede comprar. Todos los códigos OCR incluyen el enlace a una tienda online que se envía a Europa y, por supuesto, no son maliciosos.

Proyecto y términos para contribuciones: https://github.com/yadox666/The-Hackers-Hardware-Toolkit

Zombieload: nuevos bugs que permiten extraer información de procesadores Intel

Varios investigadores de distintas universidades han encontrado una nueva clase de vulnerabilidades en los procesadores de Intel que pueden usarse para robar información confidencial directamente del procesador.

Los errores recuerdan a otros de canal lateral como Meltdown, Spectre o Foreshadow, que explotaron una vulnerabilidad en la ejecución especulativa, una parte importante de cómo funcionan los procesadores modernos. La ejecución especulativa es una técnica de optimización que Intel agregó a sus CPU para mejorar la velocidad de procesamiento de datos y el rendimiento. Digamos que esta técnica ayuda a los procesadores a predecir en cierta medida lo que una aplicación o sistema operativo podría necesitar en un futuro próximo, lo que hace que la aplicación se ejecute más rápido y más eficiente. El procesador ejecutará sus predicciones si son necesarias, o las descartará si no lo son.

El ataque ha sido bautizado como "ZombieLoad" porque toma su nombre de "carga zombie", una cantidad de datos que el procesador no puede entender o procesar adecuadamente, lo que obliga al procesador a pedir ayuda al microcódigo del procesador para evitar un bloqueo. Las aplicaciones generalmente solo pueden ver sus propios datos, pero este error permite que los datos se filtren a través de esos límites. Los investigadores dijeron que ZombieLoad filtrará cualquier dato actualmente cargado por el núcleo del procesador. Intel dijo que los parches al microcódigo ayudarán a borrar los buffers del procesador, evitando que se lean los datos.

En la práctica, los investigadores demostraron en un video que los fallos se podían explotar para ver qué sitios web visitaba una persona en tiempo real, pero se podían reutilizar fácilmente para capturar contraseñas o tokens de acceso que se utilizan para iniciar sesión online de la víctima:


Compila y recorre las instrucciones en ensamblador de un programa con penguinTrace

penguinTrace es una herramienta que nos permitirá escribir código y ver cómo se ejecutan las instrucciones que lo componen. El objetivo es ayudar a las personas a comprender cómo se ejecutan los programas, o mejorar la comprensión del ensamblador.


Al escribir programas en C, es posible hacer que el compilador genere el ensamblado generado o desensamblar un binario para ver las instrucciones. Sin embargo, ver las instrucciones en forma estática no muestra el flujo a través del programa. Usando un depurador, se puede recorrer el programa, pero los depuradores proporcionan una gran cantidad de funciones y, por lo tanto, puede ser complicado mostrar las instrucciones que se están ejecutando.

La intención de penguinTrace es proporcionar una interfaz simple para compilar y recorrer un programa. También está diseñado para admitir diferentes arquitecturas, por ejemplo, ejecutarse en una Raspberry Pi (AArch64), así como en x86_64. Por esta razón, penguinTrace se ejecuta como un servidor web al que se puede conectar desde un navegador. Esto es más liviano que ejecutar un editor/depurador gráfico y significa que puede ejecutarse sin necesidad de un monitor. Tenéis más detalle aquí.

penguinTrace permite ejecutar código arbitrariamente como parte de su diseño. Por defecto, solo escuchará las conexiones desde la máquina local. Solo debe configurarse para escuchar las conexiones remotas en una red de confianza y no estar expuesto a la interfaz. Esto puede mitigarse ejecutando penguinTrace en un contenedor Docker:

docker build -t penguintrace github.com/penguintrace/penguintrace


Una vez que se construye penguinTrace, al estar integrado en un contenedor se puede ejecutar directamente así:

docker run -it -p 127.0.0.1:8080:8080 --tmpfs /tmp:exec --cap-add=SYS_PTRACE --cap-add=SYS_ADMIN --rm --security-opt apparmor=unconfined penguintrace penguintrace

FSP: herramienta que simula procesos de sandboxing para que no infecten nuestro sistema

Normalmente los desarrolladores de malware programan sus artefactos para que no se disparen si detectan que están dentro de una sandbox o una VM, o incluso la presencia de procesos de análisis. ¿Y si aprovecháramos ésto para proteger nuestro sistema? La idea está clara, simular que nuestra máquina es un sistema de análisis de malware para no infectarnos.


Fake Sandbox Processes (FSP) es un pequeño script en Powershell que simulará procesos falsos de análisis, sandbox y software de VM que algunos malware intentarán evitar. Podemos descargar el script original hecho por @x0rz aquí o una versión posterior optimizada de Phoenix1747.

Características del script

- Algunos tipos de spyware (normalmente avanzados) pueden dejar de ejecutarse correctamente siempre que se ejecuten los procesos creados.
- Requisitos: Powershell (preinstalado en Win 7 y posteriores), eso es todo.
- No hay carga del sistema.
- Fácil de usar.

Características del instalador

- Instala automáticamente el script en el directorio de inicio automático, de modo que no tengamos que ejecutarlo cada vez que volvamos a iniciar sesión.
- Requisitos: Sólo PowerShell.
- Viene también con un desinstalador para purgar todos los archivos.
- Todo incluido en un pequeño paquete offline.
- Actualizador opcional incluido.

Uso

Clic derecho en el archivo y elegir "Ejecutar con PowerShell"
~O~
Abrir la consola y pegar este comando (no olvidar poner la ruta correcta):

Powershell -executionpolicy remotesigned -F 'Your\Path\fsp.ps1'

Después de presionar enter, podremos elegir iniciar o detener todos los procesos.

Autoinicio

Para iniciar automáticamente el script, el autor hizo además un instalador: fsp-installer.bat, basta con ejecutarlo:


Proyecto: https://github.com/Phoenix1747/fake-sandbox

Comprometen más de 29 botnets de IoT con credenciales débiles

Un hacker con nick 'Subby' se hizo con más de 29 botnets de IoT en las últimas semanas haciendo fuerza bruta sobre los paneles de backend de sus servidores C2, debido a que éstos usaban credenciales débiles.

"Ahora, esta teoría ha sido llevada a la práctica por un threat actor llamado Subby, que ha hecho fuerza bruta al menos contra 29 IoT C2s y los ha comprometido utilizando credenciales extremadamente triviales", escribió Ankit Anubhav, investigador de seguridad de NewSky Security. "Según lo compartido por el threat actor, se puede ver que las credenciales utilizadas son bastante débiles".

Subby le dijo a Anubhav que algunos de los C2 asociados con las redes de bots de IoT estaban usando credenciales muy comunes, incluyendo "root: root", "admin: admin" y "oof: oof".


En una entrevista con Anybhav, Subby explicó que la mayoría de las redes de bots de IoT que él hackeaba fueron creadas por script kiddies que habían seguido tutoriales online.

"Es obvio por qué esto está sucediendo. Un gran porcentaje de operadores de botnets simplemente siguen tutoriales que se han extendido en la comunidad o están disponibles en YouTube para configurar su botnet. Al seguir estos tutoriales, no cambian las credenciales predeterminadas. Y si cambian las credenciales, la contraseña que suministran es generalmente débil y, por lo tanto, vulnerable a fuerza bruta", dijo Sabby a Anybhav.

Subby explicó que obtuvo el control de un total de más de 40.000 dispositivos en solo una semana, un "poder de fuego" desconcertante que podría ser objeto de abuso por parte de varios threat actors.

"En la primera semana de fuerza bruta, superé los 40.000 dispositivos. Posiblemente fue un número bastante inflado debido a las duplicidades. Está bien documentado que a los operadores de redes de bots les gusta aumentar su contador de bots. Estimo que el número está más cerca de 25.000 dispositivos únicos. Pude obtener un gráfico de tráfico de red fiable producido del tráfico generado de todas las redes de bots combinadas y fue un poco menos de 300 gbit/s", continúa Subby.

Sabby explicó que inicialmente hackeó las botnets de IoT para ver la eficiencia de usar fuerza bruta contra paneles de administración de C2 para hacerse con una red de bots, en lugar de usar exploits.

En definitiva, Sabby demostró que es muy fácil para los actores construir botnets de IoT que podrían usarse para muchas actividades maliciosas.

Fuente: A hacker has taken over at least 29 IoT botnets

QR-game: "hackea" una base de datos mediante códigos QR

Lo prometido es deuda, lo tenía pendiente publicar y aquí os traigo el detalle y código del juego de códigos QR que llevamos a Mundo Hacker Day 2019.

Como os dije en la crónica del congreso, la idea fue de un compi Amine Taouirsa al que le comenté que quería implementar una versión propia y llevarla también al evento. El juego se inicia generando un ticket en un impresora térmica con un código QR al registrar a un usuario en una base de datos SQLite. Luego, el usuario tiene que leerlo con su móvil y ser capaz de generar otros códigos que deben ser leídos por la cámara de una Raspberry Pi para conseguir primero acceso a la base de datos y segundo la contraseña del usuario 'admin'.


Los componentes que forman parte del "QR-Game" son:
- Arduino Uno: con un LCD 16x2, potenciómetro, switch, altavoz y resistencias.
- Raspberry Pi 3: con cámara JZK.
- Impresora térmica USB de 58mm
- Soportes y portátil.

Mi versión se basa en el proyecto "Crystal Ball' del libro de proyectos del Starter Kit de Arduino y su esquema mostrado abajo, añadiendo además un altavoz para reproducir un sonido o melodía al leer un código con la cámara, resetear o completar el juego.

Iniciación al reversing de firmware: extracción del sistema de archivos

No son poco frecuentes las noticias acerca de la aparición de backdoors presentes en miles y miles de dispositivos. Su descubrimiento, muchas veces explotado por atacantes malintencionados, suele ser el resultado de un análisis exhaustivo del firmware correspondiente. Si nunca os habéis enfrentado a este tipo de ejercicio, en el blog de 15/85 Security daban una breve introducción para extraer el sistema de ficheros de un binario, una buena piedra de toque:

1.- Descarga de firmware de prueba, en este caso la versión 1.14.04 de la cámara D-Link modelo DCS-932L:

$ wget ftp://ftp2.dlink.com/PRODUCTS/DCS-932L/REVA/DCS-932L_REVA_FIRMWARE_1.14.04.ZIP

$ unzip DCS-932L_REVA_FIRMWARE_1.14.04.ZIP
Archive:  DCS-932L_REVA_FIRMWARE_1.14.04.ZIP
  inflating: DCS-932L_REVA_RELEASENOTES_1.14.04_EN.PDF 
  inflating: dcs932l_v1.14.04.bin   

2.- Para empezar echamos un vistazo a las strings con 10 o más caracteres imprimibles:

$ strings -10 dcs932l_v1.14.04.bin | more
NetInitTcp
NetTcpSend
NetReceive
send_syn_ack
send_reset
ArpTimeoutCheck
HttpHandler
mpfd_decode
do_httpsvr
rf      - read/write rf register
rf r <reg>        - read rf register
rf w <reg> <data> - write rf register (reg: decimal, data: hex)
Signature: DCS-930            932L  Release 1.11 (2011-05-31)
*** failed ***
relocate_code Pointer at: %08lx
Please choose the operation: 
   %d: Load system code to SDRAM via TFTP. 
   %d: Load system code then write to Flash via TFTP. 
   %d: Boot system code via Flash (default).
   %d: Entr boot command line interface.
   %d: Load Boot Loader code then write to Flash via Serial. 
   %d: Load Boot Loader code then write to Flash via TFTP. 
 Please Input new ones /or Ctrl-C to discard
    Input device IP 
    Input server IP 
0x80200000
0x88001000
0x80100000
    Input Uboot filename 
    Input Linux FileSystem filename 
0x80800000
    Input Linux Kernel filename 
Entering HTTP server.
Entering program & boot linux.
Erase linux block (0x%x ~ 0x%x)
Erase linux block (0x%x ~ 0x%x
### ERROR ### Please RESET the board ###
Warning: Abort rw rf register: too busy
Warning: still busy
Error: rw register failed
rf reg <%d> = 0x%x
*** Error: D+/D- is 1/1, config usb failed.
config usb
Watchdog Reset Occurred
******************************
Software System Reset Occurred
Software CPU Reset Occurred
============================================ 
Ralink UBoot Version: %s
-------------------------------------------- 
(Port5<->None)
DRAM component: %d Mbits %s
DRAM bus: %d bit
...
...

3.- Ahora usamos binwalk, me atravería a decir la herramienta de facto cuando nos enfrentamos a análisis de firmware. Al ejecutarlo directamente nos devolverá varios "hits" del binario:

$ binwalk dcs932l_v1.14.04.bin
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
106352        0x19F70         U-Boot version string, "U-Boot 1.1.3"
106816        0x1A140         CRC32 polynomial table, little endian
124544        0x1E680         HTML document header
124890        0x1E7DA         HTML document footer
124900        0x1E7E4         HTML document header
125092        0x1E8A4         HTML document footer
125260        0x1E94C         HTML document header
125953        0x1EC01         HTML document footer
327680        0x50000         uImage header, header size: 64 bytes, header CRC: 0x88345E96, created: 2016-09-09 13:52:27, image size: 3804958 bytes, Data Address: 0x80000000, Entry Point: 0x803B8000, data CRC: 0x531E94DE, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "Linux Kernel Image"
327744        0x50040         LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 6558763 bytes

Mirando la primera línea, vemos que binwalk encontró un string U-Boot en 106352, ya sabéis, el cargador de arranque. Y por supuesto, en 327680, podemos ver un encabezado de uImage que nos indica que encontraremos la imagen del kernel del SO en un archivo LZMA que comienza en 327744.

Crónica de #MundoHackerDay 2019

El miércoles 24 de abril estuvimos en Mundo Hacker Day, la sexta edición del evento que organizan desde Mundo Hacker y que este año tuvo lugar en Kinépolis en Madrid. Tuvimos la suerte de ser invitados junto con otras comunidades y conferencias del panorama nacional y por ende la oportunidad de reencontrarnos y conocer a colegas que comparten con nosotros una misma pasión: el hacking. Allí estuvieron @workinghackers @hackandbeers @HackOnURJC @Honey_SEC @secadm1n @CONPilarZgz @tomatinacon @HackSolidario @qurtubacon @EuskalHack @FAQinCongress @mariapitadefcon:


Pocas veces podemos encontrarnos tantos en un mismo espacio así que la experiencia fue genial. Además, también preparamos varios "juegos" para los que os pudisteis acercar a conocernos o charlar con todos nosotros y, como muchos me pedistéis más detalle o simplemente para los que no tuvisteis la oportunidad de asistir, os dejo un resumen de cada uno de ellos.

Reto 30: TweetDB

Nuestro colega, el bot de Hackplayers que se encarga de las RRSS de la comunidad, ha evolucionado a tal nivel que es capaz de desarrollar sus propias aplicaciones, esta vez ha realizado una especie de almacén para guardar las estadisticas de los tweets más relevantes de la cuenta de @Hackplayers. Según comenta, esta aplicación ha sido programada correctamente y no entraña ningún peligro para el servidor que la ejecuta. ¿Eres capaz de demostrar lo contrario?


Aplicación: https://drive.google.com/file/d/1DRZ-HeedHx_ZYZGkG5LjqSKV09F0GmGH
Servidor: challenges.hackplayers.com 
Puerto: 1337/TCP
(Formato de la flag: HPYS{string})

Bonus: Mañana 24 de abril estaremos en Mundo Hacker Day, el primero que nos facilite la flag allí presencialmente será obsequiado con una estupenda camiseta de nuestra conferencia h-c0n (edición 2019)

PartyLoud: un sencillo script en bash para generar "ruido" en la red

PartyLoud es una herramienta para crear tráfico de Internet falso con el fin de impedir o mitigar el seguimiento en redes locales. Está basada en noisy.py y su objetivo es hacer mucho ruido en la red (en forma de peticiones http) para que sea más difícil rastrear tu navegación real.

Cuando ejecutamos el script, se inician varios hilos y cada uno realiza una solicitud HTTP diferente con Curl. Luego se analiza la salida para elegir la siguiente url, simulando una navegación. A menos que el usuario detenga el script (ya sea presionando Intro o mediante CTRL-C), permanecerá activo.


Podemos editar el fichero partyloud.conf para actualizar la lista de URLs utilizadas para iniciar la "falsa" navegación pero, eso sí, cada vez que añadamos nuevas direcciones más subprocesos se iniciaran, pudiendo llegar a convertirse en una "fork bomb". En futuras versiones se añadirá la posibilidad de limitar el número máximo de hilos para evitar este problema. La herramienta también va cambiando el "User Agent" de las peticiones para prevenir el fingerprinting.

En definitiva un script sencillo pero útil en algunos escenarios...

Usage: ./partyloud.sh [options...]

-l --url-list     read URL list from specified FILE
-b --blocklist    read blocklist from specified FILE
-p --http-proxy   set a HTTP proxy
-s --https-proxy  set a HTTPS proxy
-h --help         dispaly this help

Repo: https://github.com/realtho/PartyLoud

Evil Clippy: herramienta para crear documentos de MS Office maliciosos

Evil Clippy de Stan Hegt (@StanHacked) es un asistente multiplataforma para crear documentos maliciosos de Microsoft Office. Se presentó en la BlackHat Asia (28 de marzo de 2019) y puede ocultar macros VBA, pisar (en adelante stomp) códigoVBA (a través de P-Code) y confundir a las herramientas de análisis de macros.

Actualmente esta herramienta es capaz de obtener una macro predeterminada de Cobalt Strike que puede bypassear todos los principales productos antivirus y la mayoría de las herramientas de análisis de maldoc (mediante el uso de stomping VBA en combinación con nombres de módulos aleatorios).

Evil Clippy usa la librería OpenMCDF para manipular los archivos (Compound File Binary Format) de MS Office y abusa de las especificaciones y características de MS-OVBA. Reutiliza el código de Kavod.VBA.Compression para implementar el algoritmo de compresión que se usa en las secuencias de dir y módulos (consultar MS-OVBA para obtener las especificaciones relevantes).

Evil Clippy funciona perfectamente bien con el compilador Mono C# y ha sido probado en Linux, OSX y Windows.

Repositorio: https://github.com/outflanknl/EvilClippy

Instalación

Se puede encontrar un binario compilado multiplataforma en "releases".

En OSX y Linux hay que tener instalado Mono y ejecutar el siguiente comando desde la línea de comandos:

mcs /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe * .cs

Después para ejecutar Evil Clippy desde la línea de comandos:

mono EvilClippy.exe -h

En Windows hay que tener instalado Visual Studio. Luego, ejecutar el siguiente comando desde una ventana de comandos de Visual Studio developer:

csc /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe * .cs

Luego ejecutar Evil Clippy desde la línea de comandos:

EvilClippy.exe -h

RedHunt Linux Distribution (VM)

RedHunt Linux Distribution (VM) es máquina virtual para la emulación de adversarios y la caza de amenazas. Pretende ser una "ventanilla única" para todas las necesidades de emulación de amenazas y búsqueda de amenazas al integrar el arsenal del atacante y el conjunto de herramientas del defensor para identificar activamente las amenazas en el entorno.

Máquina base:

  • Lubuntu-18.04 x64

Herramientas:

Emulación de ataques:

Logging y monitorización:

Open Source Intelligence (OSINT):

Threat Intelligence:

Enlace de descarga de la VM:

La pastilla Roja/Azul del Cloud (by Lorien & Kneda #hc0n2019)

Al contratar los servicios cloud para el almacenamiento de nuestros archivos se nos permite disponer de estos en cualquier parte del mundo pero, ¿qué pasa si se vulnera la seguridad del cloud?. En la charla "La pastilla Roja/Azul del Cloud" Kneda demostró cómo se puede llegar a vulnerar la seguridad del cloud, llegando incluso a conseguir información personal, y Lórien intentó a través de la forénsica desenmascarar al autor. ¿Quién ganó realmente?

Tenemos un vídeo en el que se muestra la "batalla" pero sus autores nos han pedido que no lo subamos todavía porque volverán a dar la charla próximamente. Así que si quieres ser testigo presencial de nuestro particular Yin Yang aka rojo vs azul en ciberseguridad permanece atento!

Presentación:


Plugin para exportar proyectos de IDA Pro a Ghidra

Ghidra ha llegado dispuesto a "comerle la tostada" a IDA Pro. Sirva de claro ejemplo que hasta incluye un plugin para usarse directamente con el famoso desensamblador/debugger de Hex-Rays y que permite exportar bases de datos de IDA Pro como archivos XML para que luego puedan importarse a Ghidra.
Para agregar el plugin de este exportador a XML a la instalación de IDA simplemente hay que mover o copiar los directorios a <directorio de instalación de ghidra>/Extensions/IDAPro. El complemento está disponible para IDA Pro versiones 6 y 7.

Sus contenidos son:

- xml_exporter.py: es el plugin para exportar la base de datos IDA como archivo XML. Se debe colocar en la carpeta de plugins de IDA.
- xml_loader.py: es el cargador de IDA para construir una nueva base de datos utilizando un archivo XML. Carga el archivo de bytes y construye la base de datos de IDA utilizando el contenido del archivo XML. Debe colocarse en la carpeta de loaders de IDA.
- xml_importer.py: es un plugin para agregar datos de un archivo XML a una base de datos existente. NO cargará ningún dato binario del archivo de bytes. Agregará símbolos, comentarios, códigos, datos, funciones, etc. para las direcciones que existen actualmente en la base de datos. Se debe colocar en la carpeta de plugins de IDA.
- idaxml.py: es un módulo y una importación requerida para xml_exporter, xml_importer y xml_loader. Debe colocarse en la carpeta python de IDA.

Después de colocar los archivos indicados, veremos en IDA dos nuevos iconos en el menú de plugins:

mXtract: escanea volcados de memoria... para hacer el mal

En la mayoría de los entornos de Linux, los usuarios pueden acceder a la memoria de muchos procesos, lo que puede permitir a un atacante recopilar credenciales, claves privadas o cualquier cosa que se suponga que se ve, pero que está siendo procesada por un programa en texto no cifrado.

mXtract es una herramienta escrita en c++ y de código abierto que realiza y analiza volcados de memoria y se desarrolló precisamente como una herramienta ofensiva con el propósito principal es escanear la memoria en busca de claves privadas, IPs y contraseñas usando expresiones regulares.

Es una herramienta que puede resultar bastante útil y sus resultados serán tan buenos como las expresiones regulares que añadas en las búsquedas.    

Características

- Posibilidad de usar expresiones regulares
- Comprueba si el rango de memoria se puede escribir con los permisos actuales
- Salida en XML y HTML junto con la salida predeterminada (nombre del proceso: resultado)
- Capacidad para escanear todos los procesos o un PID específico
- Posibilidad de elegir secciones de memoria para escanear
- Capacidad para mostrar información detallada del proceso
- Capacidad para escanear archivos del entorno de proceso
- Los volcados de memoria eliminan automáticamente los caracteres Unicode, lo que permite el procesamiento con otras herramientas o manualmente.
Instalación

Descarga: git clone https://github.com/rek7/mXtract
Compilar: cd mXtract && sh compile.sh

Esto creará el directorio bin/ y compilará el binario como mXtract.

 ./bin/mxtract -h

Malware cracking (by Markel Picado #hc0n2019)

La charla que "rompió el hielo" en la segunda edición de h-c0n y personalmente una de las qué más me impactó por su temática fue "Malware cracking" de Markel. En ella mostró como después de un análisis profundo del código de las últimas muestras de Lokibot (uno de los infostealers más populares) se dió cuenta que un actor tercero las estaba vendiendo más baratas que la versión original: el secuestro de malware.

En la presentación mostró como se realizó el parche, cómo ese parche creó un error en todas las muestras de LokiBot utilizadas en las campañas más recientes y cómo esas muestras de LokiBot estaban relacionadas con la versión original de LokiBot.

Además, Markel nos enseñó dos herramientas que escribió: una para desinfectar un sistema comprometido con LokiBot y la otra es un script de Python capaz de generar nuevas muestras de LokiBot con paneles de control personalizados. El script de Python puede parchear muestras de la versión modificada de LokiBot y corregir el error generado por la modificación realizada por el tercer actor.

Presentación:


Highbox - Administra tus contraseñas sin necesidad de guardarlas

Hoy en día, la continua globalización marca la pauta del día a día, y el ámbito de la seguridad no ha sido la excepción, registrarse en un sitio, ya sea para obtener un servicio o acceso a cierta información, es algo bastante común, y a su vez el avance tecnológico exige contraseñas cada vez más complejas, la clásica contraseña de 8 caracteres es a día de hoy obsoleta, otro problema constante es administrar las diferentes contraseñas para cada sitio. Es aquí donde un administrador de contraseñas se vuelve fundamental.

Highbox es un administrador de contraseñas gratuito, que no almacena contraseñas, en su lugar son generadas automáticamente mediante un algoritmo matemático, esto lo vuelve bastante conveniente ya que solo se guarda información referente al inicio de sesión como: sitio web, email, teléfono, entre otros, además de utilizar la sincronización en la nube mediante una cuenta de Google para realizar respaldos, por lo que es fácil recuperar la información en todo momento.

¿Cómo funciona?
•    PUSH(AGREGAR UNA BOX)
•    POP(SACAR UNA BOX)


Highbox maneja el concepto de Box para referirse a las cuentas del usuario, así que cuando se agrega una Box lo único que se necesita hacer para configurarla es crear es un “Totem”, un tótem es una palabra o frase que es elegida por el usuario para representar su contraseña, ésta nunca será guardada en memoria y el largo o su contenido depende de la elección del usuario. Acompañando a su tótem, se introduce una “Hint” o pista, ésta si es almacenada y es básicamente otro juego de palabras escogido por el usuario que es utilizado como referencia para no olvidar el Tótem en futuras consultas. La Hint le dice al usuario cuál podría ser el Tótem, pero claro esto no debe ser explícito.

iBombShell: Pentesting EveryWhere & EverySystem (by Pablo González y Álvaro Nuñez #hc0n2019)

Cuando recibimos la propuesta de Pablo González y Álvaro Nuñez para hablar de iBombShell en la #hc0n2019 lo teníamos claro. Primero porque Pablo es super majo y uno de los grandes, conocido desde tiempos de Flu-Project, y segundo porque traían a nuestro congreso una herramienta que fue incluida en el arsenal del la BlackHat Europe de 2018.

iBombShell fue desarrollada desde el departamento de Ideas Locas del área del CDO de Telefónica en colaboración con el laboratorio de Innovación de ElevenPaths y se trata de una shell de post-explotación que tiene como objetivo poder usarse prácticamente en cualquier equipo con Windows, gracias a que es descargada desde el repo dinámicamente. Bueno, realmente tiene dos modos de ejecución, el denominado "everywhere" con Powershell y otro adicional llamado "silently" gracias a un C2 escrito en Python.

En la charla se mostraron escenarios reales, y actuales, de pentesting dónde iBombShell trabaja y aporta frescura a los diferentes procesos de un pentest. Tanto si tuviste la oportunidad de asistir al Congreso y ver las demos como si no, ¡te recomendamos probarla!

https://github.com/ElevenPaths/ibombshell

Presentación: