EQL的全称是事件查询语言(EQL)。事件查询语言(EQL)是一种基于事件的时间序列数据的查询语言,例如日志、指示器和跟踪。在弹性安全平台上,当输入有效的EQL时,查询在数据节点上编译、执行并返回结果。这一切都是快速并行发生的,让用户可以立即看到结果。
EQL优势EQL使您能够表达事件之间的关系:许多查询语言允许您匹配单个事件。EQL使您能够将一系列事件与不同的事件类别和时间跨度相匹配。EQL的学习曲线非常低:EQL语法看起来像其他常见的查询语言,如SQL。EQL使您能够直观地编写和阅读查询,这样您就可以快速迭代地进行搜索。EQL是为安全用例设计的:虽然您可以将它用于任何基于事件的数据,但我们创建了用于威胁搜索的EQL。EQL不仅支持危险指标(IOC)的搜索,还可以描述超出IOC范围的活动。
基础语法
数据准备要运行EQL搜索,搜索的数据流或索引必须包含时间戳和事件类别字段。默认情况下,EQL使用弹性通用模式(ECS)中的@timestamp和event.category字段。@timestamp表示时间戳,event.category表示事件分类。
#创建索引PUT /gmall#批量增加数据PUT _ BULK { " index ":{ " _ index ":" GMALL " } } { " @ timestamp ":" 2022-08-10t 15:00:00.0小编08:00 "," event":{ "category":"page" }," page ":{ " session _ id ":" 42 fc7e 13-cb3e -5c 05-000-010 a 0125101
数据窗口搜索在事件响应的过程中,很多时候了解在特定时间发生的所有事件是很有用的。使用名为any的特殊事件类型来匹配所有事件。如果要匹配特定的事件,需要指明事件分类名称。
# GET/gmall/_ eql/search { " query ":" " any where page . user _ id = = " 1 " " " " }
计数符合条件的事件get/gmall/_ eql/search { " query ":" Anywhere true " "," filter ":{ " range ":{ " @ timestamp ":{ " GTE ":" 1654056000000 "," lt": "1654056005000" } } }
事件页面首先访问login,然后我访问了页面get/gmall/_ eql/search { " query ":" sequence by page . session _ id[page where page . page _ id = = " log in "][page where page . page _ id = = " good _ detail "]" " }
安全EQL广泛应用于弹性安全中。在实践中,我们可以使用EQL语言来检测安全威胁和其他可疑行为。
准备数据regsvr32.exe是一个内置的命令行实用程序注册。Windows中的dll库。作为一个本地工具,regsvr32.exe有一个受信任的地位,这使它能够绕过大多数允许列表软件和脚本拦截器。能够访问用户命令行的攻击者可以使用regsvr32.exe通过运行恶意脚本。dll库,即使它们不允许在其他情况下运行。
滥用SVR 32的一个常见变种是Squfullydoo攻击。在Squfullydoo攻击中,regsvr32.exe命令使用scrobj.dll库注册并运行远程脚本。
测试数据来自原子红队的测试数据集,包括模拟Squibledoo攻击的事件。数据已映射到弹性通用架构(ECS)字段:规范化-t 1117-Atomic red -regsvr 32 . JSON将文件内容导入ES软件:
#创建索引PUT my-eql-index #导入数据POST my-eql-index/_bulk?漂亮& ampamp刷新{"index": {}} {...}查看数据导入状态Get/_ cat/indicators/my-eql -index?v = true & amph =健康、状态、索引、文档数
获取regsvr32事件的计数,获取与regsvr32.exe进程#查询数据#相关的事件数?Filter_path=-hits.events从响应中排除hits.events属性。该搜索仅用于获取事件计数,不获取匹配事件列表# query:匹配任何进程名为regsvr32.exe的事件# size:返回最多200个匹配事件的匹配,实际查询结果为143 GET my-eql -index/_ eql/search?filter _ path = -hits . events { " query ":" " any where process . name = = " regsvr 32 . exe " " " "," size": 200 }
检查命令行参数。该查询将一个事件与创建的event.type相匹配,指示regsvr32.exe进程的开始。根据事件的process.command_line值,RegSvr32.sct向scrobj.dll注册了脚本RegSvr32.sct,符合Squibledoo攻击。
#添加过滤条件查询数据getmy -eql -index/_ EQL/search { " query ":" process where process . name = = " regsvr 32 . exe " andprocess.com mand _ line . keyword!= null """ }
检查恶意脚本加载。检查scrobj.dll库是否会在regsvr32.exe #添加过滤条件后被加载。查询数据GET my-eql -index/_ eql/search { " query ":" " library where process . name = = " regsvr 32 . exe "和dll.name == "scrobj.dll" """ }
检查成功攻击的可能性。在许多情况下,攻击者使用恶意脚本连接到远程服务器或下载其他文件。使用EQL序列查询来检查以下一系列事件:
regsvr32.exe进程通过同一个进程加载scrobj.dll库同一个进程中的任何网络事件#添加过滤条件查询数据GET my-eql -index/_ eql/search { " query ":" " sequence by process . PID[process where process . name = = " regsvr 32 . exe "][library where dll . name = = " scrobj . dll "][network where true]" " " }以上是ElasticSearch事件查询语言eql的详细操作内容。更多ElasticSearch EQL运营信息,请关注主机频道zhujipindao的其他相关文章。com!
评论前必须登录!
注册