Cómo crear un dispositivo flash autoarrancable para conectar y comprometer un controlador de dominio Windows / directorio activo

Desde la versión 2.15, el módulo PowerShell de DSInternals soporta completamente Windows PE, la versión gratuita y minimalista de Windows. Esto significa que todas las cosas "chulas" que se pueden realizar con la base de datos de Active Directory ahora pueden hacerse desde una unidad flash de arranque o una imagen ISO, incluyendo:

- Dumpear los hashes NT, claves Kerberos y contraseñas en texto plano a partir de archivos Ntds.dit.
- Modificar el SID History de las cuentas de usuarios y grupos.
- Modificar el ID del Grupo Primario de cuentas de usuario.
- Extraer las claves DPAPI de backup de dominio.


Acceso requerido

Estas acciones, por supuesto, requieren que el atacante tenga al menos alguno de los siguientes:

- acceso físico a un controlador de dominio (DC).
- conocimiento de las credenciales del controlador de gestión de placa base (BMC) del DC
- acceso administrativo a un DC virtualizado.

En un mundo ideal, sólo los administradores de dominio deberían tener acceso al core de la infraestructura del AD, pero la realidad está lejos de ser perfecta.

La creación de los medios

Para crear un dispositivo de arranque de Windows PE cargado con el módulo DSInternals, sigue estos pasos:

1.- Instala Windows Assessment and Deployment Kit (ADK), incluyendo la característica de Windows PE.

2.- Haz clic en Inicio y escribe "deployment". Botón derecho en 'Deployment and Imaging Tools Environment' y selecciona Ejecutar como administrador.

3.- Crea una copia de los archivos de Windows PE. Especifica x86 o AMD64:
copype amd64 C:\WinPE_amd64

4.- Monta la imagen de Windows PE:
Dism /Mount-Image /ImageFile:"C:\WinPE_amd64\media\sources\boot.wim" /index:1 /MountDir:"C:\WinPE_amd64\mount"

5.- Añade el soporte de PowerShell a Windows PE indicándolo en los componentes opcionales junto con los language packs asociados:
Dism /Add-Package /Image:"C:\WinPE_amd64\mount" /PackagePath:"C:\Program Files\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab"  
Dism /Add-Package /Image:"C:\WinPE_amd64\mount" /PackagePath:"C:\Program Files\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-WMI_en-us.cab"
 
Dism /Add-Package /Image:"C:\WinPE_amd64\mount" /PackagePath:"C:\Program Files\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-NetFX.cab"  
Dism /Add-Package /Image:"C:\WinPE_amd64\mount" /PackagePath:"C:\Program Files\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-NetFX_en-us.cab"
 
Dism /Add-Package /Image:"C:\WinPE_amd64\mount" /PackagePath:"C:\Program Files\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-Scripting.cab"  
Dism /Add-Package /Image:"C:\WinPE_amd64\mount" /PackagePath:"C:\Program Files\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-Scripting_en-us.cab"
 
Dism /Add-Package /Image:"C:\WinPE_amd64\mount" /PackagePath:"C:\Program Files\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-PowerShell.cab"  
Dism /Add-Package /Image:"C:\WinPE_amd64\mount" /PackagePath:"C:\Program Files\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-PowerShell_en-us.cab"

6.- Añade el módulo PowerShell de DSInternals a la imagen de Windows PE copiándolo dentro del directorio C:\WinPE_amd64\mount\Windows\system32\ WindowsPowerShell\v1.0\Modules.

7.- Añade los drivers de dispositivo a la imagen de Windows:
Dism /Add-Driver /Image:"C:\WinPE_amd64\mount" /Driver:"C:\DriversToEmbed" /Recurse

8.- Configura PowerShell para iniciarse automáticamente en el arranque creando un archivo llamado winpeshl.ini en la carpeta C:\WinPE_amd64\mount\Windows\system32, que contenga este texto:
[LaunchApps]
wpeinit.exe
powershell.exe, -NoExit -NoLogo -ExecutionPolicy Bypass

