亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 維修 > BIOS > 正文

冰河暗涌防不勝防 BIOS下實現的Telnet后門

2020-10-15 20:47:29
字體:
來源:轉載
供稿:網友

該項目僅為實驗性項目,主要目的是想隱藏一個Te.net后門在主板的Bios內,并讓其隨著計算機系統及操作系統成功的運行起來。運行后能反向Telnet連接到指定的計算機接受控制。

項目涉及的相關知識及技術目錄

1、 實驗環境,使用bochs調試工具。

2、 刷新BIOS技術問題。

3、 代碼植入BIOS問題。

4、 源代碼相關技術問題:

A、如何編寫BIOS模塊(如:PCI、 ISA)。

B、實模式關于HOOK磁盤中斷的問題。

C、磁盤中斷中選擇再次HOOK的問題。

D、NT保護模式下設置物理地址映射。

E、NT保護模式下線性地址尋址問題。

BIOS模塊調試實驗環境采用Bochs

Bochs虛擬機可以調試BIOS及操作系統,Bochs使用主要是配置它的配置文件,我們以實例配置文件簡單講解,Bochs實驗調試等網上有很多相關文章,這里簡單講解。

我的配置實例:文件名xp.bxrc,修改后的及需要設置的內容如下:

######使用的系統BIOS模塊###### romimage: file=$BXSHARE/BIOS-bochs-latest ######使用的CPU 相關參數###### cpu: count=1, ips=10000000, reset_on_triple_fault=1 ######設置內存大小 ###### megs: 128 ######添加我們的BIOS模塊###### optromimage1: file=test.bin, address=0xd0000 ######使用的VGAROM模塊###### vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest ######設置虛擬機硬盤與光盤###### ata0-master: type=disk, path="c.img", mode=flat, cylinders=4161, heads=16, spt=63 #ata0-slave: type=cdrom, path="xp.iso", status=inserted ######設置引導設備 ###### boot: c #boot: cdrom, disk

Bochs調試加載配置文件方法:可以設置一個bat文件,如下內容:

set BXSHARE=d:/bochs

%BXSHARE%/bochsdbg.exe -q -f xp.bxrc

如何刷新各種BIOS問題

各種BIOS刷新相關工具早已在網上流傳,工具的使用這里不作介紹,IcLord的作者已經給出很多編程方法實現。這里簡單說下。

UniFlash開源項目我也詳細分析過,如果有必要我會給出UniFlash源代碼的詳解,該項目指出可以刷寫所有BIOS芯片,但是該項目刷新BIOS存在很多問題,絕大多數情況是無法刷新的我實驗過很多次,也嘗試修改他的代碼過很多次,沒找到原因。

AWord BIOS已經有通用的刷寫API調用,不管在NT下還是在實模式下,IcLord也作了講解。如果有時間我會給出實模式及NT下的刷寫源代碼及分析。

代碼植入BIOS問題

關于網上提及的,IcLord講到的我就不再做重復的分析。這里主要講下我們的模塊可以植入哪些地方以方便隱藏。以前的教程講過的方法存的問題分析。

一、 ISA模塊形式植入:這種方式只適合于較早的計算機,因為目前的計算機系統BIOS是不會加載ISA模塊的。故只能做實驗調試用的方法。

二、 PCI模塊形式植入:該方法雖然系統BIOS都要加載PCI ROM,但是系統BIOS只加載實際存在的PCI卡的ROM模塊。而且通常BIOS設置中可以

關閉相應的ROM啟動

三、 HOOK BootBlock或者說要啟動的模塊:該方法當然我認為是最有效的,但是又存在很多技術上的難題。檢驗和問題,不同BIOS的結構問題,過早的HOOK還存在再次獲取CPU運行機會問題等等。

本人實驗過以上提及的所有方法,我認為HOOK PCI、VGA及相關啟動模塊是比較可尋的辦法。為什么?一般這類的ROM模塊是必須啟動的,而且調試發現一般它的ROM本身代碼用不完自身設置的大小,我們可以借助剩余大小隱藏我們的代碼。例如:集成顯卡會把顯卡ROM集成到系統BIOS模塊中,我們可以對該模塊進行HOOK,修改ROM頭部的跳轉指令,跳到我們的代碼開始處執行,我們的代碼執行完后跳轉到它的代碼開始處執行。

如何編寫BIOS模塊

BIOS是分模塊組合在一起的。這里對PCI及ISA模塊作下簡單分析,VGA模塊跟PCI模塊幾乎一樣。模塊主要是頭部有個規范,該規范適合所有BIOS系統。具體可以參看《PCI系統結構》及其他書籍。

