姚 堯,朱喜華,李光耀,李首慶
(1.中國民用航空飛行學院 廣漢分院,四川 廣漢 618307;2. 中國人民解放軍空軍空降兵學院,廣西 桂林 541003;3.中國民用航空飛行學院 洛陽分院,河南 洛陽 471001)
機務維修中常見NTFS底層文件處理仿真
姚堯1,朱喜華2,李光耀3,李首慶1
(1.中國民用航空飛行學院 廣漢分院,四川 廣漢 618307;2. 中國人民解放軍空軍空降兵學院,廣西桂林541003;3.中國民用航空飛行學院 洛陽分院,河南洛陽471001)
技術文件系統(New Technology File System,NTFS),是Windows NT環境的文件系統。在機務特設維修過程中常通過NTFS長文件名保障數據保護和功能恢復,從而實現目錄和文件的安全可靠。在NTFS底層文件的刪除和隱藏機制中,正確解讀函數是突破Rootkits技術的基礎,也是清除各種底層病毒,實現特設系統穩定和流暢的關鍵。文章簡單介紹機務維修常見NTFS底層文件仿真,特別是其函數的含義,以期對機務人員進一步理解特設故障有一定幫助。
機務維修;NTFS底層文件;仿真;函數
航空機務人員按照從事檢修工作的性質可劃分為航空機械、航空特設、航空電子、結構修理等專業。在機務特設維修過程中經常通過WindowsNT環境系統所在盤符的技術文件系統(New Technology File System,NTFS)進行故障診斷、預測與健康管理,特別是通過NTFS長文件名進行數據保護和功能恢復。
本文在分析NTFS底層文件機制的基礎上進行仿真,編寫一個可以在WinXP下刪除任何文件(不管是否正在運行)的C程序,順利實現在不關閉殺毒軟件(以卡巴斯基為例)的情況下進行底層文件刪除或隱藏。進一步解析NTFS文件系統,過濾通過Rootkits技術隱藏的病毒,進行徹底刪除或,同時附帶的程序代碼中也相當于包含了一個NTFS下數據恢復軟件的核心代碼。最后,在刪除完整個文件夾后用Chkdsk程序檢查,避免出現刪除不徹底的現象。
若非NTFS文件系統解析工具,無法通過調用文件系統應用程序編程接口(Application Programming Interface,API)發現本技術處理的文件。實現數據刪除或隱藏術需要改動的字節數與文件個數和文件大小無關,確保了處理文件的效率。另外,本文把文件的索引入口移植到了NTFS元文件內,只要修改文件的索引,將其入口重新移入新的寄主文件即可快速恢復被刪除或隱藏的文件。
1.1簡單理論基礎
NTFS文件數據處理技術采用軟件混淆方法,通過混淆編譯器對編譯好的類似相關底層文件進行混淆,在確保符號不變的基礎上,直接從源碼上進行編碼和破譯,使得編譯過程本身就是混淆過程,避免逆向和篡改等惡意攻擊。混淆算法如圖1所示。

圖1 混淆算法原理
根據變換所涉及的對象,軟件混淆科分為數據變化、詞語交換和機構調整。采用混沌現象中的NTFS文件映射。
1.2可視化操作簡要步驟
在某NTFS分區根目錄下建立一個文件夾,取任意一個合法名稱,將需要隱藏的文件放入該文件夾中。讀取NTFS中前16個元文件順序存儲,5號文件$Root根目錄主文件表(master file table,MFT)記錄起始扇區為0x600000加上10后的0x60000A,11號文件$Extend MFT記錄起始扇區為0x600000加上22后的0x600016,如圖2所示。
簡單計算可知,索引分配運行為:31 01 91 62 12,可知根目錄一共有一個索引緩沖區,其起始簇是0x126291,大小是8個扇區的1個簇。遍歷根目錄各個索引緩沖區,找到文件夾的索引項記錄,從該索引緩沖區頭部得到更新序列數組和更新序列號,把更新序列數組的中的每一項依次寫到該索引緩沖區每個扇區結尾處,從該記錄中獲取MFT記錄號,前挪該緩沖區內的所有索引記錄覆蓋。搜索本索引緩沖區所有扇區,各個扇區結尾的兩個字節依次寫入該索引緩沖區頭部的更新序列數組,覆蓋原更新數組,把該索引緩沖區的更新序列號寫到該索引緩沖區每個扇區結尾,修改該索引緩沖區頭部的總索引項大小為變化后的大小,獲得索引記錄為:0x638,更新序列號為:0x0014,更新序列數組原值為:0500 CB01 CB01 0000 0000 0000 0000 0000,把更新序列數組依次寫入索引緩沖區各個扇區結尾。可見其文件名為:Hide,其MFT文件記錄號為:0x1D,記錄大小為0x60字節。覆蓋原更新數組,并將更新序列號0x0014寫到該索引緩沖區各個扇區結尾。修改索引緩沖區頭部的索引記錄大小,索引記錄變化后的總大小為索引記錄原大小減去文件夾記錄大小0x5D8,改變后的索引緩沖區索引頭如圖3所示。

