浅析内存取证
前言:
MISC經常遇到取證分析的,而且在實戰中取證也是非常重要的,學習一下。
什么是活取證
在主機存活時發現系統被入侵,然后直接把機器的運行內存dump下來,對運行內存進行分析,還原一些進程的中的信息。
主要工作便是
- 抓取文件metadata
- 創建時間線
- 命令歷史
- 分析日志文件
- 哈希摘要
- 轉存內存信息等
什么是死取證
對機器的磁盤做鏡像之后進行分析,在關機后制作硬盤鏡像,分析鏡像(MBR硬盤分區,GPT全局分區表,LVM邏輯卷)是否存在病毒,木馬等惡意程序。
不管是那種取證方式都應盡量避免破環犯罪現場,例如通過內存轉儲工具對內存進行快照,通過磁盤克隆工具對磁盤進行克隆,方便后期的分析工作。
Linux系統取證基礎命令
0x00:查看系統信息
uname -a #查看內核/操作系統/CPU head -n 1 /etc/issue #查看操作系統版本 cat /proc/cpuinfo #查看cpu信息 env #查看系統環境變量0x01 用戶及組信息
w #查看活動用戶 cut -d: -f1 /etc/passwd #查看系統所有用戶 cut -d: -f1 /etc/group #查看系統所有組0x02 查看網絡、端口信息
netstat -an #查看開放端口 netstat -lntp #查看所有監聽端口 netstat -antp #查看已經建立的連接0x03 系統運行信息查看
cat /etc/crontab #系統cron任務查看 cd /var/spool/cron/crontabs #查看用戶的cron任務 ps -ef #查看所有進程 netstat -s #查看網絡統計信息進程 top #實時顯示進程的用戶信息0x04 日志查看分析
cat /var/log/boot.log #查看Linux系統開機自檢過程顯示的信息 cat /var/log/lastlog #記錄最后一次用戶成功登陸的時間、登陸IP等信息 cat /var/log/messages #記錄Linux操作系統常見的系統和服務錯誤信息 cat /var/log/btmp #記錄Linux登陸失敗的用戶、時間以及遠程IP地址 cat /var/run/utmp #記錄有關當前登錄的每個用戶的信息 cat /var/log/wtmp #永久記錄每個用戶登錄、注銷及系統的啟動、停機的事件0x05:結束進程
linux下的kill命令可以結束相關進程
kill xxx #xxx進程PID號(PID就是各進程的身份標識 ) kill -9 xxx #kill -9代表的信號是SIGKILL,表示進程被終止,需要立即退出;Volatility
Volatility是一款開源的,基于Python開發的內存取證工具集,可以分析內存中的各種數據。Volatility支持對32位或64位Wnidows、Linux、Mac、Android操作系統的RAM數據進行提取與分析。
這里列出一些常用命令,以方便之后自己查看
volatility -f xxx imageinfo #使用imageinfo插件來猜測dump文件的profile值 volatility -f xxx --profile=xxx pslist #指定profile值,使用pslist去列舉系統進程 volatility cmdscan -f xxx --profile=xxx #查看歷史命令 volatility iehistory -f xxx --profile=xxx #查看IE歷史信息 volatility -f mem.raw --profile=Win7SP0x86 screenshot --dump-dir=./ #查看截圖| cmdline/cmdscan | 列出歷史cmd命令 |
| filescan | 掃描文件,可配合grep使用 |
| pslist/psscan | 列出進程列表 |
| svcscan | 掃描windows服務列表 |
| memdump | 從內存dump進程的內存 |
| dumpfiles | 從內存dump文件 |
官方命令
了解幾個文件后綴
vmem文件 #表示虛擬內存文件,與pagefile.sys相同 raw文件 #raw文件是內存取證工具Dumpit提取內存生成的內存轉儲文件除此之外,還需要了解一下profile(配置文件)
profile是特定操作系統版本以及硬件體系結構(x86,x64,ARM)中VTypes,共用體,對象類型的集合.除了這些組件以外,profile還包括:元數據:操作系統的名稱,內核版本,以及編譯號. 系統調用信息:索引以及系統調用的名稱 常量值:全局變量-在某些操作系統中能夠在硬編碼的地址處找到的全局變量 系統映射:關鍵全局變量和函數的地址(僅限Linux和Mac)
每個profile都有個一個唯一的名稱,通常是由操作系統的名稱,版本,服務包,系統結構等信息組成.
如:Win7SP1x64是64位的Windows 7 SP1系統配置文件的名稱實戰訓練
0x00:V&N 2020 公開賽-MISC內存取證
拿到文件,先來看一下文件的profile值,確定內存鏡像的版本
volatility -f mem.raw imageinfo
接下來搜索一下進程,看看出題人做了些什么操作
發現了幾個關鍵進程,分別是
notepad.exe (pid 3552) #編輯器 TrueCrypt.exe (pid 3364) #TrueCrypt是一款免費開源的加密軟件 mspaint.exe (pid 2648) #畫圖工具 iexplore.exe (pid 3640\3696) #IE瀏覽器先dump出來查看一下
volatility -f mem.raw --profile=Win7SP0x86 memdump -p 2648 --dump-dir=./volatility -f mem.raw --profile=Win7SP0x86 memdump -p 3364 --dump-dir=./volatility -f mem.raw --profile=Win7SP0x86 memdump -p 3552 --dump-dir=./mspaint.exe (pid 2648)
先來看一下畫圖這個,看了大師傅的博客才知道這種畫圖進程應該利用volatility將進程內存dump下來,然后利用Gimp打開內存數據,最后查看鏡像中的系統界面。
先下載下Gimp工具,我這里用的是kail
apt-get install gimp將上面dump下來的2648.dmp改后綴名為2648.data,再使用Gimp工具打開該文件
剛打開就是這個樣子,需要我們自己去調整一下位移、寬度和高度。
高度的話只要圖像覆蓋住畫面即可,之后就不用再進行調整了,如:
高度固定后,就需要調整一下寬度,覆蓋住整個頁面即可,最后就是調整位移,不斷調整只要圖像顯示清楚即可
拿到圖片在畫圖工具中垂直翻轉一下就可以了
得到一個信息,先記錄下來
notepad.exe (pid 3552)
在volatility命令中,有一個editbox插件可以顯示有關編輯控件的信息。命令如下:
volatility -f mem.raw --profile=Win7SP0x86 editbox
發現了百度網盤的鏈接就可以進行下一步了。
除此之外還有另外一個插件notepad,但是這個插件只是適用于windows xp的鏡像分析。
TrueCrypt.exe (pid 3364)
將TrueCrypt.exe進程(pid為3364)dump出來之后,利用工具Elcomsoft Forensic Disk Decryptor CracKed By Hmily進行破解Key值
按照這個順序進行操作即可,加載文件那里,上面那個加載的是從百度網盤下載的文件,下面加載的是3364.dmp,之后掛載即可。
打開得到key值
既然拿到了Key值,接下來就對VOL文件進行正常的破解操作,工具為VeraCrypt,記得要勾選TrueCrypt模式
加載成功
打開F盤,里面有一個壓縮包,但需要密碼才能打開
這個密碼便是在上面通過畫圖進程得到的密碼,輸入便可以獲取到flag。
0x01:內存取證賽題
描述:
一天下午小白出去吃飯,臨走之前還不忘鎖了電腦,這時同寢室的小黑想搞點事情,懂點黑客和社工知識的小黑經過多次嘗試獲得了密碼成功進入電腦,于是便悄悄在電腦上動起手腳了,便在桌面上寫著什么,想給小白一個驚喜,同時還傳送著小白的機密文件,正巧這時小白剛好回來,兩人都嚇了一跳,小黑也不管自己在電腦上留下的操作急忙離開電腦,故作淡定的說:“我就是隨便看看”。
問題:
1.小黑寫的啥,據說是flag? 2.那么問題來了,小白的密碼是啥? 3.小黑發送的機密文件里面到底是什么?先來看一下文件的profile值
volatility -f mem.raw imageinfo
然后第一個問題提示的是小黑寫的啥,據說是flag?,所有先查看一下進程
然后發現了notepad.exe進程,利用下editbox插件顯示下編輯控件的信息
volatility -f mem.raw --profile=WinXPSP2x86 editbox
因為這個是windows xp的鏡像,所以也可以用插件notepad
發現這一段有點不正常,感覺像是base16,解一下發現flag
接下來就看第二問題,小白的密碼是啥?
這個問題涉及到了密碼,他的系統是Windows,就先使用命令找一下注冊表,主要是為了找到SAM、system文件,得到其virtual 地址。
volatility -f mem.raw --profile=WinXPSP2x86 hivelist
接下來獲取內存中的系統密碼,使用 hashdump 將它提取出來
知道了NT-HASH的值,在線破解下
但沒破解成功,除下在線的還可以使用
這兩個工具進行破解一下,這里就不在演示了,主要是為了學習取證分析。
最后看一下第三個問題,發送的機密文件里面到底是什么?
描述中說的是傳送著小白的機密文件,而且進程中有nc.exe、有cmd.exe,應該是使用cmd命令行的nc進行文件的傳輸。
既然有操作就肯定會留下痕跡,可以看一下歷史命令
傳輸了一個zip文件,既然知道這個進程中做了這樣的操作,就先將nc.exe進程給dump下來
然后再foremost一下,提取出來(binwalk提取出來會損壞文件)
需要輸入密碼,而密碼根據提示也很明顯了,就是第二問破解出來的密碼
最終得到flag
總結
感覺內存取證和流量分析一樣,都很有趣,目前接觸的還是比較少,繼續學習,沖沖沖!
參考博客
https://blog.xiafeng2333.top/ctf-25/
https://www.freebuf.com/news/145262.html
總結
- 上一篇: “中能融合杯”线下赛感悟
- 下一篇: 勒索病毒“WannaCry”复现