ElasticSearch事件查詢語(yǔ)言EQL操作
前述
EQL 的全名是 Event Query Language (EQL)。事件查詢語(yǔ)言(EQL)是一種用于基于事件的時(shí)間序列數(shù)據(jù)(例如日志,指標(biāo)和跟蹤)的查詢語(yǔ)言。在 Elastic Security 平臺(tái)上,當(dāng)輸入有效的 EQL 時(shí),查詢會(huì)在數(shù)據(jù)節(jié)點(diǎn)上編譯,執(zhí)行查詢并返回結(jié)果。這一切都快速、并行地發(fā)生,讓用戶立即看到結(jié)果。
EQL優(yōu)點(diǎn)
- EQL 使你可以表達(dá)事件之間的關(guān)系:許多查詢語(yǔ)言允許您匹配單個(gè)事件。EQL 使你可以匹配不同事件類別和時(shí)間跨度的一系列事件
- EQL 的學(xué)習(xí)曲線很低:EQL 語(yǔ)法看起來像其他常見查詢語(yǔ)言,例如 SQL。 EQL 使你可以直觀地編寫和讀取查 詢,從而可以進(jìn)行快速,迭代的搜索。
- EQL 設(shè)計(jì)用于安全用例:盡管你可以將其用于任何基于事件的數(shù)據(jù),但我們創(chuàng)建了 EQL 來進(jìn)行威脅搜尋。 EQL 不僅支持危害指標(biāo)(IOC)搜索,而且可以描述超出 IOC 范圍的活動(dòng)
基礎(chǔ)語(yǔ)法
數(shù)據(jù)準(zhǔn)備
要運(yùn)行 EQL 搜索,搜索到的數(shù)據(jù)流或索引必須包含時(shí)間戳和事件類別字段。默認(rèn)情況下,EQL 使用 Elastic 通用模式(ECS)中的 @timestamp 和 event.category 字段。 @timestamp 表示時(shí)間戳,event.category 表示事件分類。
# 創(chuàng)建索引
PUT /gmall
# 批量增加數(shù)據(jù)
PUT _bulk
{"index":{"_index":"gmall"}}
{
"@timestamp":"2022-08-10T15:00:00.00+08:00",
"event":{
"category":"page"
},
"page":{
"session_id":"42FC7E13-CB3E-5C05-0000-0010A0125101",
"last_page_id":"",
"page_id":"login",
"user_id":""
}
}
{"index":{"_index":"gmall"}}
{
"@timestamp":"2022-08-10T15:02:00.00+08:00",
"event":{
"category":"page"
},
"page":{
"session_id":"42FC7E13-CB3E-5C05-0000-0010A0125101",
"last_page_id":"login",
"page_id":"good_list",
"user_id":"1"
}
}
{"index":{"_index":"gmall"}}
{
"@timestamp":"2022-08-10T15:05:00.00+08:00",
"event":{
"category":"page"
},
"page":{
"session_id":"42FC7E13-CB3E-5C05-0000-0010A0125101",
"last_page_id":"good_list",
"page_id":"good_detail",
"user_id":"1"
}
}
{"index":{"_index":"gmall"}}
{
"@timestamp":"2022-08-10T15:07:00.00+08:00",
"event":{
"category":"page"
},
"page":{
"session_id":"42FC7E13-CB3E-5C05-0000-0010A0125101",
"last_page_id":"good_detail",
"page_id":"order",
"user_id":"1"
}
}
{"index":{"_index":"gmall"}}
{
"@timestamp":"2022-08-10T15:08:00.00+08:00",
"event":{
"category":"page"
},
"page":{
"session_id":"42FC7E13-CB3E-5C05-0000-0010A0125101",
"last_page_id":"order",
"page_id":"payment",
"user_id":"1"
}
}
{"index":{"_index":"gmall"}}
{
"@timestamp":"2022-08-10T15:08:00.00+08:00",
"event":{
"category":"page"
},
"page":{
"session_id":"42FC7E13-CB3E-5C05-0000-0010A0125102",
"last_page_id":"",
"page_id":"login",
"user_id":"2"
}
}
{"index":{"_index":"gmall"}}
{
"@timestamp":"2022-08-10T15:08:00.00+08:00",
"event":{
"category":"page"
},
"page":{
"session_id":"42FC7E13-CB3E-5C05-0000-0010A0125102",
"last_page_id":"login",
"page_id":"payment",
"user_id":"2"
}
}
數(shù)據(jù)窗口搜索
在事件響應(yīng)過程中,有很多時(shí)候,了解特定時(shí)間發(fā)生的所有事件是很有用的。使用一種名為any的特殊事件類型,針對(duì)所有事件進(jìn)行匹配,如果想要匹配特定事件,就需要指明事件分類名稱
#
GET /gmall/_eql/search
{
"query" : """
any where page.user_id == "1"
"""
}
統(tǒng)計(jì)符合條件的事件
GET /gmall/_eql/search
{
"query" : """
any where true
""",
"filter": {
"range": {
"@timestamp": {
"gte": "1654056000000",
"lt": "1654056005000"
}
}
}
}
事件序列
- 頁(yè)面先訪問 login,后面又訪問了 good_detail的頁(yè)面
GET /gmall/_eql/search
{
"query" : """
sequence by page.session_id
[page where page.page_id=="login"]
[page where page.page_id=="good_detail"]
"""
}
安全檢測(cè)
EQL在 Elastic Securit 中被廣泛使用。實(shí)際應(yīng)用時(shí),我們可以使用 EQL 語(yǔ)言來進(jìn)行檢測(cè)安全威脅和其他可疑行為。
數(shù)據(jù)準(zhǔn)備
regsvr32.exe 是一個(gè)內(nèi)置的命令行實(shí)用程序,用于在Windows中注冊(cè).dll庫(kù)。作為本機(jī)工具,regsvr32.exe 具有受信任的狀態(tài),從而使它可以繞過大多數(shù)允許列表軟件和腳本阻止 程序。有權(quán)訪問用戶命令行的攻擊者可以使用 regsvr32.exe 通過.dll庫(kù)運(yùn)行惡意腳本,即使在其他情況下也不允許這些腳本運(yùn)行。
regsvr32 濫用的一種常見變體是Squfullydoo攻擊。在 Squfullydoo 攻擊中,regsvr32.exe 命令使用 scrobj.dll 庫(kù)注冊(cè)并運(yùn)行遠(yuǎn)程腳本。
測(cè)試數(shù)據(jù)來自 Atomic Red Team 的測(cè)試數(shù)據(jù)集,其中包括模仿Squibledoo攻擊的事件。 數(shù)據(jù)已映射到Elastic通用架構(gòu)(ECS)字段:normalized-T1117-AtomicRed-regsvr32.json 將文件內(nèi)容導(dǎo)入到ES軟件中:
# 創(chuàng)建索引
PUT my-eql-index
# 導(dǎo)入數(shù)據(jù)
POST my-eql-index/_bulk?pretty&refresh
{"index":{}}
{
......
}
- 查看數(shù)據(jù)導(dǎo)入情況
GET /_cat/indices/my-eql-index?v=true&h=health,status,index,docs.count
獲取regsvr32事件的計(jì)數(shù)
- 獲取與
regsvr32.exe進(jìn)程關(guān)聯(lián)的事件數(shù)
# 查詢數(shù)據(jù)
# ?filter_path=-hits.events 從響應(yīng)中排除hits.events 屬性。此搜索僅用于獲取事件計(jì)數(shù),而不是匹配事件的列表
# query : 匹配任何進(jìn)程名稱為regsvr32.exe的事件
# size : 最多返回200個(gè)匹配事件的匹配,實(shí)際查詢結(jié)果為143個(gè)
GET my-eql-index/_eql/search?filter_path=-hits.events
{
"query": """
any where process.name == "regsvr32.exe"
""",
"size": 200
}
檢查命令行參數(shù)
該查詢將一個(gè)事件與創(chuàng)建的event.type相匹配,指示regsvr32.exe進(jìn)程的開始。根據(jù)事件的 process.command_line值,regsvr32.exe 使用 scrobj.dll 注冊(cè)了腳本 RegSvr32.sct.這符合Squibledoo攻擊的行為
# 增加過濾條件查詢數(shù)據(jù)
GET my-eql-index/_eql/search
{
"query": """
process where process.name == "regsvr32.exe" and process.command_line.keyword != null
"""
}
檢查惡意腳本加載
- 檢查
regsvr32.exe以后是否加載scrobj.dll庫(kù)
# 增加過濾條件查詢數(shù)據(jù)
GET my-eql-index/_eql/search
{
"query": """
library where process.name == "regsvr32.exe" and dll.name == "scrobj.dll"
"""
}
檢查攻擊成功可能性
在許多情況下,攻擊者使用惡意腳本連接到遠(yuǎn)程服務(wù)器或下載其他文件。 使用EQL序列查詢來檢查以下一系列事件:
regsvr32.exe進(jìn)程- 通過相同的進(jìn)程加載
scrobj.dll庫(kù) - 同一過程中的任何網(wǎng)絡(luò)事件
# 增加過濾條件查詢數(shù)據(jù)
GET my-eql-index/_eql/search
{
"query": """
sequence by process.pid
[process where process.name == "regsvr32.exe"]
[library where dll.name == "scrobj.dll"]
[network where true]
"""
}以上就是ElasticSearch事件查詢語(yǔ)言EQL操作的詳細(xì)內(nèi)容,更多關(guān)于ElasticSearch EQL操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- ElasticSearch查詢文檔基本操作實(shí)例
- ElasticSearch學(xué)習(xí)之多條件組合查詢驗(yàn)證及示例分析
- Elasticsearch學(xué)習(xí)之Terms?set?查詢
- Elasticsearch?percolate?查詢示例詳解
- Elasticsearch查詢及聚合類DSL語(yǔ)句寶典示例詳解
- go語(yǔ)言實(shí)現(xiàn)Elasticsearches批量修改查詢及發(fā)送MQ操作示例
- Elasticsearch聚合查詢及排序操作示例
- Elasticsearch之基本查詢及組合查詢操作示例
- Elasticsearch查詢Range Query語(yǔ)法示例
相關(guān)文章
生產(chǎn)服務(wù)器突然本機(jī)無(wú)法訪問本機(jī)IP的端口的問題及解決方法
生產(chǎn)服務(wù)器突然無(wú)法訪問自己本機(jī)IP地址的端口,通過localhost或者127.0.0.1都可以正常訪問,本文給大家分享生產(chǎn)服務(wù)器突然本機(jī)無(wú)法訪問本機(jī)IP的端口的問題及解決方法,感興趣的朋友一起看看吧2023-11-11
windows系統(tǒng)搭建zookeeper服務(wù)器的教程
這篇文章主要介紹了windows系統(tǒng)搭建zookeeper服務(wù)器的教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
利用Ansible實(shí)現(xiàn)批量服務(wù)器自動(dòng)化管理詳解
Ansible是基于Python開發(fā)的,采用YAML語(yǔ)言編寫自動(dòng)化腳本playbook,?可以在Linux、Unix等系統(tǒng)上運(yùn)行,?本文主要介紹了如何利用Ansible實(shí)現(xiàn)批量服務(wù)器自動(dòng)化管理,需要的可以參考下2024-01-01
銀河麒麟V10服務(wù)器版安裝達(dá)夢(mèng)DM8數(shù)據(jù)庫(kù)的詳細(xì)過程
這篇文章主要介紹了銀河麒麟V10服務(wù)器版安裝達(dá)夢(mèng)DM8數(shù)據(jù)庫(kù)的詳細(xì)過程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-03-03