源代碼實例可以參看國外ROMOS開源項目,該開源項目的思想很值得學習。該項目講解了如何在BIOS中嵌入一個小型DOS,如:FreeDos。采用了把整個DOS系統盤鏡像植入BIOS中,跟早期的PXE引導DOS機制類似,然后HOOK磁盤中斷,模擬DOS系統盤鏡像出一個盤,源代碼編譯后只有900多字節。這種思想在早期還是很值得學習的。

實模式關于HOOK磁盤中斷問題

很早前就有業界內人士發貼問,為什么在我的ROM模塊中HOOK磁盤中斷會失敗呢?關于這個問題現在目前網上已經有人作出過回答,國外的開源項目在2003年我都看到過。

由于我們的ROM模塊過早的運行,可能運行在磁盤服務前面了,這時如果HOOK Int 13h會因為BIOS加載磁盤服務時重寫Int 13h IVT值,故我們設法HOOK其他服務,這個服務要求較早被BIOS安裝且不會再次修改且加載操作系統前調用,最佳的這個服務選擇就是int 18h、int19h服務??梢詤⒖?/p>

BIOS源代碼,也可以參看PXE SDK說明文檔略有講過。

我們的磁盤服務代碼建議放在實模式高端內存,通過BIOS數據區域可修改,內存40:13,即物理地址413h處的值。降低常規內存值,高端的內存就留給我們用。我們的保護模式下運行的代碼建議也放在這段內存,且要求放在以頁基址開始的內存中,以便后面代碼的頁映射我們的保護模式代碼物理頁。頁基址:內存物理頁地地址開始的低12位為零,參看《80386保護模式教程》。

若我們的代碼直接在內存的ROM映射區內,可能導致在NT下訪問不到我們的代碼,因為NT內核加載程序ntldr可能不會映射該段內存,甚至可能BIOS在使用后都會關閉ROM區域這段內存,而且ROM區域這段內存在初始化后被系統BIOS設置成只讀不能寫。當然我們可以采取用int 15h服務對ROM區域這段內存映射。

當然也可以在NT啟動過程中,在我們的磁盤服務中對想映射的內存都映射。由于代碼大小的限制,故有些沒必要的代碼。盡量不使用了。

磁盤中斷服務中再次HOOK問題

為了使我們的程序再次獲得CPU運行機會,我們不得不得再次設法。調試發現NTLDR進入保護模式后在加載NT內核文件時,會切換CPU到實模式調用Int 13H服務進行磁盤讀。

我們掛接磁盤服務就是為了截取NTLDR的讀操作,這里我們可以HOOK 或者修改NTLDR另一部分OsLoader的代碼,跳轉到我們的代碼執行。當然也可以直接HOOK ntosknrl導出的服務,參看我在2008.4.1發布的“程序從DOS/BIOS駐留內存到WINNT下監視內存數據”。

注意,HOOK OsLoader的代碼時選擇HOOK指令問題,由于NTLDR切換到實模式讀取數據,讀完后會在保護模式下搬移數據到規劃位置,進行內核的安裝。故HOOK時選擇HOOK指令就選擇FFh/15h:使用CALL NEAR [OFS32]指令進行,該指令尋址采用絕對地址,類似指令也可以。

當然我們的代碼再次運行就會運行在OsLoader代碼被我們HOOK處,調用我我們的代碼執行,這時我們的代碼運行環境:DS = ES = 10h保護模式段,內存模式: FLAT。在這里我們可以通過掃描_BlLoaderData數據結構,獲取NTOSKRNL鏡像基址。

可以通過PE搜索NTOSKRNL導出的API,可以參看網上相關教程。現在再次HOOK NTOSKRNL導出函數KeAddSystemServiceTable,HOOK該函數

可以截獲win32k.sys添加它自己的服務,以便我們再再次HOOk win32.sys導出函數NtUserRegisterClassExWOW。HOOK該函數可以截取所有應用層程序注冊窗口類,以便我們再再再次HOOK窗口類過程。這時我們的代碼就運行在NT的應用層模式下。

NT保護模式下設置物理地址映射

先看一個WinDbg實例關于在我們的磁盤服務中獲取CR3值修改頁映射的分析,以前我的分析內容:

NT內核被加載高端的2GB內存(80000000h~0ffffffffh)。參看NT內存安排.. a、win2k adv ser: WINDBG 看到 NT Kernel base = 0x80400000 也就是NTOSKRNL.exe加載位置 kd

>

r @cr3 ;斷點位置在NTOSKRNL.exe里現在還沒有應用程序故低端內存還未使用 cr3=00030000 ;-

