使用工具進行計算機取證

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

 

閱覽目錄css

 


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

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

1.1 本地取數據

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

1.2 遠程取硬盤數據·

克隆硬盤或分區的操做,不該在已經mount的的系統上進行,採起遠程取的辦法這樣能夠避免破壞現場。java

  • NC遠程傳輸文件

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

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

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

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

取證機器B上運行:git

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

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

dd if=/dev/sda2 | nc 192.168.10.11 4445

能夠用ls -lh命令,查看傳輸過來的數據大小。shell

二、AccessData FTK Imager掛載硬盤數據

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

三、參考

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

http://www.javashuo.com/article/p-giloiklg-ca.html

相關文章
相關標籤/搜索