首页
社区
课程
招聘
[原创]BIOS Rootkit实现分析与检测技术研究系列之--简单ISA模块编写
发表于: 2008-10-27 17:36 44604

[原创]BIOS Rootkit实现分析与检测技术研究系列之--简单ISA模块编写

2008-10-27 17:36
44604

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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (35)
雪    币: 214
活跃值: (46)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
不通用

没意义
2008-10-27 17:43
0
雪    币: 740
活跃值: (952)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
3
顶!!!!!!!!
很有前途

//记得以前看某书的时候说系统是从内存ffff:0(好像是)开始执行的,那里有个跳转指令。不知是否是利用了这个特性在操作系统引导前进行的操作。胡言乱语,别鄙视我。如果这样做用处就很大了……
2008-10-27 19:12
0
雪    币: 255
活跃值: (49)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
4
就是上面谈到的跳转指令,Kris曾专门谈到修改跳转指令夺取系统控制权的思路,后面要讲到。
这里帖子没有全部显示,改了几次还是这样,我再试试。大家暂时先看一下这里:http://hi.baidu.com/mattpeng

感谢NONAME的鼓励!
2008-10-27 19:22
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
5
bios芯片用了写保护你怎么办?

哈哈,我正准备弄这个,被你先了一步。

或者是双bios。
2008-10-27 19:33
0
雪    币: 357
活跃值: (3453)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
6
怎么藏都要被挖出来,干脆不藏了。。
2008-10-27 20:11
0
雪    币: 255
活跃值: (49)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
7
发现问题了,发帖时选择了“自动识别链接”,造成了许多内容不能显示。现在一切正常了。

哈,给有类似问题的朋友做个前车之鉴。

折腾了一晚上,有收获。 :)

忘记添加附件了,补上! 大家多批评!
2008-10-27 22:24
0
雪    币: 471
活跃值: (4068)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
8
以前见过bios rootkit的文章,似乎是csdn 博客上看到的
debugman上看到利用8139网卡的文章,还有大牛利用笔记本电池控制芯片的思路。。。。。。。。
2008-10-28 13:30
0
雪    币: 222
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
笔记本电池控制芯片的思路...
就像DA利用PSP的电池控制芯片做的神电一样....
技术啊.....高深
2008-10-28 15:04
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
强淫~~~~
2008-10-28 16:28
0
雪    币: 740
活跃值: (952)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
11
继续顶
自己曾经想到这么做过,后来难度太大,放弃了。
这个比操作系统前先得到控制权,理论上就从windows控制了整机,当然必须要有admin权限加载驱动

还有一个问题:如果要是执行的时候出错了(比如跳转跳到空指令上,……and so on),那BIOS是不是就算挂了,要双机重刷了?孤陋寡闻,高手赐教
2008-10-29 18:57
0
雪    币: 255
活跃值: (49)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
12
你说得很对。目前各大厂商都推出自己的BIOS保护方案。从最开始使用的双BIOS进行实时备份还原,到目前采用TPM技术进行BIOS的彻底保护,BIOS Rootkit确实很难有更大的技术突破。加上BIOS Rootkit本身对硬件的较强依赖特性、BIOS芯片的硬件写保护、UEFI新BIOS技术的大量普及等等,一句话,就是要把这项技术扼杀在摇篮中。

感谢你的提问,多批评,多交流。
2008-10-30 14:21
0
雪    币: 255
活跃值: (49)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
13
结果就是,计算机不能启动,要重新刷写BIOS。
2008-10-30 14:22
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
不通用 没意义 浪费时间
2008-10-30 23:02
0
雪    币: 215
活跃值: (90)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
谁高兴把自己的电脑乱刷,从来不敢刷bios
2008-11-2 21:27
0
雪    币: 8764
活跃值: (5240)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
我专门买了刷BIOS的编程器,可以用来实验。
2008-11-3 13:36
0
雪    币: 189
活跃值: (16)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
这篇文章还是很有价值的。
具体知道了可以在BIOS哪里可以插入rootkit。
不过感觉你的代码是在开机BIOS运行而操作系统还没加载的时候运行的,好像也做不了什么事情,这样的代码不知道是不是算得上Rootkit呢?
如果能做到代码能够在操作系统加载后运行这样就能起到很大作用并且也能做很多事情了。
还想问问isa模块在操作系统加载以后还会再次运行吗?
2008-11-4 16:06
0
雪    币: 255
活跃值: (49)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
18
ISA模块编写的目的主要是为了在第一时间取得系统的控制权,真正的rootkit实现需要结合后面的特定程序,如篡改MBR、篡改windows的NTLDR等关键区域。的确ISA模块加载的时候很多硬件还没有完成初始化工作,比如磁盘操作就必须依靠hook int 19h->hook int 13h的方法来实现(当然还有其他的方法,在系列后续文章将介绍)。

