绕过AMSI的另一种方式

admin 2024年6月30日07:53:28评论1 views字数 1116阅读3分43秒阅读模式

之前打控制论的时候发过一个过AMSI的一种方式。现在我们来讨论另外一种方式,在这之前我们需要知道什么是AMSI。

什么是AMSI?

根据微软介绍AMSI是Windows 反恶意软件扫描接口 (AMSI) 是一种通用的接口标准,允许应 用程序和服务与计算机上的任何反恶意软件产品集成。AMSI 为最终用户及其数据、应用程序 和工作负载提供增强的恶意软件防护。说白了AMSI是微软实现的,用于扫描程序执行后内存中的情况,他也在powershell中实现, 所以我们一般去导入像一些mimikatz.ps1或者powerview.ps1文件的时候它会报此脚本包含 恶意内存,已被你的防病毒软件阻止。

绕过AMSI的另一种方式

那么既然他在powershell中实现的,那么也就是说当我们去加载脚本的时候会首先传递到 AMSI这里去检测的。现在让我们来了解一下amsi.dll。

Amsi.dll是什么?

AMSI的功能都是由amsi.dll文件来提供的,文件包含了Windows中初始化,配置以及使用 AMSI功能的函数,该功能还负责加载和卸载AMSI引擎。

绕过AMSI的另一种方式

AmsiOpenSession函数

我们需要绕过AmsiOpenSession这个函数,这个函数是amsi.dll文件中所提供的函数,如下图:

绕过AMSI的另一种方式

AmsiOpenSession这个函数可以为调用的应用程序创建新的会AMSI会话。其实绕过的根本原理就是在反编译amsi.dll中找到AmsiOpenSession这个函数,会发现它使 用了test指令来进行按位与运算,最后会将结果保存到标志寄存器中,比如说ZF标志寄存器。如果设置了零标记的话会通过JE指令跳转到错误分支,这里的错误分支指的是(此脚本包含恶意 内容。。。)

那么如果我们将JE更改为JNE指令的话,也就是不跳转的话,那么我们运行任何命令都不会出 现这种报错了。参考:https://github.com/SaadAhla/AMSI_patch 这里推荐一个很简单的项目。

https://github.com/surya-dev-singh/AmsiBypass-OpenSession

建议不要直接下载exe,因为已经被Defender标记了,所以我们尽量自己编译然后将里面的函 数名之类的替换一遍即可。

绕过AMSI的另一种方式

最后生成exe。可以看到已经不会被杀了。

绕过AMSI的另一种方式

现在我们打开一个powershell,其实也不需要管理员打开。当我们去执行invoke-mimikatz的时候发现被检测到了。

绕过AMSI的另一种方式

然后我们使用我们刚才生成的绕过AMSI的程序 后面加上你这个powershell的pid即可。可以看到这样就成功了。已经从上面的包含恶意内容变成了直接报错了。

绕过AMSI的另一种方式

原文始发于微信公众号(Relay学安全):绕过AMSI的另一种方式

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月30日07:53:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   绕过AMSI的另一种方式http://cn-sec.com/archives/2888166.html

发表评论

匿名网友 填写信息