入侵检测之流量分析–SURICATA应用

前言

本想写纯技术文档,但近期私信我的几个读者应该都是刚开始接触网络安全,所以我觉得我还是应该记录的更详细一点,不能说完全记录透彻,但应该能指出一个知识大概是哪一块领域的,方便百度。

此文章是我记录流量分析的开篇,所以文字叙述比较多。之后会结合个人经验详细记录检测规则集说明、检测规则的告警分类思路等,并且我会在公网搭建一个离线数据包分析平台供大家使用,兼容市面上的主流规则集和我自己编写的部分规则(其中包含此前分析的一些APT组织样本提取的特征)。


对我个人而言,做病毒样本分析实际上是受流量分析的启发。因为加密通讯流量的普及,单纯的流量分析有着很大的局限性。比如在窃密事件中,受害者端木马程序对传输的窃密文件先加密在传输,流量会话中只会捕获到一连串无意义的二进制流,这时候可以获取样本的话,结合木马分析,我可以去逆向它的加密和通讯逻辑、提取到密钥及外联地址等。

除了可以完成解密失窃内容做危害评估以外,也可能获取以下一些内容,它们都可以作为此木马的通讯特征,在其他流量中被检测。

  • 外链地址(域名、IP等)。
  • 硬编码在木马样本中的字符被传输,它们可能(无随机数参与加密)在流量中的密文是固定的。
  • 行为特征,使用的加密或编码算法使得通讯流量具有一定的长度或者ascll码组成特征。(以常见工具举例,冰蝎3.*上下行流量分别为BASE64和二进制乱码,冰蝎4.0中使用默认加密算法使得响应载荷长度是256整数倍;前文中写的NSA木马,它的指令下发载荷密文长度在通讯流量中是固定的)

这些通讯特征就可以被编写为检测规则,被入侵检测引擎在通讯流量中被匹配,于是乎介绍到这样一个强大的工具SURICATA。

背景

SURICATA是一个开源的网络入侵检测系统(IDS)入侵防御系统(IPS),目前最新的版本为了7.02版本。
它可以捕获通讯流量并对其做协议解析,识别或防御通讯流量中可疑或恶意的行为。国内大部分厂商基于流量的IDS的数据包捕获、协议解析、检测引擎等关键模块都是在此基础上做修改和扩展优化的。

一个示例

首先看一个应用示例,以下是一个针对OA服务的漏洞扫描工具,以通达OA为例,捕获其通讯流量,保存数据包。

入侵检测之流量分析--SURICATA应用

捕获部分通讯流量如下。

入侵检测之流量分析--SURICATA应用

调用suricata进行分析。

入侵检测之流量分析--SURICATA应用

 suricata做规则内容和配置文件自检,然后开始、结束扫描。

入侵检测之流量分析--SURICATA应用

 查看输出的日志信息。

入侵检测之流量分析--SURICATA应用

查看fast.log输出的告警信息,其中通达OA关联的检测规则是我编写的。

入侵检测之流量分析--SURICATA应用

这样就在流量中发现了恶意的攻击行为,检测引擎对这些可以选择丢弃告警输出,这样就成了实现了检测防御两个方面的功能。

安装

安装suricata 7.02走官方文档的流程方法会有一些棘手的依赖问题,尤其是在centos8+ 上,该版本用了一些很新的库(例如dpdk2.2),常规的下载源中还没有收录,只有自己源码编译安装。

如果遇到难解决的问题你可以私信我,我将编译好的SURICATA二进制文件和其所需依赖打包给你。

入侵检测之流量分析--SURICATA应用

你可以在文件“/etc/ld.so.conf”中手动添加动态链接库路径,将缺失库放入路径,SURICATA就可以执行了。

入侵检测之流量分析--SURICATA应用

基本使用

做安全研究主要是使用离线数据包分析模块,SURICATA提供了接口加载配置文件、加载待检测数据包、输出告警信息。