9.- Crea un fichero ISO que contenga los ficheros de Windows PE:
MakeWinPEMedia /ISO C:\WinPE_amd64 C:\WinPE_amd64\WinPE_amd64.iso

Se puede usar el mismo comando para crear un dispositivo flash autoarrancable o VHD.

Pensamientos finales

Como se ha visto, es bastante sencillo crear una unidad flash de arranque que se pueda utilizar para comprometer un dominio de Active Directory a través de un DC físicamente accesible. Una de las precauciones que un administrador de dominio puede tener es cifrar todos los DC utilizando BitLocker u otra herramienta que cifre todo el volumen. La implementación de RODC en las sucursales más pequeñas es también una buena idea. Las nuevas características de Windows Server 2016, las MTP virtuales y máquinas virtuales fortificadas, también parecen muy prometedores en lo que respecta a la seguridad de DCs.

Fuente: https://www.dsinternals.com/en/dumping-modifying-active-directory-database-bootable-flash-drive/

Un cliente Tor que ocupa sólo 50kb, mediante el uso de MS CryptoAPI

Mini-tor de Petr Beneš es una utilidad / prueba de concepto para el acceso a contenidos de Internet y servicios ocultos (.onion) a través de routers de Tor. El objetivo de esta herramienta es tener un tamaño lo más pequeño posible (actualmente ~50 kb, comprimido con UPX ~ 24kb), que logra mediante el uso de Microsoft CryptoAPI en lugar de embeber directamente OpenSSL.

Uso

Acceso a contenidos de Internet a través de mini-tor:
Mini-tor.exe "http://torstatus.blutmagie.de/router_detail.php? FP=847b1f850344d7876491a54892f904934e4eb85d"

Acceso a contenidos de servicio oculto a través de mini-tor:
Mini-tor.exe "http: //duskgytldkxiuqc6.onion/fedpapers/federndx.htm"

Observaciones

Como se he dicho anteriormente, esta aplicación es una prueba de concepto. Podría haber errores y, sin ningún tipo de duda, no es un sustituto seguro de Tor.

Compilación

Compila mini-tor mediante Visual Studio 2015 update 3. El archivo de Visual solución está incluido. No se requieren otras dependencias.

Licencia

Todo el código del repositorio es de código abierto bajo la licencia MIT. Consulta el archivo LICENSE.txt.

Github: https://github.com/wbenny/mini-tor

Cyber Grand Challenge (CGC), el primer torneo de hacking del mundo... entre máquinas!

"El enfoque actual de la ciberseguridad depende de los expertos en seguridad informática: ellos identifican nuevas amenazas y fallos y los corrigen a mano. Este proceso puede tardar más de un año desde la primera detección hasta la implementación de una solución, y para entonces los sistemas críticos ya han podido ser comprometidos. Este ciclo de reacción lenta ha creado una ventaja ofensiva permanente.

El Cyber Grand Challenge (CGC) busca automatizar este proceso de ciberdefensa, lanzando la primera generación de máquinas que pueden descubrir, probar y corregir los defectos del software, en tiempo real y sin ninguna ayuda. Si tiene éxito, su velocidad y autonomía podrían algún día derribar la ventaja estructural del ciberdelito
".

Como acabáis de leer se trata del primer torneo de hacking del mundo... entre máquinas!

El objetivo de este torneo es averiguar si la inteligencia artificial de las máquinas puede superar incluso a los mejores hackers de carne y hueso.

