使用工具進行計算機取證


FTK imager 下載地址 https://marketing.accessdata.com/ftkimager4.2.0 

 

閱覽目錄

 


1、硬盤鏡像獲取工具:dd

dd是Linux/UNIX 下的一個非常有用的命令,作用是用指定大小的塊拷貝一個文件,並在拷貝的同時進行指定的轉換。

1.1 本地取數據

  • 查看磁盤及分區
# fdisk -l
  • 獲取整個磁盤鏡像文件
# dd if=需要拷貝的磁盤 of=/存儲目錄/鏡像文件 (確保存儲目錄有足夠的空間)

1.2 遠程取硬盤數據·

克隆硬盤或分區的操作,不應在已經mount的的系統上進行,采取遠程取的辦法這樣可以避免破壞現場。

  • NC遠程傳輸文件

從受害機器A拷貝文件到取證機器B。需要先在取證機器B上,用nc激活監聽。

取證機器B上運行: nc -l 1234 > text.txt 受害機器A上運行: nc 192.168.10.11 1234 < text.txt

注:取證機器B監聽要先打開,192.168.10.11是取證機器B的IP

  • DD與NC結合傳輸硬盤數據

取證機器B上運行:

nc -l -p 4445 | dd of=/tmp/sda2.dd

受害機器A上執行傳輸,即可完成從受害機器A克隆sda硬盤到取證機器B的任務:

dd if=/dev/sda2 | nc 192.168.10.11 4445

可以用ls -lh命令,查看傳輸過來的數據大小。

2、AccessData FTK Imager掛載硬盤數據

Image Mounting掛載dd備份出來的硬盤數據。

3、參考

dd使用方法詳解

http://www.jb51.net/LINUXjishu/157283.html

 

 

 

前言

計算機取證過程中要用到很多工具 , 根據取證工具的用途, 主要可以將取證工具分為三大類:第一類是磁盤文件取證復制工具, 第二類是內存文件取證工具,第三類是取證分析工具。盡管很多商業工具都是在 Windows 環境中開發的,但是 Linux 平台還是獲得了自己的一席之地,因為 Linux 包含了非常強大的工具,這些工具對取證調查是非常有幫助的,Linux 環境下的取證工具有不少, 有興趣的讀者可參閱網址http://www.opensourceforensics.org/tools/unix.html,本文主要介紹 Linux 環境下的磁盤和內存取證工具包括 Ftkimage、xmount、Volatility、dd、netcat 等。

磁盤取證簡介

一般來說取證就是收集並分析證據,並為司法行動中的展示構建事實的一個過程。但在計算機技術中,或在計算機取證技術中,取證就是通過專門的技術來發現證據的過程,這些證據可被用於確認計算機、計算機網絡、相關設備、數據存儲媒體是否被用於實施犯罪或未授權的活動。在計算機的取證領域中,取證人員在取證調查的整個過程中證明證據媒體沒有在任何方面被篡改是至關重要的。其中一種方法是對原始的證據媒體作一個映象復制,並對映象復制品展開調查,以防止對原始證據的任何更改。本文介紹磁盤取證工具的平台是 Fedora 21 x64 系統。

鏡像工具 dd

  計算機取證時需要為計算機生成一個位鏡像, 這個操作要在系統還在運行的時候或在系統關閉之前進行。最常使用的就是兩個工具: dd 和 netcat(兩者都是開源軟件安裝非常簡單這里從略)。dd 為我們生成磁盤的位鏡像文件,而 netcat 將拷貝通過網絡傳送出去。你需要一台聯網的電腦來接收該鏡像文件,而且該電腦需要有足夠的空間來存放鏡像文件。

復制/dev/sdc 到文件 cyqdrive.dd 中。將文件分割成多個 1GB 大小的文件。讀取錯誤時,忽略該錯誤而不停止拷貝行為。這個例子命令如下:

1
#dd if=/dev/sdc split=1G of=cyqdrive.dd

剛才已經展示如何創建一個磁盤鏡像,但只是創建鏡像到系統的本地文件。但是當當前的物理空間不足時就要使用 netcat 來將 dd 命令的的輸出通過網絡連接進行重定向。首先在目標服務器上,啟動 netcat 作為一個監聽,並將輸出重定向到一個遠程服務器上的文件。我會用 netcat 監聽 TCP 的 3452 端口,並將鏡像寫入一個遠程的文件 cyqimage.dd。

1
#nc -l -p 3452 > myimage.dd

  然后你可以對服務器(192.168.1.1)進行鏡像拷貝,並通過標准輸出(沒有指定輸出的文件)來將鏡像文件輸出到 netcat,然后由 netcat 將鏡像文件發送到目標服務器,使用如下命令:

