利用ELK協助安全性攻擊的資料分析
你是否曾經進行過網路滲透測試,其範圍如此之大,以至於最終會得到包含Nmap掃描結果在內的數十個檔案,而每個檔案又包含多個主機? 如果答案是肯定的,那你應該會對這篇博文感興趣。
以下是我最近進行的一個工作,旨在找到一種方法來對滲透測試的結果進行分類,同時實現團隊成員之間的併發協作。 我們將會看到,在解析和分析資料時,使用傳統的“防禦性”工具進行攻擊性安全資料分析比傳統的grep更具優勢。
最後,這個工程的所有原始碼大家可以在github上下載,我也希望這能夠給後面將和我有一個需求的老哥們有所幫助: .
當前所能選擇的
如果你還在閱讀這篇文章,說明你想要摒棄原來基於grep的方法,但是我們有什麼替代品嗎?
我首先瀏覽了我一直忽略的東西:Nmap HTML報告。 我不知道有多少人知道並實際使用它,但確實可以從Nmap獲取XML輸出檔案並將其傳遞給XML處理器(如xsltproc),將其轉換為HTML檔案,如下圖所示:
如果對此感興趣,可以在Nmap網站上找到獲取此資訊的完整流程。 但是,我認為這種方法有一些缺陷。 首先,除非使用—webxml開關啟動Nmap,否則必須丟擲每個輸出檔案以替換XSL樣式表引用,以使其指向當前計算機上nmap.xsl檔案的確切位置。 其次,更重要的是,這沒有擴充套件。
放棄了HTML的辦法後,我想起來我的前同事Vincent Yiu的一篇部落格,利用Splunk進行攻擊性操作。 這是一個有趣的想法,因為我們越來越多地看到人們也使用所謂的“防禦”工具進行攻擊。 Splunk絕對不適合我(因為我沒有license),但經過一些研究後我終於偶然發現了這篇部落格文章:“ Nmap + Logstash to Gain Insight Into Your Network ”。
我之前聽說過ELK(下面有更多內容介紹ELK),但我從未真正瞭解過它,可能是因為我把它歸類為主要由SOC分析師使用的“防禦”工具。 而它引起我注意的是上面的部落格文章解釋瞭如何:
“直接將Nmap掃描結果匯入Elasticsearch,然後您可以使用Kibana將其視覺化”。
ELK Stack的介紹
那麼,ELK Stack是什麼? “ELK”是三個開源專案的首字母縮寫:Elasticsearch,Logstash和Kibana。 Elasticsearch是一個搜尋和分析引擎。 Logstash是一個伺服器端資料處理管道,它同時從多個源中提取資料,對其進行轉換,然後將其傳送到像Elasticsearch這樣的“儲存”。 Kibana允許使用者使用Elasticsearch中的圖表和圖形視覺化資料。
我不會詳細解釋這個堆疊的不同元件,但對於有興趣的人我強烈推薦 “ ”,它給出了堆疊及其三個主要元件的非常好的概述(可以跳過“安裝ELK”部分,因為我們將採取不同的方法)。
我感興趣的部分是Elasticsearch如何不僅可以用於檢測(防禦),還可以用於進攻。
安裝
以下是一個完整的演示,一直到最後安裝成功。對這個不感興趣的同學可以直接跳到“運算元據”部分。
首先我們將使用由
@deviantony
完成的一個很棒的儲存庫,這將允許我們在幾秒鐘內啟動完整的ELK堆疊,這要歸功於docker-compose:
克隆儲存庫後,我們可以從docker-compose.yml檔案中看到將啟動三個服務。 這是修改後的docker-compose.yml檔案,我在其中新增了容器名稱(為了清楚起見)和一種Elasticsearch儲存資料的方式,即使在刪除其容器之後,透過在主機上安裝捲來儲存資料(./_data/elasticsearch:/USR/共享/ elasticsearch/資料):
docker-elk ❯ cat docker-compose.yml
version: ‘2’
services:
# -------------------------------------------------------------------# ELASTICSEARCH# ------------------------------------------------------------------- elasticsearch: container_name: elk_elasticsearch build: elasticsearch/ volumes: - ./elasticsearch/config/elasticsearch.yml: /usr/share/elasticsearch/config/elasticsearch.yml:ro - ./_data/elasticsearch:/usr/share/elasticsearch/data ports: - "9200:9200" - "9300:9300" environment: ES_JAVA_OPTS: "-Xmx256m -Xms256m" networks: - elk# -------------------------------------------------------------------# LOGSTASH# -------------------------------------------------------------------logstash: container_name: elk_logstash build: logstash/ volumes: - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro - ./logstash/pipeline:/usr/share/logstash/pipeline:ro ports: - "5000:5000" environment: LS_JAVA_OPTS: "-Xmx256m -Xms256m" networks: - elk depends_on: - elasticsearch# -------------------------------------------------------------------# KIBANA# ------------------------------------------------------------------- kibana: container_name: elk_kibana build: kibana/ volumes: - ./kibana/config/:/usr/share/kibana/config:ro ports: - "5601:5601" networks: - elk depends_on: - elasticsearchnetworks: elk: driver: bridge
預設情況下,堆疊開放以下埠:
5000:Logstash TCP輸入
9200:Elasticsearch HTTP
9300:Elasticsearch TCP傳輸
5601:Kibana
用幾秒鐘時間來安裝Kibana,然後在web頁面上訪問它: .
準備Elasticsearch以獲取Nmap結果
對於一個完整的ELK新手來說,這是一個挑戰,直到我找到以下帖子:“
How to Index NMAP Port Scan Results into Elasticsearch
”。 這不是一個完整的解決方案,而是一個很好的起點。 讓我們從那裡開始並以此為基礎。
首先,我們需要Logstash Nmap編解碼器外掛。 Logstash編解碼器簡單地提供了一種指定原始資料應如何解碼的方法,而不管源是什麼。 這意味著我們可以使用Nmap編解碼器從各種輸入中讀取Nmap XML。 在將資料傳遞給Nmap編解碼器之前,我們可以從訊息佇列或透過syslog讀取它。 幸運的是,新增它就像修改位於logstash / Dockerfile的Logstash Dockerfile一樣簡單:
docker-elk ❯ cat logstash/Dockerfile
# FROM docker.elastic.co/logstash/logstash-oss:6.3.0 # Add your logstash plugins setup here # Example: RUN logstash-plugin install logstash-filter-json RUN logstash-plugin install logstash-codec-nmap
接下來,要將其放入Elasticsearch,我們需要建立一個對映。 可以從Logstash Nmap編解碼器的Github儲存庫獲得對映模板。 我們可以下載它並將其放在logstash / pipeline / elasticsearch_nmap_template.json中:
最後,我們需要修改位於logstash / pipeline / logstash.conf的logstash配置檔案,以便為新的Nmap外掛新增過濾器和輸出選項:
準備攝取者服務
我們將使用修改後的VulntoES版本來獲取結果並將它們匯入Elasticsearch。 為了做到這一點,我建立了一個新的資料夾攝取器,用於實際攝取資料的新服務。
在上面的清單中,資料夾攝取器包含:
• VulntoES,原始指令碼的修改版本,修復了一些解析錯誤
• 指令碼提取將為放置在容器的/ data資料夾中的每個XML檔案執行VulntoES.py(更多內容見下文)
• Dockerfile將修改後的VulntoES匯入到python:2.7-stretch影像中
我們現在只需要將這個新容器新增到docker-compose.yml檔案中:
請注意我們如何在路徑/ data /下的容器中對映本地資料夾./_data/nmap。 我們將使用此“共享”資料夾來傳遞Nmap結果。
在所有這些修改之後,這就是您的專案資料夾的樣子:
完成後,請確保使用docker-compose build命令重建影像。
建立索引
最後一步是建立一個索引,用於將資料索引到:
1、使用curl建立nmap-vuln-to-es索引:
curl -XPUT ‘localhost:9200/nmap-vuln-to-es’
2、在瀏覽器中開啟Kibana(http:// localhost:5601),您將看到以下螢幕:
3、插入nmap *作為索引模式,然後按“下一步”:
選擇“I don’t want to use the Time Filter”, 然後點選 “Create Index Pattern”:
如果一切順利,您應該看到一個頁面,其中列出了nmap *索引中的每個欄位以及Elasticsearch記錄的欄位的相關核心型別。
運算元據
Elk正確配置完後,我們可以用它來玩玩處理資料了。
獲取Nmap結果
為了能夠獲取我們的Nmap掃描,我們必須以XML格式的報告(-oX)輸出結果,該報告可以由Elasticsearch解析。 完成掃描後,將報告放在./_data/nmap/資料夾中並執行攝取器:
分析資料
現在我們已經匯入了一些資料,現在是時候開始研究一下Kibana的功能了。
“dicover”檢視將索引中的所有資料顯示為文件表,並允許以互動方式瀏覽資料:我們可以訪問與所選索引模式匹配的每個索引中的每個文件。 你可以提交搜尋查詢,過濾搜尋結果以及檢視文件資料。 還可以檢視與搜尋查詢匹配的文件數量並獲取欄位值統計資訊。 透過過濾(例如,透過開放埠或服務)來對目標進行分類是很好的。
相反,“Dashboard”檢視顯示視覺化和搜尋的集合。 您可以排版,調整大小和編輯儀表板內容,然後儲存儀表板以便共享。 這可用於建立高度自定義的資料概覽。
儀表板本身是互動式的:您可以應用過濾器來檢視實時更新的視覺化以反映查詢的內容(在下面的示例中,我按埠22過濾)。
對這個感興趣的同學,我將我的示例儀表板匯出到一個易於重新匯入的json檔案中:
•
結論
傳統的“防禦性”工具可以有效地用於攻擊性安全資料分析,幫助您的團隊協作並對掃描結果進行分類。
特別的,Elasticsearch提供了聚合不同資料來源的數量的機會,使用統一的介面進行查詢,目的是從大量未分類的資料中提取可操作的知識。
本文轉載自“安全客”翻譯文章,原文來源:marcolancini.it ,原文編輯:邊邊
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31510736/viewspace-2158421/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ROVNIX攻擊平臺分析 -利用WordPress平臺傳播的多外掛攻擊平臺
- 資料庫安全性操作——操作原則及SQL隱碼攻擊資料庫SQL
- 加密你的資料並使其免受攻擊者的攻擊加密
- 利用PHAR協議進行PHP反序列化攻擊協議PHP
- 分析HTTP請求以降低HTTP走私攻擊HTTP資料接收不同步攻擊的風險HTTP
- 利用Office宏及Powershell的針對性攻擊樣本分析
- 利用Office巨集及Powershell的針對性攻擊樣本分析
- TCP/IP協議的SYN攻擊TCP協議
- 德國秘密特工協助美以用 Stuxnet 攻擊伊朗設施的內幕UX
- 利用HTTP host頭攻擊的技術HTTP
- 一種利用EXCEL的BazarLoader攻擊Excel
- 淺談資料庫的攻擊(轉)資料庫
- 德國祕密特工協助美以用 Stuxnet 攻擊伊朗設施的內幕UX
- 隱秘的攻擊形式:無檔案攻擊型別分析型別
- BTG(bitcoin gold)受到51%攻擊,攻擊者利用雙重支付獲利Go
- 入侵攻擊實戰中被利用的埠(轉)
- 利用JSONP進行水坑攻擊JSON
- 協議層的攻擊:HTTP請求走私協議HTTP
- DDoS攻擊工具HOIC分析
- SIM Jacker攻擊分析
- User-Agent手工注入攻擊及防禦(探測與利用分析)
- WMI 的攻擊,防禦與取證分析技術之攻擊篇
- 攻擊者使用SQLite資料庫中的惡意程式碼攻擊應用程式SQLite資料庫
- 解析利用BitTorrent發起DDoS放大攻擊的原理
- 收集、分析線上日誌資料實戰——ELK
- 雜湊傳遞攻擊利用(Pass The Hash)
- 利用Burp Suite攻擊Web應用UIWeb
- SQL資料庫的一些攻擊(轉)SQL資料庫
- 解密協議層的攻擊——HTTP請求走私解密協議HTTP
- 利用SSRF漏洞內網探測來攻擊Redis(通過curl命令 & gopher協議)內網RedisGo協議
- HTTPS 協議降級攻擊原理HTTP協議
- 多協議底層攻擊工具Yesinia協議
- 網站存在被攻擊篡改資料的問題 該如何防止網站被攻擊網站
- 攻擊不斷!QNAP 警告利用0day漏洞Deadbolt 勒索軟體攻擊
- 【漏洞分析】Li.Fi攻擊事件分析:缺乏關鍵引數檢查的鑽石協議事件協議
- Hundred Finance 攻擊事件分析NaN事件
- TARA攻擊樹分析方法論
- ARP協議介紹與ARP協議的攻擊手法協議