◆李怡謙 施 鑫
(中國(guó)電子科技集團(tuán)公司第二十八研究所 江蘇 210007)
PE文件信息隱藏技術(shù)研究
◆李怡謙 施 鑫
(中國(guó)電子科技集團(tuán)公司第二十八研究所 江蘇 210007)
PE文件是Win32平臺(tái)下一種可執(zhí)行文件格式,是一種較為流行的可執(zhí)行文件格式。本文闡述了國(guó)內(nèi)外PE文件信息隱藏技術(shù)現(xiàn)狀,詳細(xì)分析了PE文件結(jié)構(gòu),并根據(jù)PE文件冗余空間分布特點(diǎn),提出了一種新的直接在PE文件節(jié)冗余空間中嵌入隱藏信息的方案,通過(guò)遍歷PE節(jié),計(jì)算出每個(gè)節(jié)中存在冗余空間的大小,根據(jù)隱藏信息的大小選擇合適的節(jié)嵌入信息。所提方案在PE文件冗余空間中嵌入信息不會(huì)影響PE文件的正常執(zhí)行,未增加PE文件大小,且可從PE文件中準(zhǔn)確提取隱藏信息,具有較好的隱蔽性和安全性。
信息隱藏;PE文件;冗余空間
0 引言
隨著因特網(wǎng)技術(shù)飛速發(fā)展,多媒體信息的快捷傳輸,信息資源共享更為便利。由于互聯(lián)網(wǎng)的開(kāi)放性,各種機(jī)密信息在網(wǎng)絡(luò)中傳輸時(shí)不可避免存在信息泄露之安全問(wèn)題。信息隱藏技術(shù)于上世紀(jì)90 年代中期興起,是一門綜合多學(xué)科理論知識(shí)與技術(shù)的新興科學(xué),利用多媒體數(shù)字信號(hào)自身的冗余性,將信息隱藏于某一宿主信號(hào),即不被輕易感知與察覺(jué),又不影響宿主信號(hào)視覺(jué)效果和使用價(jià)值。目前,學(xué)者們對(duì)多媒體文件隱寫分析算法以及研究較多,相比之下,PE (Portable Executable)文件信息隱藏研究相對(duì)較少,本文集中于次方面問(wèn)題研究。
PE是Windows系統(tǒng)下一種可執(zhí)行文件格式,是 Win32平臺(tái)自帶的一種可執(zhí)行文件格式,繼承了 Unix的 COFF(common object file format)文件格式的一些特性。該格式文件是跨平臺(tái)性。PE 格式的 EXE 文件結(jié)構(gòu)盡管較為復(fù)雜,但格式相對(duì)單一,不存在不同文件格式間相互轉(zhuǎn)化問(wèn)題。為此,將PE 文件作為隱藏載體可較好解決信息丟失問(wèn)題?,F(xiàn)有對(duì)PE文件的研究主要集中于PE文件病毒技術(shù)研究,常見(jiàn)的兩種方式有:(1)在PE文件中增加一節(jié),而后在該節(jié)中嵌入一段惡意代碼,如此會(huì)增加 PE文件存儲(chǔ)容量,影響隱藏信息的隱蔽性;(2)利用PE文件的冗余空間嵌入惡意代碼,這種方式相比第一種方法,隱蔽性較好。諸多學(xué)者提出了PE文件隱藏信息算法。端木慶峰等[1]利用PE圖標(biāo)和位圖資源存儲(chǔ)格式,提出了一種新的調(diào)色板冗余顏色分配算法。吳振強(qiáng)等[2]提出了一種將 PE文件作為掩護(hù)媒體隱藏信息方案。朱天明等[3]提出了基于代碼搬移的信息隱藏方案。方旺盛等人[4]提出了利用PE文件結(jié)構(gòu)中的冗余空間?;赑E文件的信息隱藏技術(shù)當(dāng)前是較為前沿的熱點(diǎn)研究領(lǐng)域。需要強(qiáng)調(diào)的是,在信息技術(shù)高速發(fā)展的今天,社會(huì)諸多行業(yè)暴露出了越來(lái)越多的信息安全問(wèn)題,迫切需求高安全性的保護(hù)機(jī)制與管理制度?;?PE文件的信息隱藏技術(shù)能夠滿足安全性要求,但由于相關(guān)的研究工作還不夠深入,當(dāng)前技術(shù)尚未成熟。為此,本文將在研究與分析PE文件與其冗余空間的基礎(chǔ)上,提出了一種新的信息隱藏方法。
1 PE文件冗余空間
PE文件主要由DOS頭、PE頭、節(jié)表、節(jié)內(nèi)容和調(diào)試信息等組成。Windows下可執(zhí)行文件都是PE文件格式,包括exe、dll、lib等文件。與多媒體信息隱藏類似,PE文件信息隱藏的基本思想是將隱藏信息嵌入于文件的冗余空間中,以達(dá)到保護(hù)信息安全的目的。 PE文件冗余空間有:(1)PE文件頭和其它結(jié)構(gòu)中未被使用的字段空間;(2)DOS頭和PE文件頭之間冗余空間;(3)PE文件最后一個(gè)節(jié)表項(xiàng)與第一個(gè)節(jié)之間冗余空間; (4)PE頭和第一個(gè)節(jié)表項(xiàng)之間冗余空間;(5)PE 文件的每個(gè)節(jié)末尾因?qū)R產(chǎn)生的冗余空間;(6)PE資源節(jié)中存在的4 種冗余。PE資源節(jié)中冗余空間分布,具體見(jiàn)圖1。

