CTF中文件包含的一些技巧


i春秋作家:lem0n

原文來自:淺談內存取證

0x00 前言

網絡攻擊內存化和網絡犯罪隱遁化,使部分關鍵數字證據只存在於物理內存或暫存於頁面交換文件中,這使得傳統的基於文件系統的計算機取證不能有效應對.內存取證作為傳統文件系統取證的重要補充,是計算機取證科學的重要組成部分,通過全面獲取內存數據、詳盡分析內存數據,並在此基礎上提取與網絡攻擊或網絡犯罪相關的數字證據,近年來,內存取證已贏得安全社區的持續關注,獲得了長足的發展與廣泛應用,在網絡應急響應和網絡犯罪調查中發揮着不可替代的作用.首先回顧了內存取證研究的起源和發展演化過程;其次介紹了操作系統內存管理關鍵機制;然后探討了內存取證的數據獲取和分析方法,歸納總結目前內存取證研究的最新技術;最后討論了內存取證存在的問題、發展趨勢和進一步的研究方向.

​                                                                  ——《內存取證研究與進展[J].軟件學報,2015, 26(5): 1151-1172》

0x01 實驗材料

kali 滲透測試系統

easy_dump.img 內存鏡像

Volatility Framework 內存取證工具

TestDisk 文件恢復工具

0x02 Volatility Framework

volatility 框架是一款用於易失性內存取證的重量級框架。在該框架下我們可以完成許多取證的操作,獲取我們想取得的信息。其支持的操作系統也非常廣泛,同時支持 windows , linux, Mac OSX,甚至也支持 Android 手機使用ARM處理器的取證。因此,它也是所有網絡取證愛好者的必學框架。

volatility 使用:
        volatility -f <文件名> -–profile=<配置文件> <插件> [插件參數] 通過volatility --info獲取工具所支持的profile,Address Spaces,Scanner Checks,Plugins 常用插件: imageinfo:顯示目標鏡像的摘要信息,知道鏡像的操作系統后,就可以在 –profile 中帶上對應的操作系統 pslist:該插件列舉出系統進程,但它不能檢測到隱藏或者解鏈的進程,psscan可以 psscan:可以找到先前已終止(不活動)的進程以及被rootkit隱藏或解鏈的進程 pstree:以樹的形式查看進程列表,和pslist一樣,也無法檢測隱藏或解鏈的進程 mendump:提取出指定進程,常用foremost 來分離里面的文件 filescan:掃描所有的文件列表 hashdump:查看當前操作系統中的 password hash,例如 Windows 的 SAM 文件內容 svcscan:掃描 Windows 的服務 connscan:查看網絡連接 

0x03 實驗過程

利用 volatility -f easy_dump.img imageinfo查看鏡像信息

root@kali:~/Desktop# volatility -f easy_dump.img imageinfo
Volatility Foundation Volatility Framework 2.6 INFO    : volatility.debug    : Determining profile based on KDBG search...           Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_23418                      AS Layer1 : WindowsAMD64PagedMemory (Kernel AS)                      AS Layer2 : FileAddressSpace (/root/Desktop/easy_dump.img)                       PAE type : No PAE                            DTB : 0x187000L                           KDBG : 0xf8000403f070L           Number of Processors : 1      Image Type (Service Pack) : 0                 KPCR for CPU 0 : 0xfffff80004040d00L              KUSER_SHARED_DATA : 0xfffff78000000000L            Image date and time : 2018-09-28 09:02:19 UTC+0000      Image local date and time : 2018-09-28 17:02:19 +0800 

根據Suggested Profile(s)值猜測他是Win7SP1x64,所以利用--profile=Win7SP1x64

利用volatility -f easy_dump.img --profile=Win7SP1x64 hashdump 查看當前操作系統中的 password hash

root@kali:~/Desktop# volatility -f easy_dump.img --profile=Win7SP1x64 hashdump
Volatility Foundation Volatility Framework 2.6
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: n3k0:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: 

將hash復制到文檔中,用john FileName --format=nt進行密碼破解(本次破解為空密碼)

注:john破解的密碼會保存在本地目錄.john中的john.pot文件,如需再次破解相同密碼需要使用--show或者將john.pot文件刪除。

