我工作上比較常接觸 SIEM,EDR 主要用過 Sophos 和 SentinelOne,但經手的事件比較少。
打開告警後,我會看看執行的是什麼程序、命令列寫了什麼。有 Hash 的話,就拿去 VirusTotal 查一下,也會上網找相關資料。看到不太理解的地方,我會把哪台設備、什麼時間,以及自己覺得奇怪的地方告訴負責的同事,由他繼續調查。
所以今天想簡單聊聊 EDR 有哪些功能,以及畫面裡常出現的程序、父子關係和 Hash 到底是什麼。這些概念不限定特定品牌,實際有哪些欄位與操作,則要看使用的產品、授權和作業系統。
EDR 是 Endpoint Detection and Response,中文常稱為「端點偵測與回應」。端點就是我們平常使用的電腦、筆電,或提供服務的伺服器。
昨天介紹的 Windows Event Log,是從系統留下的事件紀錄開始看。到了 EDR,除了告警本身,平台還可能把相關程序、檔案與連線整理在一起,讓人往下追查。需要處理時,也可能提供隔離設備、終止程序等功能。
延伸閱讀:EDR 基本概念
例如,告警提到某個可疑程序,我們接著會想知道:它放在哪裡?誰啟動了它?執行時帶了什麼指令?還有沒有其他相關活動?
EDR 提供的資訊,就是用來協助回答這些問題。不過,有資料可以查,和已經查清楚,還是兩回事。這點跟前幾天談 SIEM 時很像,畫面提供線索,後面仍然有人需要理解它。
想看中文介紹,也可以參考 iThome 的〈因應進階威脅的新世代端點防護〉。
這篇發表於 2017 年,可以先了解 EDR 的發展背景;其中的產品功能與部署資訊,要再對照現行官方文件。
EDR 告警通常不只有一個名稱,還會附上設備、時間、帳號、程序路徑等資訊。我自己會查看程序與命令列,先試著理解它在做什麼。
「程式」和「程序」很容易混在一起。簡單來說,程式是放在磁碟上的軟體;啟動執行後,就會有對應的程序。
但知道程序名稱,往往還是不夠。例如看到 notepad.exe,我們知道它是記事本,卻不知道它開了什麼檔案。這時命令列就能補上一些資訊。
以下是一般操作示意:
notepad.exe C:\Temp\note.txt
這段除了啟動記事本,也指定了要開啟的檔案。
換成其他工具也是一樣。看到 powershell.exe,只能知道有 PowerShell 程序;命令列裡帶了什麼內容,才是下一步要看的地方。系統管理、軟體安裝與日常維護都可能用到它,不能只因為出現 PowerShell 就判定是攻擊。
另外,命令列顯示的是啟動時帶入的內容。指令到底有沒有成功,還得找執行結果或後續紀錄。
如果剛開始接觸,不知道畫面上的欄位有什麼用途,可以先參考這張表:
| 資訊 | 我們想知道的事情 |
|---|---|
| 設備與時間 | 在哪台設備、什麼時候發生? |
| 執行帳號 | 使用哪個身分執行? |
| 程序名稱與路徑 | 執行什麼程式,檔案放在哪裡? |
| 命令列 | 啟動時帶了哪些參數或指令? |
| 父程序與子程序 | 誰啟動它,它又啟動了什麼? |
| 檔案 Hash | 能不能找到這個檔案的相關資料? |
| 網路連線 | 有哪些相關的內部或對外通訊? |
| 處置狀態 | 平台是否已處理,結果如何? |
這是欄位用途的整理,不是每筆告警都一定會有這些資料。
這兩個名稱,看的是程序之間的建立關係。
建立另一個程序的是父程序,被建立出來的是子程序。
例如,在命令提示字元中執行記事本。以這個簡化示意來說,cmd.exe 啟動了 notepad.exe,前者就是父程序,後者就是子程序。
| 程序 | 這次的角色 |
|---|---|
cmd.exe |
父程序,啟動記事本 |
notepad.exe |
子程序,由命令提示字元啟動 |
父、子也不是固定身分。一個程序由別人啟動後,還可以再啟動其他程序,所以它可能同時是子程序,也是父程序。
Process Tree,中文叫程序樹,就是把這些關係畫出來。調查時可以往前找它由誰啟動,再往後看它建立了哪些程序。
比起單看一個程序名稱,這樣比較容易理解前後的活動。但父子關係本身沒有好壞之分,仍然要搭配命令列、帳號、路徑與時間來看。
有些平台提供的圖,比程序樹包含更多內容,可能連檔案與其他事件都放進去。遇到這種畫面,要先弄清楚每條線的意思,不要把所有連線都當成父子程序關係。
延伸閱讀:事件關聯圖範例
在告警裡,有時會看到一長串英文字母與數字,那可能就是檔案的 Hash,也就是雜湊值。
它是根據檔案內容,使用特定演算法計算出的值。我們常把它比喻成檔案的指紋,方便拿來比對。
同樣的內容,用同樣的演算法計算,會得到相同結果。如果只改檔名、沒有改內容,檔案內容的 Hash 不會跟著改;內容有變動時,Hash 通常也會不同。
常見的演算法有 MD5、SHA-1 和 SHA-256。比對時,要使用同一種演算法的結果。
Microsoft:檔案 Hash 說明
我會把告警裡的 Hash 拿去 VirusTotal 查詢,也會搜尋看看有沒有相關分析或說明。VirusTotal 支援用這幾種 Hash 查詢既有的檔案報告,不需要為了查報告就重新上傳檔案。
VirusTotal:搜尋檔案報告
查到之後,可以參考不同引擎的判定與報告資訊。
VirusTotal:報告說明
不過,Hash 是用來識別與比對檔案的,不會直接告訴你檔案有沒有問題。查不到,可能只是沒有相關資料;沒有被標示,也不能保證安全。有引擎標示可疑時,同樣需要再看檔案來源與行為。
我做這些查詢,主要是想多找一些資訊。如果還有疑問,就一起交給同事討論。
EDR 除了讓人查看資料,也可能提供回應操作。常見的有終止程序、隔離檔案、隔離設備,以及部分修復或清理功能。
延伸閱讀:端點回應功能範例
這些名稱看起來很接近,但處理的對象不同。
| 操作 | 做什麼用? |
|---|---|
| 終止程序 | 停止正在執行的程序 |
| 隔離檔案 | 限制特定檔案繼續被使用或執行 |
| 隔離設備 | 限制設備的網路通訊 |
| 修復或清理 | 處理部分威脅造成的變更,範圍依產品能力而定 |
例如,停止程序,不代表檔案已經移除;隔離檔案,也不代表整台設備已經斷網。
設備隔離則可能保留與管理平台的必要通訊,讓管理人員繼續查看與操作,具體行為要看產品設計。延伸閱讀:設備隔離範例
我曾協助透過 EDR 隔離設備。但前面談 IR 時也提過,有些設備不能隨意停機,客戶甚至不一定清楚它的用途。這時就需要先討論,隔離會影響哪些服務,以及該怎麼處理。
操作後也要看結果。按下按鈕只是送出指令,還需要確認有沒有成功,更不能直接把它當成整起事件都處理完了。
端點防護平台常見的另一項設定是排除,有時會被稱為白名單。遇到相容性或誤判問題時,可能會用到它。
但不同排除設定,影響的檢查範圍不一樣。特定檔案、整個資料夾,或套用到多台設備的設定,影響也不同。
延伸閱讀:排除設定範例
所以,告警沒有再出現,不一定是問題解決了,也可能是那個活動不再被檢查或通報。
這裡先介紹功能概念。我目前遇到還沒釐清的告警,主要還是與負責的同事討論,由他繼續調查。
我在 EDR 上做的事情,主要是先查看資訊、查詢資料,再提出需要確認的地方。
交給同事時,我會說明哪台設備、什麼時間發生,以及自己疑惑的是什麼。後續的深入調查,則由專門負責的同事接手。
這篇整理的程序、命令列、父子關係與 Hash,也都是打開告警時很容易遇到的資訊。先知道它們各自在說什麼,才比較有辦法看下去。
至於一筆活動究竟有沒有問題,還需要更多資料。有些我能先查,有些要請同事協助,有些則需要客戶說明設備用途。我目前的使用方式,大致就是從這裡開始。