首页
社区
课程
招聘
[原创]360ini.dll注入explorer技术分析
2022-10-23 22:39 11586

[原创]360ini.dll注入explorer技术分析

2022-10-23 22:39
11586

前两天看了火绒安全实验室写的一篇分析360安全卫士极速版“诱导式”推广的文章,里面提到了一个下载安装模块360ini.dll会注入Windows资源管理器explorer.exe进程,利用系统进程下载360安装包,如下图所示。不过文章中仅仅只提到了360ini.dll模块会区分32位和64位的explorer进程进行注入,对于核心的注入技术细节没有再进一步深入,因此这篇文章尝试通过动静态等方式分析360选择的注入explorer的技术方式。
图片描述

 

原文在这里:

 

360安全卫士极速版"诱导式"推广 静默安装且对抗安全软件

 

先说结论:

 

还是利用NtSuspendThread、NtSetContextThread、NtResumeThread等组合函数劫持explorer负责消息处理的UI线程执行流,不过在shellcode执行结束后会将控制权返还给explorer。

 

火绒已经分析出了x86、x64注入的核心函数,参数为目标进程pid。

 

图片描述

 

跟进x64的函数看一下,首先是一堆栈上赋值操作,推测应该是用了编译时字符串混淆。这一大段数据猜测是后续用于注入的shellcode。

 

图片描述

 

随后调用openprocess、openthread函数打开目标线程。

 

图片描述

 

选择目标线程的时候则是利用GetThreadTimes函数获取线程创建时间,返回最早创建的线程tid。

 

图片描述

 

之所以选择该线程可能是因为大部分时候都是处于WaitMessage等待事件消息的状态。

 

图片描述

 

获取目标线程pid后两次调用常规函数跨进程申请内存、写内存。第一次写注入dll的路径,第二次写加载dll的shellcode1。

 

图片描述

 

动态调试可以看到申请了地址0x3a20000大小64K的读写内存。

 

图片描述

 

并向其中写入了注入dll的路径。

 

图片描述

 

第二次申请了地址为0x2b2000大小64K的可执行内存。

 

图片描述

 

向其中写入加载dll的shellcode1。

 

图片描述

 

写完dll路径和shellcode1后,进入sub_10003D50核心注入函数。首先挂起目标线程、获取目标线程的寄存器等上下文。随后继续申请内存写shellcode2。最后在改写完shellcode2和寄存器上下文之后设置线程将要执行的上下文,恢复目标线程。

 

图片描述

 

下图可看到申请的shellcode2地址为0x3a30000,功能为创建到0x2b2000的shellcode1的线程。

 

图片描述

 

这里可以看到原始的线程上下文EIP为0x773F932A指向user32.dll空间,将其修改为0x3A30000即shellcode2的地址。

 

图片描述

 

最后一步设置目标线程的上下文,恢复线程即完成x64的整个注入explorer进程操作。

 

最后看下两段shellcode,shellcode2也就是劫持了原始执行流的shellcode调用了CreateThread函数,目标地址为shellcode1,参数为dll路径。

 

图片描述

 

并在创建完成后返回到原始执行流也就是user32.dll空间下的0x773F932A地址。

 

图片描述

 

shellcode1则直接调用LoadLibraryW在explorer中加载dll。

 

图片描述

 

到这x64注入explorer进程的流程基本就结束了。下载的安装包证据如图。

 

图片描述

 

不过最后还有一个疑点,shellcode2的地址申请的是读写权限的内存,不知道为啥执行的时候内存就变成读写可执行的了。这一点很疑惑,有没有大佬知道为啥的。

 

360ini.dll本身有反调试手段,如果后续想要动态调试的话需要patch或者动态过掉两个TLS回调函数,并且在dllmain中过掉这两个反调试函数。

 

图片描述

 

360ini.dll为了阻碍静态分析,系统api大部分都是在dll加载时动态获取动态调用的,单纯用ida很难分析,并且某些关键api函数还利用了类似于wrapper层去调用ntdll的系统调用。不过好在静态代码还能看,没有上花里胡哨的混淆或者壳之类的。

 

sha256:f3690fae9bec82693a771f5f5839239ca18f90624a6aef631dcd0f19820eb38a


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞8
打赏
分享
最新回复 (8)
雪    币: 198
活跃值: (119)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gqdsc 2022-10-26 09:21
2
0
厉害厉害,360也太狠了
雪    币: 1451
活跃值: (14614)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
SSH山水画 3 2022-10-26 09:33
3
2
那么问题来了,这算不算非法入侵计算机信息系统罪,这么大的一个业绩在这,gj机关这都不抓一手吗
雪    币: 1686
活跃值: (1244)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hanhaochi 2022-10-26 09:55
4
0
SSH山水画 那么问题来了,这算不算非法入侵计算机信息系统罪,这么大的一个业绩在这,gj机关这都不抓一手吗
同问
雪    币: 2251
活跃值: (2148)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
LexSafe 2022-10-26 10:21
5
1
申请的就是rwx  右边权限显示错了
雪    币: 1257
活跃值: (1424)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yllen 2022-10-26 11:47
6
0
想多了,是谁点鼠标下载,执行的? 
雪    币: 1556
活跃值: (2087)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
killleer 2022-10-26 17:07
7
0
SSH山水画 那么问题来了,这算不算非法入侵计算机信息系统罪,这么大的一个业绩在这,gj机关这都不抓一手吗
哎怎么说呢,某些驱动更过分。这里被抓着实自己有问题,下个载还得用explorer的?
雪    币: 6351
活跃值: (2239)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shuyangzjg 2022-10-28 10:20
8
0
膜拜大佬
雪    币: 9299
活跃值: (3316)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
superlover 2022-11-6 13:38
9
0

 

最后于 2022-11-6 18:48 被superlover编辑 ,原因:
游客
登录 | 注册 方可回帖
返回