root@kali:~/Desktop# john hashdump.txt  --format=NT 
Using default input encoding: UTF-8 Rules/masks using ISO-8859-1 Loaded 3 password hashes with no different salts (NT [MD4 128/128 AVX 4x3]) Press 'q' or Ctrl-C to abort, almost any other key for status                  (Administrator)                  (Guest)                  (n3k0) 3g 0:00:00:00 DONE 2/3 (2018-10-15 00:17) 150.0g/s 130550p/s 130550c/s 391650C/s money..hello Use the "--show" option to display all of the cracked passwords reliably Session completed 

利用volatility -f easy_dump.img --profile=Win7SP1x64 psscan查看所有進程,通過所有進程來查看是否有可疑進程出現,進行進一步取證。

root@kali:~/Desktop# volatility -f easy_dump.img --profile=Win7SP1x64 psscan
Volatility Foundation Volatility Framework 2.6
Offset(P)          Name                PID   PPID PDB                Time created                   Time exited                   

------

0x000000001a453a70 WmiApSrv.exe       2760    492 0x000000001a9ab000 2018-09-28 09:01:58 UTC+0000                                  0x0000000022e4e060 VSSVC.exe          2168    492 0x0000000002a44000 2018-09-28 09:01:39 UTC+0000                                  ···             0x0000000022fd1b30 notepad.exe        2616   1312 0x000000000221c000 2018-09-28 09:01:51 UTC+0000                                  ···                   0x0000000023963b30 DumpIt.exe         2500   1312 0x000000000788b000 2018-09-28 09:02:18 UTC+0000                                  0x00000000239712a0 svchost.exe         716    492 0x000000000b836000 2018-09-28 09:01:34 UTC+0000                                  ···                               0x00000000250a3b30 dllhost.exe        2900    600 0x00000000226ab000 2018-09-28 09:02:14 UTC+0000                                  0x0000000025101930 dllhost.exe        2932    600 0x000000000d0c2000 2018-09-28 09:02:15 UTC+0000                                  0x0000000025131b30 smss.exe            248      4 0x000000001a0a6000 2018-09-28 09:01:33 UTC+0000                                  0x0000000025749b30 System                4      0 0x0000000000187000 2018-09-28 09:01:33 UTC+0000

通過觀察進程可以看到 DumpIt.exe此項進程,這個便是dump內存時的進程。

進程中有notepad.exe進程PID為2616我們提取一下,看看有無線索.

利用volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 2616 -D ./文件將以進程號命名

root@kali:~/Desktop# volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 2616 -D ./
Volatility Foundation Volatility Framework 2.6
************************************************************************ Writing notepad.exe [  2616] to 2616.dmp 

通過strings命令查看進程中有無關於flag的文字提示

root@kali:~/Desktop# strings -e l 2616.dmp | grep flag flag{flag is not here,but I put an strange jpg for you,hope you like it :)} flag{flag is not here,but I put an strange jpg for you,hope you like it :)} flag{flag is not here,but I put an strange jpg for you,hope you like it :)} ··· flag{flag is not here,but I put an strange jpg for you,hope you like it :)} ··· usbflags\0E0F00020100 usbflags\0E0F00030102 usbflags\0E0F00080100 

根據他的提示可以了解到flag並不在其中,應該在一個奇怪的圖片里。

利用volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep -E 'jpg|png|jpeg|bmp|gif'查看內存鏡像中的文件,觀察有無提示中所說的圖片。

root@kali:~/Desktop# volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep -E 'jpg|png|jpeg|bmp|gif' Volatility Foundation Volatility Framework 2.6 0x000000002408c460     32      0 RW---- \Device\HarddiskVolume1\phos.jpg

內存鏡像中只有phos.jpg這一張圖片,下面嘗試提取出來

利用volatility -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -n --dump-dir=./插件進行文件提取

-Q參數使用物理偏移量進行轉儲

-n以文件名保存

--dump-dir=目標存儲位置

root@kali:~/Desktop# volatility -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -n --dump-dir=./ Volatility Foundation Volatility Framework 2.6 DataSectionObject 0x2408c460   None   \Device\HarddiskVolume1\phos.jpg SharedCacheMap 0x2408c460   None   \Device\HarddiskVolume1\phos.jpg

image.png

圖片中並沒有需要的內容,

因為文字提示是在2616.bmp中給出的,因此將之前提取出來的2616.dmp進行文件提取看看會不會有線索。

利用foremost 2616.dmp提取文件

root@kali:~/Desktop# foremost 2616.dmp 
Processing: 2616.dmp
|***|
root@kali:~/Desktop# cat output/audit.txt 
Foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit File

