锁首技术总结

本文作者:x-encounter (信安之路作者团队成员)

在公司实习也有一个月了,学到不少东西,不知不觉就要大四了,回首漫漫安全路,不禁感慨万千:我入安全的时间比较晚,大一大二跟着老师参加 Android 移动应用开发的比赛,大三开始学习安全,和大部分的人一样,始于 web 安全,当时是以视频为主,比如大家耳熟能详的黑麒麟(已经凉了)、小迪渗透等等,后来不知有一股神秘的力量莫名其妙的让我迷上了远控,之后又看了本《0day》,从此开始了底层二进制之旅,如果问我为什么一个搞 Android 开发的在后来会选择 PC 端的病毒分析,emmmm,大概这就是缘分吧……到现在我依然觉得病毒和外挂是计算机领域最吊的东西,C 语言是世界上最牛逼的语言。说了那么多就以对未来的期望作为结尾吧,但愿在未来依然可以感受到接受新知识时的心潮澎湃、受到挫折时的迷惘无助、柳暗花明后的“自怨自艾”,或许这就是所谓的初心吧!

其实扯了那么多就想说一句:开学啦!来给信安投稿吧!

简要分析

该驱动样本经过 VMProtect2.x 混淆,先让其加载到内核中,使其在内核展开之后 dump 出来。

接着修复 dump 后的节区

之后载入 ida,由于 VMP 将函数调用进行了混淆所以我们无法直观的查看函数调用,这里需要双机内核调式,动态查看 call 的是哪个内核 API。

该 Rootkit 一共注册了四个回调,进程创建回调,映像加载回调,注册表回调和关机回调,与锁首有关的回调为,进程创建回调和映像加载回调

进程创建回调函数代码如下

之后会分别获取进程创建回调函数列表和映像加载回调函数列表,并且调用 PsSetCreateProcessNotifyRoutine 将除自己外的其他回调函数全部清除,用于保护自身。

接着获取 NtSuspendProcess 并调用使当前进程挂起,调用 NtCreateFile 修改浏览器快捷方式中的命令行参数,锁定为 2345 导航站的首页,之后恢复进程,此时浏览器进程为 System 权限,逻辑如下

映像加载回调函数主要用于和杀软对抗,有些杀软的浏览器保护功能是通过向浏览器中注入相关的动态链接库从而达到保护的目的。每当浏览器载入一个模块,该回调函数都会检查载入的 Dll 中是否包含特定的字符串

如果发现了满足上述条件的 DLL,先判断该 DLL 是 32 位还是 64 位,如果是 32 位将该 DLL 的前三个字节改为 "\x31\x0c\xc2",64 位就改前 5 个字节,修改的 DLL 位于 3 环下所以当载入到主进程中时并不会蓝屏,且是个非法的 PE 文件,最终会导致 DLL 加载失败,对抗的逻辑如下

注册表回调和关机回调与锁首没有太大的关联就不分析了

常见锁首姿势总结

3 环锁首

1、注册表锁首

修改 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main 中的 Start Page 或 Default_Page_URL 的值即可

2、修改浏览器的配置文件

以谷歌浏览器为例

修改 %USERPROFILE%\AppData\Local\Google\Chrome\User Data \Default\Secure Preferencesa 文件中的 startup_urls 的值即可

3、通过注入动态链接库等手段入侵到浏览器进程中,修改命令行
4、通过修改快捷方式中的参数

0 环锁首

1、与上述例子相似,进程创建回调函数记录进程信息,映像加载回调函数修改命令行,这种绕过比较简单直接把浏览器的名字改一下就行了。

2、除了内核改命令行的操作外,还可以在内核中直接创建过滤设备,过滤网络数据,也可以挂钩子等等都可以达到锁首的效果。

你可能会问到的问题

1、windows 在 win7 以上就强制要求载入内核的驱动需要驱动签名,所以这种 Rootkit 常见吗?

