-
-
最近看到自制杀软自己的一些感悟
-
发表于: 2024-6-30 00:38 3138
-
首先表示一下自己理想的自制杀软形态
1.r0回调监控
创建onimageload回调当进程启动取ntdll中ldrloaddll地址 插入apc call ldrloaddll注入dll或者直接通常注入法
创建file callback
创建process notify
创建thread notify(可以直接判断远程线程注入等)
创建CmRegistryCallback(拦截注册表修改)
r0 hook
对富有“情趣色彩”的人 可以像360那样开vt 使用epthook 接管ssdt sssdt等手段 然而这并不是十分推荐的(这是一种bypass patchguard的手段) 除了这个 还可以hook idt等东西
可以对一些驱动进行iathook 处理一些特殊操作 这种对驱动的hook也可以当做没有
FSD Hook(保护磁盘等)
r0其他
有WFP驱动可以拦截流量发包
在过滤驱动的基础上进行回滚
2.注入进进程的监控dll内容包括
各种rop(至少要抗最经典的ekko) jop(至少检测无效call stack)检测
抗栈欺骗(至少要抗最经典的aceldr)
对ntvirtualmemory execute read write的重点关注(在执行的时候经过一系列判定 否则误报很高)
对Assembly反射加载(.net)的封锁
对动态解析shellcode的拦截
对远程apc和远程线程插入的拦截
生成行为的日志并传回主程序(使用pipe即可)使用自己的格式分析行为
至少要简单的防止自己的hook被patch掉 且要至少要每隔一段非固定的时间检查一次钩子是否存在(比如检查自己的jmp之类的还在不知)
抗简单的reflectionloader (如hook ntwriteprocessmemory 判断buffer是否为pe文件)
对syscall后续操作的监控与拦截 syscall并不是一个高危的东西 比如vmp就用了类似与天堂门的wow64 syscall 所以不仅要检测(检测是比较容易的) 还要知道他用syscall干了什么
对 VEH 的各类操作 如利用veh构造在断点中的rop 利用veh与dycdllload进行内存隐藏 vehhook的滥用是蛮严重的 但是不是直接扫描是否有vehhook 这是要分析操作的
对特殊的dll或函数进行防护 如bypass amsi是通过patch实现的 就防护patch(对一些不需要ExecuteReadWrite且表面看上去不那么高危的利用clr特性patch的 适当的可以自己打打补丁)
3.接口使用 amsi etw-ti
4.对rpc service的滥用注意
5.有一个足够用的静态引擎 之所以说是足够用 因为静态杀不算被杀 所以静态引擎足够用就行 这里推荐对codesection的fuzzyhash并对比 以及一些别的按照微软解析pe文件的方法后与自己收集的库求相似度
也推荐特征码 个人做好特征码 做好yara 也能很好
6.有一个够用的自我保护
至少要防御ring3关闭吧 至少给自己一个ppl的tag吧
防护ring0关闭没有意义 因为防不住
7.对lsass进行句柄降权保护 和 加上ppl的tag(ps:微软让用户开 我直接让他开 很合理吧)
8.内存扫描
可以利用驱动readmemory 然后用和静态差不多的引擎进行扫描就行了 区别不大
可能唯一的区别就是 如果不想要很卡的话 注入的dll在进程为类似waiting的状态(可以判断各个thread) 的时候才给主进程发送内存扫描请求
ps:个人 也就是自制 一般来说没能力做机学 所以不考虑svm向量机等
这些感悟是由平时的一些简单对抗和看到b站某up主的自制杀软得来的
看着界面和拦截貌似很高级
但是实际上没有对抗能力
也就是我们说的纸老虎
github上面有项目 名为pyas 有兴趣了解这款玩具的可以看看 但是也只限玩玩了 嗯
如有错误 欢迎指出
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
- 记一次调用ETW-TI 2761
- [分享]一个MiniFilter的遍历 3471
- 最近看到自制杀软自己的一些感悟 3139
- [原创]分析一个由DCRAT二开而得的远控木马 3841
- [原创]新人第一篇 (一个通用的简单反远控技术) 11533