1
# dd if=/dev/sdc split=1G of=cyqdrive.dd | nc 192.168.1.1 3452

使用 FTK Imager for Linux

使用 FTK Imager 工具用戶可以創建原始證據媒體的取證映象,如本地硬盤、閃盤、軟盤、Zip 驅動器、CD、DVD 等。對於 FTK Imager 來說 Command Line Version(命令行版本)是免費的,用戶可以訪問 http://www.accessdata.com/support/product-downloads 下載對應的操作系統版本,這里筆者使用的是 Fedora and Red Hat Version x64 – 3.1.1 版本的文件,下載后解壓縮后即可使用,文件名稱是 ftkimager。

用戶可以使用這個命令查看幫助信息

1
./ftkimager –help

首先查看當前加載的驅動器列表,輸出界面見圖 1

圖 1. 查看驅動器列表

圖 1. 查看驅動器列表

獲取/dev/sdb 這個磁盤的 E01 模式的文件映像, 使用如下命令:

1
#./ftkimager /dev/sdb /tmp/cyq.e01 --e01 --frag 500M --description "cyq" --examiner cyq

ftkimager 這個命令比較長,參數也比較多。這里簡單介紹一下

/dev/sdb 是取證目標驅動器名稱

/tmp/cyq.e01 是取證文件的名稱和路徑

--e01 是表示使用 E01 格式。

--frag 500M 表示每 500MB 分成一個文件,在映象片斷的大小中,用戶可以可以選擇將映象分割為多個文件以便於在 DVD 或 FAT 文件系統中中備份。

--examiner cyq 是取證操作人員的姓名簡稱。

--description "cyq"是操作說明。

E01 格式說明:dd 鏡像格式是目前被最廣泛使用的一種鏡像格式,也稱成原始格式 (RAW Image)。dd 鏡像的優點是兼容性強,目前所有磁盤鏡像和分析工具都支持 dd 格式。E01 是法證分析工具 EnCase 的一個證據文件格式,較好地解決了 dd 鏡像的一些不足。在生成 E01 格式證據文件時,會要求用戶輸入與調查案件相關的信息,如調查人員、地點、機構、備注等元數據。這些元數據將隨證據數據信息一同 存入 E01 文件中。文件的每個字節都經過 32 位的 CRC 校驗,這就使得證據被篡改的可能性幾乎為 0。默認情況下,分析軟件自動以每 64 扇區的數據塊進行校驗,這種方式兼顧速度和完整性兩個方面的考慮。獲取個磁盤的 E01 模式的文件映像需要一些時間,根據磁盤大小和硬件型號有所差異,圖 2 是完成的界面。

圖 2. 獲取/dev/sdb 這個磁盤的 E01 模式的文件映像

圖 2. 獲取/dev/sdb 這個磁盤的 E01 模式的文件映像

使用 xmount 工具制作 snapshot(快照)文件

xmount 工具可以把 E01 格式的鏡像文件轉化為 VDI 或者 VMDK 格式。然后用戶可以使用 VirtualBox 和 Vmware 軟件打開文件進行取證操作。

安裝 xmount 軟件包

1
2
#RPM –ivh https://forensics.cert.org/cert-forensics-tools-release-el7.rpm
#yum install xmount

下面需要修改配置文件

1
2
#usermod -a -G fuse cyq
#vi /etc/fuse.conf”

把下面一行的 # 去掉,修改為:

1
user_allow_other

然后保存文件后,然后建立一個目錄

1
#mkdir ~/mnt0

如果需要建立 vdi 格式,使用如下命令:

1
#xmount --in ewf --out vdi --cache ~/tmp/MyDisk.cache ~/tmp/cyq.E?? ~/mnt0

這個命令比較長,參數也比較多。這里簡單介紹一下

--in ewf 是表示源文件是 E01 格式。

-~/tmp/cyq.E?? 表示源文件的路徑,並且可能是多個文件。

--out vdi 表示輸出格式是 vdi。

/mnt0 是輸出文件的目錄。

--description "cyq"是操作說明。

~/tmp/MyDisk.cache 是緩存文件名稱。

建立 vdi 文件后,可以使用 VirtualBox 虛擬機導入這個 vdi 文件進行取證分析。

如果需要建立 vmdk 格式,使用如下命令:

1
#xmount --in ewf --out vmdk --cache ~/tmp/MyDisk.cache ~/tmp/cyq.E?? ~/mnt0

建立 vmdk 文件后,可以使用 Vmware Workstation 導入這個文件進行取證分析。

內存取證簡介

內存取證主要通過對內存數據及其緩存硬盤數據進行分析,提取那些對案件偵破可能有重要意義的易失性數據,這些易失性數據的特點是存在於正在運行的計算機或網絡設備的內存中,關機或重啟后這些數據將不再存在。

