机务维修中常见NTFS底层文件处理仿真
2016-09-25朱喜华李光耀李首庆
姚 尧,朱喜华,李光耀,李首庆
(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.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 检查文件夹所在的分区,使得操作系统强制刷新文件目录缓存,重新加载新的文件存储结构。
2 函数说明
本文的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文件记录并将有用信息在屏幕输出。
3 结语
本文简单介绍机务维修常见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— ) ,男,四川遂宁,本科,助理工程师;研究方向:电子设备机务维修。