首页
社区
课程
招聘
[原创]Windows注入篇之内核感染导入表注入X64[高清有码]
发表于: 2017-3-26 12:50 12517

[原创]Windows注入篇之内核感染导入表注入X64[高清有码]

2017-3-26 12:50
12517

续着上一篇APC注入,由于没有实现64位,这里换种方式去搞64位,现在关于感染导入表的文章很多具体我就不深入去描述了,大致总结下要注意哪些要点吧:

1). 导入表注入场景有限制,就是所有东西都只能在DllMain里调用,对代码的要求很高,不像APC那样时机比较靠后加载之后还能通过ShellCode去调用导出函数。

2). 导入表注入容易被还原,只要比较原始文件发现不一样就说明被改了,时机可以用进程/模块回调去捕捉。

3). 用导入表注入方式注入的模块要求有:

    1. 必须要导出某个函数,并且在新构造的导入表项IID OriginalFirstThunk 指定你要导入的那个函数,这里我用0x80000001表示导入"序号为1"的导出函数。

    2. 对于Windows自带的一些exe,通常其都带有绑定输入表,这个东西是为了优化加速进程启动的,如果新构造的IID中指定的导入函数在Bound Import Table 中不存在,那么进程启动的时候将会崩溃,为了避免这种情况可以给其清空。当然这从某种意义上来说是废掉了优化进程启动的这个功能。

    3. 由于所有资源都必须在DllMain中调用,我们知道这里是ntdll!LdrRunInitial*即ntdll加载导入表的时机,这里有很多锁,例如ntdll!LdrpLoadLock...

4). 导入表注入方式的模块一旦加载失败,那么将会引起崩溃弹窗,有很多原因会造成这个现象,特别是某些杀软在动态链接库加载的时机Patch了该模块。

5). 当没有其他人也用这种方式改导入表时,新IID放置于导入表最前面一项,加载时机应该会在kernel32/kernelbase之后就进行加载。由于时机过早各方面都得注意。

6). 64位进程如果进程加载基地址超过了32位,那么新导入表的内存就不能申请在32位地址空间下,因为导入表偏移RVA只有4字节......反之,如果进程加载基地址是32位地址,那么内存同样也不能申请在64位地址空间......再有,尽量不要在进程基地址之前申请,这样算偏移是负数......


不多说,上代码,Win7 x64自测没问题,其他平台还希望大家帮忙测试下啦,跟上一篇文章一样,动态库也是直接放入C:\下,所有进程都注入。






[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (20)
雪    币: 3110
活跃值: (143)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
给力呀,支持一下
2017-3-26 17:05
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
大神,这么快就出货!
2017-3-26 21:55
0
雪    币: 12848
活跃值: (9108)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
4
注入狂魔。。。
2017-3-27 10:10
0
雪    币: 5039
活跃值: (2591)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
5
hzqst 注入狂魔。。。
搞完了,开开Hips系列的
2017-3-27 10:25
0
雪    币: 190
活跃值: (84)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
2017-3-27 23:15
0
雪    币: 9662
活跃值: (4588)
能力值: ( LV15,RANK:800 )
在线值:
发帖
回帖
粉丝
7
leeqwind [em_41]
2017-3-28 00:33
0
雪    币: 1602
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
等待下一篇
2017-3-30 05:20
0
雪    币: 95
活跃值: (134)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
9
mark,lz'分析的很透彻
2017-3-31 07:15
0
雪    币: 5039
活跃值: (2591)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
10
isdebug mark,lz'分析的很透彻[em_13]
版主不加精,不开心
2017-3-31 18:35
0
雪    币: 351
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
支持源源
2017-4-19 11:02
0
雪    币: 965
活跃值: (89)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
支持一下
2017-6-7 22:29
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
Win10  Pro  X64好像不行
2017-6-26 20:25
0
雪    币: 5039
活跃值: (2591)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
14
kanxueuser Win10 Pro X64好像不行
是Win10的哪个版本,我看下
2017-6-28 13:10
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
Windows  10  Pro  64-bit  (10.0,  Build  15063)  (15063.rs2_release.170317-1834)
2017-7-3 09:42
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我使用VS2015+WDK10编译
2017-7-3 09:44
0
雪    币: 159
活跃值: (80)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
win10  16299  不行
2018-4-19 17:05
0
雪    币: 130
活跃值: (1538)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
no can in win10, i build use wdk7600.

[KernelImportInject] DriverEntry Get Called
[KernelImportInject] Init Get Called
[KernelImportInject] Init g_ZwQueryVirtualMemory:72bcc230
[KernelImportInject] GetNativeApiAddress ulNativeApiIndex : ffffffff 
[KernelImportInject] Init g_ZwReadVirtualMemory:0000000000000000

OS 名称:          Microsoft Windows 10 家庭中文版
OS 版本:          10.0.17763 暂缺 Build 17763
OS 制造商:        Microsoft Corporation
2019-5-9 13:04
0
雪    币: 43
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
给力呀,支持一下
2019-5-9 14:37
0
雪    币: 261
活跃值: (537)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
1024
2019-5-26 00:54
0
雪    币: 46
活跃值: (1700)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
大神,有没有XP - WIN7 x86、x64的OEP注入?可更改DLL路径的那种,网上的那些BUG太多了
2019-5-27 19:01
0
游客
登录 | 注册 方可回帖
返回
//