El Cyber Grand Challenge (CGC) lo organiza DARPA (Defense Advanced Research Projects Agency's) y las finales tendrán lugar entre las dos mayores conferencias de hackers: la Black Hat USA y DEF CON el 4 de agosto en Las Vegas.

Para obtener una invitación al evento los finalistas debieron presentar el 3 de junio un sistema autónomo capaz de encontrar y corregir un número determinado de vulnerabilidades. Los premios serán considerables: el primero será de 2 millones de dólares, mientras que el segundo y tercero obtendrá 1 millón y $750,000, respectivamente.

Estaremos pendientes del resultado de esta "guerra de máquinas": https://www.cybergrandchallenge.com/

pd. ¿Llegará el día en que los hackers dejen de ser humanos... literalmente?

httpoxy o cómo con CGI y después de 15 años todavía se puede sobrescribir HTTP_PROXY remotamente...

Lo sabe hasta Bill Gates: los sistemas Linux/Unix utilizan la variable de entorno HTTP_PROXY que permite especificar un servidor proxy (IP -URL- y puerto) para usarse de forma genérica desde la shell u otras aplicaciones como elinks, lynx, wget, curl, etc.

Por otro lado y maldita casualidad, en CGI y según reza su RFC 3875 se añade automáticamente el meta tag "HTTP_" para especificar el protocolo, por lo que si añadimos en la petición HTTP una cabecera "PROXY" probablemente sobrescribiremos la variable de entorno HTTP_PROXY del servidor víctima, consiguiendo así especificar un proxy falso y facilitando un ataque MiTM.

Podéis verlo más claro y ya de paso comprobar si vuestro servidor es vulnerable fácilmente. Por ej. creáis un sencillo script CGI:

test.cgi:
#!/bin/sh
echo "Content-Type:text/plain"
​echo ""
echo "HTTP_PROXY='$HTTP_PROXY'"

y lo llamáis con el header extra “Proxy:”
curl -H ‘Proxy: AFFECTED’ http://my-server-name/cgi-bin/test.cgi
                                               
Si la salida es HTTP_PROXY='AFFECTED', estarías jodido comprometido, así de sencillo.
                                                       
Este bug ya se identificó y parcheo en 2001 (sí ¡¡hace 15 años!!) en perl y curl. Lo que pasa es que recientemente se está viendo que este fallo también existe en otros lenguajes y librerías y ha sido Scott Geary quien definitivamente lo ha traído a primera línea de fuego: le ha puesto el nombre 'httpoxy', un logo chulo, luces de colores y le están lloviendo CVEs como si no hubiera un mañana. La ocasión lo merece:
  •     CVE-2016-5385: PHP
  •     CVE-2016-5386: Go
  •     CVE-2016-5387: Apache HTTP Server
  •     CVE-2016-5388: Apache Tomcat
  •     CVE-2016-1000109: HHVM
  •     CVE-2016-1000110: Python
¡Y creciendo!

Así que si eres un administrador de un servidor web con CGI te recomendamos encarecidamente bloquear la cabecera 'Proxy' si no quieres que tu sistema empiece a usar un proxy malicioso, ya has visto lo fácil que es explotarlo...

Más información (must read) en:
- https://httpoxy.org/
- https://github.com/httpoxy

¿Ni idea de Linux? Echa un vistazo a este libro/guía gratuito: Ten Steps to Linux Survival

Quizás no seas un usuario avanzado en informática y ni mucho menos tengas experiencia en sistemas Linux, pero puede llegar el día que tengas que tratar con algo que no sea Windows para resolver un problema... o al menos tengas que hacer una primera evaluación hasta que llegue tu amigo/friki de turno y te solucione la papeleta.

Piénsalo, cada vez hay más sistemas Linux que pueden aparecer en tu tienda o comercio como máquinas virtuales o en la nube, incluyendo servidores web, bases de datos, gestores de dispositivos móviles, sistemas de vigilancia, etc., y a lo mejor basta con reiniciar un servicio para ahorrarse el dinero y tiempo de intervención de un servicio técnico.

Jim Lehmer ha creado un breve libro 'Ten Steps to Linux Survival, Essentials for Navigating the Bash Jungle' editado por O'Reilly y GRATUITO para que cualquier principiante pueda hacer las tareas más sencillas de diagnóstico y recuperación de un sistema Linux en 10 pasos esenciales:

- Conectarse a un sistema Linux con OpenSSH y Putty
- Listar los archivos y directorios y moverse dentro del sistema de archivos
- Inspeccionar el contenido del archivo sin cambiarlo
- Realizar búsquedas mediante el uso de comandos para localizar archivos específicos
- Utilizar el comando grep para buscar mensajes de error dentro de un archivo
- Determinar el estado del sistema en tiempo real para encontrar problemas subyacentes
- Examinar la utilización del disco y concentrarse en los archivos que ocupan espacio
- Transferir archivos sospechosos desde Linux a Windows para su posterior análisis
- Utilizar los comandos para iniciar, detener, reiniciar o incluso matar a los servicios que no responden
- Saber dónde encontrar ayuda cuando la solución de problemas no es suficiente

Fuentes:
- http://www.oreilly.com/programming/free/ten-steps-to-linux-survival.csp
- https://www.oreilly.com/learning/ten-steps-to-linux-survival

sherlocked - Transforma cualquier script en un ejecutable ELF protegido, cifrado con anti-debugging

Esta herramienta o "script packer universal" tiene un par de años y sigue siendo bastante útil... Sherlocked es un protector de scripts de cualquier tipo (python, perl, shell etc.) que utiliza un simple XOR con contraseña. Al menos que se utilice la opción -r, la clave se almacenará cifrada dentro del binario y se ejecutará sin tener que ponerla manualmente.

Básicamente Sherlocked toma el script, lo cifra y lo guarda como un fichero ejecutable ELF x86_64 junto con código anti-debugging (inicialmente stripea de la tabla de símbolos y comprime con UPX) .
En runtime dicho ejecutable descifra el script y temporalmente lo escribe en un fichero aleatorio en /tmp. Luego pasa el script y argumentos en línea de comandos al interprete para que se lance y finalmente borra el script.

El único "pero" si utilizamos un fichero con contraseña (opción -r) es que no soporta argumentos en cmdline, aunque se podría implementar.
Y ya que estamos, para mejorarlo también se podría usar un cifrado de stream real como SALSA20 en lugar del simple XOR y, para los molestos AV, modificar el stub con gen_shellcode.c para convertir el ./stub compilado a un fichero stub_shellcode.h.

Compilar:
make

Uso:
./sherlocked [-r]

Opciones:

<infile>     <-> The script file
<outfile>     <-> The protected output file
<key>        <-> The key string used to encrypt the script
[-r]         <-> Require the user who runs the protected executable supplies the key for it to run I.E ./script.elf <key>

Ejemplo de uso protegiendo un script en Python:

ryan@elfmaster:~/git/sherlocked$ ./script.py
hello I am a python script
ryan@elfmaster:~/git/sherlocked$ ./sherlocked script.py script.elf p4ssw0rd /usr/bin/python -r
[+] The user who executes script.elf must supply password: p4ssw0rd
[+] Encoding payload data
[+] Encoding payload struct
[+] Building msg program
[+] utils/stripx exists, so using it to strip section headers off of DRM archive
[+] /usr/bin/upx exists, so using it to compress script.elf
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2013
UPX 3.91        Markus Oberhumer, Laszlo Molnar & John Reiser   Sep 30th 2013

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
   5003224 ->    324236    6.48%  linux/ElfAMD   script.elf                    

Packed 1 file.
Successfully created script.elf
ryan@elfmaster:~/git/sherlocked$ ./script.elf
This message requires that you supply a key to decrypt
ryan@elfmaster:~/git/sherlocked$ ./script.elf p4ssw0rd
hello I am a python script
ryan@elfmaster:~/git/sherlocked$ 

Github: https://github.com/elfmaster/sherlocked

No os perdáis: http://www.bitlackeys.org/

La nueva forma de robar coches: hackeándolos con un ordenador portátil

Se veía venir... la policía y las aseguradoras informan de que empieza a haber numerosos casos de robos en los que usan ordenadores portátiles para hackear el arranque electrónico de los coches de última generación, cada vez con más electrónica y componentes informáticos.

Por ejemplo recientemente en Houston un par de ladrones fueron grabados por una cámara mientras usaban un ordenador portátil para arrancar un Jeep Wrangler 2010 y robarlo. La policía dijo que pudo haberse utilizado el mismo método en el robo de otros cuatro Wranglers de último modelo y Cherokees en la ciudad. Ninguno de los vehículos ha sido recuperado.

El National Insurance Crime Bureau, un grupo de seguros de la industria que rastrea los robos de automóviles en los EE.UU., dijo que se se está empezado a ver en los informes policiales un claro enlace entre los robos de coches nuevos y lo que llaman "misteriosos" dispositivos electrónicos.

"Creemos que se está convirtiendo en la nueva forma de robo de autos", dijo Roger Morris el vicepresidente del NICB. "Las fuerzas de seguridad públicas y los fabricantes deben ser conscientes."

Los informes recientes subrayan la aparición de nuevas vulnerabilidades en los coches a raíz de que se vuelven más informatizados y la tecnología avanzada. Fiat Chrysler, General Motors Co. GM, y Tesla Motors Inc. TSLA, han tenido que alterar la electrónica de sus automóviles en los últimos dos años después de enterarse de que podrían ser hackeados.

Puedes leer el artículo completo en WSJ.com.

Fuente: The ‘new way of stealing cars’: hacking them with a laptop

shard: una herramienta para comprobar si se utiliza la misma contraseña en varios sitios

Si hay algo imperativo en la sociedad digital actual es NO REUTILIZAR la misma contraseña para distintos servicios. La razón es simple: si uno de ellos es comprometido por ende cualquiera podrá obtener acceso al resto. No obstante, ya sea por la dificultad de recordar tantas contraseñas o por desconocimiento pura vagancia, son muchos los usuarios que todavía ponen la misma contraseña en varios de sus perfiles en redes sociales como Facebook, Twitter, LinkedIn, etc.

Y precisamente hoy vemos Shard, una herramienta para que los atacantes podamos detectar contraseñas compartidas desde la línea de comandos. Se trata de un fat jar (contiene todas las clases necesarias para hacerlo lo más portable posible) que si queréis podéis compilar vosotros mismos con sbt assembly, y también tiene una segunda implementación en python.

Uso

Sólo tenemos que indicar las credenciales a comprobar y la herramienta automatizará el proceso:
$ java -jar shard-1.2.jar -u username-here -p password-here
21:16:25.950 [+] Running in single credential mode
21:16:30.302 [+] username-here:password-here - Reddit, Instagram

También es posible probar múltiples credenciales (ummm leaks...) indicando un fichero de texto que contenga cada línea con el formato "username":"password". Incluso se puede personalizar el formato con la opción --format.
$ java -jar shard-1.2.jar -f /tmp/creds.txt
21:16:39.501 [+] Running in multi-credential mode
21:16:39.516 [+] Parsed 2 credentials
21:16:42.794 [+] username1:password1 - Reddit, Instagram
21:16:45.189 [+] username2:password2 - Facebook, LinkedIn, Twitter

Módulos

Actualmente soporta los siguientes módulos:
$ java -jar shard-1.2.jar -l
Available modules:
        Facebook
        LinkedIn
        Reddit
        Twitter
        Instagram

Aunque si queréis podéis añadir vuestros propios módulos fácilmente creando una nueva clase heredada de AbstractModule y añadiendo el módulo a ModuleFactory.
El AbstractModule tiene un método abstracto:

  def tryLogin(creds: Credentials): Boolean

Este método toma un objeto de credenciales y devuelve un valor booleano que indica un inicio de sesión correcto. Se recomienda el uso de la TwitterModule como plantilla.

Dependencias

     JSoup se utiliza para la comunicación HTTP y análisis de HTML
     spray-json se utiliza para el manejo de JSON

Github: https://github.com/philwantsfish/shard

Nueva técnica para hackear dispositivos móviles mediante comandos de voz ocultos en vídeos de Youtube

Un grupo de investigadores de la Universidad de Berkeley California y la Universidad de Georgetown ha ideado un método para hackear dispositivos móviles mediante el uso de comandos de voz ocultos en vídeos de YouTube.

Y no necesariamente tiene que reproducirlo la víctima, basta con que reciba el sonido desde otro ordenador, televisión inteligente, teléfono, tablet, etc., los comandos ocultos serán recibidos por los asistentes Google Now! o Siri que los filtrarán del ruido ambiente y los ejecutarán.

Los investigadores publicaron los detalles de la técnica en un artículo titulado "Hidden Voice Commands"

"En este paper exploramos cómo pueden ser atacados con comandos de voz ocultos que son ininteligibles para los oídos humanos pero interpretados como comandos por algunos dispositivos".

Los investigadores han publicado un vídeo PoC del ataque en caja negra que se lleva a cabo con presencia de ruido de fondo y el teléfono objetivo a una distancia de varios metros de los altavoces utilizados para reproducir el audio/ataque.

Los atacantes pueden ocultar varios tipos de comandos en los videos, incluyendo las instrucciones para descargar e instalar un código malicioso desde un host determinado.

Los investigadores también sugieren una serie de contramedidas, incluyendo una notificación cada vez que un comando de voz es recibido por el móvil o la adopción de un sistema de pregunta-respuesta verbal.

Para más detalles técnicos os recomiendo echar un vistazo a la página oficial del proyecto: http://www.hiddenvoicecommands.com/

13 herramientas para desofuscar código para reversers

Todo buen reverser guarda en su maletín un buen número de instrumentos para diseccionar malware. A continuación os mostramos una lista de 13 herramientas para desofuscar código (alguna ni las conocía) que recopilamos de Hacker List para todos los amantes y profesionales de la ingeniería inversa. Como siempre no dudéis en comentar si echáis en falta/conocéis más herramientas.

1. Balbuzard

Balbuzard es un paquete de herramientas de análisis de malware en Python para extraer patrones de interés a partir de archivos sospechosos (direcciones IP, nombres de dominio, encabezados de archivos conocidos, secuencias interesantes, etc). También puede romper la ofuscación de malware, como XOR, LOD, etc por fuerza bruta y comprobando esos patrones.

2. de4dot

de4dot es un desofuscador de .NET de código abierto (GPLv3) escrito en C#. Hace todo lo posible para restaurar el código empaquetado y ofuscado lo más parecido al original. La mayor parte de la ofuscación puede restaurarse completamente (por ejemplo las strings cifradas), pero no los símbolos ya que los nombres originales no son parte (por lo general) del conjunto ofuscado. Requiere dnlib para leer y escribir ensamblados.

3. FLOSS

FireEye Labs Obfuscated String Solver (FLOSS) utiliza técnicas avanzadas de análisis estático para desofuscar automáticamente las strings de los binarios de malware.

4. iheartxor

iheartxor se puede utilizar para ataques de fuerza bruta contra cadenas codificadas con xor con un patrón de expresión regular definido por el usuario (-r). El patrón de búsqueda por defecto es una expresión regular que busca datos entre bytes nulos ('\x00'). La herramienta también se puede utilizar para hacer un XOR plano en un archivo con -f (nombre de fichero) y -k (valor). El valor debe estar entre 0x0-0x255.

5. NoMoreXOR

NoMoreXOR ayuda a obtener una clave XOR de 256 bytes mediante el uso de análisis de frecuencia.