## MemLabs Lab 4 - Obsession [ From ] : https://github.com/stuxnet999/MemLabs ### Description : 我的系統最近遭到破壞。駭客竊取了很多訊息,但他也刪除了我的一個非常重要的檔案。我不知道如何恢復它。目前我們擁有的唯一證據就是記憶體轉儲。請幫我。 - 線索 1 : memerydump - 線索 2 : 找刪除的資料 ### 解題 : 以下指令為顯示所有可用插件的工具或命令,從中發現可以用來處理資料的 layer 支援 windows,也表示該環境為 windows :::info python vol.py -f MemoryDump_Lab4.raw frameworkinfo.FrameworkInfo :::  #### vol2 這個指令用來識別記憶體轉儲的作業系統版本 :::info python2 vol.py -f MemoryDump_Lab4.raw imageinfo :::  - Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_24000, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_24000, Win7SP1x64_23418 該內容表示工具推測此映像檔可能來自 Windows 7 Service Pack 1 (64 bit) Service Pack(服務包,簡稱 SP)是微軟發布的系統更新包 接著由於題目說他有重要資料被刪除了,因此將目標指向回收桶,並發現一個 desktop.ini :::success C:\\$Recycle.Bin :::  用以下指令來 dump 指定的 file,但是看起來不怎麼重要 :::info python vol.py -f MemoryDump_Lab4.raw windows.dumpfiles.DumpFiles --physaddr 0x3eb96870 :::   #### vol2 :::info python2 vol.py -f MemoryDump_Lab4.raw --profile=Win7SP1x64 filescan | grep $Recycle.Bin :::  我們看到兩個 .ini 的檔案 desktop.ini 是隱藏的系統設定檔,用來 客製化資料夾的顯示方式 :::info python2 vol.py -f MemoryDump_Lab4.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000003eb96870 -D output/ :::  LocalizedResourceName 指定這個資料夾的顯示名稱,shell32.dll 是 Windows 的系統 DLL 檔案,裡面包含許多 UI 文字與圖示資源,後面的 -8964 是 shell32.dll 內的資源識別碼 (Resource ID),就能對應到資源回收桶這個名稱 :::success [ Path ] : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon ::: CLSID(Class Identifier)裡面存 GUID(全域唯一識別碼),用來標記 Windows 系統中特殊類型的資料夾,其中 {645FF040-5081-101B-9F08-00AA002F954E} 是資源回收桶的 GUID,裡面內容如下圖。  imageres.dll    用於定義資源統 icon 而已 [ 結論 ] : 內容只是用來讓 $Recycle.Bin 資料夾在檔案總管顯示為「資源回收桶」,並使用對應的圖示與名稱。 --- 接著嘗試資料名稱,題目說是重要的檔案,試試看 important,原本找小寫沒有資料,改成大寫出現一個 Important.txt  dump 下來看看,但是發現 dump 不了,看來我們要找的重要資料就是他了,因為內容已被刪除  vol2 :::info python2 vol.py -f MemoryDump_Lab4.raw --profile=Win7SP1x64 filescan | grep Import :::  找到一個 Important.txt 檔案,dump 下來看看發現沒有東西,這就代表我們在找的文件被刪除了。 #### 為甚麼檔名在,但內容找不到了 在 Windows 作業系統中,當檔案被刪除時: NTFS 檔案系統 只會將該檔案的目錄索引標記為「可用」,檔案內容仍然留在磁碟上,直到新的數據覆蓋它。 volatility filescan 命令會檢查記憶體中的文件,像是開啟過的檔案(即使後來被刪除)、NTFS Master File Table (MFT) 內的記錄。 可能情況 1 : 檔案的實際內容存儲在磁碟的其他區塊 可能情況 2 : 刪除的檔案區塊被標記為「可用」,新的寫入操作可能會覆蓋它們 #### 主檔案表 (MFT, Master File Table) 是檔案系統的核心,負責管理所有檔案的資訊,包含: - 檔案名稱 - 檔案大小 - 建立與修改時間 - 存取權限 - 檔案內容存放位置 (磁碟區塊/叢集) 因此即使檔案被刪除,MFT 記錄仍可能保留一段時間,所以下一步去 mft 找資料使用以下指令 :::info python2 vol.py -f MemoryDump_Lab4.raw --profile=Win7SP1x64 mftparser > mft :::   但我不知道 volatility3 怎麼恢復檔案,所以(作弊?)用了 autopsy 就成功找到他了 答案為 :::success inctf{1_is_n0t_EQu4l_7o_2_bUt_th1s_d0s3nt_m4ke_s3ns3} :::  <!-- :::spoiler 講稿 我負責的是 MEMLABS LAB4,這題的描述是 我的系統被破壞了,駭客竊取了很多訊息,同時也刪除了他們一個非常重要的檔案。他們不知道如何恢復它。目前擁有的證據就是記憶體轉儲檔案,這個檔案叫做 MemoryDump_Lab4.raw 在這些描述中,我們主要關注幾個關鍵字, 第一個是題目提供的證據,一個 memery dump 的檔案,那我們就知道可以使用什麼類型的工具來分析,這邊我們就選擇使用 volatility2 來處理。 接著另一個關鍵是,描述裡面提到刪除了重要的檔案,這邊要特別關注的地方就是如何找到這些被刪除的資料。 在解題前,我們需要先對這個檔案有個基本的了解,所以這邊使用 imageinfo 這個指令,主要目的是要了解這個 dump 下來的檔案應該要用什麼環境去分析他。 這邊擷取出比較重要的內容,這個內容是他建議的 profile,這邊主要看 Win7SP1x64,這個內容的詳細解釋前面同學已經有介紹這邊就跳過 了解完環境之後,我們之後指令就會加上 –profile=Win7SP1x64,來確保工具能夠更好的去分析我的資料。 那回到剛才的解題思路,我們知道有東西被刪掉了,所以直覺就先去找資源回收桶,看東西有沒有在裡面。 這邊使用 filescan 指令找該檔案中所有的資料,然後這邊我設篩選條件是資源回收桶的路徑。 結果是掃出兩個檔案,都是 desktop.ini,這個檔案其實是系統設定檔,用來 客製化資料夾的顯示方式,但是我們還是 dump 下來看一下內容。 接下來內容是補充 : 使用指令是 dumpfiles,後面加資料的 offset,最後加上 output 的位置,從內容可以看到 CLSID 跟 LocalizedResourceName 兩個部分,先看 LocalizedResourceName ,他裡面的 shell32.dll 是 Windows 的系統 DLL 檔案,裡面包含許多文字與圖示資源,後面的 -8964 是 shell32.dll 內的資源識別碼 (Resource ID),就能對應到資源回收桶這個名稱,所以簡單說就是用來指定資料夾名稱。 接著 CLSID(Class Identifier)裡面存 GUID(全域唯一識別碼),用來標記 Windows 系統中特殊類型的資料夾,其中 {645FF040-5081-101B-9F08-00AA002F954E} 是資源回收桶的 GUID,裡面的數值資料有一組檔案路徑,實際去找這個路徑就可以發現資回收桶的 icon。 那因為我們找資源回收桶找不到我們要的檔案,而在開始的題目描述有說道是個很重要的資料,所以這邊我就再 filescan 一次,這次關鍵字下 import,其實我的一開始是試小寫,但是沒有,試大寫的 I 才成功,這邊就看到一個 important.txt 檔案,應該是我們要的東西。 嘗試 dump 下來看看,但是甚麼都沒有,看來真的被刪掉了。 但是 filescan 是怎麼找到他的,這時候就先簡單說下 windows 刪除檔案的過程。 在 windows 中刪掉檔案的時候,檔案系統會將那個被刪資料的資料區塊標記成可使用的狀態,然後將資料名稱從目錄上移除,所以使用者就看不到這個資料了,但是在新檔案覆蓋之前,舊資料都會繼續存在。 而 volatility filescan 就是用 NTFS Master File Table (MFT) 內的記錄來找檔案的,接著補充下什麼是 MFT MFT 主要負責管理檔案的資訊,像是檔案名稱、大小、建立與修改時間、存權限 以及存放位置,這邊重點是,即使檔案被刪除,MFT 記錄仍可能保留一段時間,因此我們可以根據 MFT 記錄找被刪除的檔案。 所以下一步去 mft 找資料,並使用 mftparser 指令,他會將 mft 中的紀錄都挖出來,這邊我先把它存到檔名 mft 裡面,在透過 ctrl+f 找 Important 就找到他了,裡面藏了這題的 flag。 補充說明 這題也可以用 Autopsy 找,這個工具也是專用於分析磁碟、記憶體轉儲的工具,那它比 vol 更親民,因為他有 GUI 可以很視覺化的找資料,也能對裡面資料最排序、分類等功能,所以像這題我就可以透過刪除的檔案分類中直接找關鍵字,就能找到 flag 了。 --> :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up