背景知识
防火墙与注册表的关系
以Windows Server 2008 r2为例,防火墙在注册表中的位置是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy
家用网络防火墙
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile
公用网络防火墙
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile
Wazuh的功能
完整性监控
——基于hash值监测指定的文件、文件夹、注册表的是否有改动
命令监控
——agent把执行命令的输出结果当作日志与规则进行匹配
于是大脑里面构造了两种思路
1、监测注册表的值的完整性,细写原有的完整性告警。
2、用reg命令读取值,自定义告警规则中用
来比对两次命令执行的结果是否一致。
编写告警规则
方法一,syscheck
修改ossec.conf,新增一个syscheck
节点。
no
30
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile
另外要忽略掉一些注册表项目的监测,在原有的项上接着添加。(为啥要去掉?因为老是误报)
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess
新增告警规则
新增一条rule,满足规则594时触发(规则594是Registry Integrity Checksum Changed
)
594
StandardProfile
Windows Standard Firewall Status Changed
firewall
594
PublicProfile
Windows Public Firewall Status Changed
firewall
594
FirewallRules
Windows Firewall Rule Status Changed
firewall
用./bin/ossec-logtest
验证配置文件是否正确,然后重启wazuh-manager
服务
在Windows 高级防火墙随便添加个规则后,大约1分钟后看到了告警。后面不会再继续告警。可以猜测是与原始的hash值与最后一次改动的hash值进行比对。
方法二,命令监测
有full_command
和command
,差别在于前者是获取完整输出,后者是只取单行输出。
每30秒通过reg命令查看注册表指定项的值,并与上一次查询的结果对比,如果有变化则会出发告警。重新开启防火墙的时候因为输出结果与上次不一致,导致告警。
修改客户端上的ossec.conf
full_command
windows-firewall-check
reg query hklm\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile /v EnableFirewall
30
full_command
windows-firewall-check
reg query hklm\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile /v EnableFirewall
30
full_command
windows-firewall-check
reg query hklm\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules
30
添加告警规则
530
StandardProfile
Windows Standard Firewall Status Changed
firewall
530
PublicProfile
Windows Public Firewall Status Changed
firewall
530
FirewallRules
Windows Firewall Rule Changed
firewall
启用禁用windows防火墙,触发告警。
但是事情到这里并没有结束,有些问题是只有实操的时候才发现的。那就是因为防火墙规则太多,命令输出的结果太长以至于被截断,导致没有监测到不同的部分,于是就没有告警。
最后结合了二者,用命令行监控防火墙运行状态,用注册表监测防火墙规则变动。
530
StandardProfile
Windows Standard Firewall Status Changed
530
PublicProfile
Windows Public Firewall Status Changed
594
FirewallRules
Windows Firewall Rule Changed
方法三,SYSMON
默认可以检测防火墙的状态,手写新增防火墙规则监测
在事件查看器中可以看到详细的添加项Details
Registry value set:
RuleName: Technique=Disabling Security Tools,Tactic=Defense Evasion,MitreRef=1089
EventType: SetValue
UtcTime: 2019-02-01 09:17:59.987
ProcessGuid: {0eedf899-f528-5c4f-0000-0010886b0100}
ProcessId: 336
Image: C:\Windows\system32\svchost.exe
TargetObject: HKLM\System\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\{D9F452D0-481E-485D-BD04-E2AC0AA8C1CE}
Details: v2.10|Action=Allow|Active=TRUE|Dir=In|Protocol=6|LPort=445|Name=test|Desc=test|
邮件告警基本设置
在后面用osquery检测反弹shell测试邮件告警时,认识到默认的邮件告警并不是一触发规则就立刻告警,只是标记为需要通过邮件发送的告警。
官方关于邮件设置的文档
在管理端安装yum install postfix
直接发送告警邮件。
配置邮件别名
vim /etc/aliases
# Person who should get root's mail
root: [email protected]
在root后面添加互联网邮件地址,然后执行newaliases
刷新数据库,启动postfix
服务。
修改管理端ossec.conf的global节点。
yes
yes
no
no
yes
localhost
ossecm@root
[email protected]
12
131072
alert节点的说明
alert
节点覆盖范围是全局,告警等级不低于指定值才会发信,这里设置告警等级大于等于10的才能发信。
3
10
邮件告警详细设置
设置
,基于告警规则id发信,do_not_delay
是立即发送而不是放入发信队列里面。
[email protected]
100002, 100003, 100004
基于事件源发送:
,允许使用任何单个代理名称,主机名,IP地址或日志文件
基于告警等级:
,如果低于10 就不会发送。
基于规则组:
可以同时设置多种条件的邮件告警
email_alerts节点的解释
如果有的告警等级低于10,但是又想要强制发送邮件的话,设置
500
alert_by_email
Ossec started
Ossec server started.
options可选值:
- alert_by_email:始终通过电子邮件提醒。
- no_email_alert:永远不会通过电子邮件提醒
- no_log:不记录此警报。
最后收到的告警邮件是这样的
Wazuh Notification.
2018 Aug 29 16:06:02
Received From: (192.168.45.13) 192.168.45.13->syscheck-registry
Rule: 100004 fired (level 8) -> "Windows Firewall Rule Changed"
Portion of the log(s):
Integrity checksum changed for: 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules'
Old md5sum was: '8524a1e2417fbaa8025bb060e9e57501'
New md5sum is : '98b4ecd02fe9db4f7c880e1ad1a884e4'
Old sha1sum was: '54d797c0c4c5e7b295dd18eada2080c86b0dd5c3'
New sha1sum is : 'e654d5f2b55c778499ecbe7180813a696e44718f'
--END OF NOTIFICATION
Wazuh Notification.
2018 Aug 29 16:05:19
Received From: (192.168.45.13) 192.168.45.13->windows-firewall-check
Rule: 100002 fired (level 10) -> "Windows Standard Firewall Status Changed"
Portion of the log(s):
ossec: output: 'windows-firewall-check':
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile
EnableFirewall REG_DWORD 0x1
--END OF NOTIFICATION
后续要是换成SMTP发信了再更新
下一篇,Wazuh结合audit监测攻击行为