前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WatchAD攻防实战

WatchAD攻防实战

作者头像
tinyfisher
发布2021-10-20 11:30:11
2.4K1
发布2021-10-20 11:30:11
举报
文章被收录于专栏:湛卢工作室湛卢工作室

WatchAD是0KEE Team研发的开源域安全入侵感知系统,WatchAD收集所有域控上的事件日志和kerberos流量,通过特征匹配、Kerberos协议分析、历史行为、敏感操作和蜜罐账户等方式来检测各种已知与未知威胁,功能覆盖了大部分目前的常见内网域渗透手法。目前支持的具体检测功能包括:

系统采用ES、Logstash、redis、monogodb、RabbitMQ等开源组件,整体架构如下:

WatchAD包括Server端、WatchAD agent和前Web前端,同时需要准备域环境,在域控中安装winlogbeat实现域控日志发送至WatchAD Server端进行检测,安装部署比较复杂,下面通过实战进行详细介绍。本次实战环境如图所示:

代码语言:javascript
复制
WatchAD Server:Centos7,192.168.159.130
WatchAD Web :kali,192.168.159.131
AD域控服务器:Windows server 2008,域名:Motoo.nc,192.168.159.149
AD域内服务器:Windows server 2012,192.168.159.154
攻击机:kali,192.168.159.131

0x01 WatchAD Server端部署

WatchAD Server端操作系统选择CentOS7(笔者之前选择kali、ubuntu等Linux系统,踩坑无数,不建议使用),如果是虚拟机部署测试,由于需要在CentOS7中部署ES、Logstash、redis、mongodb、docker等软件,需要比较高的性能,建议虚拟机内存2G以上,CPU双核以上,否则在后续运行会出现内存报错等问题。

1、更新centos7系统(前提已添加yum源,国内建议用阿里云源)

代码语言:javascript
复制
# yum -y update

2、安装git命令工具

代码语言:javascript
复制
# yum install git –y

3、由于该项目需要python3环境运行,需要安装python3以及pip3

代码语言:javascript
复制
# yum install -y python36 
#yum -y install epel-release  #添加源
#yum install -y python36-setuptools  #安装python tools插件

4、从github下载watachAD服务器端源码

代码语言:javascript
复制
git clone https://github.com/0Kee-Team/WatchAD.git

5、进入WatchAD目录,安装项目所需要的python包

代码语言:javascript
复制
# pip3 install -r requirements.txt  

6、安装安装docker

代码语言:javascript
复制
# yum -y install docker     #使用yum安装dokcer
systemctl start docker.service  #启动dokcer
systemctl enable docker.service  #设置为开机自启动

7、安装docker-compose

代码语言:javascript
复制
# curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose       # 下载docker-compose
#chmod +x /usr/local/bin/docker-compose    # 添加可执行权限 

8、docker本地单机搭建watchAD测试环境

进入WatchAD目录中,启动基础环境

代码语言:javascript
复制
#docker-compose up   #将在本地启动 rabbitmq、logstash、elasticsearch、redis、mongo服务

注意,在实际测试环境中,docker-compose部署logstash组件时,经常报错,笔者将logstash进行实地部署,不采用docker部署方式,需要将WatchAD server端的docker-compose.yaml配置文件中的相关配置去除:

9、安装logstash:

自ELK官网下载、安装RPM包

代码语言:javascript
复制
# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.1.rpm
# rpm -ivh logstash-6.4.1.rpm

编辑/etc/logstash/logstash.conf,使其内容如下(配置文件内容复制自watchAD代码中的settings/logstash/logstash.conf):

启动logstash:

代码语言:javascript
复制
# cd /usr/share/logstash/bin
# ./logstash -f /etc/logstash/logstash.conf

至此,整个WatchAD Server端基础环境已启动完毕。注意,运行WatchAD Server端需要关闭防火墙:

代码语言:javascript
复制
systemctl stop firewalld.service

0x02 部署atchAD agnet

1.Agent端开启策略审核(域控上配置)

我们的分析基础是所有域控的所有事件日志,所以首先需要打开域控上的安全审核选项,让域控记录所有类型的事件日志。这里以 windows server 2008为例,在 本地安全策略 -> 安全设置 -> 本地策略 -> 审核策略,打开所有审核选项:

2.安装agnet winlogbeat

首先,打开我们提供的配置文件

{project_home}/settings/winlogbeat/winlogbeat.yml ,修改output.logstash 的 hosts字段值为你所安装的LogstashIP和端口(默认5044)

