强化域安全:Suricata的主动防御策略
在深入探索域加固策略的过程中,我们面临了一个棘手的挑战:dcsync攻击。传统的防火墙端口阻断方法并未能提供令人满意的防护。然而,一个意外的发现为我们带来了希望——Suricata的内联入侵防御系统(IPS)功能。经过一系列测试,我们惊喜地发现Suricata不仅能够完美应对dcsync攻击,还能有效防御其他高级网络威胁,即便是那些传统防火墙难以招架的情形。以下是我们如何利用Suricata构建一个更为坚固的网络安全防线的详细过程。
一、Windows安装Suricata及Npcap
Windows 版Suricata 要实现IPS功能需要安装WinDivert ,这边直接用的是Suricata已经编译好二级制安装包,这个安装包已经将WinDivert集成进去了,下载地址:
https://www.openinfosecfoundation.org/download/windows/Suricata-6.0.0-beta1-1-64bit.msi
在安装Windows Suricata之前需要先安装WinPcap包,不过这个项目目前已经停止维护了,可以用npcap来替代,下载地址:
https://npcap.com/dist/npcap-1.79.exe
1.安装Npcap
安装下载后的Npcap安装包,如果电脑带有无线网卡,记得勾选“support raw 802.11 traffic(and monitor mode) for wireless adapters”。需要注意的是,如果电脑已经安装过winpcap软件,在安装Npcap时会弹窗提示卸载Winpcap,此时需要关闭wireshark或是其它相关的软件。
2.安装Suricata
3.使用Suricata
3.1 注册Suricata服务
安装成功后,启动方式和Linux的一样。在Windows环境下启动Suricata必须使用管理员权限,否则会报“[ERRCODE: SC_ERR_SVC(162)] - Can't open SCM: 5”。
# 172.18.66.3这个IP地址是我Windows域控的IP地址
# --service-install 将启动命令注册为服务,方便后面的自启动
# net start suricata 启动suricata
# net stop suricata 停止suricata
# sc delete suricata 删除suricata
suricata.exe -c suricata.yaml -s signatures.rules -i 172.18.66.3 --service-install
3.2 创建域控规则文件
配置Suricata规则文件为自定义规则文件,因为场景是使用Suricata作为IPS加固域控服务器,所以规则只针对于域控。将自定义myself.rules放在规则文件夹中:
3.3 启动Suricata服务
使用net start suricata 命令启动suricata服务:
二、实际使用——解决dcsync攻击
在探索dcsync攻击的检测方法时,我们首先需要了解其背后的技术原理。Dcsync攻击利用了Windows的DRS(目录复制服务),该服务通过MS-DRSR(目录复制远程协议),一个基于dcerpc的协议,进行域控制器之间的目录数据复制。这个协议可以通过其UUID e3514235-4b06-11d1-ab04-00c04fc2dcd2 进行识别。
通常,MS-DRSR协议的流量仅在域控制器之间出现,用于复制和管理活动目录数据。因此,检测dcsync攻击的关键在于监控网络流量,识别并排除域控制器之间的正常MS-DRSR通信后,任何异常的MS-DRSR流量都可能指示着潜在的dcsync攻击行为。通过这种方法,我们可以更准确地识别并防御这类攻击。
Suricata 规则如下:
alert dcerpc any any -> any any (msg: "DCShadow"; flow: established; dce_iface: e3514235-4b06-11d1-ab04-00c04fc2dcd2; dce_opnum: 5; sid: 7000776; rev: 1;)
在实际情况下需要在Suricata的yml文件中配置域控服务器变量,然后在规则中进行排除,这里为了演示方便,直接源目的都设置为any。
在mimikatz中执行以下命令:
lsadump::dcsync /domain:contoso.com /user:administrator /csv /all
Suricata 告警:
规则测试没有问题,现在需要将规则由alert模式转变为drop模式
drop tcp any any -> any any (msg: "DCShadow"; dce_iface: e3514235-4b06-11d1-ab04-00c04fc2dcd2; sid: 7000776; rev: 1;)
现在开启Suricata IPS/inline 模式,进行阻断,启动命令为:
suricata -c suricata.yaml -s signatures.rules --windivert true
之后在mimikatz中使用相同命令,发现dcsync已经失败:
告警文件中也出现相应告警:
三、总结
面对新的域控制器高危漏洞,如果补丁更新尚未及时发布,我们可以采取一种有效的临时防护措施。通过配置Suricata的高级检测规则,我们可以对可疑的网络流量进行实时监控和阻断,从而为域控制器提供即时保护。然而,这种策略的成功关键在于规则的精确性,确保它们能够准确识别并拦截潜在的恶意流量,同时避免对正常通信造成干扰。因此,我们必须精心设计和测试这些规则,以确保它们在提供必要的安全防护的同时,也维护网络环境的稳定性和效率。