ベール フレームワークは、攻撃的なセキュリティ テスト中に使用するために設計されたツールのコレクションです。必要に応じて、 Mandiant のレッド チームは Veil-Framework を使用して目的を達成します。最も一般的に使用されるツールは Veil-Evasion です。これは、任意のスクリプトまたはシェルコードの一部を、一般的なウイルス対策製品による検出を回避する Windows 実行可能ファイルに変換することができます。
Veil 2.0 は 2013 年 6 月 17 日に公開されましたが、コア フレームワークはその日からほとんど変更されていません。フレームワーク自体にいくつかの変更が加えられましたが、これらは一般的に本質的にマイナーなものであり、変更の大部分は新しいプログラミング言語と新しいペイロード モジュールのサポートに関連しています。
Python での開発に数年を費やした後、Veil コードベースを再検討し、より効率的に開発できるバックエンド フレームワークの部分を特定しました。 6 か月後、コードベースをリファクタリングし、多数の更新を追加した後、 Veil 3.0を発表できることをうれしく思います。メイン メニューを図 1 に示します。
パイソン3
何よりもまず、Veil に対する最大のオーバーホールの 1 つは、Python のバージョンを Python 2 から Python 3 に更新することでした。Python 2 は 2020 年にサポート終了 (EOL) になる予定であるため、費用をかける意味はあまりありませんでした。 3 年以内にサポートが終了する言語で Veil の大規模な更新を実行する時間。
Python 2 から Python 3 への Veil の更新は、Veil 3 の作成で最も時間のかかる作業でした。2to3 ツールの実行はオプションではありませんでした。変換プロセスでは、基本的に Veil へのすべての変更を手動で確認する必要がありました。
Python 3 と Python 2 で Veil を開発する際の主な違いの 1 つは、シェルコードの処理方法と変更方法です。この問題を説明するために、図 2 は、実行時に復号化される暗号化されたシェルコードを含む Python 2 ベースのステージャーを示しています。
図 2 のコードは Python 2 では機能しますが、Python 3 では機能しません。具体的には、Python 3 では、復号化後にシェルコードをバイト配列に文字列エスケープする必要がなくなりました。 Python 3 の復号化の出力は、bytearray 内の元のクリア テキスト データであり、スクリプトの残りの部分ですぐに使用できます。図 3 は、同じ復号化ステージャーの Python 3 バージョンを示しています。
兵器
Veil の初期のバージョンは、Metasploit Framework のmsfvenomツールに依存して、Veil ペイロードのシェルコードを生成していました。しかし、Veil の最初のリリース後、これが問題を引き起こしました。 msfvenom の出力が変更され、msfvenom の出力を処理する Veil の機能が完全に失われました。問題を修正するためのパッチを提供した後、Veil チームは、制御できないツールに頼るのではなく、別のソリューションが必要であると判断しました。
したがって、 Veil-Ordnanceが開発され、2015 年にリリースされました。Veil-Ordnance は、Veil-Evasion ステージャーで使用するシェルコードを生成するツールです。 Veil-Ordnance の開発には、主に 2 つの利点がありました。
- Veil 開発チームは出力を管理しており、Veil-Evasion との将来の互換性の問題を防ぎます。
- Veil-Ordnance を使用すると、シェルコードの生成が高速になります。
以前は、Veil-Evasion と Veil-Ordnance は 2 つの別個のツールでした。図 4 に示すように、Veil 3.0 のリリースにより、そのような状況はなくなりました。
Veil 3.0 のユーザーは、msfvenom を使用してシェルコードを生成することができますが、Ordnance を使用するオプションも利用できるようになりました。 Ordnance は、シェルコードが接続またはリッスンする必要がある IP とポートをユーザーが提供すると、すぐにシェルコードを生成できます。 Ordnance は、最も一般的なペイロード タイプをサポートしています。
- リバース TCP
- リバース HTTP
- リバース HTTPS
- リバース TCP DNS
- リバース TCP すべてのポート
- TCP をバインド
これにより、Veil ユーザーは複数の選択肢から選択できます。msfvenom を使い続けるか、新しい組み込みツールである Ordnance を使用するかです。
追加言語
Veil 自体は Python で記述されていますが、処理されたペイロードと出力ファイルは他のプログラミング言語で記述できます。 Veil 3.0 では、2 つの追加言語がサポートされるようになりました。
- AutoIt3
- ルア
Lua ペイロードは、lua ランタイムを使用してコンパイルおよび実行する必要があるスクリプト形式でのみサポートされますが、Linux で実行される Veil 3.0 は AutoIt3 スクリプトを Windows 実行可能ファイルにコンパイルできます。 Veil 3.0 は、以前バージョン 2.0 でサポートされていた 7 つの言語もサポートしています。
- パイソン
- パワーシェル
- ハ
- C#
- パール
- ルビー
- ゴラン
環境検出
Veil 3.0 のもう 1 つの新機能は、Veil ペイロードが実行されているシステムに関する情報を確認する機能です。この機能は、シェルコードがターゲット システムでのみ実行され、エンゲージメント期間中に実行されるようにするのに役立ちます。ステージャーはこれらのチェックを実行し、指定された条件が満たされた場合にのみ、埋め込まれたシェルコードを挿入して実行します。図 5 は、この機能のオプションを示しています。
ユーザーは、ベール ステージャーに対して次のチェックを 1 つ以上指定できます。
- 被害者のマシンが参加する必要があるドメイン。
- ペイロードの有効期限が切れる日付。
- ペイロードを実行しているシステムのホスト名。
- ペイロードを実行するシステム上のプロセッサーの最小数。
- ペイロードを実行する必要なユーザー名。
複数のチェックを指定する場合は、すべてのチェックを満たす必要があります。そうしないと、ステージャーはシェルコードを実行せずに実行を停止します。
これは、Veil 3.0 のリリースに伴う主要な更新をカバーしています。質問がある場合、または問題が発生した場合は、 Veil の Github リポジトリにアクセスしてください。 Veil が私たちを助けてくれたのと同じように、あなたの評価をさらに進めるのに役立つことを願っています.
参照: https://www.mandiant.com/resources/blog/antivirus-evasion-reconstructed-veil-30
Comments