Windows 取证之$MFT
一、什么是MFT
MFT,全稱Master File Table,即主文件表,它是NTFS文件系統(tǒng)的核心。它是包含了NTFS卷中所有文件信息的數(shù)據(jù)庫(kù),在$MFT 中每個(gè)文件(包括MFT本身)至少有一個(gè)MFT,記錄著該文件的各種信息。這些信息被稱為屬性。
NTFS使用MFT條目定義它們對(duì)應(yīng)的文件,有關(guān)文件的所有信息,比如大小、時(shí)間、權(quán)限等都存在MFT條目中,或者由MFT條目描述存儲(chǔ)在MFT外部的空間中。
MFT由一個(gè)個(gè)MFT項(xiàng)(也稱為文件記錄(File Record))組成,每個(gè)MFT項(xiàng)占用1024字節(jié)的空間。這個(gè)概念相當(dāng)于Linux中的inode,File Record在$MFT文件中物理上是連續(xù)的,且從0開(kāi)始編號(hào),每個(gè)MFT項(xiàng)的前部幾十個(gè)字節(jié)有著固定的頭結(jié)構(gòu),用來(lái)描述本MFT項(xiàng)的相關(guān)信息。后面的字節(jié)存放著“屬性”。(-via 百度百科)
二、MFT與數(shù)據(jù)恢復(fù)
在正常情況下,MTF條目會(huì)隨著文件添加到NTFS卷中而增加,因此MFT的大小也會(huì)增加,當(dāng)文件從NTFS卷中刪除時(shí),其MFT條目會(huì)被標(biāo)記為free(空閑),以準(zhǔn)備被重復(fù)使用,此條目會(huì)繼續(xù)存在,直到它被新文件覆蓋。但MFT所占空間大小不會(huì)因?yàn)閯h除文件而縮小。
例子:假如現(xiàn)在有100個(gè)MFT條目和一個(gè)文件X,現(xiàn)在刪除文件X并立即創(chuàng)建500個(gè)以上文件,那么文件X的MFT條目將會(huì)被覆蓋。雖然文件的內(nèi)容可能存在與硬盤上,但包含名稱、元數(shù)據(jù)等的MFT條目將被覆蓋。
例子2:現(xiàn)在MFT有10000個(gè)條目,刪除1000個(gè)文件和立即添加2個(gè)新文件。此時(shí),可以恢復(fù)998個(gè)條目。不過(guò)文件的數(shù)據(jù)是否可以恢復(fù)得看它們是否已被覆蓋。
這種文件數(shù)據(jù)和MFT條目分開(kāi)的方式,會(huì)導(dǎo)致在刪除操作后存在以下幾種可能性:
1、文件被刪除,但MFT條目和文件數(shù)據(jù)是100%可恢復(fù)的,則刪除的文件可以100%被恢復(fù)。
2、文件被刪除,MFT條目可恢復(fù),但部分文件數(shù)據(jù)被覆蓋,則該文件部分可被恢復(fù)。
3、文件被刪除,MFT條目可恢復(fù),但是文件數(shù)據(jù)被100%覆蓋,則該文件不可恢復(fù),但該文件相關(guān)屬性信息(名稱、日期、大小等信息)可被恢復(fù)。
4、文件被刪除,MFT條目和文件數(shù)據(jù)100%可恢復(fù),但文件已100%丟失,這種情況下。取證調(diào)查可以揭示該文件的大量信息,但不是通過(guò)MFT,而是使用其他證物。
5、文件被刪除且MFT100%被覆蓋,但文件數(shù)據(jù)未100%被覆蓋。剩余的文件可以從磁盤上未分配的空間恢復(fù)。但雕刻數(shù)據(jù)的結(jié)果取決于碎片、可恢復(fù)數(shù)據(jù)的數(shù)量(可能是100%)和文件的性質(zhì)。
當(dāng)然,MFT被覆蓋時(shí),存在非100%被覆蓋的情況,這種情況被稱為MFT文件松弛,標(biāo)準(zhǔn)上來(lái)說(shuō),MFT條目被分配1024字節(jié)的固定空間。如果MFT條目小于1024字節(jié)。比如1000字節(jié),則剩下為額外松弛空間。比如一個(gè)只有200字節(jié)長(zhǎng)的密碼文件,其文件數(shù)據(jù)也會(huì)被放置在MFT內(nèi),這種文件數(shù)據(jù)稱為常駐數(shù)據(jù)。而文件名稱、日期等元數(shù)據(jù)只占用大約500字節(jié)左右,如果刪除了文件并在其位置創(chuàng)建了新的MFT條目,且不包括常駐數(shù)據(jù)。這意味著即使這個(gè)文件被刪除,如果仔細(xì)檢查也能恢復(fù)。
三、$MFT文件在取證中的應(yīng)用
題目來(lái)源:Cynet應(yīng)急響應(yīng)挑戰(zhàn)賽
題目描述:GOT公司的CTO在自己的筆記本上發(fā)現(xiàn)了可疑的活動(dòng)。他說(shuō)桌面上某些文件突然被移動(dòng)了位置,而且其他文件似乎還在不合邏輯的日期被修改。他希望我們找出桌面上文件異常的相關(guān)證據(jù)。通過(guò) 一些技術(shù)檢查,我們發(fā)現(xiàn)他是對(duì)的。桌面文件有明顯的異常痕跡。請(qǐng)根據(jù)提供的$MFT文件找到與文件更改/修改相關(guān)的異常痕跡。
提示:1、找出受攻擊者影響的文件名稱及其原始創(chuàng)建時(shí)間。2、該文件位于桌面上。3、時(shí)間格式:DD-MM-YYYY HH:MM:SS ,文件名格式:filename.ext(ext是文件擴(kuò)展名)
下載題目提供的文件
用Winhex打開(kāi)可以查看其組成結(jié)構(gòu)
我們可以通過(guò)$MFT解析軟件把MFT條目導(dǎo)出來(lái)
Mft2Csvhttps://github.com/jschicht/Mft2Csv
下載打開(kāi)軟件,選擇$MFT文件,然后導(dǎo)出到csv文件
導(dǎo)出的條目會(huì)以csv文件的形式存放在軟件目錄下
打開(kāi)導(dǎo)出的csv文件,就可以看到文件的名稱,日期,權(quán)限等各種信息
我們找到桌面上的相關(guān)文件
通過(guò)篩選,我們把要找的文件鎖定在19個(gè)相關(guān)文件內(nèi)容中
通過(guò)觀察比較,發(fā)現(xiàn)其中一個(gè)文件時(shí)間有異常
0x0567DC00|GOOD|OK||88567|13|1|86832|1|Mod-File.txt|:UsersDFIRDesktopMod-File.txt|FILE|ALLOCATED|1|archive|archive|DOS+WIN32|0|2019-01-01 01:01:01.0000000|2019-01-01 01:01:01.0000000|2020-01-19 12:19:30.3933817|2019-01-01 01:01:01.0000000|0|2020-01-19 11:51:19.3290999|2020-01-19 11:51:25.8535572|2020-01-19 11:51:25.8539659|2020-01-19 11:51:25.8520885|1|0|0|0|20993824|||1|0||00||146907926|352|1024|0|0|0x0006|||||0|0|0|0|1368|0||||||||||||{817E2E08-3A9F-11EA-9223-000C2909356D}|NOT PRESENT|NOT PRESENT|NOT PRESENT|||||||||||||||||||||||||||||||||||||||1|0|1|1|0|0|0|1|0|0|0|0|0|0|0|0
上述項(xiàng)目對(duì)應(yīng)的含義如下:
RecordOffset|Signature|IntegrityCheck|Style|HEADER_MFTREcordNumber|HEADER_SequenceNo|Header_HardLinkCount|FN_ParentReferenceNo|FN_ParentSequenceNo|FN_FileName|FilePath|HEADER_Flags|RecordActive|FileSizeBytes|SI_FilePermission|FN_Flags|FN_NameType|ADS|SI_CTime|SI_ATime|SI_MTime|SI_RTime|MSecTest|FN_CTime|FN_ATime|FN_MTime|FN_RTime|CTimeTest|FN_AllocSize|FN_RealSize|FN_EaSize|SI_USN|DATA_Name|DATA_Flags|DATA_LengthOfAttribute|DATA_IndexedFlag|DATA_VCNs|DATA_NonResidentFlag|DATA_CompressionUnitSize|HEADER_LSN|HEADER_RecordRealSize|HEADER_RecordAllocSize|HEADER_BaseRecord|HEADER_BaseRecSeqNo|HEADER_NextAttribID|DATA_AllocatedSize|DATA_RealSize|DATA_InitializedStreamSize|SI_HEADER_Flags|SI_MaxVersions|SI_VersionNumber|SI_ClassID|SI_OwnerID|SI_SecurityID|SI_Quota|FN_CTime_2|FN_ATime_2|FN_MTime_2|FN_RTime_2|FN_AllocSize_2|FN_RealSize_2|FN_EaSize_2|FN_Flags_2|FN_NameLength_2|FN_NameType_2|FN_FileName_2|GUID_ObjectID|GUID_BirthVolumeID|GUID_BirthObjectID|GUID_DomainID|VOLUME_NAME_NAME|VOL_INFO_NTFS_VERSION|VOL_INFO_FLAGS|FN_CTime_3|FN_ATime_3|FN_MTime_3|FN_RTime_3|FN_AllocSize_3|FN_RealSize_3|FN_EaSize_3|FN_Flags_3|FN_NameLength_3|FN_NameType_3|FN_FileName_3|DATA_Name_2|DATA_NonResidentFlag_2|DATA_Flags_2|DATA_LengthOfAttribute_2|DATA_IndexedFlag_2|DATA_StartVCN_2|DATA_LastVCN_2|DATA_VCNs_2|DATA_CompressionUnitSize_2|DATA_AllocatedSize_2|DATA_RealSize_2|DATA_InitializedStreamSize_2|DATA_Name_3|DATA_NonResidentFlag_3|DATA_Flags_3|DATA_LengthOfAttribute_3|DATA_IndexedFlag_3|DATA_StartVCN_3|DATA_LastVCN_3|DATA_VCNs_3|DATA_CompressionUnitSize_3|DATA_AllocatedSize_3|DATA_RealSize_3|DATA_InitializedStreamSize_3|STANDARD_INFORMATION_ON|ATTRIBUTE_LIST_ON|FILE_NAME_ON|OBJECT_ID_ON|SECURITY_DESCRIPTOR_ON|VOLUME_NAME_ON|VOLUME_INFORMATION_ON|DATA_ON|INDEX_ROOT_ON|INDEX_ALLOCATION_ON|BITMAP_ON|REPARSE_POINT_ON|EA_INFORMATION_ON|EA_ON|PROPERTY_SET_ON|LOGGED_UTILITY_STREAM_ON
在其文件日期修改日期和訪問(wèn)日期上都很不正常,都是2019-01-01 01:01:01.0000000,通過(guò)比較FN Info Creation date(FN_CTime)和Std Info Creation date(SI_CTime)發(fā)現(xiàn)兩種時(shí)間不一致。(注:FN (FILE_NAME) ,SI (STANDARD_INFORMATION) );而$FN只能由內(nèi)核級(jí)進(jìn)程修改,攻擊者想修改非常困難。
至此我們找出了被修改的文件是Mod-File.txt,文件的原始創(chuàng)建時(shí)間是19-01-2020 11:51:19
四、總結(jié)
攻擊者利用的是Timestomp技術(shù)。Timestomp 是一種修改文件時(shí)間戳(修改,訪問(wèn),創(chuàng)建和更改時(shí)間)的技術(shù),通常用于模擬同一文件夾中的文件。該技術(shù)可以用在攻擊者修改或創(chuàng)建的文件上,使得它們?cè)谌∽C調(diào)查人員或文件分析工具面前更加隱蔽。Timestomp 可以與文件名偽裝(Masquerading)結(jié)合使用來(lái)隱藏惡意軟件和工具。(https://attack.mitre.org/techniques/T1070/006/)
本文涉及相關(guān)實(shí)驗(yàn):Linux系統(tǒng)取證 (本實(shí)驗(yàn)主要介紹 Linux 環(huán)境下的磁盤取證和內(nèi)存取證工具的使用包括 Ftkimage、xmount、Volatility等。)
合天智匯:合天網(wǎng)絡(luò)靶場(chǎng)、網(wǎng)安實(shí)戰(zhàn)虛擬環(huán)境
總結(jié)
以上是生活随笔為你收集整理的Windows 取证之$MFT的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: centos7 安装ELK
- 下一篇: Linux 服务器 U盘安装(避免U盘启