终生 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}

     

    ad1a1b7183213416

     

修补

补丁前

  • 该程序针对自身测试 RDX 的值。如果比较结果为 0,则程序执行跳转返回。否则,程序继续评估下一条指令

     

    ad1a1b7183213427

     

  • 我们无法执行“Invoke-Mimikatz”

     

    ad1a1b7183213436

     

补丁后

  • 我们修补第一个字节并将其从 JE 更改为 JMP,以便它直接返回

     

    ad1a1b7183213446

     

    ad1a1b7183213455

     

  • 现在我们执行“Invoke-Mimikatz”

     

    ad1a1b7183213506

     

标签:工具分享, 主机安全