今天要打的是 Hammered Lab,難度為 medium,分類是 Endpoint Forensics。
這項挑戰將帶您進入虛擬系統並分析令人困惑的日誌資料。在本挑戰中,您將扮演 SOC 分析師,利用來自可能已受感染伺服器的日誌,找出該 Web 伺服器蜜罐發生了什麼事。
蜜罐 (Honeypot):是一種資安防禦技術,它模擬一個真實但沒有實際價值的電腦系統、網路服務或數據庫以吸引攻擊。一旦攻擊者進入這個虛擬的系統,他們的所有行為都會被仔細地記錄下來,從而讓資安團隊能夠學習攻擊者的戰術、技術和流程 (TTPs) 等等。
文字編輯器
要查看存取系統紀錄可以到 auth.log 尋找,auth.log 是 Linux 系統中記錄所有身分驗證相關事件的日誌檔案,而存取系統一般都需要身分驗證,所以 auth.log 是一個很好的出發點。
在 auth.log 中搜尋 Accepted password for root 可以搜尋成功的遠端 root 登入
可以看到服務名稱為 ssh,並且在成功登入前有非常多的登入失敗 (Failed password),搜尋看看
發現有 5000+ 失敗的 root 登入且很密集,很有可能是暴力破解攻擊 (brute force attacks)。
Ans:ssh
一般 OS 版本資訊會存在 /etc 下,但這裡沒有這個目錄。但有 kern.log,kern.log 中有紀錄核心版本。
但是我查網路上的資料,kern.log 提供的實際上是 kernel 版本,而不是 OS 版本但是這題的答案卻是 4.2.4-1ubuntu3,感覺有點混淆了 kernel 和 OS。我認為有可能是這個線索是唯一能找到的,那麼這個核心版本號就可能被當作唯一的答案。(這是我個人解讀,如果有誤歡迎指正)
Ans:4.2.4-1ubuntu3
前面 auth.log 中就能看到有五千多條失敗的 ssh root 登入,間隔很短,基本可以確定是暴力破解,並且可以看到有 28 條最後成功登入了,可以判斷 root 被盜了。
Ans:root
我們的目標就是尋找暴力破解成功的 IP,也就是經過多次失敗最後有驗證成功的,且排除內網 IP。因為總共只有 28 條驗證成功的,我個人是一條一條看,看這個 IP 是否經過大量驗證失敗 (可以搜尋這個 IP 來看),接著比對是否為重複的 IP,最後得出這六個 IP:219.150.161.20, 222.66.204.246, 121.11.66.70, 222.169.224.197, 122.226.202.12, 61.168.227.12。
Ans:6
可以用 Accepted password for root from 來找,把六個都試過一遍,得出
219.150.161.20:4次
222.66.204.246:1次
121.11.66.70:2次
222.169.224.197:1次
122.226.202.12:2次
61.168.227.12:1次
Ans:219.150.161.20
在 apache2 資料夾下找到 access.log,access.log 記錄了所有對伺服器的 HTTP 請求,每一行都代表一個請求,而總共有 365 行。
Ans:365
更改防火牆規則是需要 sudo 權限的,既然要 sudo 就會記載 auth.log 裡,在 Linux 最常見的是 iptables 或 ufw,所以我們可以在 auth.log 中搜尋 iptables 和 ufw。在 PowerShell 裡面輸入
Select-String -Path .\auth.log -Pattern "ufw|iptables"
(linux就用grep)
ufw allow 53 和 iptables -A INPUT -p tcp --dport 53 -j ACCEPT 都是開通 53 port,可以把他當作同一個規則,以此類推,比對後這六個 port 有加規則。port 113, port 53, port 0303, port 22, port 2685, port 2424。
Ans:6
term.log 的主要功能是記錄透過終端機執行 APT 命令的完整輸出,由於 Linux 系統 (尤其是 Ubuntu 和 Debian) 通常會透過 APT 來安裝軟體,所以新增到系統上的套件,都會在 term.log 中留下安裝記錄。
在 term.log 中成功安裝的工具會記錄這樣的 log:Setting up
搜尋 Setting up
輸出中可以看到 nmap,nmap 是一款功能強大的開源網路掃描工具。
Ans:nmap
在 auth.log 搜尋 Accepted password for root from 219.150.161.20,最後一次登入為 Apr 19 05:56:05,但並沒有顯示年分。
dpkg.log 用於記錄所有由 dpkg (底層套件管理工具) 執行的動作,其中執行時間包含年分,可以看倒是 2010 年。
Ans:2010-04-19 05:56
daemon.log 用於記錄來自後台服務或守護進程(daemons)的訊息,而資料庫、郵件服務等都屬於守護進程。
在 daemon.log 搜尋 warning 找到警告訊息
WARNING: mysql.user contains 2 root accounts without password!
這是最嚴重的警告。它表示資料庫中有兩個 root 帳號沒有設定密碼。root 是資料庫的最高權限使用者,沒有密碼代表任何人都可以對資料庫有完整控制權。
其他幾個像是:表格損壞 (WARNING: mysqlcheck has found corrupt tables)、一個客戶端沒有正確地關閉資料庫表格 (warning: 1 client is using or hasn't closed the table properly) 等等,他們的嚴重程度遠小於上面那個。
Ans:mysql.user contains 2 root accounts without password!
建立帳戶又要回到 auth.log,搜尋 Apr 26 04:43:15
Ans:wind3str0y
要解這題我們要回到 access.log,access.log 會記錄所有 HTTP request,而掃描工具就是用大量 request 達到掃描的效果,而且 HTTP request 中帶有 user-agent 資訊。
用 Linux 的可以用 awk,我用的是 PowerShell
Get-Content .\www-access.log | ForEach-Object {
$fields = $_.Split('"')
$userAgent = $fields[5]
"$userAgent"
} | Select-Object -Unique
這個指令會列出不重複的 user-agent
pxyscand 不是常見的 user-agent,資料顯示他是一個 network proxy scanner
Ans:pxyscand/2.1
今天的 lab 著重在 Linux 各種 log 的分析,所有分析都圍繞著 log 展開,我們學到了各種 log 可以獲得的資訊和分析方法:auth.log 記錄身分驗證事件(登入、sudo、權限變更)、kern.log 記錄內核訊息(系統版本、硬體資訊)、access.log 紀錄 apache2 請求記錄、term.log 紀錄 APT 套件安裝記錄、daemon.log 紀錄系統守護程序訊息。
明天我們將進入更複雜的 Windows disk forensics。