---
# System prepended metadata

title: MemLabs Lab 4 - Obsession

---

## 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
:::

![image](https://hackmd.io/_uploads/SJc3GDLSke.png)

#### vol2

這個指令用來識別記憶體轉儲的作業系統版本
:::info
python2 vol.py -f MemoryDump_Lab4.raw imageinfo
:::


![image](https://hackmd.io/_uploads/r1mm0dS2Jg.png)
- 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
:::
![image](https://hackmd.io/_uploads/B1z5li8SJl.png)

用以下指令來 dump 指定的 file，但是看起來不怎麼重要
:::info
python vol.py -f MemoryDump_Lab4.raw windows.dumpfiles.DumpFiles --physaddr 0x3eb96870
:::
![image](https://hackmd.io/_uploads/SypnXiUH1e.png)
![image](https://hackmd.io/_uploads/S1Vo7jUryg.png)

#### vol2
:::info
python2 vol.py -f MemoryDump_Lab4.raw --profile=Win7SP1x64 filescan | grep $Recycle.Bin
:::
![image](https://hackmd.io/_uploads/Sk_VZtr2kl.png)

我們看到兩個 .ini 的檔案
desktop.ini 是隱藏的系統設定檔，用來 客製化資料夾的顯示方式

:::info
python2 vol.py -f MemoryDump_Lab4.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000003eb96870 -D output/
:::
![image](https://hackmd.io/_uploads/S1EG7tH3Jl.png)
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，裡面內容如下圖。
![image](https://hackmd.io/_uploads/ByRhrtHn1g.png)

imageres.dll
![image](https://hackmd.io/_uploads/Skvb1or2Je.png)
![image](https://hackmd.io/_uploads/B1nQ1jrhyx.png)
![image](https://hackmd.io/_uploads/BJuV1iHnkl.png)

用於定義資源統 icon 而已

[ 結論 ] :
內容只是用來讓 $Recycle.Bin 資料夾在檔案總管顯示為「資源回收桶」，並使用對應的圖示與名稱。


---
接著嘗試資料名稱，題目說是重要的檔案，試試看 important，原本找小寫沒有資料，改成大寫出現一個 Important.txt
![image](https://hackmd.io/_uploads/B1RRNoUBJx.png)

dump 下來看看，但是發現 dump 不了，看來我們要找的重要資料就是他了，因為內容已被刪除
![image](https://hackmd.io/_uploads/Hy5ArsIrke.png)

vol2
:::info
python2 vol.py -f MemoryDump_Lab4.raw --profile=Win7SP1x64 filescan | grep Import
:::
![image](https://hackmd.io/_uploads/BkgHDKrn1g.png)
找到一個 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
:::
![image](https://hackmd.io/_uploads/rJhjjKH31e.png)
![image](https://hackmd.io/_uploads/rJqHhtr3kg.png)



但我不知道 volatility3 怎麼恢復檔案，所以(作弊?)用了 autopsy 就成功找到他了
答案為
:::success
inctf{1_is_n0t_EQu4l_7o_2_bUt_th1s_d0s3nt_m4ke_s3ns3}
:::

![image](https://hackmd.io/_uploads/S1xtU38rkx.png)

<!--
:::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 了。

-->



:::