首页
社区
课程
招聘
[讨论][原创]迅雷有必要搞这样的流氓行为吗?
发表于: 2020-1-8 14:58 12860

[讨论][原创]迅雷有必要搞这样的流氓行为吗?

2020-1-8 14:58
12860

最近我们的系统拦截到操作系统刚启动services.exe的时候,检测到该系统进程中执行未知shellcode加载dll的事件,对shellcode进行简单分析后,发现通过LdrLoadDll函数加载了一个迅雷的dll文件

由于被加载DLL是迅雷的,所以这事和迅雷有莫大的关系! 可是网上缺搜不到和xlsvc001.dll这个文件相关的任何资料,关注点转移到存放这个dll的目录名称xlguard


原来早在两年前迅雷就已经被人关注到xlguard这关键词了,简单看了一下该文只是说逆向该驱动发现会在卸载驱动和关机时,再把迅雷的XLServicePlatform服务通过注册表,设置为开机自动启动


具体细节,参考卡饭链接:https://bbs.kafan.cn/thread-2072871-1-1.html

并在事件回调函数中且判断如果是services.exe进程加载dll事件

然后在services进程中申请可执行内存,拷贝驱动中硬编码的shellcode模板,并替换掉模板中共4处需要动态替换的地址:

0x11111111、0x22222222、0x33333333、0x44444444 

随后查看被注入的xlsvc001.dll到底想搞什么事情! 首先第一个函数初始化一些需要用到的函数到全局变量


然后通过读取services.exe自身特征,找到guid为{367abb81-9844-35f1-ad32-98f038001003}的字符,搜索时注意大小端排序,使用16进制编辑器可对services.exe二进制文件搜索 81bb7a36

定位到guid以后,加固定偏移,可以得到这个com对象的接口虚表,最终这个函数返回虚表地址。拿到虚表地址以后,对虚表中的0x10和0x1C偏移位置的接口函数地址进行替换



那么问题来了,这个guid代表哪个com对象? 被替换的接口是什么? 替换的目的是什么?


通过github搜索相关guid找到了这个guid是关于svcctl对象的,这个对象中的0x10和0x1C号函数正是OpenServiceA和OpenServiceW



相关地址: https://github.com/mauropalumbo75/bro-2.6.1/blob/29fe549f512c032c14124d962c4e80018059a7ea/scripts/base/protocols/dce-rpc/consts.bro#L649


看雪上已经有相关Hook劫持RPC函数的文章: https://bbs.pediy.com/thread-251158-1.htm


那么迅雷为什么要劫持这两个函数呢?


通过劫持这两个函数,发现如果是打开XLServicePlatform服务,再通过I_RpcBindingInqLocalClientPID获取请求的客户端进程ID-》再获取进程名称


如果是thunder.exe、lserviceplatform.exe就可以打开该服务 




如果是mmc.exe、msconfig.exe、svchost.exe、taskhost.exe、taskmgr.exe,则返回5 拒绝访问




[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (20)
雪    币:
活跃值: (102)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
大佬 写个东西搞死他
2020-1-8 15:00
0
雪    币: 75
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
大佬 666,带我飞,我给你生猴子~
2020-1-8 15:02
2
雪    币: 1
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
膜拜大佬!自己要认真学习下
2020-1-8 15:06
0
雪    币: 2224
活跃值: (1068)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
律师函警告
2020-1-8 15:15
0
雪    币: 14488
活跃值: (17468)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
6
迅雷很早之前就删了,最近才看到一个叫motrix的开源软件,还没用过,不知道干不干净
2020-1-8 15:29
1
雪    币: 2312
活跃值: (3024)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
问题不大
2020-1-8 15:57
0
雪    币: 6064
活跃值: (5475)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
8
老的极速版,试了一下,任务管理器可以停止这个服务
2020-1-8 16:48
0
雪    币: 9626
活跃值: (1838)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
9
mark
2020-1-8 18:51
0
雪    币: 6124
活跃值: (4636)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
10
之前抄注入的时候就说过了,但是现在的XL没有了吧
2020-1-9 00:26
0
雪    币: 7050
活跃值: (2948)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
mark
2020-1-9 09:47
0
雪    币: 4094
活跃值: (4200)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
我的文章被引用了,好激动
2020-1-9 10:17
0
雪    币: 3520
活跃值: (1852)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
13
学习了,还可以这样玩
2020-1-9 10:41
0
雪    币: 441
活跃值: (1020)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
14
这个手法可以应用于EDR的RPC检测,是一个不错的例子,比如DNS也可以通过类似方法获取到真正发起查询的进程信息。
2020-1-9 17:42
1
雪    币: 503
活跃值: (171)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
大佬 666,带我飞,我给你生猴子~
2020-1-14 21:57
0
雪    币: 1134
活跃值: (2726)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
感谢分享
2020-1-15 00:25
0
雪    币: 279
活跃值: (113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
大佬大佬
2020-1-15 10:32
0
雪    币: 54
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
感谢分享
2020-1-30 17:33
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
总结一下:
XLGuard.sys向services.exe进程注入xlsvc001.dll
xlsvc001.dll保护XLServicePlatform服务不被打开
2020-8-18 01:16
0
雪    币: 300
活跃值: (2442)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
感谢分享
2020-8-18 08:39
0
雪    币: 1556
活跃值: (2297)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
默默顶一下楼主
2021-2-2 21:56
0
游客
登录 | 注册 方可回帖
返回
//