Qradar SIEM--查询利器 AQL
对于 SIEM 平台来说,好用的查询方式非常重要。之前有体验基于 ELK 搭建的平台,在 kibana 上面是可以通过一些 filter 来做一些过滤并且是支持 lucene 的语法,包括一些简单的逻辑查询以及 wildquery 等等。但是的确是在做一些汇聚之类时不是很方便,一般需要通过 json 来创建查询语句。后来好像也有转 SQL 之类的插件,但我也没有使用过,总的来说体验比较一般。
Qradar
Qradar 是一款比较成熟的商业 SIEM 平台(尽管他们的 BUG 一大堆,但架不住别的更差啊),基本上也是属于业界 TOP 5。商业产品的好处就是不用自己太折腾,搞搞就可以用,缺点就是贵。AQL(Ariel Query Language)是 Qradar 中的一种查询语言,与普通的 SQL 的语句类似,但是阉割了一些高级功能的基础上增加了一些基本功能。以下是 AQL 的基本流程:
可以看出 AQL 是一种非常类似于 SQL 的语言,所以基本上你用过 SQL 学会 AQL 也就分分钟的事情,而且你也不会拿它去做特别复杂的嵌套查询(因为它也不支持。。。)
Tips
虽然 AQL 终于让我们有枪可以搞一搞了,但是还是有一些地方值得吐槽的地方。第一就是很多 ID 不知道其具体的映射,就比如我们想查询一些事件的名称或者规则的名称,AQL 是不存在字段名是事件名称或者规则名称的。不过你可以通过函数来进行转换,比如使用 QIDNAME(qid)
来获取事件名称, RULENAME(123)
来获取规则名称。你没办法知道事件名称或者规则名称到底是对应什么 ID,目前我用的办法就是先去 IBM Develop API 里面先去查询。第二,AQL 查询的结果我发现有某个规则的查询结果和用 filter 查询的结果不一致,不知道这是不是特例。还有其他的,想到再说。
下面就是我在使用过程中一些小经验:
引号的使用
在 AQL 中,单引号和双引号的使用是有区别的。单引号一般可以表示字符串或者作为字段的别名,如果你的字段包含了空格,那么你必须使用单引号。双引号一般用来表示自定义属性的名称。还有一个值得注意的地方就是,当你在使用 WHERE,GROUP BY,ORDER BY
的时候,你必须要使用双引号来使用别名,而不是单引号,是不是有点绕。其实有个好的方法就是不要使用单引号了,直接使用帕斯卡命名或者使用下划线连接,比如 EventName
或者 Event_Name
,其实你自己想怎么命名都可以啦。
Rule 的匹配
Qradar 里面有很多内置的规则并且你能够自己定义特定的规则。其实对于某个 rule 来说,也是有特定的 rule ID 的,即 creeventlist,如果某个 rule 的 creeventlist 是 123,那么我们可以通过以下语句来找到这个 rule:
SELECT RULENAME(creaeventlist) FROM events
WHERE creeventlist = 123
场景案例
根据我的理解,Qradar 所有的查询归根到底应该都是通过 AQL 来实现的,但是官方并没有提供将普通的查询转换成 AQL 语句的工具。之前我有一些场景想通过 AQL 来实现,但是 IBM 的人说无法实现(此处应有吐槽),后来还是得靠自己来实现。
特定 IP 特定事件发生的时间大于特定的值
可能听起来有那么一点点绕,但这个场景还是蛮有必要的。因为经常有一些安全事件很长时间都没有及时处置,那我们如何将这些事件捞出来呢。即该事件(sourceip 指定)的第一次出现的时间和最近出现一次的时间的时间间隔大于特定的指,那么我们就可以通过这样的语句来把这样的事件找出来了。
SELECT QIDNAME(qid) AS EventName, MIN(starttime) AS FirstTime, MAX(starttime) AS LastTime
FROM events
WHERE LastTime - FirstTime > xxxx
GROUP BY sourceip,EventName
查询当前月份的事件
IBM 与日期相关的函数主要就是4个,即 LAST,START,STOP,NOW
。日期实现的逻辑太单一了,你只能指定具体的起始时间以及终止时间或者是 LAST1DAYS
这种。但是有一个非常普遍的场景就是我需要知道当前月份的情况,这就无法通过这几个关键词直接来实现,因为 CurrentMonthIS NOT LAST30DAYS
.那么我们需要介绍一个函数 DATEFORMAT
,通过这个函数我们可以将时间转化为字符串类型,结合 NOW
以及 START,STOP
函数,既可以实现。
那么我么就可以写出函数:
CONCAT(SUBSTRING(DATEFORMAT(NOW(), 'yyyy-MM-dd'), 0, 8), 01 00:00)
将这个时间作为起始时间,那么我们就可以获取当前月的事件了。其实,按照这种思路,理论上你可以获取任意时间间隔。
总结
以上,即是我在使用 AQL 过程中一点小小的经验。虽然 AQL 槽点满满,但总的来说对于大数据的分析的确提供了不少便利,尤其是通过 Pulse 我们可以实现比 DashBoard 优美并且灵活的可视化 DashBoard。建议在使用过程中可以多看看官方的文档,以上很多解决方案在官方文档也都有提及。
可以扫描二维码或者搜索 mad_coder 关注微信公众号,点击阅读原文可以获取链接版原文。
Qradar SIEM--查询利器 AQL的更多相关文章
- Spotlight--你不得不用的Mac查询利器
世界上有两种Mac用户:一种是经常使用Spotlight的,另一种是忽略Spotlight的.如果你是第二种用户,那么你需要改变.Mac所有方面的使用场景,都会随着Spotlight而变得更快.你只需 ...
- 比hive快10倍的大数据查询利器presto部署
目前最流行的大数据查询引擎非hive莫属,它是基于MR的类SQL查询工具,会把输入的查询SQL解释为MapReduce,能极大的降低使用大数据查询的门槛, 让一般的业务人员也可以直接对大数据进行查询. ...
- SQL从零到迅速精通【查询利器】
1.[列选取]从fruits表中获取f_name和f_price两列,T-SQL语句如下. SELECT f_name,f_price FROM fruits; 2.[去重]查询fruits表中s_i ...
- 几家SIEM
HP Arcsight Imperva is a HP Business Partner. HP is the world's largest IT company, providing infras ...
- SSD报告 - QRadar远程命令执行
SSD报告 - QRadar远程命令执行 漏洞摘要 QRadar中的多个漏洞允许远程未经身份验证的攻击者使产品执行任意命令.每个漏洞本身并不像链接那么强大 - 这允许用户从未经身份验证的访问更改为经过 ...
- Aerospike系列:4:简单的增删改查aql
[root@localhost bin]# aql --help Usage: aql OPTIONS OPTIONS -h <host> The hostname to the serv ...
- Elasticsearch系列---搜索执行过程及scroll游标查询
概要 本篇主要介绍一下分布式环境中搜索的两阶段执行过程. 两阶段搜索过程 回顾我们之前的CRUD操作,因为只对单个文档进行处理,文档的唯一性很容易确定,并且很容易知道是此文档在哪个node,哪个sha ...
- Magic Quadrant for Security Information and Event Management
https://www.gartner.com/doc/reprints?id=1-4LC8PAW&ct=171130&st=sb Summary Security and risk ...
- presto调研和json解析函数的使用
presto简单介绍 presto是一个分布式的sql交互式查询引擎.可以达到hive查询效率的5到10倍.支持多种数据源的秒级查询. presto是基于内存查询的,这也是它为什么查询快的原因.除了基 ...
随机推荐
- floor函数用法
floor(x),也写做Floor(x),其功能是“向下取整”,或者说“向下舍入”,即取不大于x的最大整数(与“四舍五入”不同,下取整是直接取按照数轴上最接近要求值的左边值,即不大于要求值的最大的那个 ...
- antd form表单一行多个组件并对其校验
一行一个标签对应多个输入组件,这个需求很常见但在官方例子没看到合适的,因为官方建议: 注意:一个 Form.Item 建议只放一个被 getFieldDecorator 装饰过的 child,当有多个 ...
- POJO / Javabean / Entity Bean
POJO 和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Pure Old Java Object,中文可以翻译成:普通 ...
- POST上传多张图片配合Django接受多张图片
POST上传多张图片配合Django接受多张图片 本地:POST发送文件,使用的是files参数,将本地的图片以二进制的方式发送给服务器. 在这里 files=[("img",op ...
- React Native商城项目实战07 - 设置“More”界面导航条
1.More/More.js /** * 更多 */ import React, { Component } from 'react'; import { AppRegistry, StyleShee ...
- 电脑出现了一块tap window adapter v9 网卡 以及虚拟机桥接模式无法通信原因
计算机与外界局域网的连接是通过主机箱内插入一块网络接口板(或者是在笔记本电脑中插入一块PCMCIA卡).网络接口板又称为通信适配器或网络适配器(network adapter)或网络接口卡NIC(Ne ...
- 使用virt-manager创建无盘工作站(基于nfs文件系统)
首先需要做些准备工作: 1.安装xming及virt-manager, 安装过程网上很多,就不一一叙述了.安装完成后,使用putty登陆服务器,需要配置如下: connection -> SSH ...
- php5.4编译安装--nginx
1.下载源码包 wget 网址/源码包2.解压源码包 tar -zxvf 源码包3.创建一个安装目录 mkdir /usr/local/php4.进入解压后的目录中,初始化安装环境./configur ...
- What is the difference between a URI, a URL and a URN?
资料: URI: URL: URN:
- 乱入Spring+Mybatis
新进入一个项目,写了一个功能,就是提供一个服务(service),该服务能够查询和插入.完成后,想要用junit测试一下:发现到了DAO底层注入的SqlSession字段为空:才意识到这是一个Spri ...