首页
社区
课程
招聘
[原创]BK记录1--TDL4 引导 IDB
发表于: 2012-11-15 11:06 12336

[原创]BK记录1--TDL4 引导 IDB

2012-11-15 11:06
12336

好好学习 天天向上
感谢河北科技大学的某同学 麻烦了你好多次.....  
推荐个帖子 白加黑中英文对照阅读
http://labs.alienvault.com/labs/index.php/2012/tracking-down-the-author-of-the-plugx-rat/

http://gov.com.im/art_design/2012/0925/追踪软件作者.html

只有idb没有源码  自己照着IDB或者boot调试环境改下读盘的那部分就行了...
没有能力的围观学习 有能力的改改做坏事
仅供分享交流 出了任何事故与本帖作者无关


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 6
支持
分享
最新回复 (31)
雪    币: 673
活跃值: (278)
能力值: ( LV15,RANK:360 )
在线值:
发帖
回帖
粉丝
2
密码 woyaoaiai
2012-11-15 11:07
0
雪    币: 673
活跃值: (278)
能力值: ( LV15,RANK:360 )
在线值:
发帖
回帖
粉丝
3
linxer手这么快
2012-11-15 11:13
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
....真发出来了 我以为你不发呢
2012-11-15 11:55
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
话说 试试看 能不能把这货弄到win8上~
2012-11-15 12:04
0
雪    币: 673
活跃值: (278)
能力值: ( LV15,RANK:360 )
在线值:
发帖
回帖
粉丝
6
....真发出来了 我以为你不发呢


楼上的是谁啊
2012-11-15 12:09
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
你猜啊~~
字数补丁。。。。
2012-11-15 12:13
0
雪    币: 388
活跃值: (147)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
win8上貌似不一样的,ldr16部分修改了winload.exe后win8直接进入修复状态,怀疑是bootmgr中已经去掉了PE模式启动而不做校验了。
2012-11-15 13:48
0
雪    币: 673
活跃值: (278)
能力值: ( LV15,RANK:360 )
在线值:
发帖
回帖
粉丝
9

你猜啊~~
字数补丁。。。。


....................好好学习 天天向上 在学校 呆的怎么样啊
2012-11-15 15:17
0
雪    币: 673
活跃值: (278)
能力值: ( LV15,RANK:360 )
在线值:
发帖
回帖
粉丝
10
为啥要改我文章的标题呢?凭空加一个。。。
我这个说的也不是针对x64的啊。。。

你马甲真多 Sandman
2012-11-15 15:20
0
雪    币: 673
活跃值: (278)
能力值: ( LV15,RANK:360 )
在线值:
发帖
回帖
粉丝
11
话说 今天 刚用syser 调试成功 boot的时候断下来了  借了我一个同学的老笔记本 赛扬M 1.6ghz主频

激动啊 和你差距太多了啊  ...................
2012-11-15 15:23
0
雪    币: 10928
活跃值: (158)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
围观学习,,这个TDL4 有啥关系呀?
2012-11-15 15:34
0
雪    币: 2323
活跃值: (4113)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
13
学习鸟~~
2012-11-15 17:54
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
1、Win8下 非调试模式启动的系统不会加载KDCOM.DLL 而是KD.DLL
2、Win8下 不管是KDCOM.DLL还是KD.DLL的导出表的Size都和Win7下有所不同
3、IDA一下KD.DLL 你会发现这个文件执行的流程也和KDCOM不一样了。
4、Win8下 你如果要是Patch Bootmgr以PE模式启动的话,肯定会进入修复模式的,PE模式不进行完整性验证,那个本来就是个漏洞,是可以通过KBXXXXXXX修补的。你如果分析过KB2506014这个补丁的话,你会发现他不仅仅是为KDCOM的导出表多加了一个函数,他对winload bootmgr都做了修改。TDL4为了绕过这个补丁,采取搜索并且Patch  mov edi,0xC0000428这个指令的方式来绕过这个补丁。实际上如果采用Patch 返回值的方式,微软出任何补丁就都没有意义了,因为int 13h hook会在他加载的过程中污染读到的buffer,可以让他跳过自校验,微软怎么补我都能Patch,跟免杀一样,成了猫捉老鼠了。个人感觉这属于基于BIOS引导的PC的体系结构的问题了。。。
2012-11-15 19:20
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
当年真不该手贱选软件工程这个专业,大四了到现在还在上课。。。。
现在悔恨的泪就是当年脑子进的水。。。。。
我没那么多马甲 就这一个啊。。。。
2012-11-15 19:25
0
雪    币: 673
活跃值: (278)
能力值: ( LV15,RANK:360 )
在线值:
发帖
回帖
粉丝
16
当年真不该手贱选软件工程这个专业,大四了到现在还在上课。。。。
现在悔恨的泪就是当年脑子进的水。。。。。
我没那么多马甲 就这一个啊。。。。


