如何將IoC整合到ELK Stack中
馮智偉 Jeffrey Feng
- 恆逸教育訓練中心-資深講師
- 技術分類:資訊安全
ELK(Elastic Stack) 是 Elasticsearch、 Logstash 和 Kibana 三個開源專案的組合,用於提供集中化的日誌功能,即時資料擷取、儲存、分析和視覺化的設計,協助用戶發現伺服器與應用程式中的問題。 ELK 廣泛應用於安全監控和資料分析領域,使我們能夠深入了解其基礎設施和網路活動。
Elasticsearch:為分散式、 RESTful 的搜尋及分析引擎。做為 ELK 的核心,它能集中儲存資料以便快速搜尋。除了傳統的全文檢索,現代的 Elasticsearch 更整合了「向量資料庫」的能力,支援高維度的向量搜尋,是實現生成式 AI 與語義搜索的關鍵組件。
Logstash:輕量開源的伺服器端資料處理管道,能夠從多個資料源擷取、轉換、再將其傳送至「存放區」。即使資料複雜多元, Logstash 依然能靈活運用動態搜索以找到正確資料,並即時轉換、傳送到指定之處,且不受資料源格式和架構影響。
Kibana:免費開源的前端應用程式,將 ELK 作為基礎,為 Elasticsearch 裡的數據資料提供搜尋和可視化的功能, Kibana 不僅是 ELK 的繪圖工具,也能作為儀表板,用於監控、管理和維護 ELK 集群,甚至能作為 ELK 開發及解決方案的彙整中心。
入侵行為指標 (IoC) 是攻擊手法的特徵與軌跡,透過資安威脅情報平台來交換與呈現,提供基於實質證據的知識,幫助我們了解每個攻擊手法其獨特的威脅目標與可能造成的傷害。將 IoC 整合到 ELK Stack 中可以幫助安全營運中心 (SOC) 在一個平台上就能搜尋與監控範圍內的所有日誌,識別惡意行為,讓監控任務與日誌搜尋變得更輕而易舉!
以下是操作步驟:
- 選擇用來作分析的機器,按 Ctrl+Alt+Delete 解鎖。
- 選擇管理員帳戶,輸入對應 { 密碼 },並按 Enter 鍵登入。
- 開啟檔案總管,複製 ELK 資料夾,貼到 C:\。
- 對所有 C:\ELK 目錄下的所有 zip 文件按右鍵,然後按一下「提取到此處」進行解壓縮。解壓縮後刪除 zip 檔。
- 複製 nssm-2.24 資料夾,將複製的 nssm-2.24 資料夾貼上到 C:\ELK 目錄下。關閉 Windows 檔案總管。
- 若要安裝 Elasticsearch 服務,請按一下 Windows 「開始」按鈕。右鍵單擊“ Windows PowerShell 命令提示字元”,然後按一下“更多”,再從彈出式選單中選擇“以管理員身份執行”。
- 輸入 Invoke-Expression -command "C:\ELK\elasticsearch-8.14.3\bin\elasticsearch-service install" 並按 Enter 鍵。
- 安裝完成之後將會在命令視窗中看到「'elasticsearch-service-x64' 服務已安裝」的訊息。
- 輸入 Invoke-Expression -command "C:\ELK\elasticsearch-8.14.3\bin\elasticsearch-service manager" 並按下 Enter 鍵。
- 開啟 Elasticsearch 服務屬性視窗;將啟動類型變更為“自動”,然後按一下“啟動”以啟動服務。再按一下“確定”。
- 會在指令視窗中看到「已成功啟動‘ elasticsearch-service-x64 ’ 的服務管理員」的訊息。
- 移動至 C:\ELK\elasticsearch-8.14.3\config 資料夾。右鍵單擊 elasticsearch.yml 文件,然後按一下「使用 Notepad++ 編輯」以使用記事本開啟該文件。
- 在「Network」部分的第 56 行,刪除 # 取消停用註解。將 network.host: 192.168.0.1 改為 network.host: _local_,並刪除第 61 行的 # 取消停用註解。點擊“儲存”圖示儲存檔案並關閉設定組態檔。
- 切換到 PowerShell 窗口,輸入 cd C:\ELK\elasticsearch-8.14.3\bin 並按 Enter 鍵。
- 接下來重設使用者「elastic」的密碼,請輸入 ./elasticsearch-reset-password.bat -i -u elastic 並按 Enter 鍵。
- 此指令將提示輸入「elastic」使用者的密碼。輸入 user@123 作為密碼,然後再次輸入相同的密碼,確認新設定的密碼。
注意:會出現繼續進行的提示,請輸入 y 表示您同意使用新設定的密碼。
- 若要測試 Elasticsearch 配置,請啟動 Google Chrome 瀏覽器,輸入 http://localhost:9200/ 並按 Enter 鍵。
- 此時會彈出登入窗口,要求輸入使用者名稱和密碼,使用者名稱輸入 elastic,密碼輸入 user@123,然後點選「登入」。您將看到 Elasticsearch 服務正在運行,如下圖所示。
- 接下來,移動至 C:\ELK\logstash-8.14.3\config。右鍵單擊 logstash-sample.conf 文件,然後選擇「使用 Notepad++ 編輯」。
- 從第 14 行和第 15 行刪除 #。
- 將密碼 => "changeme" 改為密碼 => "user@123",如螢幕截圖所示。
- 儲存並關閉 logstash-sample.conf 檔案。
- 切換到 PowerShell,輸入 cd C:\ELK\logstash-8.14.3\bin 並按 Enter 鍵。
- 輸入指令 ./logstash.bat -f .\config\logstash-sample.conf 並按 Enter 鍵。手動執行啟動 Logstash。
- 成功執行之後會在輸出中看到 Pipelines 正在運行,這表示命令已成功執行。
- 保持這個 PowerShell 視窗維持在開啟狀態,再繼續安裝 Logstash,請以管理員身分開啟另一個 Windows PowerShell 視窗。輸入 Invoke-Expression -command "C:\ELK\nssm-2.24\win64\nssm install Logstash" 並按 Enter 鍵。 開啟 NSSM 服務安裝程式。
- 在「Application」標籤中,按一下「Path」文字框,然後鍵入 C:\ELK\logstash-8.14.3\bin\logstash.bat
- 在「Startup directory」文字框中,鍵入 C:\ELK\logstash-8.14.3\bin。
- 在「Arguments」文字框中,鍵入 -f .\config\logstash-sample.conf。
- 若要安裝 Logstash 服務,請按一下「Install service」按鈕。
- 螢幕上將顯示「Logstash 服務安裝成功!」訊息。按一下“確定”。
- 移動至 Windows 搜尋欄,鍵入“ Services ”,按一下搜尋欄位中的“ services ”,然後按一下“ services ” 開啟“服務”視窗。
- 若要啟動 Logstash 服務,請搜尋並選擇 Logstash 服務,然後按一下左側窗格中的「啟動」。
- 螢幕顯示 Logstash 服務啟動了。
- 切換到 PowerShell,輸入 Invoke-Expression -command "C:\ELK\nssm-2.24\win64\nssm install Kibana" 並按 Enter 鍵。
- NSSM 服務安裝程式將會開啟。
- 在“ Application ” 標籤中,按一下“ Path ” 文字框,然後鍵入 C:\ELK\kibana-8.14.3\bin\kibana.bat。
- 在「Startup directory」文字框中,鍵入 C:\ELK\kibana-8.14.3\bin。
- 若要安裝 Kibana 服務,請點選「Install service」按鈕。
- 螢幕上將顯示「Kibana 服務安裝成功!」訊息。按一下“確定”。
- 移動至 C:\ELK\kibana-8.14.3\config 資料夾,右鍵點選 kibana.yml 文件,然後按一下「使用 Notepad++ 編輯」。
- 在第 6 行和第 11 行,刪除 # 以取消停用註解,將 11 行內容變更為 server.host: "10.10.10.16".
- 在第 49 行和第 50 行,刪除 # 以取消停用註解,將 50 行內容變更為 elasticsearch.password: "user@123".
- 在第 95 行,刪除 # 以取消停用註解,將 95 行內容變更為 elasticsearch.ssl.verificationMode: none。
- 按一下「儲存」以儲存檔案並關閉它。
- 切換到 PowerShell,輸入 cd C:\ELK\elasticsearch-8.14.3\bin 並按 Enter 鍵。
- 接下來重設「kibana_system」使用者的密碼,請鍵入 ./elasticsearch-reset-password -i -u kibana_system 並按 Enter 鍵。
- 此指令將提示輸入「kibana_system」使用者的密碼。輸入 user@123 作為密碼,然後再次輸入相同的密碼,確認新設定的密碼。
注意:會出現繼續進行的提示,請輸入 y 表示您同意使用新設定的密碼。
- 若要啟動 Kibana 服務,請開啟「啟動服務」視窗並選擇 Kibana 服務。按一下左側窗格中的「啟動」。
- 會在螢幕上看到 Kibana 服務啟動了。
- 切換到 Google 瀏覽器,開啟一個新分頁,輸入 http://10.10.10.16:5601 並按下 Enter 鍵。 Elastic 登入頁面將顯示如下圖所示。輸入 elastic 作為使用者名, user@123 作為密碼,然後點選「登入」。
- Elastic 首頁如下圖所示。點選“ Explore on my own ”。
- 啟動 Web 伺服器機器。
- 按 Ctrl+Alt+Delete 解鎖。
- 選擇管理員帳戶,輸入密碼並按 Enter 鍵登入。
- 開啟檔案總管,複製 Beats 資料夾。貼到 C: 磁碟機下方。
- 打開 Beats 資料夾。右鍵點選並選擇「提取到這裡」選項,將 winlogbeat-8.14.3-windows-x86_64.zip 檔案解壓縮到 C:\Beats 目錄下。解壓縮後刪除該 zip 檔。
- 點選 Windows 開始按鈕。右鍵單擊 Windows PowerShell 圖標,然後按一下“更多”,然後從彈出式功能表中選擇“以管理員身份執行”。
- 先來檢查 ELK 和端點之間的連接,請鍵入 Test-NetConnection 10.10.10.16 -port 5044 並按 Enter 鍵。
- 網路連線成功將在命令視窗中看到 TcpTestSuccessed: True。
注意:如果 TcpTestSuccessed: False,則檢查 ELK 伺服器和 Web 伺服器之間的網路連線。
- 移動至 winlogbeat 目錄,請鍵入 cd C:\Beats\winlogbeat-8.14.3-windows-x86_64 按 Enter 鍵。
- 輸入 PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-winlogbeat.ps1 並按 Enter 鍵。
- 螢幕上會看到 winlogbeat 已成功安裝,但是目前 winlogbeat 服務的狀態為「已停止」。
- 移動至 C:\Beats\winlogbeat-8.14.3-windows-x86_64 位置,並使用 Notepad++ 開啟檔案 winlogbeat.yml。
- 在 setup.kibana 的 Kibana 部分:第 87 行,刪除 # 以取消停用註解並更改主機:「localhost:5601」 到 主機:「10.10.10.16:5601」。
- 在 Elasticsearch 輸出部分,新增 # 停用註解,停用第 112 行和第 114 行。
- 在 logstash 輸出部分的 output.logstash 檔案中:刪除第 128 行和第 130 行開頭的 # 以取消停用註解,並將 hosts: ["localhost:5044"] 更改為 hosts: ["10.10.10.16:5044"]
- 儲存檔案 winlogbeat.yml 並關閉。
- 若要測試 winlogbeat 配置,請切換到 Windows PowerShell,然後輸入 .\winlogbeat.exe test config -c .\winlogbeat.yml -e 並按 Enter 鍵。
- 「設定成功」訊息將顯示如下螢幕截圖所示。
- 啟動 winlogbeat 服務,請鍵入 Start-Service winlogbeat 並按 Enter 鍵。
- 切換到用來作分析的機器。
- 複製 malware.yml 檔案,就是我們這次要整合到 ELK Stack 的 IoC。貼到 C:\ELK\logstash-8.14.3 中。
- 移動至 C:\ELK\logstash-8.14.3\config 目錄。開啟 logstash-sample.conf 檔案。
- 若想要將 IoC 的規則整合到 Logstash 過濾器中,請在第 8 行後按 Enter 鍵增加鍵入如下圖紅框內所顯示的資料。
- 儲存並關閉 logstash-sample.conf 檔案。
- 切換到 Google Chrome 瀏覽器並重新整理 Elastic 頁面。
- 點選省略號按鈕,然後在左側窗格選單的「Analytics」標籤下點選「Discover」。
- 點選 Create data view。
- 在對應的欄位中輸入以下值,然後按一下“將資料儲存到 Kibana ”,如下面的螢幕截圖所示。
Name 欄位: winlogbeat
Index pattern 欄位: winlogbeat*
- 整合成功後會在螢幕上看到如下圖所示的畫面。