另外,ISA模块加载执行完成后将不能再被执行,这时操作系统接管了整个计算机。

希望上面的解释对你有帮助。
2008-11-4 18:23
1
雪    币: 340
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
期待楼主的后续文章,感觉HOOK的方法可以做到广义上的BIOS rootkit,用Bochs调试的话很多的加密算法也可以跟踪出来
2008-11-5 14:26
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
刷bios能不能在虚拟机里面模拟?一直想尝试,可是不敢在本机上刷,有什么办法没有?
2008-11-5 19:52
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
21
可惜我的虚拟机昨天晚上调试驱动被弄坏了。

不过不知道他弄没弄写保护。

===========================
楼主,不知道你弄没弄acpi rootkit,貌似这个比较好弄一点,但是也容易清除,
主要是OS层面的东西。

可惜还不知道怎么利用,asl太简陋了。
2008-11-6 08:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
CPU 加电后第一状态实际上是:
DS=ES=SS = 0, CS = F000H.  IP =  FFF0H
2008-11-9 00:52
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
23
多争无益,还是先看CPU的手册
intel system programmingA.pdf
intel的网站上有
table 8-1
---------------------------------
EIP 0x0000fff0
---------------------------------
CS DS ES FS GS SS
       Selector 0xf000
       Base     0xffff0000
       Limit    0xffff
       .......
---------------------------------

这个也没多大意义,上电是怎么样完全就是习惯问题
2008-11-9 04:02
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
24
这样也没错,这是8086的遗留,寄存器里面的数据是一回事,地址译码出来的结果又是一回事。
完了为了兼容性考虑,CPU用了一些小把戏,在ROM看来,上电之后寄存器里面就是这么些数值,效果完全和8086一样
2008-11-9 04:10
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
我再补充一下有关lzh的格式吧:主要说明bios模块中使用的lzh level1格式
LZH format
Byte Order: Little-endian
There are some types of LZH header, level-0, level-1, and level-2.
level-0
+------------+
| LZH header |
+------------+
| compressed |
| data       |
+------------+
| LZH header |
+------------+
| compressed |
| data       |
+------------+
...

level-1, level-2
+------------+
| LZH header |
+------------+
| extension  |
| header     |
+------------+
| extension  |
| header     |
+------------+
| ...        |
+------------+
| compressed |
| data       |
+------------+
| LZH header |
+------------+
| extension  |
| header     |
+------------+
| extension  |
| header     |
+------------+
| ...        |
+------------+
| compressed |
| data       |
+------------+
...

level-0
Offset   Length   Contents
  0      1 byte   Size of archived file header (h)
  1      1 byte   Header checksum
  2      5 bytes  Method ID
  7      4 bytes  Compressed size (n)
11      4 bytes  Uncompressed size
15      4 bytes  Original file date/time (Generic time stamp)
19      1 byte   File attribute
20      1 byte   Level (0x00)
21      1 byte   Filename / path length in bytes (f)
22     (f)bytes  Filename / path
22+(f)  2 bytes  CRC-16 of original file
24+(f) (n)bytes  Compressed data

level-1
Offset   Length   Contents
  0      1 byte   Size of archived file header (h)
  1      1 byte   Header checksum
  2      5 bytes  Method ID
  7      4 bytes  Compressed size (n)
11      4 bytes  Uncompressed size
15      4 bytes  Original file date/time (Generic time stamp)
19      1 byte   0x20
20      1 byte   Level (0x01)
21      1 byte   Filename / path length in bytes (f)
22     (f)bytes  Filename / path
22+(f)  2 bytes  CRC-16 of original file
24+(f)  1 byte   OS ID
25+(f)  2 bytes  Next header size(x) (0 means no extension header)
[ // Extension headers
         1 byte   Extension type
     (x)-3 bytes  Extension fields
         2 bytes  Next header size(x) (0 means no next extension header)
]*
        (n)bytes  Compressed data

呵呵 自己刷写bios的时候还是需要了解这个结构的
2008-11-16 11:59
0
游客
登录 | 注册 方可回帖
返回
//