題目提供了一個大小爲256MB
的內存鏡像,顯然咱們須要從當中找到一些有趣的東西。html
既然是內存取證,首先就想到一個強大的取證工具——volatility
git
該工具在kali當中已集成,位於應用程序->數字取證->volatility
。github
下面就針對該鏡像,記錄一下使用該工具進行內存取證的過程。windows
volatility命令手冊: https://github.com/volatility...我這裏只列舉一些經常使用的命令bash
volatility -f mem.data imageinfo
關鍵看Suggested Profile(s)
項,這裏是工具判斷該鏡像的架構,同時也會提供相應架構的命令用於分析該鏡像,本題中可能性最大的架構是Win7SP1x64
,而後在調用命令時加上--profile=Win7SP1x64
就能夠了,繼續往下看。網絡
volatility -f mem.data --profile=Win7SP1x64 --help
經常使用的命令以下:架構
命令 | 功能 |
---|---|
cmdline/cmdscan | 列出歷史cmd命令 |
filescan | 掃描文件,可配合grep使用 |
netscan | 掃描創建的鏈接和套接字,相似於netstat |
pslist/psscan | 列出進程列表 |
svcscan | 掃描windows服務列表 |
screenshot | 顯示GDI樣式的截屏 |
memdump | 從內存dump進程的內存 |
dumpfiles | 從內存dump文件 |
首先咱們要看一下出題人在鏡像裏幹了什麼。工具
volatility -f mem.data --profile=Win7SP1x64 pslist
能夠看到這裏有3個應用程序進程,分別是:wordpad寫字板 MineSweeper掃雷 mspaint畫圖
,並且再看看啓動時間,mspaint
相隔以後的進程有長達10分鐘時間,emmm,出題人應該是就在這段時間寫的flag。接下來咱們就看一下有沒有什麼可疑的文件留存。測試
查看文檔google
volatility -f mem.data --profile=Win7SP1x64 filescan | grep "doc\|docx\|rtf"
沒有。。。
查看圖片
volatility -f mem.data --profile=Win7SP1x64 filescan | grep "jpg\|jpeg\|png\|tif\|gif\|bmp"
也沒有。。。
查看桌面
volatility -f mem.data --profile=Win7SP1x64 filescan | grep "Desktop"
難道出題人還用掃雷來作個圖???(開個玩笑)
看來flag並無保存爲文件,看看有沒有其餘突破口。
volatility -f mem.data --profile=Win7SP1x64 screenshot --dump-dir=./
導出的圖片以下
說實話我根本看不出來這是個什麼界面。。。
查看命令行輸入
volatility -f mem.data --profile=Win7SP1x64 cmdline
查看系統用戶名
volatility -f mem.data --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
查看網絡鏈接
volatility -f mem.data --profile=Win7SP1x64 netscan
在作了不少無用功以後,只能去求助Google了,結果搜出來2篇文章,比較有參考價值:
google-ctf-2016-forensic1: https://www.rootusers.com/goo...
從內存導出raw圖片: https://w00tsec.blogspot.com/...
上述文章介紹了一種方法,經過利用volatility
將進程內存dump下來,而後利用Gimp
打開內存數據,查看鏡像中的系統界面,因而咱們開始實施。
使用volatility dump內存:(2768
是mspaint的pid)
volatility -f mem.data --profile=Win7SP1x64 memdump -p 2768 --dump-dir=./
"原始圖像數據"
出現這樣一個界面,作以下操做:
RGB Alpha
調整三個屬性:高度
調整到合適值就不用變了,個人最大是733。肯定一個寬度
,一般是常見的顯示器分辨率,而後不斷調整位移
,使之出現可見的圖像,也就是鏡像中的系統界面。
(接下來就是我不斷測試的過程,測試了2小時。。。)
分辨率是1920時:能夠看見3個程序,以前的GDI純白色框線界面就是掃雷
的結算界面,寫字板
裏寫的也不是flag,看來就只有畫圖
裏有flag了。
分辨率是1024時:掃雷界面。證實在不一樣分辨率下,會顯示不一樣的界面。
分辨率是1568時:部分畫圖界面,可能離成功不遠了。
分辨率是1457時:getFlag!
過後發現,微調位移
爲圖像的左右方向平移,大幅調節位移
則是圖像的上下方向平移。而寬度
不變時,始終顯示的都是同一幅圖像。
爲了湊夠3點,就寫一下小結吧