>

頁目錄表所在物理頁(物理地址30000h) kd

>

d 80030000 80030800 ;看頁目錄發現現在低端2GB(0~80000000h)還未分配 80030000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 80030010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 80030020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ kd

>

d 80030800 ;看高端開始分配情況頁表(80000000h開始的分配情況) 80030800 63 21 03 00 63 41 03 00-63 51 03 00 63 31 03 00 c!..cA..cQ..c1.. 80030810 63 11 7c 00 63 21 7c 00-63 31 7c 00 63 41 7c 00 c.|.c!|.c1|.cA|. 80030820 63 51 7c 00 63 61 7c 00-63 71 7c 00 63 81 7c 00 cQ|.ca|.cq|.c.|. ;實例1:看80400000h(NT Kernel base),這個線性地址到物理地址映射情況. ;線性地址最高10位頁目錄項(每項占4Byte):80400000h最高10位=201h. ;在頁目表位置:201h*4=804h 在內存地址=[cr3]+804h..具體看保護模式教程 kd

>

d 80030000+804 ;看在頁目錄表位置的值 80030804 63 41 03 00 63 51 03 00-63 31 03 00 63 11 7c 00 cA..cQ..c1..c.|. ;二級頁表所在物理頁地址:63 41 03 00轉換下34163h,物理頁地址:34000h,163h是頁屬性. kd

>

d 80034000 ;看在頁表的值 80034000 63 01 40 00 63 11 40 00-63 21 40 00 63 31 40 00 c.@.c.@.c!@.c1@. ;物理地址基址:63 01 40 00轉換下400163h,#物理地址基址#:400000h,163h是頁屬性 ;最后發現物理地址基址(頁地址)在400000h..觀察物理地址400000h是NTOSKRNL.exe映像. kd

>

d 80400000 ;觀察物理地址400000h 80400000 4d 5a 90 00 03 00 00 00-04 00 00 00 ff ff 00 00 MZ.............. 80400010 b8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00 ........@....... ;實例2:看我們代碼映射情況我們代碼在物理地址:9e000h從線性地址8009e000h分析映射情況 ;8009e000h在頁目錄位置最高10位=200h*4,在內存地址=[CR3]+200h*4... kd

>

d 80030000+200*4 80030800 63 21 03 00 63 41 03 00-63 51 03 00 63 31 03 00 c!..cA..cQ..c1.. ;二級頁表對應物理地址:63 21 03 00轉換下物理頁基址=32000h ,163是頁屬性 ;8009e000h所在二級頁表位置:32000h+9eh*4(8009e000h線性地址12~22的位)... kd

>

d 80032000 + 9e *4 80032278 23 e1 09 00 03 f1 09 00-03 01 0a 00 03 11 0a 00 #............... ;物理地址基址(頁基址):23 e1 09 00轉換下09e000h,123是頁屬性.. ;#實例3:windows運行起后用的頁目錄表線性地址:0c0000000h映射到物理地址情況. kd

>

d 80030000 + c00 ;計算略.頁目錄表位置,觀察發現指向自己的... 80030c00 67 00 03 00 63 00 f0 17-00 00 00 00 63 31 a9 02 g...c.......c1.. b、winXP: WINDBG 看到 Kernel base = 0x804d8000 PsLoadedModuleList = 0x8055b420 kd

>

r @cr3 ;斷點位置在NTOSKRNL.exe里現在還沒有應用程序故低端內存還未使用 cr3=00039000 ;-

>

頁目錄表所在物理頁(頁目錄物理地址30000h) kd

>

d 80039000 80039800 ;看頁目錄發現現在低端2GB(0~80000000h)還未分配 80039000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ kd

>

d 80039800 ;看高端開始分配情況頁表(80000000h開始的分配情況) 80039800 e9 b9 00 f6 06 a1 08 10-75 1b f6 06 a3 08 10 75 ........u......u ;實例1:看我們代碼映射情況我們代碼在物理地址:9e000h從線性地址8009e000h分析映射情況 ;8009e000h在頁目錄位置最高10位=200h*4,在內存地址=[CR3]+200h*4... kd

>

d 80039000+200*4 80039800 63 b1 03 00 e3 01 40 00-63 e1 03 00 e3 01 00 01 c.....@.c....... ;二級頁表對應物理地址:63 b1 03 00轉換下物理頁基址=3b000h ,163是頁屬性 ;8009e000h所在二級頁表位置:3b000h+9eh*4(8009e000h線性地址12~22的位)... kd

>

