Linux 系統廣泛應用於伺服器和企業環境中,在發生資安事件時,數位鑑識需要先收集、保存、分析數位證據,以調查事件原因、追蹤攻擊者、評估損失和採取補救措施。
不管是 Windows 還是 Linux 進行數位鑑識的情境都是類似,取決於企業的伺服器、端點是什麼作業系統。
在進行 Linux 數位鑑識時,與 Windows 不同的是 Linux 多半為指令介面,因此以下常見的檔案以路徑為主,並且不同的 Linux 系統(Ubuntu、RedHat 系列、CentOS 等),路徑不一定都相同,因此還是會針對自己的作業系統類型去尋找對應的路徑。
Linux 系統日誌包含了大量有關系統事件、錯誤和使用者活動的資訊。
/var/log/syslog
或 /var/log/messages
: 一般系統日誌/var/log/auth.log
或 /var/log/secure
: 認證相關日誌/var/log/kern.log
: 核心日誌使用 grep
, awk
, 和 sed
等工具來搜尋和分析日誌檔案。
grep "Failed password" /var/log/auth.log
journalctl
查看系統日誌:journalctl -u ssh
grep "incorrect password attempt" /var/log/auth.log
grep "incorrect password attempt" /var/log/auth.log
/var/log/auth.log
檔案中Oct 8 14:07:56 user sudo: user : 1 incorrect password attempt ; TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/apt-get install websocat
apt-get install websocat
,但輸入了錯誤的密碼。檔案系統中包含了大量有關使用者活動和系統變更的資訊。
/etc/passwd
和 /etc/shadow
: 使用者帳號資訊與密碼雜湊/home
目錄: 使用者個人檔案/tmp
和 /var/tmp
: 臨時檔案,可能包含重要的取證資訊使用 find
指令搜尋最近修改的檔案:
find /home -type f -mtime -7 -ls
使用 stat
指令查看檔案的詳細時間戳:
stat /path/to/file
find /home -type f -mtime -7 -ls
/home/user/20240827_153222.jpg
/home/user/20241008_183506.jpg
/home/user/filesystem_images/
目錄下有多個檔案系統映像檔
/home/user/.bash_history
/home/user/evidence.txt
/home/user/websocat.x86_64-unknown-linux-musl
/home/user/.motd_shown
Shell 歷史記錄可以提供使用者執行過的指令資訊。
~/.bash_history
: Bash shell 歷史記錄~/.zsh_history
: Zsh shell 歷史記錄查看特定使用者的指令歷史:
cat /home/<username>/.bash_history
搜尋特定指令:
string /home/<username>/.bash_history | grep "ssh"
strings ~/.bash_history | grep "sudo"
顯示了使用者最近使用 sudo 執行的指令
分析這些指令
sudo apt install python3.10-venv
sudo apt install python3-venv
sudo apt install python3-pip
sudo apt install sqlmap
sudo apt install ffmpeg
sudo apt install dosfstools ntfs-3g e2fsprogs
sudo apt-get install exiftool
sudo apt-get install websocat
sudo apt update
sudo mkdir /mnt/fat16
sudo mkdir /mnt/fat32
sudo mkdir /mnt/ntfs
sudo mkdir /mnt/ext4
sudo mount -o loop fat16_sample.img /mnt/fat16
sudo mount -o loop fat32_sample.img /mnt/fat32/
sudo mount -o loop ntfs_sample.img /mnt/ntfs/
sudo mount -o loop ext4_sample.img /mnt/ext4/
sudo touch /mnt/fat16/example1.txt
sudo echo "This is a FAT16 file system" | sudo tee /mnt/fat16/example1.txt
(對 FAT32、NTFS 和 EXT4 也有類似操作)sudo umount /mnt/fat16
sudo umount /mnt/fat32
sudo umount /mnt/ntfs
sudo umount /mnt/ext4
網路連接資訊可以幫助識別可疑的網路活動。
netstat
或 ss
: 顯示網路連接狀態lsof
: 列出打開的檔案和網路連接ss -tuln
netstat -tlpn
ss -tuln
ss -tuln
ss -tuln
的機制,以監控網路狀態的變化分析系統 Process 進程可以幫助識別可疑的活動或惡意軟體。
ps
: 顯示 Process 進程狀態top
或 htop
: 及時顯示系統資源使用情況查看所有執行中的Process 進程
ps aux
查找特定Process 進程
ps aux | grep "suspect_process"
ps aux
顯示了系統目前所有執行中的程式。
/sbin/init
檢查自動啟動項目可以幫助發現持久性的惡意軟體。
/etc/init.d/
/etc/rc*.d/
/etc/crontab
cat /etc/crontab
crontab -u username -l
cat /etc/crontab
/etc/crontab
檔案的內容,它是系統級的 crontab 設定檔
crontab
指令來安裝新版本/etc/cron.d
中的檔案都包含使用者名稱欄位,這是其他 crontab 所沒有的/bin/sh
分鐘 小時 日期 月份 星期幾 使用者名稱 要執行的指令
每小時執行
17 * * * * root cd / && run-parts --report /etc/cron.hourly
每日執行
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
每週執行
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
每月執行
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
run-parts
指令執行整個目錄的腳本,需確保這些目錄中只包含可信的腳本/etc/passwd
- 儲存使用者帳號資訊/etc/shadow
- 儲存加密的密碼和帳號過期資訊/var/lib/dpkg/status
- 列出所有已安裝的軟體套件(Debian 系統)/var/log/
目錄下的各種日誌檔案
/var/log/auth.log
- 系統認證資訊/var/log/dpkg.log
- 套件安裝和移除資訊/var/log/btmp
- 失敗的登入嘗試/var/log/cron
- cron 工作資訊/var/log/secure
- 認證和授權資訊/var/log/faillog
- 使用者失敗登入嘗試/var/log/apache2/access.log
- Apache 網頁伺服器存取日誌/etc/passwd
和 /etc/shadow
檔案以識別使用者帳號和權限cat
或文字編輯器查看 /var/lib/dpkg/status
檔案來分析已安裝的軟體/var/log/
目錄下的各種日誌檔案以分析系統活動、登入嘗試和安全事件ls -a
命令來顯示隱藏檔案和目錄steghide
來檢查檔案中是否隱藏了其他檔案exiftool
檢查檔案的中繼資料是否包含隱藏資訊透過分析這些 Linux 系統中的關鍵資料來源,調查人員可以收集有關使用者行為、系統事件和潛在惡意行為的證據。對這些資料來源可以讓學習者全面了解對於在 Linux 作業系統上進如何開始檢查。
在 Linux 數位鑑識中,以下哪個檔案通常不包含使用者登入資訊?
A) /var/log/auth.log
B) /var/log/secure
C) /var/log/messages
D) /etc/shadow
答案: C
解析: /var/log/messages
主要包含一般系統日誌,而不是專門的登入資訊。/var/log/auth.log
和 /var/log/secure
包含認證相關日誌,/etc/shadow
包含加密的使用者密碼。
使用哪個 Linux 指令可以查看最近修改過的檔案?
A) ls
B) find
C) grep
D) cat
答案: B
解析: find 指令可以根據多種條件搜尋檔案,包括最後修改時間。例如: find /home -type f -mtime -7 可以找出最近 7 天內修改過的檔案。
在進行 Linux 數位鑑識時,以下哪種情況通常不需要進行深入調查?
A) 系統日誌中出現大量失敗的登入嘗試
B) 發現未知的系統服務正在執行
C) 系統進行例行性軟體更新
D) 重要系統檔案的修改時間被更改
答案: C
解析: 系統例行性軟體更新是正常的維護操作,通常不需要進行深入的數位鑑識調查。其他選項如大量失敗的登入嘗試、未知服務執行和系統檔案被修改都可能代表潛在的安全問題。
使用哪個 Linux 指令可以查看目前系統中開放的網路端口?
A) ifconfig
B) ping
C) netstat
D) route
答案: C
解析: netstat 指令可以顯示網路連接、路由表、介面統計等網路相關資訊。使用 netstat -tuln
可以列出所有正在監聽的 TCP 和 UDP 端口。
在分析 Linux 系統的自動啟動項目時,以下哪個位置通常不包含啟動腳本?
A) /etc/init.d/
B) /etc/rc*.d/
C) /etc/crontab
D) /var/log/
答案: D
解析: /var/log/ 目錄主要用於儲存系統日誌,而不是啟動腳本。/etc/init.d/
、/etc/rc*.d/
和 /etc/crontab 都可能包含系統啟動時執行的腳本或指令。