当前位置: 首页>Python>正文

elasticsearch中文文檔,Elastic安全分析新利器 —— Event Query Language (EQL) 介紹

elasticsearch中文文檔,Elastic安全分析新利器 —— Event Query Language (EQL) 介紹

文章目錄

    • 簡化復雜的查詢
    • 設計一種語言
    • 應用EQL
      • IOC 檢索
      • 時間窗口搜索
      • 管道處理
      • 事件序列
      • 進程祖系 (PROCESS ANCESTRY)
      • 函數調用
      • 閥值排序

elasticsearch中文文檔。隨著網絡安全攻防雙方的技術不斷升級,敵方活動不再單純地用靜態的 “入侵指標”(IOCs)來描述。僅僅關注IOCs會導致檢測變得脆弱,而且在發現未知攻擊時效果不佳,因為對手可以通過簡單的修改工具包以輕松逃避基于指標的檢測。相反,安全從業者需要基于惡意行為的持續檢測。MITRE ATT&CK框架可以幫助從業者將其防御傳統技術集中在這些惡意行為上。通過將對手的傳統技術和行為組織成一個戰術和技術矩陣,ATT&CKTM 是超越IOCs并向基于行為的檢測發展的理想選擇。

有了一個全面而強大的對抗行為模型,下一步就是建立一個支持捕獲和實時檢測的事件收集架構,以及一種促進可用性和性能的查詢語言。我們創建了用于捕獲和實時檢測的事件查詢語言(EQL),其簡單的語法可以幫助從業者表達復雜的查詢,而沒有很高的入門門檻。本文將討論 EQL 背后的動機,它如何融入 Elastic Security 整體架構,并提供幾個 EQL 的實際案例,以展示其推動捕獲和實時檢測對抗行為的能力。

簡化復雜的查詢

許多數據庫和搜索平臺繁瑣且不直觀,語法復雜,進入門檻高。檢測可疑行為需要對多個數據源進行分析,并具備無縫的數據收集、匯總和分析能力。搜索和探索數據應該是直觀和反復的,并能靈活地對問題進行微調,并對可疑行為進行精確定位。

es可視化管理工具?在Elastic Security 平臺中,我們創建了克服這些數據分析和檢測挑戰的功能。我們的目標是增強用戶的能力,而不是讓他們感到無所適從。我們的解決方案,EQL,平衡了可用性,同時大大擴展了狩獵和檢測的能力。它可以用來回答復雜的問題,而不會給用戶帶來聯接(join)、事務(transaction)、聚合(aggregation)或狀態管理等內部工作的負擔,這些工作伴隨著許多數據庫解決方案和分析框架。EQL已經被證明是有效的,我們很高興將它介紹給社區,以推動實時檢測。

設計一種語言

我們希望確保EQL在為大家所熟悉的語法中支持復雜的問題,以限制學習曲線并最大化功能。EQL提供了抽象,允許用戶執行有狀態的查詢,識別事件序列,跟蹤進程的父子關系,跨多個數據源的連接,并執行堆疊。在設計EQL時,我們首先關注的是暴露底層數據模式。每個收集到的事件都由一個事件類型和一組屬性組成。例如,一個進程事件(process event)有諸如 process identifier (PID), name, time, command line, parent等字段,還有一個子類型來區分創建和終止事件。在最基本的層面上,事件查詢根據一些布爾邏輯將事件類型與條件匹配,以比較字段。where關鍵字用于在查詢中把這兩者聯系起來。條件表達式與布爾運算符(andornot)、比較運算符(<<===!=>=>in)以及函數調用相結合。數字和字符串的表達很容易,并且支持通配符(*)。所有這些都導致了一種簡單的語法,感覺應該和Python類似。

在搜索單個事件時,用EQL可讀性強、精簡的語法,可以很容易地表達很多問題。例如,這個問題:

elvui傷害統計怎么開啟?svchost.exe進程的目的端口為1337,IP域為192.168.0.0/16或172.16.0.0/16時,有哪些獨特的出站IPv4網絡目的地?

用EQL表示:

network where  event_subtype_full == "ipv4_connection_attempt_event" and  process_name == "svchost.exe" and  destination_port == 1337 and (destination_address == "192.168.*" or destination_address == "172.16.*") 
| unique destination_address destination_port

