Solución al reto 31: hc0n Christmas CTF

El reto está disponible en la plataforma tryhackme:

https://tryhackme.com/room/hc0nchristmasctf


Primero escaneamos los puertos:

nmap -sT --max-retries 1 10.10.119.56 -F

Cuando hay first blood hacemos escaneo rápido con -F (top 100 puertos) para ir dándole a algo mientras dejamos un escaneo de todos los puertos con la opción -p-. En este caso no sale ningún puerto más de los que obtenemos con el comando anterior.


Empezamos buscando directorios en la web del puerto 80, para ello usamos ffuf que vuela!

https://github.com/ffuf/ffuf

ffuf -t 100 -u http://10.10.119.56/FUZZ -w /usr/share/wordlists/raft-large-files.txt -fc 403


El fichero robots.txt nos da varias pistas que usaremos más adelante.

RedRabbit - PowerShell ofensivo

RedRabbit es el par de BlueRabbit pero con scripts más ofensivos, creado para facilitar el reconocimiento y pentesting. Lo ideal es ejecutarlo en memoria lo que además nos permitirá tener siempre la última versión disponible:

powershhttps://github.com/securethelogs/RedRabbitell –nop –c "iex(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/securethelogs/RedRabbit/master/redrabbit.ps1')"


Las opciones disponibles son:

Opción 1: Reconocimiento rápido

Reconocimiento rápido mostrará detalles sobre el usuario, grupos, host y red. En orden:
  •     Usuario de listas
  •     Host de listas
  •     Enumera las interfaces de red
  •     Listas de grupos de usuarios (inc inc.)
  •     Muestra privilegios
  •     Enumera administradores locales
  •     Listas de usuarios locales
  •     Enumera usuarios registrados actualmente
  •     Muestra programas instalados
  •     Pruebas si se puede acceder a Internet
  •     Muestra las reglas locales de firewall

Satellite: sirviendo payloads "like a sir"

Satellite es un servidor que aloja payloads y que filtra las peticiones para garantizar que cada objetivo obtenga el más adecuado. Se trata de una alternativa a Apache y Nginx para alojar payloads, así como una alternativa a Caddy para la redirección de tráfico C2.

Está escrito en Go e implementa un proxy HTTP y un servidor JA3 basado en CapacitorSet, es capaz de filtrar el tráfico en función de la cantidad de veces que se ha servido un payload, tiene en cuenta los agentes de usuario, las firmas JA3, paths de prerequisitos y más.

Características destacadas

- Entrega de payloads basada en firmas JA3
- Tiempo de vida de payloads configurable
- Redirección de tráfico C2 (proxy)
- Posibilidad de "scriptear" las peticiones
- Facilidad en la captura de credenciales
- Filtrado global de peticiones

Instalación

Para probarlo en mi caso lo instalaré en Ubuntu aunque podeis encontrar instrucciones de instalación para otras plataformas en la Wiki del proyecto.  https://github.com/t94j0/satellite/wiki/Installation

Simplemente descargamos el paquete correspondiente y lo instalamos:
$ wget https://github.com/t94j0/satellite/releases/download/v0.0.1/satellite_0.0.1_linux_amd64.deb
$ sudo dpkg -i satellite_0.0.1_linux_amd64.deb

Configuración del servidor

Las rutas que Satellite buscará para cargar la configuración son las siguientes:

    $HOME/.config/satellite/config.yml
    $HOME/.satellite/config.yml
    /etc/satellite/config.yml

El "brazalete del silencio" contra Siri, Alexa y demás micrófonos "inteligentes"

Por diseño, los teléfonos y altavoces inteligentes tienen micrófonos que siempre están encendidos y escuchan las llamadas palabras de activación como "Alexa", "Hey, Siri" u "OK, Google". Solo después de escuchar esa señal se supone que deben comenzar a grabar. Pero sólo "se supone"... y no nos referimos sólo a que se pueda espiar de forma intencionada: varios estudios ya han demostrado que los dispositivos se activan docenas de veces diariamente y comienzan a grabar después de escuchar frases similares a sus palabras de activación, sobretodo a través de la TV, la radio u otras conversaciones.