答:

第一:你的系统肯定不是正版系统,而且国内有数量巨大的Ghost系统,对于这种魔改后的系统,你就只能自求多福吧。

第二:我就不会买个签名啊,通过下载站、外挂等推广手段植入到你电脑中给我挖矿,一个月过后本钱不就赚过来了吗?

所以不是病毒不常见了,是越来越骚了。

2、遇到这种锁首 Rootkit 该肿么办?

答:分两种情况

第一种是纯粹的恶意行为,并且作为一个独立的进程或者脚本常驻系统,对系统并没太大的影响,单纯觉得恶心而且难以清理,这里推荐火绒的一键锁首(趁机安利一波)

第二种是流氓软件,这种一般不好搞,都有正规签名。基本上锁首的逻辑都做到了驱动中且与正常逻辑混在了一起,难以对抗,但是你还要时不时的升升驱动,扫扫毒,点点广告…… emmmm,大兄弟,是换还是忍,自己看着办吧

小结

内核级别的对抗是个无底洞,永远没有尽头,我这里只是抛转,希望能够引来不少珍贵的“美玉”。

Dump样本下载地址

https://pan.baidu.com/s/1rHnIM-XBK2nvax-iCiFo7A

原文发布于微信公众号 - 信安之路(xazlsec)

原文发表时间:2018-09-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏信安之路

用powershell下载文件的姿势你研究过吗?

PowerShell 的最大优势在于以 .NET 框架为基础。 .NET 框架在脚本领域几乎是无所不能,这是一个优点,也有可能成为一个方便黑客攻击的一个强大的便...

3680
来自专栏魏艾斯博客www.vpsss.net

更换 sitemap 插件为 Google XML Sitemaps 及相关设置过程

2262
来自专栏跟着阿笨一起玩NET

公开封尘已久的即时通讯源码

理论上功能是实现了,但是在NAT穿透上有问题,所以P2P有时不能成功,所以在外网,只是一个玩具而已

5403
来自专栏翻译

Universe入门

Universe是一个用于衡量和训练AI的软件平台,适合世界上的所有游戏,网站和应用程序。本项目是一个universe开源库,它为 每个Universe环境提供...

7116
来自专栏北京马哥教育

123个Python黑客工具,再也不用问女朋友要手机密码了

今天的文章来源于dloss/python-pentest-tools,本文中列举了123个Python渗透测试工具,当然不仅于渗透~ 下面我们就开始吧~ ———...

4664
来自专栏Grace development

PHP程序员如何简单的开展服务治理架构(二)

服务治理 治理的绝笔是服务,在一家公司有玩各种语言的程序员,如何去统一管理他们开发的服务,这是一个问题。

1732
来自专栏余子军的专栏

Linux 2.6.16 TCP 连接速度异常的问题分析

发现访问公司某些业务时,速度非常不稳定,并且整体慢于竞争对手。分析认为 SESU10 母盘上内核 TCP 拥塞控制算法和 Windows 的 Ack 频率控制的...

2K0
来自专栏Python中文社区

jupyter notebook 远程连接调试实录

最近使用了一下jupyter notebook搭配GPU服务器这套搭配,顿时打开了一个新天地,记录一下配置过程。

2963
来自专栏小白课代表

最优秀好用的免费文件压缩/解压缩工具软件

若常常需要与 Mac 用户交换文件,或是购买一些国外的数字商品(如我购买的日本同人志),常常会遇见压缩包打开是一片一片的乱码文件名的状况。编码问题一直是造成乱码...

1061
来自专栏Java进阶干货

Tomcat中用JNDI方式加载JDBC DataSource以连接数据库

下载与所要连接的数据库版本对应的JDBC驱动程序,加入到应用的CLASSPATH。如果用tomcat部署,tomcat中最好也加上(笔者觉得好像没必要加,可是不...

1602

扫码关注云+社区

领取腾讯云代金券