Mitre ATT&CK マトリックスには、クラシック プロセス インジェクション、プロセス ホロイング
、および プロセス ドッペルゲンジング
という 3 つのプロセス インジェクション手法があります。
プロセス インジェクションを使用するマルウェアの主な目的は、通常、ウイルス対策ソフトウェアによる検出を回避するか、権限昇格操作を実行することです。ここでは、主に最初の 3 つの方法について詳しく説明します。
1: 古典的なプロセス インジェクション (DLL インジェクション)
これは最も古典的な方法であり、プロセスも非常にシンプルかつ明確です:
OpenProcess -> VirtualAllocEx -> WriteProcessMemory -> CreateRemoteThread
#2: プロセス空洞化
##これは非常に古いメソッドであり、一般的に中国語では「操り人形プロセスの作成」と訳されます。このメソッドを使用して作成されたプロセスは、IE などの合法的なプロセスに偽装することができ、そのアイコン リソースと説明は、プロセス ハッカーを使用して表示できます。メモリ、デジタル署名はすべて IE 値です。これは、緊急対応者が調査中に発見するのが難しい場合があります。 このメソッドを簡潔な言葉で要約します。つまり、悪意のあるプロセスは、まず一時停止状態のプロセスを作成し、次に元のメモリ マッピングをキャンセルして、事前に準備された悪意のあるコードに置き換えてから、そのプロセスに対して操作を実行します。変更されたイメージ ファイル。リダイレクト後にプロセスの実行状態を復元します。 実装アイデア: 1. CreateProcess を通じてターゲット プロセスを作成し、パラメーター CREATE_SUSPENDED を渡してプロセスを一時停止します 2 . NtQueryProcessInformation を通じて、対象プロセスのメモリ内のイメージ ファイルのベース アドレスを取得します。 (PEB ブロック データ構造) 3. NtUnmapViewOfSection を通じてターゲット プロセスのメモリ データ (セクション) をクリアします。入力パラメータは、プロセス ハンドルとプロセスのベース アドレスです。イメージ ファイル
3: プロセス ドッペルゲンギング
これは、2017 年のヨーロッパ ブラック ハット カンファレンスで最初に提案された、比較的新しい注入方法です。この手法は、プロセス ホローイングと原理も性能も似ており、プロセス ドッペルゲンギングで作成されたプロセスをプロセス ハッカーでメモリ上に表示すると、そのアイコン リソース、説明、デジタル署名はすべて指定されたターゲット プログラムになります。 この方法は、Windows トランザクション (TxF) の特性を利用し、悪意のあるファイルを使用してトランザクション内の正当なファイルを上書きします。この時点では、トランザクションは送信されません (つまり、上書きは行われません)。ディスク)、次にセクション (現在のトランザクションのコピー)。セクション ハンドルを取得した後、トランザクションはロールバックされ、悪意のあるファイルがディスク上の正当なファイルを実際に上書きするのを防ぎます。その後、メモリ内のセクションのハンドルを使用してプロセスが作成されます。作成されたプロセスには、合法的な実行可能ファイルに関する情報が含まれています。 ご覧のとおり、トランザクションでファイルを上書きする必要があるため、このメソッドでは対象ファイルに対する書き込み権限が必要です。 実装アイデア: 1. TxF トランザクション オブジェクト (NtCreateTransaction) を作成します #2. トランザクション API を使用して正当な実行可能ファイルを開きます。つまり、ファイルをトランザクション オブジェクトに追加します (CreateFileTransacted) 3. 悪意のあるファイルを開き、そのファイルにメモリ領域を割り当てます (CreateFile、GetFileSizeEx -> NtAllocateVirtualMemory -> ; ReadFile) 4. トランザクション内の正規の実行可能ファイルをメモリ内の悪意のあるファイルで上書きします (WriteFile) 5. のセクションを作成します。現在のトランザクション (NtCreateSection)6. トランザクションをロールバックし、上書きされたばかりのファイルを正当な実行可能ファイル (NtRollbackTransaction) に復元します
7. メモリ内のセクションを使用してプロセスを作成しますオブジェクト (NtCreateProcessEx )
8. 悪意のあるファイルのエントリ ポイントを取得し、プロセス パラメーター ブロックを作成し、そのプロセス ブロックをプロセス メモリに書き込みます (NtQueryInformationProcess -> ; RtlInitUnicodeString -> RtlCreateProcessParametersEx)
9. PEB 内のプロセス パラメーター ブロックを更新し、対象のプロセス オブジェクトのスレッドを作成し、悪意のあるコードを実行します (NtCreateThreadEx)
対策:
手順よりフック この手法は、主要な関数 (NtCreateThreadEx など) を判断することで検出できます。
要約
上記 3 つの手法の進化から、いくつかの傾向がわかります。
第一点は、メモリの隠蔽能力がますます強くなっているということで、当初は全く隠蔽していなかったものが、今では法的プログラムに沿ってメモリ上で動作するようになりました。
2 番目のポイントは、ペイロードがメモリに解放される手段の検出がますます困難になっているということです。当初、ペイロードはメモリに直接コピーされていました。現在、攻撃者はいくつかの機能 (TxF など) を使用できるようになりました。 ) リリースプロセスをさらに隠蔽します。
3点目は、最終段階の主要な関数はほとんど変更がなく、ペイロードの解放がどんどん隠蔽されていく場合でも、メモリ上に解放されて実行が呼び出されることになります。限られた数の主要な関数をフックすることで、最終的なペイロードをダンプする必要があります。
その他の関連チュートリアルの推奨事項: Web サーバーのセキュリティ
以上がMitre ATT&CK マトリックスの 3 つのプロセス インジェクション手法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。