Wazuh完整性监测和命令监测注册表并邮件告警

背景知识

  1. 防火墙与注册表的关系
    以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

  2. 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值进行比对。

Wazuh完整性监测和命令监测注册表并邮件告警_第1张图片
防火墙规则告警截图

方法二,命令监测

full_commandcommand,差别在于前者是获取完整输出,后者是只取单行输出。
每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防火墙,触发告警。

Wazuh完整性监测和命令监测注册表并邮件告警_第2张图片

但是事情到这里并没有结束,有些问题是只有实操的时候才发现的。那就是因为防火墙规则太多,命令输出的结果太长以至于被截断导致没有监测到不同的部分,于是就没有告警

最后结合了二者,用命令行监控防火墙运行状态,用注册表监测防火墙规则变动。



  530
  StandardProfile
  
  Windows Standard Firewall Status Changed


  530
  PublicProfile
  
  Windows Public Firewall Status Changed


  594
  FirewallRules
  Windows Firewall Rule Changed


方法三,SYSMON

默认可以检测防火墙的状态,手写新增防火墙规则监测
HKLM\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules
在事件查看器中可以看到详细的添加项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
    
  

基于事件源发送:server1,允许使用任何单个代理名称,主机名,IP地址或日志文件
基于告警等级:4,如果低于10 就不会发送。
基于规则组:pci_dss_10.6.1
可以同时设置多种条件的邮件告警

email_alerts节点的解释

如果有的告警等级低于10,但是又想要强制发送邮件的话,设置alert_by_email


  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监测攻击行为

你可能感兴趣的:(Wazuh完整性监测和命令监测注册表并邮件告警)