f1r3K0's Blog

欲买桂花同载酒

Anti-AV-tips

去年的几个笔记整理一下,一些不起眼的小技巧,核心思想就 – 知己知彼

1.前言

image-20241209100611334

之前画过一个简陋的图,主要是杀软和EDR主要功能模式,杀软为了实现这些功能必然要对PC执行各种操作,这些操作是包含从R3到R0的各种方法,做攻击侧技术研究时候也要从功能上入手做针对性研究对抗。

2.查杀方式

  • 静态查杀:主要基于hash和特征码,hash可以是文件的hash或导入表之类的hash,特征码可以是是PE头、pdb、全局字符串、互斥体之类的信息。
  • 动态查杀:基于API的监控和沙箱执行,杀软会通过对ntdll的关键API进行hook,实现对程序的API监控。另外可以在内核中注册一系列的回调函数实现对行为的监控。
  • 启发式查杀:多数杀软采用的是基于权重的启发式,核心就是一套加减分的规则,用于检测程序的潜在恶意行为,如程序在沙盒或模拟器环境运行,在此过程中有操作端口和通讯的函数,并将自身加载到启动项中等上述行为,则很有可能被判定为恶意,另外一些畸形区块也可触发。

3.杀软行为

杀软的基本功能包括:反病毒内核、扫描引擎、特征库、解包程序、模拟器、流量监控、浏览器安全插件、自我保护及更新等。首先我们可以先从相应的驱动着手,如下图 某杀软已经在system进程中加载了不同功能的驱动:

image-20241209110452361

猜测360FsFlt.sys=filescan_filter即文件过滤器相关驱动,就以该驱动为例。

通过导入表发现该驱动对进程、线程、注册表、系统调用、模块、对象均进行了相应的监测操作。

image-20241209112813393

image-20241209112843311

一系列过滤器相关函数来获取各种信息,可见该驱动是Minifilter文件监控:

image-20241209113113672

当我们进行敏感操作时,杀毒主程序拉起各种dll模块进行监测判断是否恶意

image-20241209114343035

以文件操作为例,可以看到有对文件操作的各种检测函数

image-20241209114853850

注册回调的部分伪代码

image-20241209115252019

4.核晶防护

通俗来说,核晶防护开启后会在机器上运行一个虚拟化沙箱,这时候我们运行的程序都会在沙箱内执行,我们可以利用自适应程序进行绕过,也是当下主流一种方法。为了系统的可用性,核晶不可能将所有程序都放到沙箱执行(例如本身就是虚拟化的程序,即各种模拟器等等),还可以利用部分白加黑来进行绕过。我们可以研究一下开启核晶后的杀软程序。

从安全防护中心主进程当中dump出内存,在内存中搜索我们上边分析杀软行为时从过滤器驱动中提取出的字符串

image-20241209121016856

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[UNICODE] 0x00003846: 温TN=TMOD文件名
[UNICODE] 0x00003860: PF=来源进程父进程文件名
[UNICODE] 0x0000387c: DLL_HIJACK=DLL劫持
[UNICODE] 0x000038a0: PA=程序参数
[UNICODE] 0x000038b0: CP=调用外部程序
[UNICODE] 0x000038c4: RID=强行修改规则ID
[UNICODE] 0x000038e0: QUERY_WITH=上行查询报文
[UNICODE] 0x00003904: AH=防黑加固
[UNICODE] 0x00003914: PT=进程链
[UNICODE] 0x00003924: DW=危险白进程
[UNICODE] 0x00003938: EI=扩展信息
[UNICODE] 0x00003948: IN=InternalName
[UNICODE] 0x00003968: SP=签名快速检查
[UNICODE] 0x0000397c: CQ=云引擎查询
[UNICODE] 0x00003990: CL=进程命令行比较
[UNICODE] 0x000039a8: XX=特征码比较
[UNICODE] 0x000039bc: MD5=MD5
[UNICODE] 0x000039cc: SC=签名公司
[UNICODE] 0x000039dc: PV=产品版本
[UNICODE] 0x000039ec: PN=产品名
[UNICODE] 0x000039fc: LC=版权声明
[UNICODE] 0x00003a0c: FV=文件版本
[UNICODE] 0x00003a1c: FD=文件描述
[UNICODE] 0x00003a2c: CN=公司名
[UNICODE] 0x00003a3c: SI=大小
[UNICODE] 0x00003a48: ON=原始文件名
[UNICODE] 0x00003a5c: FN=文件名
[UNICODE] 0x00003a6c: NONE=啥都不是

规则引擎在内存字段中未加密,继续搜索对应规则

一些Windows程序相关规则

image-20241209121117966

写死的net user/localgroup规则

image-20241209121145201

核晶主要是把程序进虚拟化沙箱降权,但是有些虚拟化相关程序无法在核晶模式下兼容,因此360势必要放开部分白名单程序,在内存中搜索雷电模拟器,即可发现核晶白名单程序,实现直接绕过核晶的规则引擎

image-20241209121219699

按照上边搜索出来的字段含义,任选一条,修改程序字段直接进行绕过

1
文件名dnplayer.exe 描述雷电模拟器 签名Shanghai Changzhi Network Technology Co., Ltd.

image-20241209121341623

5.总结

免杀手法千篇一律,更加了解杀软才能更方便我们在日常工作学习中对其做针对性对抗,希望水文能给读者带来一些思考……


© 2024 K