Heather Zheng y Ben Zhao, profesores de informática en la Universidad de Chicago, junto con el profesor asistente Pedro Lopes han diseñado un "brazalete de silencio" o jammer que bloquea Amazon Echo o cualquier otro micrófono cercano que pueda escuchar las conversaciones del usuario.

El brazalete tiene 24 altavoces que emiten señales ultrasónicas cuando el usuario lo enciende. El sonido es imperceptible para la mayoría de los oídos, con la posible excepción de los más jóvenes y los perros, pero los micrófonos cercanos detectarán el sonido de alta frecuencia en lugar de otros ruidos.

"Es muy fácil grabar en estos días", dijo Lopes. “Esta es una defensa útil. Cuando tenga algo privado que decir, puede activarlo en tiempo real. Cuando reproduzcan la grabación, el sonido desaparecerá".

Durante la PoC, podemos observar como al encender el brazalete se genera un ruido blanco estático que enmascara las conversaciones:


Por el momento, el brazalete es solo un prototipo. Los investigadores dicen que podrían fabricarlo por tan solo $20 y un puñado de inversores ya han preguntado sobre su comercialización.

Habrá que estar pendientes.. ;)

Fuente: https://www.nytimes.com/2020/02/14/technology/alexa-jamming-bracelet-privacy-armor.html

Comparativa de herramientas de enumeración de subdominios

Hoy os traemos una interesante comparativa del italiano Ricardo Iramar con diversas herramientas de enumeración de subdominios:
La máquina usada para las pruebas fue una VM en VirtualBox con la instalación mínima de Ubuntu 18.04 LTS (64 bits). Todas las herramientas se instalaron siguiendo el procedimiento estándar proporcionado por la documentación oficial correspondiente y se ejecutaron con las opciones predeterminadas para realizar una comparación lo más justa posible. El dominio para las pruebas fue spotify.com y después de la ejecución de cada herramienta los subdominios encontrados se filtraron con:

while read i; do digout=$(dig +short ${i//[$'\t\r\n ']}); if [[ ! -z $digout ]]; then echo ${i//[$'\t\r\n ']}; fi; done < spotify.com.txt > spotify.com_valid.txt

Y estos fueron los resultados:


Amass pudo encontrar 489 subdominios válidos, casi el doble que la del segundo lugar Sublist3r (280 subdominios válidos). Pero, por otro lado, Amass fue la herramienta más lenta ya que tardó alrededor de 20 minutos en terminar (0.4 subdominios por segundo).

La herramienta más rápida fue Findomain que pudo encontrar 270 subdominios y tardó solo 6 segundos (casi 46 subdominios por segundo).

Como veis la herramienta Sudomy no funcionó correctamente a Ricardo, no se exactamente por qué razón. Nosotros la hemos ejecutado sin problemas y los resultados fueron 727 subdominios, de los cuales 210 fueron válidos, todo ello en 2 minutos y 38 segundos.

Finalmente en el enlace https://drive.google.com/open?id=1vc-5INapxD909GGUROcb86I_vdufS1Ha se puede encontrar una hoja de cálculo con los resultados completos y el resultado de cada herramienta utilizada durante la evaluación.

FuenteSubdomain Enumeration Tools Evaluation

Xencrypt: un crypter en PowerShell

Xencrypt de Xentropy (@SamuelAnttila) y SecForce (@SECFORCE_LTD) es un crypter en PowerShell que utiliza cifrado AES y compresión Gzip/DEFLATE para generar con cada ejecución una cantidad casi infinita de variantes para bypassear antivirus. Lo hace comprimiendo y cifrando el script de entrada y almacenando los datos como un payload en un nuevo script que descifrará y descomprimirá antes de ejecutarlo. En esencia, es para PowerShell lo que es un crypter PE.
 

Características

- Evade AMSI y todos los AV modernos de VirusTotal (en el momento de escribir este post)
- Comprime y cifra los scripts de PowerShell
- Tiene un overhead mínimo y a menudo incluso negativo (gracias a la compresión)
- Aleatoriza nombres de variables para ofuscar aún más el código auxiliar de descifrado
- Aleatoriza el cifrado, la compresión e incluso el orden en que aparecen las declaraciones en el código para obtener la máxima entropía
- Súper fácil de modificar para crear una variante propia de cifrado
- Admite capas recursivas (crypter que cifra la salida cifrada...), probado hasta 500 capas.
- Admite Import-Module así como la ejecución normal siempre que el script de entrada también lo admita

Uso

Import-Module ./xencrypt.ps1
Invoke-Xencrypt -InFile invoke-mimikatz.ps1 -OutFile xenmimi.ps1


Ahora tendremos un archivo cifrado xenmimi.ps1 en el directorio de trabajo actual y podremos usarlo de la misma manera que lo haríamos con el script original, por lo que en este caso:

Import-Module ./xenmimi.ps1
Invoke-Mimikatz


También admite capas recursivas a través del parámetro -Iterations.

Invoke-Xencrypt -InFile invoke-mimikatz.ps1 -OutFile xenmimi.ps1 -Iterations 100
 
Esto lo comprimirá y cifrará 100 veces y es útil para bypassear AV dinámicos porque tienen un tiempo de espera para analizar el código. Ahí no hace falta usar sleeps que algunos escaneos dinámicos puede omitir para llegar al final: tienen que atravesar toda la cadena para llegar al payload malicioso, lo que generalmente nunca ocurre, ya que normalmente caducan después de un segundo o dos o escaneo.

Sin embargo, los archivos pueden crecer en tamaño y generar el archivo de salida puede llevar mucho tiempo dependiendo de los scripts y el número de iteraciones solicitadas.

Proyecto: https://github.com/the-xentropy/xencrypt

#hc0n2020 : Crónica de la tercera conferencia de @Hackplayers

Logo h-c0n 2020
La tercera edición de nuestra conferencia h-c0n tuvo lugar los pasados 31 de enero y 1 de febrero y, como en las veces anteriores, voy a dar un repaso bastante informal y prácticamente gráfico a mis reflexiones ahora que todavía lo tengo reciente (y aún mantengo las agujetas cab**nes).

Ya sabéis que el escenario este año fue la Nave Madrid, una antigua fábrica de ascensores reconvertida a un sitio chulo y muy JRANDEEE para eventos. Nos acordaremos eso sí de su equipo gestor que nos mantuvo en vilo con algunas "cosillas" y sobretodo con la reserva de las aulas hasta el último momento, resarcidos sin embargo finalmente por dejarnos llevar grifos de cerveza a la cafetería :P

A izda. miembro de staff al borde de un ataque por la incertidumbre. A dcha. cervecería cafetería.

En cuanto a contenidos ya sabéis que nos venimos arriba y tuvimos cuatro tracks simultáneos (dos de charlas y dos de talleres), un ctf presencial, expositores, arsenal y una zona para otras comunidades y congresos. Os puedo asegurar que organizarnos en el staff para cubrir todo eso fue un auténtico desafío.

Write-up CTF NFC h-c0n 2020

Para resolver este reto hará falta hardware especial capaz de leer la tecnología NFC de las tarjetas que llevan las acreditaciones de acceso al evento de la h-c0n 2020 de Hackplayers. Es posible utilizar diferentes tipos de hardware tales como un dispositivo usb ya sea con chipset ACR122U o como en este write-up que se ha utilizado un dispositivo Proxmark3.

1. Identificando el tipo de tarjeta NFC

Lo primero es identificar el tipo de tarjeta. Lanzando comandos como “lf search” o “hf search” enseguida vemos que se trata de una tarjeta de alta frecuencia (hf – high frequency) de tipo Mifare Classic 1k.


Vemos que tiene el UID AB 1D A2 24. Aunque para la resolución del reto no es relevante. Todas las acreditaciones tienen los mismos datos y el mismo UID.

2. Lectura por defecto de los sectores

Ahora lanzaremos un comando para ver si podemos leer todos los sectores. “hf mf chk *1 ?”


Como podemos observar en la columna res, todo lo que está con el valor “1” es que se ha podido leer porque tenía una clave muy estándar como es el caso de la key ffffffffffff o aabbccddeeff y lo que está con “0” no se ha podido leer porque tiene una clave que no es estándar. Por lo que hemos podido leer todo a excepción de los sectores 002, 012 y 013 de la sección A de la tarjeta.