VOIDMAW というテクノロジー:メモリス・キャナーに対する新たなバイパス手法を提示

VOIDMAW: A New Bypass Technique for Memory Scanners

2024/10/21 SecurityOnline — マルウェア検出技術が進化するにつれ、それらの回避を試みる、攻撃者たちの手法も進化している。そのような手法の1つである VOIDMAW とは、悪意のコードを巧妙に隠蔽してアンチウイルス・ソフトウェアを回避する、革新的なメモリ・スキャン・バイパス技術のことである。VOIDMAW は、マルチスレッド・ペイロードをサポートし、すべての C2 (Command-and-Control) ビーコンと互換性があり、さらに、 .NET 以外のバイナリ・ファイルも実行できるため、攻撃者にとって強力なツールとなる。


VOIDMAW は、Dismantle と Voidmaw という、2つのプログラムで構成されている。

1. Dismantle

Dismantle は、VOIDMAW プロセスの最初の部分であり、Cobalt Strike ビーコンや、シェルコードに変換された実行可能ファイル (Mimikatz など) などのペイロードを、メモリに読み込んだうえで、その動作を記録していく。具体的に言うと、すべての実行された個々の命令と、そのメモリ内のオフセットが記録される。それらのデータを用いて生成されるヘッダー・ファイルは、次の段階で Voidmaw プログラムが試行する、ペイロードの実行に不可欠なものとなる。

Dismantle のステップは以下の通りである。

  • PAGE_GUARD 保護:このプログラムは、ペイロードを保持するメモリページに PAGE_GUARD 保護を設定する。この保護により、そのページでコードを実行しようとすると例外が発生する。
  • VEH (Vectored Exception Handler):VEH は、PAGE_GUARD により発生する例外を処理するためにインストールされる。VEH には、以下の2つの重要な役割がある:
    • 1. STATUS_GUARD_PAGE_VIOLATION の処理:実行された命令を捕捉し、PAGE_GUARD の保護を維持しながら、マップ構造に保存する。
    • 2.EXCEPTION_SINGLE_STEP の処理:各命令が記録された後に PAGE_GUARD を復元し、その後の命令が新しい例外を発生させることを保証し、継続的な命令の記録を可能にする。

すべての命令が記録されると、実行されたコードを隠すために、INT3 インストラクション (ソフトウェア・ブレークポイント) を用いた暗号化とマスクが処理される。この処理の出力は、以下を含むヘッダー・ファイルになる:

  1. マスクされた元のペイロード。
  2. 命令を復号化するために使用される XOR 暗号化キー。
  3. 暗号化された命令とオフセットを取り込んだ順序なしマップ。
  4. 2番目のプログラムである Voidmaw でマップを初期化するための InitMap 関数。
2. Voidmaw

Dismantle によりペイロードが処理されると、Voidmaw 実行の準備が整う。このプログラムは、Dismantle が生成したヘッダー・ファイルを使用して、ペイロードを動的に復号化し実行していくが、その際に、メモリス・キャナーによる検出を困難にする不可視性が維持される。

実行プロセスは以下の通りだ:

  • InitMap 関数:最初に Voidmaw は、InitMap 関数を呼び出して暗号化された命令のマップを初期化する。
  • メモリ割り当て:メモリ領域が作成され、マスクされたペイロードが、この領域に書き込まれる。
  • ベクタ例外ハンドラ (VEH) :Voidmaw は、プログラムの実行中にINT3 命令に到達するたびにトリガーされる EXCEPTION_BREAKPOINT を処理するために、新しい VEH をインストールする。

VEH が INT3 に遭遇すると、例外のオフセットがチェックされ、順序なしマップによる検索が行われる。その後も、暗号化されたアセンブリ命令が復号化され、インストラクション・ポインタで復元/実行される。その実行が完了すると、インストラクションは再び INT3 でマスクされ、一度に表示されるアセンブリ命令は1つだけになる。このプロセスが、すべてのスレッドに対して繰り返して実行されため、Voidmaw はマルチスレッド・ペイロードをシームレスに処理できる。

このテクニックにより、可視化される命令が常に1つに制限されるため、メモリ・スキャナーによる悪意のコード・シーケンス全体の捕捉は困難になる。

VOIDMAW は、メモリ・スキャナーを回避する高度なテクニックであり、マルウェア実行における新たな境地を開拓している。実行された命令を隠蔽する能力と、マルチ・スレッドのペイロードを処理する能力により、従来のアンチ・ウイルス防御を回避する優れたツールとなる。VOIDMAW は GitHub で入手できるオープンソースであるため、その技術は、研究から悪意にいたるまでの、幅広い用途で利用できる。

VOIDMAW は、回避技術の大幅な進歩を象徴している。従来のメモリ・スキャナを回避する能力は、セキュリティ専門家にとって懸念事項である。ユーザー企業にとって必要なことは、このような高度な技術を認識し、行動分析や異常検知などの積極的な対策を導入し、進化する脅威に対抗していくことである。