初始響應階段應該收集的數據:
- 系統日期和時間
- 當前登錄的用戶清單
- 整個文件系統的時間/日期戳
- 當前正在運行的進程列表
- 當前打開的套接字列表
- 在打開的套接字上監聽的應用程序列表
- 當前或最近連接到系統的系統列表
易失性數據收集:
-
首先需要上傳取證人員自己可信任的 shell
-
記錄系統的日期和時間:
date
-
記錄網卡信息,包括網絡地址和狀態等:
ifconfig -a
-
查看系統每個進程:
ps -aux
-
獲取打開的網絡套接字等信息,如開啓了哪些端口,連接的 IP 地址是什麼:
netstat -an
還可以加上-p
選項將應用程序的程序名及其 PID 映射到打開的端口:
netstat -anp
-
顯示當前登錄的用戶信息:
who
或w
-
查看歷史命令記錄:
history
-
查看當前的目錄信息
ls
拷貝硬盤數據
當我們獲取受害者機器上的硬盤數據時,必須獲取硬盤上的所有數據,包括:已分配空間中的數據、未分配空間中的數據、閒散空間中的數據。只有這樣才能恢復所有被刪除的文件。
在進行取證前,需要將硬盤上的所有數據備份成爲取證映像,接下來的取證分析工作也將在取證映像上進行,而不是在原始盤上進行。
一般情況下,可以使用 3 種方法來獲取硬盤中的數據:
- 用可信的操作系統直接啓動涉案機器,將硬盤數據拷貝到外接硬盤
- 使用瑞士軍刀 netcat 工具通過網絡傳輸獲取
- 直接將受害者的硬盤安裝到可信的取證分析機上
1. 通過安裝受害者硬盤來獲取硬盤數據
注:DST 表示是目標盤;SRC 表示是受害者硬盤,源盤。
① 將硬盤插入機器,並掛載
mount /dev/DST /mnt
② 計算源盤數據的 hash 值,並記錄結果
md5sum /dev/SRC
③ 將源盤的數據內容全部拷貝到目標盤,並保存爲一個文件
dd if=/dev/SRC bs=2048 of=/mnt/disk.dd
④ 計算目標盤上文件的 hash 值
md5sum /mnt/disk.dd
⑤ 如果源盤的 hash 值和目標盤的 hash 值相等,則說明拷貝成功;若不相等,則需要重新拷貝
2. 通過 netcat 工具通過網絡傳輸獲取數據
① 在受害者主機上計算源盤的 hash 值
md5sum /dev/SRC
② 在取證人員的機器上啓動 netcat 服務,並開啓監聽
nc -l -p 9000 >> disk.dd
注:-l 表示是監聽模式,當監聽方收到數據後關閉套接字接口,停止監聽;如果希望建停放接收到數據後繼續監聽,可以選用參數 -L;參數 -p 指定監聽端口;>> 爲輸出重定向
③ 在受害者主機上執行命令,將源盤內容拷貝到取證人員機器上的一個文件中
dd if=/dev/SRC bs=2048 | nc -w 3 10.10.10.1 9000
注:假設取證人員機器的 IP 地址爲 10.10.10.1
④ 在鑑定人員的機器上計算文件的 hash 值
md5sum disk.dd
⑤ 如果源盤的 hash 值和目標盤的 hash 值相等,則說明拷貝成功;若不相等,則需要重新拷貝
注:在進行 dd 備份時,需要先進行消毒處理,即清空目標盤中的所有內容,確保映像的完整性和準確性:
dd if=/dev/zero of=/dev/DST
映像文件分解
目前大多數取證工具分析對象是硬盤中的某一個分區而不是整塊硬盤。因此獲得取證映像後,還㤇將一個個的分區分離出來,在進行分離之前,還需要了解各個分區的位置和長度。
① 使用fdisk
命令來查看各個分區的位置和長度
fdisk -lu disk.dd
注:-l 表示列出各個分區的位置和長度、-u 表示位置和長度的單位是刪除
② 使用dd
命令進行分離
dd if=disk.dd skip=第一塊分區開始的位置 count=第一塊分區的大小 of=hda1.dd
dd if=disk.dd skip=第二塊分區開始的位置 count=第二塊分區的大小 of=hda2.dd
……
對拷貝後的磁盤映像進行取證分析
① 先將各個分區的映像以只讀的方式掛載到不同的目錄上:
mount -o ro,loop,nodev,noexec /dev/hda1.dd /home/hda1
mount -o ro,loop,nodev,noexec /dev/hda2.dd /home/hda2
② 查找隱藏文件
-
入侵者常用的一種隱藏技術是將普通文件加入到 /dev 目錄或其他目錄中,可以用
find -type f
來查找相關目錄中的普通文件,如:
find /dev -type f -print
-
另外一種常用的隱藏文件的方法是在文件名的第一個字母前加上
.
,因爲 Linux 中默認 . 開頭的文件是隱藏文件。且用普通的 ls 命令不能列出以字符 . 開頭的文件。我們可以用以下兩種方式來查看這種類型的隱藏文件
①用 find 命令來搜索以 . 開頭的文件
find / -name ".*" -print
或
②用 ls -a 命令來顯示所有文件,包括隱藏文件
ls -a
-
分析隱藏文件
可以用strings
命令來提取文件中的 ASCII 碼字符串、或用其他工具來分析隱藏文件的內容。 -
分析啓動文件和配置文件
大多數入侵者經常將後面程序隱藏在系統的配置文件和啓動文件中,這樣的話,每當系統啓動時,後門程序就會自動執行,因此通過分析系統的啓動項文件和配置文件,往往可以發現隱藏程序。
① 分析啓動文件:
啓動文件中的正常命令一般都包含在 if 語句結構中,不包含在 if 語句結構中的命令一般可認定爲可疑程序。但也不是絕對,因爲入侵者很容易作假。
②分析配置文件:
配置文件 /etc/passwd 中包含了系統中所有用戶的登錄信息。入侵者在入侵系統時可能會在系統中創建新的用戶或賬號。尤其是那些 UID 爲 0 的用戶,因爲 UID 爲 0 代表其擁有 root 權限。
③ 分析歷史文件
可以通過history
命令來查看用戶執行過的命令的歷史記錄。
④
同時,入侵者入侵系統後,通常會刪除文件或將其鏈接到 /dev/null 中。通過恢復該文件或分析 /dev/null 可以發現更多的線索。 -
分析系統的日誌文件