suricata -c ../suricata.yaml -r ../*.pcapng -l ../output/ 
suricata.yaml 检测引擎配置文件
*.pcapng      待检测数据包
output        告警信息等输出文件

修改配置文件suricata.yaml

按官方的分法,配置文件主要分为四个模块,规则文件的配置独立于于这四个模块以外。

  • 模块一,定义网络信息。例如本地资产,熟知端口等,可以在检测规则中使用这些定义。

入侵检测之流量分析--SURICATA应用

  • 模块二,选择启用哪些输出模块,用于记录 Suricata的日志。例如轻量级告警日志“fast.log”,EVE JSON 格式的日志“eve-log”等,也可以解析和输出部分应用层协议日志,例如http访问日志。

入侵检测之流量分析--SURICATA应用

  • 模块三,配置 Suricata的捕获设置指定使用的捕获引擎和捕获的网络接口,还有一些捕获策略,(做离线分析的话,这个模块用的不多,主要是研发、运维等人员用)。

入侵检测之流量分析--SURICATA应用

  • 模块四,配置应用层协议的设置,包括应用层协议的解析和检测。(用默认的基本可以满足) 。

入侵检测之流量分析--SURICATA应用

  • 规则模块配置,也是最重要的配置。在路径“default-rule-path”存放检测规则,在“rule-files”下添加文件名使得规则生效,“classification-file”是对应规则字段classtype的规则分类信息。

入侵检测之流量分析--SURICATA应用

  • 检测规则还可以用信誉度检测(其实就是黑名单),目标IP低于信誉度阈值,即可报警。也可以编写lua脚本去做更复杂更灵活的恶意流量检测(例如cobalt strike的部分通讯流量) 。

入侵检测之流量分析--SURICATA应用

待检测数据包

在日常渗透测试当中捕获,扫描探测、漏洞利用、远程控制、内网横向、等各个攻击链阶段均可。

介绍一个获取恶意通讯数据包的网站,一抓一大把。

https://www.netresec.com

https://www.malware-traffic-analysis.net(时常关闭) 

入侵检测之流量分析--SURICATA应用

检测规则

开源渠道获取即可,其中包括一些商用的,关于规则后续将写一篇,详细说明各个规则库情况,现在仅做列举。在我后续搭建的平台将兼容以下所有规则。

1.
规则集名称:Proofpoint -- Emerging Threats Open Ruleset [et/open]
获取:https://rules.emergingthreats.net/open/
2.
规则集名称:Proofpoint -- Emerging Threats Pro Ruleset [et/pro]
获取:https://rules.emergingthreats.net/PRO_download_instructions.html
3.
规则集名称:OISF -- Suricata Traffic ID ruleset [oisf/trafficid]
获取:https://openinfosecfoundation.org/rules/trafficid/trafficid.rules
4.
规则集名称:Positive Technologies -- Positive Technologies Attack Detection Team ruleset [ptresearch/attackdetection]
获取:https://raw.githubusercontent.com/ptresearch/AttackDetection/master/pt.rules.tar.gz
5.
规则集名称:Secureworks -- Secureworks suricata-enhanced ruleset [scwx/enhanced]
获取:https://www.secureworks.com/contact/
6.
规则集名称:Secureworks -- Secureworks suricata-malware ruleset
获取:https://www.secureworks.com/contact/
7.
规则集名称:Secureworks -- Secureworks suricata-security ruleset [scwx/security]
获取:https://www.secureworks.com/contact/
8.
规则集名称:Abuse.ch -- Abuse.ch SSL Blacklist
获取:https://sslbl.abuse.ch/blacklist/sslblacklist.rules
9.
规则集名称:Abuse.ch -- Abuse.ch Suricata JA3 Fingerprint Ruleset [sslbl/ja3-fingerprints]
获取:https://sslbl.abuse.ch/blacklist/ja3_fingerprints.rules
10.
规则集名称:Etnetera a.s. -- Etnetera aggressive IP blacklist
获取:https://security.etnetera.cz/feeds/etn_aggressive.rules
11.
规则集名称:tgreen -- Threat hunting rules [tgreen/hunting]
获取:https://raw.githubusercontent.com/travisbgreen/hunting-rules/master/hunting.rules
12.
规则集名称:malsilo -- Commodity malware rules [malsilo/win-malware]
获取:
https://malsilo.gitlab.io/feeds/dumps/malsilo.rules.tar.gz
13.
规则集名称:Stamus Networks -- Lateral movement rules [stamus/lateral]
获取:
https://ti.stamus-networks.io/open/stamus-lateral-rules.tar.gz

将获取到的规则集,置于规则文件置于”default-rule-path“路径中,再把文件名写入在“rule-files”即可生效。

输出

运行命令即可,举例如下

suricata -c /home/suricata/config/suricata.yaml -r /home/work/test-data/* -l /home/suricata/config/log -k none

如果你不修改输出的相关配置,输出将会有如下四个。

入侵检测之流量分析--SURICATA应用

  • suricata.log ,包含 Suricata 运行时的日志信息,如启动、关闭、规则加载等,用于故障排除和监视。
  • stats.log,包含 Suricata 的统计信息,如流量统计、规则匹配统计等,,用于性能调优和网络活动分析。
  • fast.log,就是告警输出日志了,通常看这个就可以。
  • eve.json,详细的事件记录,以 JSON 格式呈现,包括有关规则匹配事件的详细信息,包括协议解析、源和目标地址、端口、负载数据等,用于深入分析和检测。这也是各家公司将suricata产品化后主要数据来源。


本篇完事。

原文始发于微信公众号(帅仔回忆录):入侵检测之流量分析–SURICATA应用

版权声明:admin 发表于 2023年12月7日 下午3:53。
转载请注明:入侵检测之流量分析–SURICATA应用 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...