d 8003b000 + 9e *4 8003b278 03 e1 09 00 03 f1 09 00-03 01 0a 00 03 11 0a 00 ................ ;物理地址基址(頁基址):03 e1 09 00轉換下09e000h,103是頁屬性.. ---------

>

;*#實例2:手工修改分頁讓物理地址映射到線性地址,WINXP.80000000h BIOS/DOS向量區沒映射.#* kd

>

d 80000000 ;可看到現在沒映射的情況,無法通過線性地址訪問. 80000000 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? 80000010 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? ;80000000h的最高10位確定在頁目錄表位置=200h*4=800h.在頁目錄物理地址:[cr3]+800h kd

>

d 80039000+200*4;可發現二級頁表已映射(63b10300)頁屬性163.物理地址(頁)3b000h 80039800 63 b1 03 00 e3 01 40 00-63 e1 03 00 e3 01 00 01 c.....@.c....... ;80000000h的12~22位次高10位確定在二級頁表位置:物理地址3b000h+0*4 kd

>

d 8003b000;觀察發現確實沒映射.全0.注意:一個頁項占4字節... 8003b000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ ;修改成讓它對應物理地址:000就可以,只修改允許訪問就可以.也就是byte ptr [8003b000]=63 kd

>

e 8003b000 63 kd

>

d 8003b000 ;修改成功 8003b000 63 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 c............... ;觀察修改后的情況.;注意:要想設置生效.讓WINDBG執行下G.讓0C0000000等cr3被改等.. kd

>

g ;讓系統自動刷新TLB等寄存器.... kd

>

d 80000000 80000000 53 ff 00 f0 53 ff 00 f0-c3 e2 00 f0 53 ff 00 f0 S...S.......S... ;#實例3:Windows運行起后用的頁目錄表線性地址:0c0000000h映射到物理地址情況. kd

>

d 80039000 + c00 ;計算略.頁目錄表位置,觀察發現指向自己的... 80039c00 67 90 03 00 63 00 f0 0f-00 00 00 00 63 31 e2 01 g...c.......c1.. c、分析以上總結:發現最開始獲取的cr3值一直在用。 故我們修改頁項的效果會在windows運行后也生效通過以上的實例分析可以看出NT系統的頁映射情況。 進入保護模式之后這個CR3的值也就是頁目錄表位置被映射到了虛擬地址0c0000000h。 上面調試的實例頁目錄表地址就可以直接使用這個虛地址。

例如:在我們的代碼中把我們的代碼拷貝到SharedUserData空間未使用處去,就使用了頁映射代碼,直接修改第一個頁指向的物理頁,就是我們代碼所在的物理頁。

NT保護模式下線性地址尋址問題

關于我們的代碼進入保護模式以后,所有指令的尋址問題,這里作一下分析。當我們代碼第一個在保護模式下執行的指令,是前面提到的磁盤服務中對OsLoader的代碼進入HOOK,也提到了采用什么樣的HOOK指令以便尋址。

接哪之后,我們的代碼就開始運行在保護模式未分頁情況下,我們采取的方法是把我們的代碼拷貝到SharedUserData空間未使用處,涉及到拷貝的指令也必須運行在保護模式分頁下,因為SharedUserData空間是一個虛地址。

在這里我們采用了把我們的拷貝代碼指令搬移到NTOSKRNL鏡像的MZ與PE之間的區域,設置HOOK NTOSKRNL導出函數KeAddSystemServiceTable首先跳轉到拷貝指令執行,HOOK NTOSKRNL導出函數KeAddSystemServiceTable采用相對跳轉指令它們在同一個空間。

當我們的拷貝指令把我們的代碼拷貝到SharedUserData空間未使用處之后,我們的代碼就有一個固定的虛地址,所有后續指令都可以采用這個虛地址進行尋址。