EQL支持搜索多個相關事件,這些事件與事件查詢序列鏈在一起,并使用類似于Unix管道(unix-pipes | )的后處理。安全分析人員可以組裝這些組件來定義簡單或復雜的行為,而不需要了解底層的機制。這些構件被組裝起來,在 Elastic Security 平臺中構建強大的捕獲分析和實時檢測。

應用EQL

安全分析會?在 Elastic Security 平臺上,當輸入有效的EQL時,查詢會在數據節點上編譯,執行查詢并返回結果。這一切都快速、并行地發生,讓用戶立即看到結果。我們來看看EQL在以下場景中是如何表達的。

IOC 檢索

IOC搜索并不是威脅捕獲,但它是很多組織日常安全運營的重要一環。Elastic Security 用戶可以用EQL表達簡單的IOC搜索。

process where sha256=="551d62be381a429bb594c263fc01e8cc9f80bda97ac3787244ef16e3b0c05589"

時間窗口搜索

在事件響應過程中,有很多時候,了解特定時間發生的所有事件是很有用的。使用一種名為any的特殊事件類型,針對所有事件進行匹配,EQL可以匹配五分鐘窗口內的每個事件。

在2018年4月1日中午12點UTC到12點05分UTC之間發生了什么事件?

any where timestamp_utc >= "2018-04-01 12:00:0Z" and timestamp_utc <= "2018-04-01 12:05:0Z"

管道處理

EQL 提供了數據管道,它類似于unix管道,但數據管道不是操作輸入行,而是接收事件流,執行處理,并輸出另一個事件流。支持的管道使您能夠:

  • 統計某事發生的次數
| count <expr>,<expr>,...
  • 輸出符合布爾條件的事件
| filter <condition>
  • 輸出前N個事件
| head <number>
  • 按升序輸出事件
| sort <expr>, <expr>,
  • 輸出最近的N個事件
| tail <number>
  • 刪除共享屬性的重復內容
| unique <expr>,<expr>,...

舉例:

哪些用戶運行了多個不同的命令?

join by user_name[process where process_name=="whoami.exe"][process where process_name=="hostname.exe"][process where process_name=="tasklist.exe"][process where process_name=="ipconfig.exe"][process where process_name=="net.exe"]
| unique user_name

5月1日之后,哪些網絡目的地最先出現?

network where event_subtype_full=="ipv4_connection_attempt_event"
| unique destination_address, destination_port
| filter timestamp_utc >= "2018-05-01"

事件序列

許多行為并不是原子的,而是跨越了多個事件。為了定義一系列有序的事件,大多數查詢語言需要精心的連接或事務,但EQL提供了一個Sequence 結構,這也是EQL區別于Elasticsearch DSL最主要的地方。Sequence中的每個item都由方括號[<event query>]之間的事件查詢來描述。Sequence可以選擇用maxspan=<duration>的語法限制在一個時間范圍內,或者用直到[<event query>]的語法過期,或者用by關鍵字匹配值。

非系統用戶創建了什么文件,先是作為非系統進程運行,后來又在一小時內作為系統級進程運行?

sequence with maxspan=1h[file where event_subtype_full=="file_create_event" and user_name!="SYSTEM"] by 
file_path[process where user_name!="SYSTEM"] by process_path[process where user_name=="SYSTEM"] by process_path

進程祖系 (PROCESS ANCESTRY)

該語言甚至可以表達進程祖先的關系。這可以用來尋找可能具有正常的父子關系,但以可疑的方式鏈在一起的異常情況。要檢查一個進程是否有某個祖先,可以使用語法descendant of [<ancestor query>]

Word的后繼進程是否在system32中創建或修改過任何可執行文件?

file where file_path=="C:\\Windows\\System32\\*" and file_name=="*.exe" and descendant of [process where process_name=="WINWORD.exe"]

進程祖先關系還支持嵌套和布爾邏輯,便于嚴格查詢。這有助于精確定位特定的活動并過濾掉噪音。

net.exe是否從PowerShell實例中運行,該實例進行了網絡活動,而不是NoisyService.exe的后裔?

process where process_name=="net.exe" and descendant of [network where process_name=="powershell.exe" andnot descendant of [process where process_name == "NoisyService.exe"]]

函數調用