成功獲取物理內存以后,接下來的工作就是要對鏡像文件進行分析,從中提取有用的入侵證據。一般來說,我們可以從鏡像文件中提取以下信息 ( 這些信息是指在生成鏡像文件那個時刻的信息) :

  1. 所有正在內存中運行的進程;
  2. 所有的載入模塊和 DLL( 動態鏈接庫),包括被植入的各種惡意程序;
  3. 所有正在運行的設備驅動程序,包括隱藏的 rootkits;
  4. 每個進程打開的所有文件;
  5. 每個進程打開的所有注冊表的鍵值;
  6. 每個進程打開的所有網絡套接字 ( sockets),包括 IP 地址和端口信息;
  7. 用戶名和口令;
  8. 正在使用的電子郵件 和網頁鏈接;
  9. 正在編輯的文件內容。

內存取證軟件 Volatility 簡介

Volatility 是一款基於 GNU 協議的開源框架,使用 Python 語言編寫而成的內存取證工具集,可以分析內存中的各種數據。Volatility 支持對 32 位或 64 位 Wnidows、Linux、Mac、Android 操作系統的內存數據進行提取與分析。

內存取證的工作流程

工作流程首先在取證計算機上安裝 Volatility 軟件包。接着獲取內存副本后傳輸到取證計算機上面,最后是進行分析工作。本文介紹內存取證工具的平台是 Backtrack5 x64 系統。

安裝 Volatility

1
2
3
#apt-get update
#dpkg --get-selections | grep volatility
#apt-get install volatility

進入程序的存儲目錄驗證一下

1
2
3
#cd /pentest/forensics/volatility
#ls -l vol.py
#./vol.py –h

vol.py 是主程序,主要包括如下

-f FILENAME 選項的功能是說明打開一個鏡像文件所使用的文件名,這個命令選項幾乎在所有命令中都會用到。

--cache 選項的功能是使用緩存。

--dtb=DTB 選項的功能是說明 DTB(Directory Table Base) 頁目錄表的基地址。

-k KPCR 選項的功能是說明一個指定的內核處理器控制區的虛擬地址。

apihooks 插件命令的功能是監測在進程和內核中的 api 鈎子。

bioskbd 插件命令的功能是動態地從內存中讀取鍵盤緩沖區的數據。

cmdscan 插件命令的功能是通過訪問_command_history 獲取歷史命令記錄。

connections 插件命令查看當前內存中活躍的 tcp 連接。

制作 Linux 系統的 Profile

Volatility 自帶一些 windows 系統的 profile,Linux 系統的 Profile 需要自己制作,制作的方法如下:實際是將 module.dwarf 和 system.map 打包成一個 zip 文件,接着將 zip 文件移動到 volatility/plugins/overlays/linux/ 目錄中。

也可以在 https://github.com/KDPryor/LinuxVolProfiles 處直接下載已經做好的 profile 文件(zip 文件)然后復制到目錄后解壓縮即可。

1
2
3
# cd /pentest/forensics/volatility/volatility/plugins/overlays/linux
#wget -O–no-check-certificate < a href = "https://github.com/KDPryor/LinuxVolProfiles/blob/master/Ubuntu1004_pae32-33.zip" >< code >https://github.com/KDPryor/LinuxVolProfiles/blob/master/Ubuntu1004_pae32-33.zip</ code ></ a >
#unzip Ubuntu1004_pae32-33.zip

制作 Linux 下的內存鏡像文件

這里使用的工具是 fmem,fmem 是用於檢索內存的取證工具。它是作為一個內核模塊的來運行。

安裝使用方法:

1
2
3
4
#wget http://hysteria.sk/~niekt0/foriana/fmem_current.tgz
#tar zxvf fmem_current.tgz
#cd fmem_1.6-0
# make; ./run.sh

下面的命令將內存里的數據拷貝到 root 目錄下的 cyq.vmem 文件

1
# dd if=/dev/fmem of=/root/cyq.vmem bs=10MB count=2048

內存取證的實例

檢查進程詳細信息

檢查進程詳細信息可以使用 linux_psaux 子命令,命令如下:

1
#./vol.py -f /root/pexit.vmem --profile=LinuxUbuntu1004_pae32-33x86 linux_psaux

命令輸出結果見圖 3

圖 3. 檢查進程詳細信息

圖 3. 檢查進程詳細信息

檢查系統進程樹信息

檢查系統進程樹信息可以使用 linux_pstree 子命令,命令如下:

1
#./vol.py -f /root/pexit.vmem --profile=LinuxUbuntu1004_pae32-33x86 linux_pstree

命令輸出結果見圖 4