Foremost started at Mon Oct 15 04:14:57 2018
Invocation: foremost 2616.dmp 
Output directory: /root/Desktop/output
Configuration file: /etc/foremost.conf ------------------------------------------------------------------ File: 2616.dmp Start: Mon Oct 15 04:14:57 2018 Length: 298 MB (312721408 bytes) Num  Name (bs=512)         Size  File Offset     Comment 0:  00097439.htm          257 B        49889147      ··· 27: 00097458.htm          163 B        49898571       28: 00001838.dll           8 KB          941352      07/14/2009 00:07:09 29: 00500704.jpg           1 MB       256360448       30: 00491298.htm          231 B       251544976       31: 00491300.htm          231 B       251546000       32: 00490508.zip          48 KB       251140554       Finish: Mon Oct 15 04:15:11 2018 33 FILES EXTRACTED jpg:= 1 htm:= 30 zip:= 1 exe:= 1 ------------------------------------------------------------------ Foremost finished at Mon Oct 15 04:15:11 2018

對提取的文件進行分析,發現其中zip文件中包含一個img鏡像利用binwalk message.img 分析其包含的數據。

root@kali:~/Desktop/output/zip# binwalk message.img 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Linux EXT filesystem, rev 1.0, ext2 filesystem data, UUID=c12b8ec9-5ef5-4b91-8b4d-f827e81fe81f
67697         0x10871         Unix path: /work/HuWangBei/1/message

里面包含一個ext2的文件系統用binwalk -e message.img 分離出來

root@kali:~/Desktop# binwalk -e message.img 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Linux EXT filesystem, rev 1.0, ext2 filesystem data, UUID=c12b8ec9-5ef5-4b91-8b4d-f827e81fe81f
67697         0x10871         Unix path: /work/HuWangBei/1/message

掛載文件系統

root@kali:~/Desktop# cd _message.img.extracted/ root@kali:~/Desktop/_message.img.extracted# ls 0.ext  ext-root root@kali:~/Desktop/_message.img.extracted# mount 0.ext /mnt/ root@kali:~/Desktop/_message.img.extracted# cd /mnt/ root@kali:/mnt# ls hint.txt  lost+found

里面只有一個txt文件打開后發現里面是類似坐標的數字,由之前的提示說一張奇怪的圖片聯想這可能是圖片的坐標點,所以編寫python腳本嘗試將圖片提取出來。

root@kali:/mnt# cat hint.txt 
10 10
10 11
10 12
10 13
···
269 265
269 266 269 267 269 268 269 269

python腳本:

import Image

flag_image = Image.new('RGB',(300,300),(0,0,0)) f = open('hint.txt') for line in f.readlines():     point = line.split()     flag_image.putpixel([int(point[0]),int(point[1])],(255,255,255)) f.close() flag_image.save('flag_image.jpg') 

image.png

識別結果:Here is the vigenere key: aeolus, but i deleted the encrypted message。

根據提示說用了vigenere並且key為aeolus,但是他刪除了信息...

那么接下來就要用到testdisk /dev/loop0來進行文件恢復。

image.png

將此文件復制到桌面提取其中信息

root@kali:~/Desktop/_message.img.extracted/.Trash-0/files# strings .message.swp b0VIM 8.0 n3k0 shiki.lan ~n3k0/work/HuWangBei/1/message U3210 #"! yise!dmsx_tthv_arr_didvi 

最下面的字符串應該就是flag了,根據之前提示的vigenere加密並且key為aeolus進行解密

結果:yeetjustfindandsolve

———————————————自此護網杯easy_dump的取證工作完畢——————————————

0x04 知識延伸

本文未用到dll,注冊表等取證使用方法,其他取證方法我附上網址供大家學習

https://digital-forensics.sans.org/media/volatility-memory-forensics-cheat-sheet.pdf

0x05 制作內存鏡像

DumpIt 是一款綠色免安裝的 windows 內存鏡像取證工具。利用它我們可以輕松地將一個系統的完整內存鏡像下來。

只要雙擊打開DumpIt.exe輸入y等待一會出現Success就是dump成功。

默認情況下,文件名是主機名(主機名),其后是執行映像過程的日期。該文件默認保存為“raw”格式。

image.pngimage.png

利用kali分析

image.png

大家有任何問題可以提問,更多文章可到i春秋論壇閱讀喲~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM