终生 AMSI 绕过 | Amsi-Killer
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/ZeroMemoryEx/Amsi-Killer
基础知识
AMSI 是一个安全功能,全称为 "Antimalware Scan Interface",它允许应用程序和脚本将文件和数据流提交给本地防病毒软件进行扫描。这个项目的目的是绕过 AMSI 功能,使得应用程序和脚本可以在不被本地防病毒软件检测到的情况下执行某些操作,比如运行恶意软件。该项目包含两个部分,一个是 Opcode Scan,用于寻找需要修改的代码,另一个是 Patch,用于实际修改代码。
终生 AMSI 绕过
操作码扫描
-
我们通过搜索每条指令的第一个字节来获得跳转指令的确切地址,即使面对目标数据集的更新或修改,这种技术也是有效的。
-
例如 :
| 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”