圖1 PE文件資源節(jié)冗余空間分布示意圖
目前常用的PE文件可嵌入信息的方式有:(1)直接冗余空間中嵌入隱藏信息;(2)擴(kuò)展一些大小不固定的數(shù)據(jù)塊,以獲取足夠空間,而后把隱藏信息嵌入;(3)在原來(lái)節(jié)后面直接增加一個(gè)新節(jié),而后將信息嵌入新增的節(jié)中。上述方式比較常規(guī),本文將提出一種新的PE文件信息隱藏方案。
2 提出的信息隱藏方案
由上述可知,PE文件自身存在諸多冗余空間。冗余空間可分為人為構(gòu)造冗余空間和非構(gòu)造冗余空間。人為構(gòu)造冗余具有操作簡(jiǎn)單,嵌入信息量大特點(diǎn),但是構(gòu)造一個(gè)冗余空間會(huì)改變了PE文件存儲(chǔ)容量,較容易被發(fā)現(xiàn)文件中存在隱藏信息,這種方式隱蔽性較差。本文提出的方案,考慮利用PE文件原始冗余空間隱藏信息。
通過(guò)研究PE文件的結(jié)構(gòu)可知,每個(gè)PE文件節(jié)表后面因?qū)R,預(yù)留了很大的空間,每個(gè)節(jié)后面同樣因?qū)R需要,存在很多空閑空間。PE文件中每個(gè)節(jié)均根據(jù)參數(shù)FileAligment而對(duì)齊,究其原因在于每個(gè)節(jié)的大小并不全是FileAligment整數(shù)倍,如此造成每個(gè)節(jié)后面就會(huì)產(chǎn)生很大的沒(méi)有被充分利用的空閑空間,這為嵌入信息提供了可能。
圖2展示了節(jié)中的冗余空間位置以及節(jié)中幾個(gè)重要字段的含義和它們之間的關(guān)系。 圖2中字段PointToRawData表示PE文件的節(jié)起始地址,VirtualSize是該節(jié)實(shí)際占用的空間大小,SizeOfRawData是節(jié)對(duì)齊后的尺寸,冗余空間的大小等于SizeOfRawData值減去 VirtualSize值。冗余空間起始地址為PointToRawData值與VirtualSize值之和,若能夠準(zhǔn)確獲取上述數(shù)據(jù)就可隱藏信息。

圖2 PE節(jié)冗余空間
本文提出的信息隱藏方案包括信息嵌入和提取兩個(gè)階段,在嵌入信息階段,先對(duì)原始信息加密,選擇的隱藏信息種類有文本、圖像、音頻,軟件作者名稱等版權(quán)信息,對(duì)原始信息的加密目的在于增強(qiáng)隱藏信息安全性和系統(tǒng)抗攻擊性,加密結(jié)束后可將信息嵌入到PE文件中。提取信息是嵌入的一個(gè)逆過(guò)程,先將信息提取出來(lái),然后對(duì)信息解密。具體方案步驟為:
(1)選擇一個(gè)合適的PE文件作為載體,一般選擇的文件是可以直接點(diǎn)擊運(yùn)行的exe文件;
(2)判斷該文件是否為PE文件,主要依據(jù)DOS頭e_magic字段和PE頭中Signature字段,如果emagic的值等于“MZ”,而且Signature的值等于“PE