前言
AMSI是微软用来对抗无文件攻击而开发的安全模块,是当前攻防对抗前沿的技术 之一
从15年AMSI出现,越来越多的杀软厂商接入了AMSI接口,当前市面上主流杀软均接入此接口
这给当时以powershell为主的红队工具致命打击,像Empire,等等
总体来说,由于AMSI仅仅是一个连接应用程序和杀软程序的通道,微软主要还是在defender上做各种对抗,针对通道本身的加固较少。
红队工具也寻找了另外一条出路就是.Net,使用C#开发的红队工具随之兴起。
随着以.NET
(C#)为基础的攻击技术的逐渐成熟
AMSI在.NET 4.8
引入了针对Assembly导入的内存扫描, 同时针对WMI的扫描也被加入到了AMSI当中
什么是AMSI
AMSI全称(Antimalware Scan Interface),反恶意软件扫描接口,他的本体是一个DLL文件
默认位置:c:\windows\system32\amsi.dll
它提供了通用的标准接口(COM接口、Win32 API)
这些接口中 Win32 API是为正常应用程序提供的,方便正常程序调用这些API针对用户输入做扫描。
COM接 口,是为杀软供应商提供的,方便杀软厂商接入自身针对恶意软件的识别能力
WIN32 API
AmsiCloseSession 关闭由 AmsiOpenSession 打开的会话。
AmsiInitialize 初始化 AMSI API。
AmsiNotifyOperation 向反恶意软件提供程序发送任意操作的通知。
AmsiOpenSession 打开可在其中关联多个扫描请求的会话。
AmsiResultIsMalware 确定扫描结果是否指示应阻止内容。
AmsiScanBuffer 扫描缓冲区中的内容中寻找恶意软件。
AmsiScanString 扫描字符串中的恶意软件。
AmsiUninitialize 删除 AmsiInitialize最初打开的 AMSI API 实例。
重点关注AmsiScanBuffer、AmsiScanString、AmsiUacScan
这三个函数
AMSI在Windows中的作用
AMSI在windows系统中被直接或间接的调用,主要分布在以下程序
1.用户账户控制
,也就是UAC(EXE、COM、MSI、ActiveX的安装)
%windir%\System32\consent.exe
2.Powershell
(脚本、交互式使用、动态代码求值)
System.Management.Automation.dll
3.Windows脚本宿主
wscript.exe cscript.exe
4.JavaScript、VBScript
%windir%\System32\jscript.dll %windir%\System32\vbscript.dll
5.Office VBA macros
VBE7.dll
6..NET Assembly
clr.dll
7.WMI
%windir%\System32\wbem\fastprox.dll