
CUDA APIを介してGPUメモリにリフレクティブペイロードを隠蔽し、スリープ中にホストメモリを消去して、VEHハンドラーを使用して実行可能メモリを復元することで、メモリフォレンジックスを回避します。
1- まず、いくつかの構造体をセットアップして初期化し、VEハンドラーを実行します。
2- 次に、ステージレスペイロードを実行します。リフレクションがどこに配置されるかを知るには、必ずステージレスを使用する必要があります(私はcobalt strikeを使用しており、DLLリフレクティブローダーを使用します)。私たちが気にするのは2nd stageだけです。
それが実際のペイロードだからです。
このステップにはトリックは一切追加していません。virtualallocとRWXセクションだけです。
3- ペイロードがスリープに入ったら、ペイロードをGPUメモリにコピーし、実際のメモリ内のペイロードをクリーンアップします。
4- スリープが完了すると、VEHは例外(EXCEPTION_ACCESS_VIOLATION)を処理し、メモリの権限をPAGE_EXECUTE_READWRITEに再設定して、GPUからペイロードを元の場所に戻します。