hack 970也是你的 马甲之一啊 ....
55                                               push    ebp
.text:1000173F 8B EC                                            mov     ebp, esp
.text:10001741 83 EC 10                                         sub     esp, 10h
.text:10001744 68 74 18 00 10                                   push    offset NotificationEntry ; NotificationEntry
.text:10001749 FF 75 08                                         push    [ebp+Context]   ; Context
.text:1000174C B8 BF B6 00 00                                   mov     eax, 0B6BFh
.text:10001751 68 25 15 00 10                                   push    offset TDLIOCallBack ; CallbackRoutine
.text:10001756 FF 75 08                                         push    [ebp+Context]   ; DriverObject
.text:10001759 66 89 45 F4                                      mov     [ebp+var_C], ax
.text:1000175D 8D 45 F0                                         lea     eax, [ebp+EventCategoryData]
.text:10001760 50                                               push    eax             ; EventCategoryData
.text:10001761 6A 01                                            push    1               ; EventCategoryFlags
.text:10001763 6A 02                                            push    2               ; EventCategory
.text:10001765 C7 45 F0 07 63 F5 53                             mov     [ebp+EventCategoryData], 53F56307h
.text:1000176C C7 45 F6 D0 11 94 F2                             mov     [ebp+var_A], 0F29411D0h
.text:10001773 C7 45 FA 00 A0 C9 1E                             mov     [ebp+var_6], 1EC9A000h
.text:1000177A 66 C7 45 FE FB 8B                                mov     [ebp+var_2], 8BFBh
.text:10001780 FF 15 1C 10 00 10                                call    IoRegisterPlugPlayNotification ;
.text:10001780                                                                          ;     IN IO_NOTIFICATION_EVENT_CATEGORY  EventCategory,
.text:10001780                                                                          ;     IN ULONG  EventCategoryFlags,
.text:10001780                                                                          ;     IN PVOID  EventCategoryData  OPTIONAL,
.text:10001780                                                                          ;     IN PDRIVER_OBJECT  DriverObject,
.text:10001780                                                                          ;     IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE  CallbackRoutine,
.text:10001780                                                                          ; TDLIOCallBack 这个很重要
.text:10001780                                                                          ;     IN PVOID  Context,
.text:10001780                                                                          ;     OUT PVOID  *NotificationEntry
.text:10001786 C9                                               leave                   ; x /8bx 0xf8961786
.text:10001786                                                                          ; 0xf8961786:     0xc9    0xc2    0x08    0x00    0x83    0x3d    0x78    0x18
.text:10001787 C2 08 00                                         retn    8
话说 还有个 问题问你啊  在IoRegisterPlugPlayNotification下断的时候 我开机狂按Ctrl+F12
运气好 大概能断在

hal!KeGetCurrentIrql
hal!HalProcessIdle  这两个地方
开机F8安全模式 xp 加载的前三个模块是system 储巢   hal.dll    kdcom.dll
但是 楞是没跟到IDA逆向出来的汇编代码.....
2012-11-15 20:04
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
17
不给力~~为啥你们都在XXOO不给力的模式呢~
不管是x64还是x86,直接xxoo某个文件就全ok了~
2012-11-15 23:08
0
雪    币: 185
活跃值: (442)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
有看到xxx 发表00理论了
2012-11-16 08:42
0
雪    币: 388
活跃值: (147)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
19
1、bootmgr从int13读取时是经过加密的,所以在faked_int13中直接进行patch是不太可能的;
2、本来在win7下通过patch BCD进入PE模式后,bootmgr不会对winload.exe进行完整性验证,所以我们可以通过patch winload.exe来做手脚;
3、但是现在貌似patch BCD进入PE模式后,对winload.exe的任何修改系统都将进入修复模式,所以是不是在bootmgr中也已去掉了PE模式不进行完整性验证的代码,是不是需要寻找时机来patch解密后的bootmgr?
2012-11-16 09:50
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
1.那个是压缩的,不是加密的,有工具可以解开,bmzip就可以。不过内存里肯定看不到原始的数据。。。
2.这个没错
3.你说的这个没错。不过bootmgr每次加载的位置都是固定的吧,可以搜索然后再patch的吧。
每次都是加载到0x00400000,并且
kd> r cr0
cr0=00000011
kd> r cr3
cr3=00000000
处于保护模式但是没有启用分页
2012-11-16 10:28
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
21
xxoo文件的话,如果被杀就有意思了。。。
2012-11-16 10:28
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
22
mark 以后好找~ 话说我来晚了
2012-11-16 10:43
0
雪    币: 388
活跃值: (147)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
23
1、我是直接从内存把bootmgr dump下来,再根据节从内存还原成文件的,发现符号表只有很少一部分可以用;
2、加载到0x400000没错,但选准修改时机和怎样才能修改是关键;
3、另外有一些硬盘的末尾数据是不能修改的,貌似有跟磁盘分区有关的东西保存于末尾不远处,所以TDL4应该不能支持所有的硬盘吧?
2012-11-16 11:21
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
24
1.我没用内存dump,我直接用的是bmzip解压。解压出来的是一个dll。我也发现符号表只有很少一部分能用。。。
2.这个可以参考Peter Kleissner的The Art of Bootkit Development.pdf,里面有比较详细的说明。他的那个是直接Patch ntoskrnl的。
3.这个我还真没注意,在win7下我发现只有硬盘最末尾的2048个扇区是可以直接写入的,别的扇区直接写入是被拒绝的。但是我看了几个机器的硬盘 如果没中TDL4的话,最后的2048扇区是空的啊,没见到有数据。。。关于磁盘分区有关的数据这个我就不清楚了
2012-11-16 11:52
0
雪    币: 388
活跃值: (147)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
25
1、win7下开了ntfs分区保护,不能直接io磁盘,末尾2048个扇区能写是因为这些字节没有在分区范围内,而且不同的硬盘末尾预留的未分区大小可能都不相同;
2、感谢Morgion提供的资料,patch ntoskrnl.exe的方式我只实现了xp下的,后来发现对64位系统的支持不是很好,要做兼容可能需要花较多时间。
2012-11-16 12:44
0
游客
登录 | 注册 方可回帖
返回
//