一、产品简述
WatchAD2.0是360信息安全中心开发的一款针对域安全的日志分析与监控系统,它可以收集所有域控上的事件日志、网络流量,通过特征匹配、协议分析、历史行为、敏感操作和蜜罐账户等方式来检测各种已知与未知威胁,功能覆盖了大部分目前的常见内网域渗透手法。相较于WatchAD1.0,有以下提升:
更丰富的检测能力:新增了账户可疑活动监测场景,加强了权限提升、权限维持等场景检测能力,涵盖包括异常账户/活动、Zerologon提权、SPN劫持、影子票证等更多检测面。
基于Golang重构分析引擎:将开发语言从Python重构为Golang,利用其更高效的并发能力,提高对海量日志及流量等数据处理效率,确保告警检出及时有效。
整合简化架构:Web平台和检测引擎整合,简化部署过程,用户只依赖消息队列和存储组件即可完成部署。在提高系统的性能和稳定性的同时,也使得系统更加高效和易用,为用户提供更好的体验。
二、总体架构
WatchAD2.0分为四部分, 日志收集Agent、规则检测及日志分析引擎、缓存数据库、Web控制端,架构如下图所示。
其中流量检测链路暂不开源,可通过抓取域控流量,上传至360宙合SaaS PCAP分析平台进行威胁检测:https://zhouhe.360.cn/
三、目前支持的具体检测功能
异常活动检测:证书服务活动、创建机器账户事件活动、创建类似DC的用户账户、重置用户账户密码活动、TGT 票据相关活动;
凭证盗取:AS-REP 异常的流量请求、Kerberoasting 攻击行为、本地Dump Ntds文件利用;
横向移动:目录服务复制、异常的显示凭据登录行为、远程命令执行;
权限提升:ACL 异常修改行为、滥用证书服务权限提升、烂土豆提权、MS17-010、新增GPO监控、NTLM 中继检测、基于资源的约束委派、SPN 劫持、攻击打印服务、ZeroLogon 提权攻击;
权限维持:DCShadow 权限维持、DSRM 密码重置、GPO 权限委派、SamAccountName欺骗攻击、影子票证、Sid History 权限维持、万能密钥、可用于持久化的异常权限;
防御绕过:系统日志清空、关闭系统日志服务;
自定义检测规则:在{project_home}/detect_plugins/event_log/目录下可以修改或添加规则,需重新编译以使其生效。
四、平台展示
五、部署&运行指南
1、安装基础环境
#关闭防火墙
systemctl stop firewalld ebtables iptables
systemctl disable firewalld ebtables iptables
#关闭selinux
sed -i '/SELINUX=/cSELINUX=disabled' /etc/selinux/config
setenforce 0
#安装yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
#安装dokcer
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce docker-ce-cli docker-compose containerd.io docker-buildx-plugin docker-compose-plugin
yum -y install vim wget git yum-utils
2、克隆代码
git clone https://github.com/Qihoo360/WatchAD2.0.git
3、在项目根目录下新建
.env
文件,需修改kafka地址、域控连接信息:[root@WatchAD2 ~]# cat /root/WatchAD2.0/.env
#KAFKA配置,需修改为当前服务器的IP
KAFKAHOST=10.0.200.10
KAFKAADV=PLAINTEXT://10.0.200.10:9092
BROKER=10.0.200.10:9092
#Mongo配置,默认账号密码
MONGOUSER=IATP
MONGOPWD=cjSVMGxxxxxxxTwsR8
#域控配置,其中DCUSER为域内用户的DN
DCNAME="test.com"
DCSERVER=10.0.200.111
DCUSER="CN=WatchAD,CN=Users,DC=test,DC=com"
DCPWD="8gJuxxxxxxx"
#WEB配置,可配置为域内任意用户,或DCUSER的CN
WEBUSER="WatchAD"
注意:如果您的域控未启用ssl,需将entrypoint.sh文件中的LDAP命令去掉–ssl参数
4、启动WatchAD2.0相关依赖组件、检测引擎及WEB服务。
cd /soft/WatchAD2.0/
docker-compose build
docker-compose up -d
访问服务器80端口进入web后台,输入WEBUSER对应的域用户账号密码即可登录成功。
注意:重启docker前,需删除kafka配置文件避免配置冲突:./data/kafka/logs/meta.properties
5、告警外发:
可在管理后台-系统设置-数据源输出配置中,按照如下格式配置告警外发(当前仅支持kafka):
{
"Address": "10.0.200.10:9092",
"Topic": "iatp_alarm"
}
六、客户端部署
1、开启审核
我们的分析基础是所有域控的所有事件日志,所以首先需要打开域控上的安全审核选项,让域控记录所有类型的事件日志。这里以 windows server 2016为例,在 本地安全策略 -> 安全设置 -> 本地策略 -> 审核策略,打开所有审核选项:
2、安装winlogbeat
我们的分析基础是所有域控的所有事件日志,建议在所有域控服务器上安装winlogbeat,否则会产生误报和漏报。 前往官网下载对应版本的winlogbeat,建议版本为7.6.1,其它版本的字段可能有变动,存在不兼容的可能性。
1. 下载地址:https://www.elastic.co/cn/downloads/beats/winlogbeat
2. 解压winlgbeat 到Program Files下
3. 参照如下示例修改配置文件winlogbeat.yml,假设kafka的IP为10.10.10.10,此时配置文件为:
winlogbeat.event_logs:
- name: Security
ignore_older: 1h
output.kafka:
hosts: ["10.0.200.10:9092"]
topic: winlogbeat
4. 安装启动
PS C:\Users\Administrator> cd 'C:\Program Files\Winlogbeat'
PS C:\Program Files\Winlogbeat> .\install-service-winlogbeat.ps1
Security warning
Run only scripts that you trust. While scripts from the internet can be useful,
this script can potentially harm your computer. If you trust this script, use
the Unblock-File cmdlet to allow the script to run without this warning message.
Do you want to run C:\Program Files\Winlogbeat\install-service-winlogbeat.ps1?
[D] Do not run [R] Run once [S] Suspend [?] Help (default is "D"): R
Status Name DisplayName
------ ---- -----------
Stopped winlogbeat winlogbeat
等待日志上传,显示实时威胁
© 版权声明
本站所有内容(包括但不限于文字、图片、视频等)均受到版权法保护,归作者所有,未经授权不得转载、复制或用于其他任何商业目的。 转载请注明出处,并保留原文链接。对于未经授权的使用,我们将保留追究法律责任的权利。
THE END
暂无评论内容