ScioShield/Tartarus

GitHub: ScioShield/Tartarus

Tartarus 是一个检测工程实验平台,通过 Vagrant 自动化部署包含 Elastic SIEM、端点监控和攻击模拟工具的完整安全测试环境。

Stars: 1 | Forks: 0

# Tartarus Tartarus(由 AtomicFireFly 重命名),旨在自动化部署和测试安全产品的过程。该解决方案由运行在 Rocky8 Linux 客户机上的单节点 ElasticSearch 集群组成(为了与 CentOS/RHEL 交叉兼容)。Windows 节点包含 Sysmon、Elastic Agent 和 Atomic Red Team。此外,预装了 Caldera 的 Kali Linux 实例确保了全面的测试和监控。 ## 要求(宿主机) ### 硬件 **注意** 现代 CPU 具有虚拟核心,因此如果您的 CPU 有 4 个核心,它将拥有 8 个 vCPU 核心。下表均表示虚拟机所需的 vCPU 核心。 #### 仅 SIEM 部署(默认): - Windows ``` $env:HOSTS = "elastic"; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense elastic` ``` - Linux ``` vagrant up opnsense ``` 然后运行: ``` HOSTS=elastic vagrant up opnsense elastic ``` 部署: - Windows ``` $env:VAGRANT_VAGRANTFILE = "Vagrantfile.bluemin"; $env:HOSTS = "elastic"; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense elastic ``` - Linux ``` VAGRANT_VAGRANTFILE=Vagrantfile.bluemin vagrant up opnsense ``` 然后运行: ``` HOSTS=elastic vagrant up opnsense elastic ``` ##### Vagrantfile | 虚拟机名称 | CPU 核心 | 内存 (MB) | 私有 IP | |-----------------------|-----------|-------------|----------------| | tartarus-opnsense | 2 | 1024 | 192.168.56.2 | | tartarus-elastic | 4 | 8192 | 192.168.56.10 | **总计** 内存: 9 GB CPU: 6 vCores ##### Vagrantfile.bluemin | 虚拟机名称 | CPU 核心 | 内存 (MB) | 私有 IP | |-----------------------|-----------|-------------|----------------| | tartarus-opnsense | 1 | 1024 | 192.168.56.2 | | tartarus-elastic | 2 | 6144 | 192.168.56.10 | **Bluemin 总计** 内存: 7 GB CPU: 3 vCores ##### Vagrantfile.red 无 ##### Vagrantfile.redmin 无 ##### 访问 SIEM 要访问您新创建的 SIEM 和防火墙,首先将它们的 DNS 记录添加到您的 hosts,即 `hosts` 文件中 ###### Windows 打开 `powershell` 并以管理员模式运行(在开始菜单栏中输入 `powershell`,右键点击图标并选择以管理员身份运行) 现在运行此命令 `Add-Content 'C:\Windows\System32\Drivers\etc\hosts' "127.0.0.1 tartarus-elastic.home.arpa"`,您可以使用 `Invoke-WebRequest -Uri "https://tartarus-elastic.home.arpa:5443" -SkipCertificateCheck` 验证访问,或者直接在 Web 浏览器中打开 `https://tartarus-elastic.home.arpa:5443`。 如果您想访问 Elastic 客户机,请使用 `vagrant ssh elastic`。 ###### Linux 打开 `terminal` 并输入以下命令 `sudo bash -c "echo '127.0.0.1 tartarus-elastic.home.arpa' >> /etc/hosts"`,将 DNS 条目添加到您的系统 hosts 文件中。 使用简单的 `curl -L -k https://tartarus-elastic.home.arpa:5443` 验证访问,或者在 Web 浏览器中访问 `https://tartarus-elastic.home.arpa:5443`。 ###### 预期结果 **Web** ![Elastic_Access_Web](images/ElasticAccessWeb.png "Elastic 访问 Web") **注意** 如果您看到关于自签名证书的警告,您有两个选项: - 忽略警告 - (首选)将 `root_ca.crt` 证书添加到您的浏览器信任存储区。如果您不知道如何操作,请搜索“如何将根证书添加到 Chrome、Firefox、Brave、Edge...”,并将文件 `certs/root_ca.crt` 添加到信任存储区。 **SSH** ![Elastic_Access_SSH](images/ElasticAccessSSH.png "Elastic 访问 SSH") ##### 访问防火墙 要访问新创建的 Opnsense 防火墙,首先将 DNS 记录添加到您的 hosts,即 `hosts` 文件中 ###### Windows 打开 `powershell` 并以管理员模式运行(在开始菜单栏中输入 `powershell`,右键点击图标并选择以管理员身份运行) 现在运行此命令 `Add-Content 'C:\Windows\System32\Drivers\etc\hosts' "127.0.0.1 tartarus-opnsense.home.arpa"`,您可以使用 `Invoke-WebRequest -Uri "https://tartarus-opnsense.home.arpa:8443" -SkipCertificateCheck` 验证访问,或者直接在 Web 浏览器中打开 `https://tartarus-opnsense.home.arpa:8443`。注意,您将收到一个自签名证书警告,该警告将保留给防火墙,因为所有证书创建都在 SIEM 上进行(在防火墙启动之后启动)。 ###### Linux 打开 `terminal` 并输入以下命令 `sudo bash -c "echo '127.0.0.1 tartarus-opnsense.home.arpa' >> /etc/hosts"`,将 DNS 条目添加到您的系统 hosts 文件中。 使用简单的 `curl -L -k https://tartarus-opnsense.home.arpa:8443` 验证访问,或者在 Web 浏览器中访问 `https://tartarus-opnsense.home.arpa:8443`。 ###### 预期结果 **Web** ![Opnsense_Access_Web](images/OpnsenseAccessWeb.png "Opnsense 访问 Web") **注意** 如果您在这种情况下看到关于自签名证书的警告,您将不得不接受警告,因为防火墙证书独立于 Elastic 证书。 **SSH** ![Opnsense_Access_SSH](images/OpnsenseAccessSSH.png "Opnsense 访问 SSH") **注意** 您需要使用 `sudo su -` 才能进入选项菜单。 ##### 图表 ![Elastic_Diagram_1](images/elasticdiagram1.png "示例 1 简单 SIEM") #### SIEM + Linux 部署(默认): - Windows ``` $env:HOSTS = "linux"; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense elastic linux ``` - Linux ``` vagrant up opnsense ``` 然后运行: ``` HOSTS=linux vagrant up opnsense elastic linux ``` 部署: - Windows ``` $env:VAGRANT_VAGRANTFILE = "Vagrantfile.bluemin"; $env:HOSTS = "linux"; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense elastic linux ``` - Linux ``` export VAGRANT_VAGRANTFILE=Vagrantfile.bluemin; vagrant up opnsense ``` 然后运行: ``` HOSTS=linux vagrant up opnsense elastic linux ``` ##### Vagrantfile | 虚拟机名称 | CPU 核心 | 内存 (MB) | 私有 IP | |-----------------------|-----------|-------------|----------------| | tartarus-opnsense | 2 | 1024 | 192.168.56.2 | | tartarus-elastic | 4 | 8192 | 192.168.56.10 | | tartarus-linux | 1 | 2048 | 192.168.56.70 | **总计** 内存: 11 GB CPU: 7 vCores ##### Vagrantfile.bluemin | 虚拟机名称 | CPU 核心 | 内存 (MB) | 私有 IP | |-----------------------|-----------|-------------|----------------| | tartarus-opnsense | 1 | 1024 | 192.168.56.2 | | tartarus-elastic | 2 | 6144 | 192.168.56.10 | | tartarus-linux | 1 | 1024 | 192.168.56.70 | **Bluemin 总计** 内存: 8 GB CPU: 4 vCores ##### Vagrantfile.red 无 ##### Vagrantfile.redmin 无 ##### 访问 Linux 完成上述示例中的 DNS 设置。 **SSH** ![Linux_Access_SSH](images/LinuxAccessSSH.png "Linux 访问 SSH") ##### 图表 ![Elastic_Diagram_2](images/elasticdiagram2.png "示例 2 带有 Linux 资产的简单 SIEM") #### SIEM + Windows 部署(默认): - Windows ``` $env:HOSTS = "windows"; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense elastic windows ``` - Linux ``` vagrant up opnsense ``` 然后运行: ``` HOSTS=windows vagrant up opnsense elastic windows ``` 部署: - Windows ``` $env:VAGRANT_VAGRANTFILE = "Vagrantfile.bluemin"; $env:HOSTS = "windows"; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense elastic windows ``` - Linux ``` export VAGRANT_VAGRANTFILE=Vagrantfile.bluemin; vagrant up opnsense ``` 然后运行: ``` HOSTS=windows vagrant up opnsense elastic windows ``` ##### Vagrantfile | 虚拟机名称 | CPU 核心 | 内存 (MB) | 私有 IP | |-----------------------|-----------|-------------|----------------| | tartarus-opnsense | 2 | 1024 | 192.168.56.2 | | tartarus-elastic | 4 | 8192 | 192.168.56.10 | | tartarus-windows | 2 | 4096 | 192.168.56.80 | **总计** 内存: 13 GB CPU: 8 vCores ##### Vagrantfile.bluemin | 虚拟机名称 | CPU 核心 | 内存 (MB) | 私有 IP | |-----------------------|-----------|-------------|----------------| | tartarus-opnsense | 1 | 1024 | 192.168.56.2 | | tartarus-elastic | 2 | 6144 | 192.168.56.10 | | tartarus-windows | 2 | 2048 | 192.168.56.80 | **Bluemin 总计** 内存: 9 GB CPU: 5 vCores ##### Vagrantfile.red 无 ##### Vagrantfile.redmin 无 ##### 访问 Windows 完成顶部示例中的 DNS 设置。 **SSH** ![Windows_Access_SSH](images/WindowsAccessSSH.png "Windows 访问 SSH") **RDP** ![Windows_Access_RDP](images/WindowsAccessRDP.png "Windows 访问 RDP") **注意** 如果您运行的是 Linux,您需要安装 `xfreerdp`,运行 `xfreerdp /u:"vagrant" /p:"vagrant" /v:127.0.0.1:53389 /size:1300x700 /cert:ignore` 在 Windows 上,您可以使用内置的 RDP 客户端。 ##### 图表 ![Elastic_Diagram_3](images/elasticdiagram3.png "示例 3 带有 Windows 资产的简单 SIEM") #### SIEM + Linux + Windows 部署(默认): - Windows ``` $env:HOSTS = "linwin"; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense elastic linux windows ``` - Linux ``` vagrant up opnsense ``` 然后运行: ``` HOSTS=linwin vagrant up opnsense elastic linux windows ``` 部署: - Windows ``` $env:VAGRANT_VAGRANTFILE = "Vagrantfile.bluemin"; $env:HOSTS = "linwin"; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense elastic linux windows ``` - Linux ``` export VAGRANT_VAGRANTFILE=Vagrantfile.bluemin; vagrant up opnsense ``` 然后运行: ``` HOSTS=linwin vagrant up opnsense elastic linux windows ``` ##### Vagrantfile | 虚拟机名称 | CPU 核心 | 内存 (MB) | 私有 IP | |-----------------------|-----------|-------------|----------------| | tartarus-opnsense | 2 | 1024 | 192.168.56.2 | | tartarus-elastic | 4 | 8192 | 192.168.56.10 | | tartarus-windows | 1 | 2048 | 192.168.56.70 | | tartarus-linux | 2 | 2048 | 192.168.56.80 | **总计** 内存: 13 GB CPU: 9 vCores ##### Vagrantfile.bluemin | 虚拟机名称 | CPU 核心 | 内存 (MB) | 私有 IP | |-----------------------|-----------|-------------|----------------| | tartarus-opnsense | 1 | 1024 | 192.168.56.2 | | tartarus-elastic | 2 | 6144 | 192.168.56.10 | | tartarus-windows | 2 | 2048 | 192.168.56.70 | | tartarus-linux | 1 | 1024 | 192.168.56.80 | **Bluemin 总计** 内存: 10 GB CPU: 6 vCores ##### Vagrantfile.red 无 ##### Vagrantfile.redmin 无 ##### 访问 按照上述指南访问任何客户机。 ##### 图表 ![Elastic_Diagram_4](images/elasticdiagram4.png "示例 4 带有 Linux 和 Windows 资产的简单 SIEM") #### SIEM + Damn Vulnerable Web Application + Kali 部署(默认): - Windows ``` $env:HOSTS = "dvwa"; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense elastic dvwa kali ``` - Linux ``` vagrant up opnsense ``` 然后运行: 部署: - Windows ``` $env:VAGRANT_VAGRANTFILE = "Vagrantfile.bluemin"; $env:HOSTS = "dvwa"; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense elastic dvwa kali ``` - Linux ``` export VAGRANT_VAGRANTFILE=Vagrantfile.bluemin; vagrant up opnsense ``` 然后运行: ``` HOSTS=dvwa vagrant up opnsense elastic dvwa kali ``` 部署: - Windows ``` $env:VAGRANT_VAGRANTFILE = "Vagrantfile.red"; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense dvwa kali ``` - Linux ``` export VAGRANT_VAGRANTFILE=Vagrantfile.red; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense dvwa kali ``` 部署: - Windows ``` $env:VAGRANT_VAGRANTFILE = "Vagrantfile.redmin"; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense dvwa kali ``` - Linux ``` export VAGRANT_VAGRANTFILE=Vagrantfile.redmin; vagrant up opnsense ``` 然后运行: ``` vagrant up opnsense dvwa kali ``` 虽然我们将 DVWA 提供服务的默认端口 `80` 暴露给宿主机的 `http://127.0.0.1:8180`,但建议部署 Kali 主机来攻击 DVWA,因为它会预装更多您需要的工具。 ##### Vagrantfile | 虚拟机名称 | CPU 核心 | 内存 (MB) | 私有 IP | |-----------------------|-----------|-------------|----------------| | tartarus-opnsense | 2 | 1024 | 192.168.56.2 | | tartarus-elastic | 4 | 8192 | 192.168.56.10 | | tartarus-dvwa | 1 | 2048 | 192.168.56.71 | | tartarus-kali | 4 | 8192 | 192.168.56.200 | **总计** 内存: 19 GB CPU: 11 vCores ##### Vagrantfile.bluemin | 虚拟机名称 | CPU 核心 | 内存 (MB) | 私有 IP | |-----------------------|-----------|-------------|----------------| | tartarus-opnsense | 1 | 1024 | 192.168.56.2 | | tartarus-elastic | 2 | 6144 | 192.168.56.10 | | tartarus-dvwa | 1 | 1024 | 192.168.56.71 | | tartarus-kali | 2 | 4096 | 192.168.56.200 | **Bluemin 总计** 内存: 13 GB CPU: 6 vCores ##### Vagrantfile.red | 虚拟机名称 | CPU 核心 | 内存 (MB) | 私有 IP | |-----------------------|-----------|-------------|----------------| | tartarus-opnsense | 2 | 1024 | 192.168.56.2 | | tartarus-dvwa | 1 | 2048 | 192.168.56.71 | | tartarus-kali | 4 | 8192 | 192.168.56.200 | **Red 总计** 内存: 11 GB CPU: 7 vCores ##### Vagrantfile.redmin | 虚拟机名称 | CPU 核心 | 内存 (MB) | 私有 IP | |-----------------------|-----------|-------------|----------------| | tartarus-opnsense | 1 | 1024 | 192.168.56.2 | | tartarus-dvwa | 1 | 1024 | 192.168.56.71 | | tartarus-kali | 2 | 4096 | 192.168.56.200 | **Redmin 总计** 内存: 6 GB CPU: 4 vCores ##### 访问 Kali **GUI** **注意** Kali 主机已启用 GUI,因此只要您启动机器,它就会弹出 GUI。 ![Kali_Access_GUI](images/KaliAccessGUI.png "Kali 访问 GUI") **注意** 登录信息: `用户名: vagrant` `密码: vagrant` 您可能需要登录两次。 **SSH** ![Kali_Access_SSH](images/KaliAccessSSH.png "Kali 访问 SSH") ##### 访问 Damn Vulnerable Web Application **Web** **注意** 建议从 Kali 虚拟机内部访问 DVWA! 首先使用 `sudo bash -c "echo '192.168.56.71 tartarus-dvwa.home.arpa' >> /etc/hosts"` 将 DNS 条目添加到 Kali 虚拟机的 hosts 文件中,sudo 密码是 `vagrant` 打开 Firefox 并浏览到 `http://tartarus-dvwa.home.arpa/DVWA` ![DVWA_Access_Web](images/DVWAAccessWeb.png "DVWA 访问 Web") ##### 图表 ![Elastic_Diagram_5](images/elasticdiagram5.png "示例 5 带有 DVWA 的简单 SIEM") ### 软件 [VirtualBox](https://www.virtualbox.org/wiki/Downloads) [Vagrant](https://developer.hashicorp.com/vagrant/downloads) ## 节点(客户机) | 虚拟机名称 | 操作系统 | CPU 核心 | 内存 (MB) | 私有 IP | 组件 | |-----------------------|--------------------------------------|-----------|-------------|----------------|-------------------------------------------------------------------| | tartarus-opnsense | bento/freebsd-13.2 | 2 | 1024 | 192.168.56.2 | Opnsense, Suricata | | tartarus-elastic | bento/rockylinux-8.7 | 4 | 8192 | 192.168.56.10 | ElasticSearch, Kibana, Fleet, Smallstep CA, Caddy | | tartarus-linux | bento/rockylinux-8.7 | 1 | 2048 | 192.168.56.70 | Elastic Agent | | tartarus-dvwa | bento/ubuntu | 1 | 2048 | 192.168.56.71 | Elastic Agent, DVWA | | tartarus-windows | gusztavvargadr/windows-10-21h2-enterprise | 2 | 4096 | 192.168.56.80 | Elastic Agent, Sysmon, Atomic Red Team | | tartarus-kali | kalilinux/rolling | 4 | 8192 | 192.168.56.200 | | ### IP 地址 | 保留用于 | IP 地址范围 | |----------------------|------------------| | 网络 | 1-9 | | 安全设备 | 10-19 | | Linux 主机 | 70-79 | | Windows 主机 | 80-89 | | 对手 | 200+ | ### 完整网络布局 | 网络地址 | 可用范围 | 广播地址 | 用途 | | --------------- | ------------------------------- | ----------------- | ------- | | 192.168.56.0 | 192.168.56.1 - 192.168.56.62 | 192.168.56.63 | SIEM | | 192.168.56.64 | 192.168.56.65 - 192.168.56.126 | 192.168.56.127 | 资产 | | 192.168.56.128 | 192.168.56.129 - 192.168.56.190 | 192.168.56.191 | 目标 | | 192.168.56.192 | 192.168.56.193 - 192.168.56.254 | 192.168.56.255 | 黑客 | 防火墙规则(未来会更改,因此仅用作指南) #### 图表 ![Firewall_Mind_Map](images/firewallmindmap.png "作为思维导图的防火墙规则示例") #### 防火墙别名 | 名称 | 类型 | 内容 | 描述 | |------------|---------|----------------------------------------------|----------------------------| | RFC1918 | Network | 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 | RFC1918 私有网络 | | WebPorts | Port | 80, 443 | Web 端口 | | Services | Port | 53, 123 | DNS 和 NTP | | Monitoring | Port | 8220, 9200 | 监控 | | DHCP_Ports | Port | 67, 68 | DHCP 端口 | #### 防火墙规则 | 动作 | 快速 | 描述 | 接口 | 协议 | 源 | 目的地 | 目标端口 | |--------|-------|-------------------------------|-----------------|----------|---------|-------------|-----------------------------| | Pass | 是 | 允许 DNS 和 NTP 流量 | 资产, 黑客 | UDP | 任意 | (自身) | Services (53, 123) | | Pass | 是 | 允许 Elasticsearch 流量 | 资产, 目标 | TCP | 任意 | LAN | Monitoring (, 8220, 9200) | | Block | 否 | 阻止所有发往 RFC1918 的流量 | 资产, 目标 | 任意 | 任意 | RFC1918 | 任意 | | Pass | 是 | 允许 DHCP 流量 | 目标 | UDP | 任意 | (自身) | DHCP_Ports (67, 68) | | Pass | 否 | 允许 Web 流量 | 资产, 黑客 | TCP | 任意 | 任意 | WebPorts (80, 443) | | Pass | 是 | 允许 SSH 流量 | 黑客 | TCP | 任意 | LAN | 22 | | Pass | 是 | 允许 HTTPS 和 SSH | WAN | TCP | 任意 | (自身) | 22, 443 | | Pass | 是 | 允许所有来自 LAN 的流量 | LAN | ANY | 任意 | ANY | ANY | 所有主机都在 Vagrantfile 中分配了静态 IP 地址。所有主机也都有 2 个接口,第一个是 Vagrant 通过 SSH / winrm 管理虚拟机所需的默认 NAT 类型,第二个接口是静态分配的接口。我们通过一些指标上的技巧将第一个接口“消耗掉”,这并不会完全禁用该接口,因此即使您强制执行防火墙规则,它仍然可以连接外部,但在大多数情况下,防火墙规则是受到尊重的。 ## 注意 **这不能用于生产环境!** 请仅作为指南/实验室使用,我会做一些诸如将 elastic 用户密码放在文件中的事情 这绝不应该在生产环境中进行! 如果对手获得了您的 Elastic 超级用户密码或某个节点的 root 访问权限,那就是**游戏结束!** 为确保一切按预期工作,请先启动 Opnsense 节点,然后再启动 elastic 节点。 ### DNS 设置 我们使用 `.home.arpa.` 以符合 [RFC8375](https://www.rfc-editor.org/rfc/rfc8375.html) #### 本地 将 (Vagrant 宿主机 ip) 替换为您将运行 Vagrant 的宿主机的 IP Windows Powershell `Add-Content 'C:\Windows\System32\Drivers\etc\hosts' "127.0.0.1 tartarus-elastic.home.arpa"` Linux Bash `echo "127.0.0.1 tartarus-elastic.home.arpa" >> /etc/hosts` #### 远程 用于远程部署 将 (Vagrant 宿主机 ip) 替换为您将运行 Vagrant 的宿主机的 IP Windows Powershell `Add-Content 'C:\Windows\System32\Drivers\etc\hosts' "(Vagrant host ip) tartarus-elastic.home.arpa"` Linux Bash `echo "(Vagrant host ip) tartarus-elastic.home.arpa" >> /etc/hosts` ## Opnsense 一旦 Opnsense 完成安装,您可以通过访问 `https://127.0.0.1:8443` 或(如果您已经更新了您的 hosts,即 `hosts` 文件)`https://tartarus-opnsense.home.arpa:8443` 来登录。所有的配置都已经为您完成了。 ## Kibana 忽略 HTTPS 证书警告是安全的,因为在此实例中我们生成了自己的自签名证书。 您现在可以将保存在 ./certs/ 中的生成的 CA 证书 `root_ca.crt` 添加到您的浏览器信任存储区,得益于 Smallstep CA + Caddy ACME 证书设置,您将不会再为此项目看到“此网站不安全”的提示*。 *证书有效期为 24 小时,有时(如果您将宿主机置于休状态一段时间)证书会在 Caddy 重新执行 ACME 过程之前过期。只需在 `tartarus-elastic` 节点上执行简单的 `sudo systemctl restart caddy`,您就万事大吉了。 **登录 Kibana(本地)** 从您的宿主机 `https://tartarus-elastic.home.arpa:5443` 由于 Caddy 反向代理,现在必须通过域名访问,只需在 `/etc/hosts` 或 `C:\Windows\System32\drivers\etc\hosts` 中添加一个覆盖,将 `tartarus-elastic.home.arpa` 指向 `127.0.0.1` **登录 Kibana(远程)** `https://tartarus-elastic.home.arpa:5443` 用户名:`elastic` 您可以将密码保存在运行 Vagrant 的目录中名为“Password.txt”的文件中,这是超级用户帐户的密码,因此请小心! 该文件位于 `.gitignore` 中,但是将密码保存到磁盘并不是一个好习惯! 密码也会打印在您运行 `vagrant up` 的终端 / shell 中。 如果您需要重置密码,您可以在 `elastic` 节点上通过简单的操作完成: ``` vagrant ssh elastic sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic exit ``` ## 查看 Kibana 告警 一旦您在 `https://tartarus-elastic.home.arpa:5443` 上登录到 Kibana 实例,现在就是查看告警的时候了。 Windows 和 Linux 告警已为您自动启用。 在通用搜索选项卡中搜索告警,或打开汉堡菜单并向下滚动到安全选项卡。 ![elasticAlert1](images/elasticAlert1.png "欢迎") 现在搜索“alerts”。 ![elasticAlert2](images/elasticAlert2.png "搜索") 您应该会看到告警页面(请注意,您可能还没有任何告警,例如,您需要启动 Windows 主机并运行 EDR-Telemetry-Generator) ![elasticAlert3](images/alerts.png "告警") ## 加载 Sigma 规则 我们使用了一些位于 `./rules` 中的现有 Sigma 规则,同时我也编写了自己的自定义规则来检测 Atomic Red Team 活动。所有规则均在 DRL 下。`dvwa` 规则已为您导入,只需在规则搜索栏中搜索“SIGMA”。 要加载自定义规则,请将 `.env.example` 复制为 `.env` 文件,并删除值之后的所有内容(即删除 `#` 右侧及其包含的所有内容,使其每行只有键=值)。 安装 Python 3。 使用简单的 `python3 -m pip install -r requirements.txt` 安装依赖项,这将安装加载规则所需的 pySigma。 运行 `sigmaApiLoad.py` 文件,使用简单的 `python3 sigmaApiLoad.py`。 Elastic 中的规则将以 `SIGMA -` 开头,因此很容易找到。 ## Atomic Red Team 测试 使用来自 [EDR-Telemetry](https://github.com/tsale/EDR-Telemetry) 的 EDR-Telemetry-Generator 打开 PowerShell 并 Git 克隆 EDR-Telemetry 项目并运行它,为了方便使用,已预装了 Git。 `git clone https://github.com/tsale/EDR-Telemetry.git` 不言而喻,但这应该只在虚拟机上运行,不要在您的宿主机操作系统上运行! `& .\EDR-Telemetry\Tools\Telemetry-Generator\telemetry-generator.ps1` ![edrTelem](images/TelemetryGen.png "嗖") 现在查看 Kibana 告警仪表板。 ![alerts](images/alerts.png "砰") ## 灵感 这项工作的主要灵感来自令人难以置信的项目 [EDR-Telemetry](https://github.com/tsale/EDR-Telemetry) 使用 Vagrant 作为 provisioner 的灵感来自 [Jeff Geerling's](https://github.com/geerlingguy) 的优秀著作 Ansible for DevOps。 ## 资源 ### TryHackMe - [Atomic Red Team](https://tryhackme.com/room/atomicredteam) - [Elastic](https://tryhackme.com/room/investigatingwithelk101) ### GitHub - [EDR-Telemetry](https://github.com/tsale/EDR-Telemetry) - [Caldera](https://github.com/mitre/caldera) - [Elastic](https://github.com/elastic) - [Atomic Red Team](https://github.com/redcanaryco/atomic-red-team) - [Sigma](https://github.com/SigmaHQ/sigma) - [Caddy](https://github.com/caddyserver/caddy) - [Smallstep](https://github.com/smallstep/certificates) ## TODO 研究 ART 在 Linux 上的工作原理 添加提升为域控制器的 Windows 2022 Server 添加 Shuffle SOAR 节点 ## 未来改进 ## 许可证 **您有责任确保遵守所有适用的许可证、当地和/或国际法律!** 所有许可证在提交时均有效! - 本项目中的所有原创工作(Sigma 规则除外)均基于 [The Unlicense](https://github.com/ScioShield/Tartarus/blob/master/LICENSE.md) 授权 - Vagrant 基于 [Business Source License 1.1](https://github.com/hashicorp/vagrant/blob/main/LICENSE) 授权 - VirtualBox 基于 [The GNU General Public License (GPL) Version 3](https://www.virtualbox.org/wiki/GPLv3) 授权 - Rocky Linux 基于 [BSD 3-Clause](https://rockylinux.org/legal/licensing) 授权 - Kali Linux 基于 [EULA](https://www.kali.org/docs/policy/eula/EULA.txt) 授权 - Windows 基于 [Windows 10 Enterprise Evaluation](https://www.microsoft.com/en-us/evalcenter/evaluate-windows-10-enterprise) 授权 - Elastic 基于 [GNU Affero General Public License v3.0](https://github.com/elastic/elasticsearch/blob/main/LICENSE.txt) 授权 - EDR-Telemetry 基于 [Creative Commons Attribution-NonCommercial 4.0 International License](https://github.com/tsale/EDR-Telemetry/blob/main/LICENSE) 授权 - Atomic Red Team 基于 [MIT License](https://github.com/redcanaryco/atomic-red-team/blob/master/LICENSE.txt) 授权 - pySigma 基于 [GNU Lesser General Public License v2.1](https://github.com/SigmaHQ/pySigma/blob/main/LICENSE) 授权 - Sigma 规则基于 [DRL 1.1](https://github.com/SigmaHQ/Detection-Rule-License/blob/main/LICENSE.Detection.Rules.md) 授权 - Caddy 基于 [Apache License 2.0](https://github.com/caddyserver/caddy/blob/master/LICENSE) 授权 - Smallstep 基于 [Apache License 2.0](https://github.com/smallstep/certificates/blob/master/LICENSE) 授权 - Opnsense 基于 [BSD 2-Clause “Simplified” license](https://docs.opnsense.org/legal.html#opnsense-license-copyright) 授权 - Opnsense Vagrant 配置文件基于 [BSD-2-Clause license](https://github.com/punktDe/vagrant-opnsense/blob/main/COPYRIGHT.md) 授权 - FreeBSD 基于 [FreeBSD License](https://www.freebsd.org/copyright/freebsd-license/) 授权 - Damn Vulnerable Web Application (DVWA) 基于 [GPL-3.0 license](https://github.com/digininja/DVWA?tab=GPL-3.0-1-ov-file) 授权 支持软件(如 bash、wget、jq 等)也基于它们各自的许可证授权。 上文未直接提及的任何内容当然都保留其许可证!
标签:ElasticSearch, TGT, Vagrant, 安全检测工程, 安全靶场, 攻防演练, 自动化环境部署, 配置修复