圖 4. 檢查進程詳細信息

圖 4. 檢查進程詳細信息

說明: 進程樹 (Process tree) 是計算機科學中的術語,又稱為進程圖 (Process map) 或進程家族樹 (Process graph),是一種表示進程關系的直觀方法。linux 的樹形進程結構為管理進程提供了很大的方便,不管是內核對進程的管理還是用戶對進程的管理都受惠不少,對於審計也是很有用的,不管運行的什么進程,都會有一條不會斷的線索將之綁在系統內部。

查看某具體進程的情況

檢查某具體進程的情況可以使用 linux_proc_maps 子命令,命令如下:

1
# ./vol.py -f /root/cyq.vmem --profile=LinuxUbuntu1004_pae32-33x86 linux_proc_maps | grep httpds

命令輸出結果見圖 5

圖 5. 檢查 httpds 進程詳細信息

圖 5. 檢查 httpds 進程詳細信息

說明:這個子命令可以查看進程細節包括共享庫、開始和結束的位置等信息。

查看網絡鏈接情況

檢查網絡鏈接情況可以使用 linux_netstat 子命令,命令如下:

1
#./vol.py -f /root/pexit.vmem --profile=LinuxUbuntu1004_pae32-33x86 linux_netstat

命令輸出結果見圖 6

圖 6. 查看網絡鏈接情況

圖 6. 查看網絡鏈接情況

參數查看內核路由表情況

檢查內核路由表情況可以使用linux_route_cache子命令,命令如下:

#./vol.py -f /root/pexit.vmem --profile=LinuxUbuntu1004_pae32-33x86 linux_route_cache 命令輸出結果見圖 7

圖 7. 查看內核路由表情況

圖 7. 查看內核路由表情況

內存取證的子命令列表簡介

限於篇幅這里筆者就介紹以上幾個命令,這里筆者把相關命令(也可以叫插件)進行分類。

獲取系統進程信息相關命令:

linux_pstree:進程樹列表

linux_pslist_cache:來自的 kmem_cache 活動進程

linux_psxview:比較進程列表

linux_lsof :打開文件描述符的每個活動進程

linux_pslist :活動的進程列表

linux_psaux:活動的進程列表(輸出內容包括更多的細節)

獲取系統內存信息的相關命令:

linux_memmap:內存映射文件

linux_pidhashtable: Linux 內核中的 PID 散列表

linux_proc_maps::轉儲由-s/--vma 參數到磁盤上指定的內存范圍。

linux_dump_map:進程內存的詳細信息,包括堆和共享庫。

linux_bash :bash 歷史文件

獲取網絡接口信息的相關命令:

linux_arp:顯示 arp 列表

linux_ifconfig:顯示網絡接口詳細情況

linux_route_cache:顯示網絡路由表

linux_netstat:查看網絡鏈接情況

獲取系統硬件信息的相關命令:

linux_cpuinfo :顯示 cpu 的相關命令信息。

linux_dmesg :顯示內核緩存信息。

linux_iomem :顯示 io 設備信息。

linux_mount :顯示/proc/mouns 的相關命令信息,主要是掛載的磁盤設備。

linux_mount_cache :顯示 kmem_cache 的相關命令信息。

linux_slabinfo :顯示/proc/slabinfo 的相關命令信息。

rootkit 檢測的相關命令:

linux_check_afinfo:檢查篡改網絡協議結構。

linux_check_creds:檢查進程共享結構。

linux_check_fop:檢查文件操作數據結構篡改情況。

linux_check_idt:檢查中斷描述符表(IDT)的篡改情況。

linux_check_syscall:在系統調用表檢查功能情況。

linux_check_modules:檢查用於從內核模塊列表中缺少在 sysfs 中的項目。

獲取內核模塊信息的相關命令:

linux_lsmod:加載內核模塊。

linux_tmpfs::tmpfs 的內容。

詳細使用方法可以看在官方網站包含 Linux 的相關命令參考:

1
< a href = "https://blogs.sans.org/computer-forensics/files/2012/04/Memory-Forensics-Cheat-Sheet-v1_2.pdf" >< code >https://blogs.sans.org/computer-forensics/files/2012/04/Memory-Forensics-Cheat-Sheet-v1_2.pdf</ code ></ a >

總結

計算機取證主要包括兩個階段:物理證據獲取和信息分析。本文通過介紹 Linux 系統工具(Ftkimage、xmount、Volatility、dd、netcat)來介紹使用計算機取證的方法和步驟。包括磁盤數據的取證和內存取證。

 

相關主題

摘自 

https://www.ibm.com/developerworks/cn/linux/1511_cyq_tool/index.html

https://www.cnblogs.com/17bdw/p/9094659.html


免責聲明!

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



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