热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

QradarSIEM:查询利器AQL

对于SIEM平台来说,好用的查询方式非常重要。之前有体验基于ELK搭建的平台,在kibana上面是可以通过一些filter来做一些过滤并且是支持lucene的语法,包括一些简单的逻辑查询以及wildquery等等。但是的确是在做一些汇聚之类时不是很方便,一般需要通过json来创建查询语句。后来好像也有转SQL之类的插件,但我也没有使用过,总的来说体验比较一般。Qradar是一款比较成熟的商业SIE

对于 SIEM 平台来说,好用的查询方式非常重要。之前有体验基于 ELK 搭建的平台,在 kibana 上面是可以通过一些 filter 来做一些过滤并且是支持 lucene 的语法,包括一些简单的逻辑查询以及 wildquery 等等。但是的确是在做一些汇聚之类时不是很方便,一般需要通过 json 来创建查询语句。后来好像也有转 SQL 之类的插件,但我也没有使用过,总的来说体验比较一般。

Qradar

Qradar 是一款比较成熟的商业 SIEM 平台(尽管他们的 BUG 一大堆,但架不住别的更差啊),基本上也是属于业界 TOP 5。商业产品的好处就是不用自己太折腾,搞搞就可以用,缺点就是贵。AQL(Ariel Query Language)是 Qradar 中的一种查询语言,与普通的 SQL 的语句类似,但是阉割了一些高级功能的基础上增加了一些基本功能。以下是 AQL 的基本流程:

Qradar SIEM:查询利器 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:

场景案例

根据我的理解,Qradar 所有的查询归根到底应该都是通过 AQL 来实现的,但是官方并没有提供将普通的查询转换成 AQL 语句的工具。之前我有一些场景想通过 AQL 来实现,但是 IBM 的人说无法实现(此处应有吐槽),后来还是得靠自己来实现。

特定 IP 特定事件发生的时间大于特定的值

可能听起来有那么一点点绕,但这个场景还是蛮有必要的。因为经常有一些安全事件很长时间都没有及时处置,那我们如何将这些事件捞出来呢。即该事件(sourceip 指定)的第一次出现的时间和最近出现一次的时间的时间间隔大于特定的指,那么我们就可以通过这样的语句来把这样的事件找出来了。

查询当前月份的事件

IBM 与日期相关的函数主要就是4个,即 LAST,START,STOP,NOW 。日期实现的逻辑太单一了,你只能指定具体的起始时间以及终止时间或者是 LAST1DAYS 这种。但是有一个非常普遍的场景就是我需要知道当前月份的情况,这就无法通过这几个关键词直接来实现,因为 CurrentMonthIS NOT LAST30DAYS .那么我们需要介绍一个函数 DATEFORMAT ,通过这个函数我们可以将时间转化为字符串类型,结合 NOW 以及 START,STOP 函数,既可以实现。

Qradar SIEM:查询利器 AQL

那么我么就可以写出函数:

将这个时间作为起始时间,那么我们就可以获取当前月的事件了。其实,按照这种思路,理论上你可以获取任意时间间隔。

总结

以上,即是我在使用 AQL 过程中一点小小的经验。虽然 AQL 槽点满满,但总的来说对于大数据的分析的确提供了不少便利,尤其是通过 Pulse 我们可以实现比 DashBoard 优美并且灵活的可视化 DashBoard。建议在使用过程中可以多看看官方的文档,以上很多解决方案在官方文档也都有提及。


以上所述就是小编给大家介绍的《Qradar SIEM:查询利器 AQL》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 我们 的支持!


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
author-avatar
mobiledu2502869077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有