(責任編輯:VEVB)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区=区| 91av在线播放视频| 欧美一级大片视频| 亚洲人成毛片在线播放| 国产精品中文字幕在线| 亚洲高清av在线| 久久精品久久久久久国产 免费| 亚洲第一精品夜夜躁人人躁| 97精品伊人久久久大香线蕉| 国产精品无av码在线观看| 黑人精品xxx一区一二区| 欧美亚洲免费电影| 亚洲国产欧美一区二区三区同亚洲| 亚洲香蕉av在线一区二区三区| 国产精品扒开腿做爽爽爽男男| 欧美久久久精品| 中文字幕日韩电影| 亚洲国产小视频| 国产美女高潮久久白浆| 97精品免费视频| 国产精品国产亚洲伊人久久| 亚洲精品不卡在线| 日本成人在线视频网址| 亚洲国产古装精品网站| 中文字幕不卡av| 中文字幕成人在线| 亚洲国产精品视频在线观看| 在线看片第一页欧美| 欧美成人中文字幕| 91精品美女在线| 精品在线欧美视频| 久久av资源网站| 动漫精品一区二区| 日韩有码在线视频| 国产91色在线免费| 亚洲精品在线看| 91成品人片a无限观看| 国产欧美精品一区二区三区-老狼| 亚洲国产欧美在线成人app| 色av吧综合网| 精品伊人久久97| 国产精品日韩在线播放| 久热精品视频在线观看一区| 亚洲欧洲中文天堂| 国内揄拍国内精品少妇国语| 国产欧美日韩最新| 久久久电影免费观看完整版| 91精品啪aⅴ在线观看国产| 午夜精品在线观看| 欧美黑人又粗大| 日韩电影在线观看免费| 亚洲伊人久久综合| 亚洲亚裔videos黑人hd| 岛国av一区二区三区| 97视频在线观看免费| 久久久久久香蕉网| 精品爽片免费看久久| 日本成人黄色片| 91久久精品国产91久久性色| 国产99久久精品一区二区| 热久久视久久精品18亚洲精品| 亚洲情综合五月天| 青草成人免费视频| 亚洲激情视频网站| 成人网址在线观看| 亚洲综合在线中文字幕| 欧美性猛交xxxx乱大交| 欧美美最猛性xxxxxx| 96sao精品视频在线观看| 日韩美女视频中文字幕| 欧美xxxx做受欧美.88| 国内精品久久久久久影视8| 在线观看免费高清视频97| 久久97久久97精品免视看| 精品久久久久久中文字幕| 啊v视频在线一区二区三区| 日韩激情视频在线| 亚洲性视频网站| www.欧美三级电影.com| 成人黄色网免费| www国产亚洲精品久久网站| 大胆人体色综合| 国产成人精品视频在线观看| 5252色成人免费视频| 国产精品入口福利| 日韩在线免费视频观看| 国产在线观看一区二区三区| 粉嫩老牛aⅴ一区二区三区| 精品女厕一区二区三区| 亚洲国产精品悠悠久久琪琪| 国产91免费观看| 亚洲无限av看| 亚洲欧洲国产伦综合| 国产网站欧美日韩免费精品在线观看| 亚洲电影免费观看高清完整版在线| 全亚洲最色的网站在线观看| 精品亚洲一区二区三区在线观看| 日韩精品在线电影| 欧美日韩aaaa| 全亚洲最色的网站在线观看| 日韩美女免费线视频| 精品视频偷偷看在线观看| 亚洲精品suv精品一区二区| 琪琪亚洲精品午夜在线| 欧美怡红院视频一区二区三区| 91精品在线影院| 国产玖玖精品视频| 热99精品里视频精品| 亚洲性生活视频在线观看| 国产精品一区二区三区成人| 亚洲综合精品伊人久久| 中文字幕久久久| 国产精品爽黄69| 高清一区二区三区四区五区| 精品一区二区亚洲| 欧美多人乱p欧美4p久久| 日韩三级成人av网| 久久久视频精品| 国内精品模特av私拍在线观看| 欧美极品美女电影一区| 成人妇女免费播放久久久| 亚洲精品成人免费| 欧美中文字幕在线| 欧美日本中文字幕| 国外日韩电影在线观看| 国产精品嫩草视频| 久久久久久久网站| 91精品视频观看| 欧美一区二区大胆人体摄影专业网站| 欧美日韩视频在线| 91po在线观看91精品国产性色| 成人444kkkk在线观看| 91色精品视频在线| 精品国内亚洲在观看18黄| 福利视频一区二区| 欧美黄色小视频| 日韩精品中文字幕在线播放| 成人激情av在线| 国产性猛交xxxx免费看久久| 日本高清久久天堂| 欧美中文字幕第一页| 欧美一区二区三区免费观看| 国产一区视频在线| 国产欧美久久一区二区| 国产精品永久免费视频| 精品福利在线视频| 欧美精品免费在线观看| 黄色成人在线免费| 日韩av最新在线观看| 亚洲视频电影图片偷拍一区| 在线成人免费网站| 一本一道久久a久久精品逆3p| 国内成人精品视频| 国产美女久久久| 91黑丝高跟在线| 国产精品久久久久久久久久ktv| 欧美丰满老妇厨房牲生活| 国内精品伊人久久| 欧美国产日韩一区二区在线观看| 欧美成人精品h版在线观看| 91精品国产高清久久久久久91| 国产精品电影网| 欧美综合在线第二页| 久久久亚洲影院你懂的|