函數可以通過定義和暴露新的函數來擴展EQL功能,而無需改變任何語法。例如,length()函數對于查找可疑和罕見的PowerShell命令行非常有用。比如:

有哪些獨特的長Powershell命令行帶有有可疑的參數?

process where process_name in ("powershell.exe", "pwsh.exe") and length(command_line) > 400 and (command_line=="*enc*" or command_line=="*IO.MemoryStream*" or command_line == "*iex*" or command_line=="* -e* *bypass*")
| unique command_line

閥值排序

EQL也可用于執行異常值分析。可以對數據進行排序(sort)和尾部過濾 (tail),因此只返回異常值。通過這種方式構建的搜索,對于一個搜索返回多少結果有一個明確的上限。這意味著使用的帶寬更少,不需要事后進行數字計算,篩選結果的時間也更少。換句話說,你不必獲取和搜索你不需要的數據。

外發網絡連接傳輸了超過100MB的數據的Top 5?

network where total_out_bytes > 100000000
| sort total_out_bytes
| tail 5

https://www.nshth.com/python/338886.html
>

相关文章:

  • elasticsearch中文文檔
  • es可視化管理工具
  • elvui傷害統計怎么開啟
  • 安全分析會
  • 債權轉讓新利器
  • SpSS可靠性分析
  • zeniss分析軟件
  • 定量分析工具報錯
  • 國二python難嗎,python字符串(二)
  • 電腦軟件下載app,在電腦上體驗了 16 款手機 App 后,我很失望
  • elasticsearch中文文檔,Elastic安全分析新利器 —— Event Query Language (EQL) 介紹
  • 數據結構與算法python,[FreeCodeCamp筆記] Python 數據結構和算法1 二分搜索 Binary Search
  • 黑蘋果macOS系統鏡像工具,MacOS Monterey 12.2.1 (21D62) OC 0.7.8 / Cl 5144 / PE 三分區原版黑蘋果鏡像
  • 51單片機畢業設計論文,【畢業設計】基于單片機無線充電的4軸飛行器 -物聯網 嵌入式 stm32
  • 數據庫基礎知識整理,數據庫筆記整理
  • python運行不報錯又無任何結果輸出,linux 正確錯誤輸出_報告錯誤的正確方法
  • 計算機組成原理第六版課后答案,杭電計算機組成原理實驗九R-I,杭電計組實驗9-實現R-I型指令的CPU設計實驗.doc
  • python面向對象,Python零基礎速成班-第10講-Python面向對象編程(下),Property屬性、特殊方法、設計模式、鏈表應用
  • 數據庫視圖是什么,【SpringMVC】SpringMVC模型數據+視圖解析器
  • mp3格式轉換器,FFmpeg支持的音頻和視頻編解碼格式
  • 音樂學校招生要求,學校的音樂樓
  • c語言輸入兩個數輸出較大數,C語言求兩個數的較大值
  • 定義一個函數求三個數的最大值,輸入兩個整數,要求輸出其中值較大者。要求用函數求出最大值
  • MySQL學習 DAY1
  • 一個眼神一個微笑就讓人滿足,看得到的微笑
  • centos7安裝MySQL,centos7下載spark連接mysql數據庫提取數據(pyspark,Scala,python獨立執行)
  • node.js開發,從零開始nodejs系列文章-nodejs到底能干什么
  • python控制軟件自動化,Python實現網站自動登錄---傻瓜教程
  • get all of,resent = msg.get_all('Resent-Date') AttributeError: 'str' object h
  • opencv人體動作識別,torchvision使用keypoint rcnn 進行人體關鍵點定位
  • 深度卷積神經網絡原理與實踐,卷積神經網絡resent網絡實踐
  • 服務器,win服務器系統路由器,Windows server 2012 之路由功能
  • 小青蛙走迷宮的問題
  • 漢諾塔-小青蛙
  • 小青蛙oracle跟蹤,在小青蛙TOAD中用oracle語句寫
  • 音頻頻譜分析儀安卓版,[Android]自定義繪制一個簡易的音頻條形圖,附上對MP3音頻波形數據的采集與展現
  • 連乘符號∏的運算法則,∏這個是什么符號?
  • 用例失敗jenkins卻構建成功,jenkins 構建異常_jenkins構建失敗的原因是什么?