代码语言:javascript
复制
# vi  ./WatchAD/settings/winlogbeat/winlogbeat.yml   #修改hosts字段中的ip地址(注意ingnore_older缩进,源码中缩进存在问题)

3.安装和配置winlogbeat(在域控上安装)

下载对应版本的winlogbeat,建议版本为6.2,其它版本的字段可能有变动,存在不兼容的可能性。下载解压之后,使用刚才修改的配置文件 winlogbeat.yml 替换掉原本默认的配置文件 winlogbeat.yml。接下来按照官网的教程正常安装即可。

(1).把下载的winlogbeat 6.2压缩包,解压到中C:\Program Files;

(2).将winlogbeat-<version>目录重命名为Winlogbeat;

(3).打开安装目录下Winlogbeat目录下的winlogbeat.yml文件,把内容都删除了,然后复制测试服务器上项目watchAD下winlogbat.yml文件覆盖该文件目录下;

(4).以管理员身份打开PowerShell提示符;

(5).如果在系统上禁用了脚本执行,则需要为当前会话设置执行策略以允许脚本运行;

代码语言:javascript
复制
set-executionpolicy remotesigned  

(6).在PowerShell提示符下,运行以下命令以安装服务:

代码语言:javascript
复制
PS C:\Users\Administrator> cd  "C:\Program Files\Winlogbeat"
PS C:\Program Files\Winlogbeat> .\install-service-winlogbeat.ps1

4.启动winlogbeat:

代码语言:javascript
复制
.\winlogbeat.exe –e -c .\winlogbeat.yml

出现successfully published字样,Agent基本就部署成功了。

0x03 初始化watchAD引擎

1. WatchAD的帮助命令:

2. 进行初始化安装:

代码语言:javascript
复制
python3 WatchAD.py --install -d Motoo.nc  -s 192.168.159.149  -u motoo\\administrator  -p Motoo123\!\@\#45

注意,-d参数后面接域名,-s参数接域控IP地址,-u参数接域控管理员(双斜杠),-p参数接密码,如果密码有特殊字符,需要加上转义符。

正常初始化安装成功WatchAD,需要满足以下要求:

(1).所有存储相关的依赖都正确安装和配置;

(2).能够访问安装时指定的LDAP Server;

(3).supervisor正确安装可使用;

(4).正确安装python3.6,且存在 /usr/bin/python3 软连接;

3.启动watchAD

代码语言:javascript
复制
python3 WatchAD.py --start

初始化成功后,如下图:

0x04 部署前端WatchAD-web

WatchAD前端笔者采用kali系统进行部署。

1. 下载WatchAD-Web源码

代码语言:javascript
复制
# git clone https://github.com/0Kee-Team/WatchAD-Web.git

2.修改配置,修改连接数据库的配置:修改 WatchAD-web/Server/config/database_config.py文件中的数据库配置与WatchAD一致。

3.进行编译,进到下载WatchAD-Web目录,执行:

代码语言:javascript
复制
docker-compose build

如果上一步的配置有修改或者代码有变动,需要重新执行此命令,下一步的docker-compose up才会对其修改生效。

4.进行安装,执行命令:

代码语言:javascript
复制
docker-compose up 

启动后,就可以访问WatchAD-Web前端页面了,地址:http://服务器ip/activity_timeline.html

0x05 WatchAD攻防实战

本次简要攻击测试场景主要包括:ms17010攻击域控,利用psexec横向移动、添加域控管理员等,其他攻击场景后续进一步拓展。

ms17010攻击域控:

添加域控管理员:

利用psexec横向移动:

WatchAD检测情况:

检测ms17010攻击:

检测添加域控管理员:

检测psexec横向移动:

最后,目前市面上针对域环境的专业检测工具为微软ATA,相比于微软ATA,ATA收费昂贵,以流量为主进行分析:

WatchAD检测结合了流量和日志,免费开源,并且可以在detect模块自定义检测规则,值得一试。

附:WatchAD攻防实战演示视屏

参考资料:

1、 https://www.cnblogs.com/backlion/p/13023599.html

2、 https://zhuanlan.zhihu.com/p/261740456

3、 https://mp.weixin.qq.com/s/7EH5jnF-rym0mI7sbGUUNg

4、 https://github.com/Qianlitp/WatchAD/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 湛卢工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 WatchAD Server端部署
  • 0x02 部署atchAD agnet
  • 0x03 初始化watchAD引擎
  • 0x04 部署前端WatchAD-web
  • 0x05 WatchAD攻防实战
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档