圖2 初始定位示意

圖3 索引緩沖區索引頭
更新序列號0x0006,序列數組為:5300 0000,將數組中的值依次寫入MFT。
文件記錄的每個扇區結尾,修改其父目錄文件記錄號0x0B,修改序列號值為:0x0B。將更新序列數組中的項依次寫入該MFT記錄的每個扇區結尾。在該MFT記錄的$INDEX_ROOT屬性中插入本步修改過的文件夾索引記錄,從而覆蓋原更新數組,將更新序列號寫入該MFT文件記錄的每個扇區結尾。
最后發送特性信息,用Chkdsk 檢查文件夾所在的分區,使得操作系統強制刷新文件目錄緩存,重新加載新的文件存儲結構。
本文的NTFS底層文件仿真通過Explain_NonName_ Resident(), Explain_Name_Resident(), Explain_NonName_ NonResident() , Explain_Name_NonResident() 等4個函數分別用于解析未命名常駐、命名常駐、未命名非常駐、命名非常駐4種NTFS屬性。
其中Explain MFT()用于解析MFT文件記錄,并返回有用的信息。ReadFileIndexPage()分離出真正的索引項,為Explain FileIndexList()函數做準備。Explain FileIndexList()解讀文件索引項。FindFileByMFTNum()根據Num參數給出的父目錄文件號,查找文件的M F T文件記錄號并返回。FreeFileClustersInBitmap() 標記參數FileDR中記錄。FreeMFTNumInBitmap()用于釋放某個文件的MFT文件號。GetCountOfMFT()獲取該分區MFT文件記錄的總數。GetDataOfMFTByNum()獲取指定MFT文件號的MFT文件記錄內容。GetDataRun()和GetRealHex()用于解析數據運行。GetIntergerFromData()用于從數據中獲取一個短整型。GetRealName()用于轉換UniCode形式的字符串為ANSI型。GetSpecialAttrOffSet()用于獲取MFT記錄內指定類型屬性的起始偏移。OpenDrive()讀取首扇區獲取重要參數,如每簇扇區數或MFT記錄起始偏移。
ReadSector()和WriteSector()用于讀寫扇區。ShowMFTInfor()用于解讀指定范圍的MFT文件記錄并將有用信息在屏幕輸出。
本文簡單介紹機務維修常見NTFS底層文件仿真,特別是其函數的含義,以期對機務人員進一步理解特設故障有一定幫助。
[1]張澳夫.基于PHM的備件配置問題研究[D].北京:北京理工大學,2014.
[2]李首慶,李光耀.G1000數據隱藏技術仿真初研[J].無線互聯科技,2014(9):150-150.
Processing simulation of common NTFS bottom files in maintenance
Yao Yao1, Zhu Xihua2, Li Guangyao3, Li Shouqing1
(1.China’s Civil Aviation College Branch in Guanghan, Guanghan 618307, China; 2.the Chinese People's Liberation Army Air Force
Airborne Troops Academy, Guilin 541003, China; 3.China’s Civil Aviation Flight University of Luoyang Branch, Luoyang 471001, China)
NTFS(New Technology File System)is a file system in Windows NT environment. In AD hoc maintenance process efficiency,NTFS long file names are often used to ensure data protection and restore function, so as to realize the safe and reliable of directories and files. At the deletion and hidden mechanism of NTFS underlying file, correctly understanding function is the basis of the breakthrough technology of Rootkits, and also the key to eliminate all kinds of the underlying virus and realize the stability and smooth of the AD hoc system. The paper simply introduces common NTFS underlying file maintenance simulation, especially the meaning of its function, in order to help maintenance personnel to further understand the AD hoc fault.
maintenance; NTFS underlying file; simulation; function
項目名稱:中國民用航空飛行學院面上項目;項目編號:J2014-01。
姚堯(1989— ) ,男,四川遂寧,本科,助理工程師;研究方向:電子設備機務維修。