看流星社区

 找回密码
 注册账号
查看: 2517|回复: 1

小议“非法模块”与“第三方检测”的那些事儿(2)

[复制链接]

该用户从未签到

发表于 2013-4-27 09:31:16 | 显示全部楼层 |阅读模式
铸矛之人,必精造盾之术。
造盾之人,必解铸矛之术。

上一贴中简单说了一下非法模块的初级阶段的检测,其实还有更高级的检测模式,就是加载检测。
(1)中的所有的检测手段都可以通过重加载模块+抹掉PE+关闭模块相关句柄来实现回避
(重加载的代码,Winker同学发过了,就不重复了。)
但这种方法对于本帖所说加载检测通常是通过Hook 加载用API来实现,
比如ntdll!LdrLoadDll这样的API,
对于这种加载检测,通常对抗手段是无效的(隐藏无效,重加载无效),
只能依靠白名单或者监控开启时间来绕过。
如通过较早的注入手段注入可以绕过大部分加载监控方式的检测(比如 导入表注入,OEP注入,TLS注入...);
或者利用白名单,如SPI过滤或者输入法,
或者利用无法被监控的方式,如对knowndlls的section(lpk.dll的section)进行污染的方式注入。

同理对抗上也有通过驱动级ImageLoadNotifyRoutine来进行检控的(可以对抗早期OEP注入,TLS注入,导入表注入);
对于白名单上的注入,可以通过加强特征扫描来处理,或者云扫描;
对于Section污染,可以采用对KnowDlls的Section对应DLL进行HASH效验来检测。
至于更深层次的对抗,欢迎使用IGS的培训服务。

(2)本篇主要内容:初级第三方检测。

代码:
最常见是窗体类名的检测,如所有对CE的检测...
应用的API:FindWindowEx/FindWindow/GetWindow/EnumWindow
简单有效的对抗就是动态类名技术,
每次启动的窗体类名都不一样就可以了。
目前检测没有更好的方法检测窗体的说,不过据说可以检测具体窗体的Proc的里的代码来实现。

接着是进程枚举的检测,
通常检测使用的手法无非传统枚举(也有通过Task枚举的哦,亲~)
对抗方法核心层次进行断链(ActiveProcessLinks和SessionProcessLinks都断开)就可以了,
检测的升级则是CidHandleTable检测,
深入对抗则是抹掉CidHandleTable...
至于更深入的对抗其实际作用不大,不过JobList也是个最近流行的检测点。
当然如果真心说到进程枚举,其实直接通过核心层关键钩子来统计更简单更稳妥。

枚举完事后,都是查特征了,基本上就是内存,文件老一套的模式,
对于CE这类特殊的可能使用窗体布局或者窗口Proc的代码特征等,
对抗也基本老一套的作战,改改Object里的FileName什么的就好了,
或者干脆点拦截一下IoCreateFile搞定文件,
内存动态加密一下就好~
至于布局/Proc的特征,CE么,还是自己改改代码的为妙。

该用户从未签到

发表于 2013-4-27 22:38:32 | 显示全部楼层
注明老V,,
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-24 07:15

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表