歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

使用 Linux 工具進行計算機取證

本文通過介紹 Linux 系統工具(Ftkimage、xmount、Volatility、dd、netcat)來介紹使用計算機取證的方法和步驟。 硬盤數據的取證是指為了證據保全,確保取證工作造成數據丟失,在獲取到證據介質後,首先要做的就是對介質數據進行全盤鏡像備份。內存取證主要通過對內存數據及其緩存硬盤數據進行分析,提取那些對案件偵破可能有重要意義的易失性數據,這些易失性數據的特點是存在於正在運行的計算機或網絡設備的內存中,關機或重啟後這些數據將不再存在。

0x00前言

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

0x01磁盤取證簡介

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

1鏡像工具 dd

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

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

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

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

#nc -l -p 3452 > myimage.dd

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

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

2 使用 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。

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

./ftkimager –help

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

圖 1. 查看驅動器列表
\

 

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

#./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 模式的文件映像

\

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

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

安裝 xmount 軟件包

#RPM –ivh https://forensics.cert.org/cert-forensics-tools-release-el7.rpm

#yum install xmount

下面需要修改配置文件

#usermod -a -G fuse cyq

#vi /etc/fuse.conf”

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

user_allow_other

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

#mkdir ~/mnt0

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

#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 格式,使用如下命令:

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

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

0x2內存取證簡介

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

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

1.所有正在內存中運行的進程;

2.所有的載入模塊和 DLL( 動態鏈接庫),包括被植入的各種惡意程序;

3.所有正在運行的設備驅動程序,包括隱藏的 rootkits;

4.每個進程打開的所有文件;

5.每個進程打開的所有注冊表的鍵值;

6.每個進程打開的所有網絡套接字 ( sockets),包括 IP 地址和端口信息;

7.用戶名和口令;

8.正在使用的電子郵件 和網頁鏈接;

9.正在編輯的文件內容。

1 內存取證軟件 Volatility 簡介

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

內存取證的工作流程

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

安裝 Volatility

#apt-get update

#dpkg --get-selections | grep volatility

#apt-get install volatility

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

#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 文件)然後復制到目錄後解壓縮即可。

點擊查看代碼清單

2 制作 Linux 下的內存鏡像文件

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

安裝使用方法:

#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 文件

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

內存取證的實例

檢查進程詳細信息

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

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

命令輸出結果見圖 3

圖 3. 檢查進程詳細信息

\

檢查系統進程樹信息

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

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

命令輸出結果見圖 4

圖 4. 檢查進程詳細信息

\

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

查看某具體進程的情況

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

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

命令輸出結果見圖 5

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

\

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

查看網絡鏈接情況

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

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

命令輸出結果見圖 6

圖 6. 查看網絡鏈接情況

\

參數查看內核路由表情況

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

#./vol.py -f /root/pexit.vmem --profile=LinuxUbuntu1004_pae32-33x86linux_route_cache命令輸出結果見圖 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 的內容。

 

0x03總結

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

 

歡迎大家分享更好的思路,熱切期待^^_^^ !!!

 

Copyright © Linux教程網 All Rights Reserved