免杀 WindowsDefender 之特征码定位
Defender现在的查杀能力和以往已经不能同日而语,依托于自家系统平台,拥有远大于其他产品样本数量的样本库,其内嵌的AMSI扫描接口也能很好的针对powershell等脚本形式的样本进行扫描查杀,而规避静态特征则是需要首先解决的问题。这篇文章的话主介绍一下如何在Defender下定位我们的静态特征,主要通过ThreatCheck以及二进制逆向工具(ida或者Ghidra)来完成:
静态字符串特征
我们这里就以Cobaltstrike生成的shellcode为例
unsignedchar buf[] = "xfcxe8x89x00x00x00x60x89xe5x31xd2x64x8bx52x30x8bx52......."
将上述shellcode写入代码并生成一个exe文件,然后使用ThreatCheck扫描:
ThreatCheck.exe -f poc.exe -e Defender
可以看到我们的shellcode特征被成功定位到,如果你的代码可能存在多个特征,多次扫描定位即可。
代码序列特征
代码序列特征其实也是一种特殊的静态字符串特征,只不过没法直接辩识出来,所以我们需要逆向工具,对照查找:首先定位到特征码代码序列:
然后你可以用IDA或者Ghidra搜索对于的特征字节即可,基本就能找到你的哪段代码是有特征的。
基本原理
1.AMSI扫描 AMSI扫描接口位于Amsi.dll模块中,原型如下:
HRESULT AmsiScanBuffer(
[in] HAMSICONTEXT amsiContext,
[in] PVOID buffer,
[in] ULONG length,
[in] LPCWSTR contentName,
[in, optional] HAMSISESSION amsiSession,
[out] AMSI_RESULT *result
);
你可以在你的代码中直接调用这个接口来进行扫描,buffer参数即为你想要扫描的内容内存区域,返回值存放在result,扫描结果一般为:
typedefenum AMSI_RESULT {
AMSI_RESULT_CLEAN,
AMSI_RESULT_NOT_DETECTED,
AMSI_RESULT_BLOCKED_BY_ADMIN_START,
AMSI_RESULT_BLOCKED_BY_ADMIN_END,
AMSI_RESULT_DETECTED
} ;
2.Defender扫描 调用Defender扫描可以通过命令行调用MpCmdRun.exe来实现:
MpCmdRun.exe -Scan-ScanType3-File test.exe -DisableRemediation-Trace-Level0x10
具体的命令解释,可以看官方文档:https://learn.microsoft.com/en-us/defender-endpoint/command-line-arguments-microsoft-defender-antivirus
这是一个纯粹,开放,前沿的技术交流社区,成员主要有互联网大厂安全部门任职的成员,乙方红队专家,以及正在学习入门的小白等,社区涉及的领域知识包括但不限于渗透,免杀开发,红蓝对抗,安全建设,考试认证,岗位招聘等等方面,还可以结识很多志同道合的朋友,提升自己的技术栈,开阔视野,提升眼界👇👇👇
欢迎加入交流圈
扫码获取更多精彩
原文始发于微信公众号(黑晶):免杀 WindowsDefender 之特征码定位
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论