大家好!今天想先分享一些學習整理網站給大家(可以自行決定觀看與否,不會影響今天的內容唷!),主要是以防我講的可能有疏漏的地方(還是資安小白,大家多多包見諒>< ),所以為了避免上路情形,在這邊分享幾個不錯的學習 Log 學習資源跟大家分享:
那今天我們就繼續開始做更進階的抓取 Log Message 方法!後半部分也會跟大家分享 grep
搭配 regex 正則表達式,去抓取特定資訊的 Log records!那我們 Go Go Go 咯~
特別注意!我這邊做抓取的時候,都會只抓最近 1 個小時的資料,避免程式跑太久而阻礙觀察
log show --predicate 'subsystem == "com.apple.opendirectory" && composedMessage CONTAINS[c] "created"' --last 1h # 用途:抓新增帳號事件
log show --predicate 'subsystem == "com.apple.TCC" && composedMessage CONTAINS[c] "denied"' --last 1h # 用途:抓程式嘗試存取隱私資料被拒的事件
log show --predicate 'subsystem == "com.apple.alf" && composedMessage CONTAINS[c] "allow"' --last 1h # 用途:監控哪些連線被允許或阻擋
log show --predicate 'subsystem == "com.apple.networkextension" && composedMessage CONTAINS[c] "connected"' --last 1h # 用途:抓 VPN 或 network extension 連線事件
昨天的內容有提到 → 因為 CLI 下無法靠 log level,通常抓 Log 訊息後面的 Message 文字,來抓到 log level 為 'Error' 的部分:
log show --predicate 'composedMessage CONTAINS[c] "crash"' --last 1d # 檢查程式或系統崩潰
grep
是用來在檔案或輸出內容中「搜尋特定文字」的工具。你可以把它想像成在一大堆資料裡面找特定關鍵字的放大鏡。log show --predicate 'process == "loginwindow"' --last 1h | grep -i "failed"
grep -i
抓出現 "failed" 文字的訊息!-i
👉 忽略大小寫 (case-insensitive) 來搜尋文字。log show --style syslog --last 1h | grep "network"
log show --style syslog --last 1h | grep "error" | wc -l
log show --style syslog --last 5m | awk '{print $1, $2, $0}'
根據 log 格式不同,欄位序號可能需調整。
✅ 總結原則:
composedMessage
關鍵字篩選是實務可用的方法process
、subsystem
、時間範圍精準抓取在資訊安全的世界裡,有無數的次領域可以深入探索:有滲透測試、惡意程式分析、資安監控、威脅情報… 等等;而對初學者來說,這些領域往往充滿陌生的名詞與龐大的工具鏈,很容易讓一開始進入資安領域的小白們(例如我><)不知從何下手。
我選擇先從 Log Analysis(日誌分析) 來帶大家入門作為開荒,原因有以下幾點:
因為無論是伺服器、網站、防火牆,還是應用程式,幾乎所有系統都會產生日誌。
而對資安人員來說,懂得讀日誌 = 懂得追蹤線索。這就像偵探辦案,第一步就是蒐集現場證據。是不是很有偵探的感覺啊~!
Log analysis 我們不需要先會太多高深的工具(要知道在資安界實務工具實在是太多太多!!!😱):
grep
、awk
)或程式語言(如 Python)新手可以從 log 學到:
這些能力,正是日後做滲透測試、事件調查、SOC 分析的基礎。
許多資安領域對新手來說很抽象,但日誌不同:
這些都是「實際在你的電腦或伺服器」上就會發生的事情,不需要高成本實驗環境 ><!
學會「日誌分析」,對資安人有三個直接的好處:
透過 Log analysis 可以理解「不同資訊系統」在什麼的「情境」出現什麼「錯誤以及可疑行為」。
今天就介紹到這邊啦!明天會跟大家分享在「實務上有哪些常用的分析工具」,以及「發現異常行為時通常應該如何處理」,而不是僅停留在發現問題的表面!!!大家明天見~