我不再积极开发此项目,但会修复错误并查看问题和拉取请求。 欢迎提供帮助 :)
此本地渗透测试实验室利用 docker compose 启动多个受害者服务和一个运行 Kali Linux 的攻击者服务。如果第一次运行此实验室,将需要一些时间下载所有不同的 docker 镜像。
执行的命令:
./lab.sh --help./lab.sh --check-dependencies./lab.sh --up --all-services./lab.sh --info./lab.sh --overview allssh root@kali -o "UserKnownHostsFile /dev/null"./lab.sh --down如果所有必需的依赖项都已安装,实验室应该开箱即用。启动时实验室会运行依赖检查。
git clone https://github.com/oliverwiegers/pentest_lab
cd pentest_lab
./lab.sh -u
默认情况下,实验室将启动所有受害者服务和一个红队服务。其他服务可以启动和添加。更多信息请参见下文。
有关进一步使用信息,请考虑阅读 ./lab.sh -h | --help 显示的消息。
实验室内置依赖检查,启动时运行。也可以手动运行 ./lab.sh -C。
为方便使用,添加了 Heimdall 界面,暴露在 localhost:7000。所有暴露到本地机器并可通过浏览器访问的服务都列在其中。对界面所做的更改会自动保存到 ./etc/heimheimdall。然后在停止实验室时,此目录会转换为 ./etc/heimdall.tar。此 tar 归档将在启动时解压。./etc/heimdall.tar 和 ./etc/heimdall 默认被 git 忽略。
使用的壁纸可以在这里找到。
此实验室知道以下四种类型的服务。
默认的红队服务——Kali 服务——是一个相当基础的 Kali 实例。尽管如此,已安装 kali-tools-web 元包。对于 Web 应用程序测试实验室来说,基本的 Web 测试工具似乎很有用。可以通过编辑构建镜像的 Dockerfile 来更改。该 Dockerfile 位于 ./dockerfiles/kali。Kali 服务默认安装这些 dotfiles。也可以通过调整 Dockerfile 来更改。
即使监控服务也是蓝队服务,但它们被分到不同的类别。
此堆栈提供日志和性能观察功能。
有关单个实例的更多信息,请参见下文。
目前监控设置由以下服务组成:
Grafana 实例提供两个仪表板,一个用于日志,一个用于指标。
这些相当基础。可以通过 Grafana 界面添加更多仪表板。删除 grafana 卷时,这些仪表板将丢失。要永久添加仪表板,请查阅 Grafana 的配置文档。用于配置的目录位于 ./etc/grafana/。
要通过 Grafana 界面更改设置,必须以 admin 身份登录。凭据是默认的:admin:admin。#hacktheplanet
为了让 Loki 能够收集 docker 日志,此实验室将 Loki Docker Driver 作为 Docker 插件安装。
为了让 Prometheus 能够访问集群中运行的容器的性能指标,使用了 cAdvisor。
要添加其他服务,需要一些 docker-compose.yml 文件的知识。此仓库根目录中的 docker-compose.yml 在实验室启动时自动生成。此过程使用位于 ./etc/services 下的 yaml 文件。
➜ pentest_lab tree ./etc/services
./etc/services
├── blue_team
│ └── endlessh.yml
├── default.yml
├── monitoring
│ ├── cadvisor.yml
│ ├── grafana.yml
│ ├── loki.yml
│ └── prometheus.yml
├── red_team
└── victim
├── beginner
│ ├── bwapp.yml
│ ├── dvwa.yml
│ ├── hackazon.yml
│ ├── tiredful.yml
│ ├── webgoat.yml
│ └── xvwa.yml
├── expert
│ └── juice-shop.yml
└── intermediate
└── ninjas.yml
启动哪些服务由调用 ./lab.sh 时对应的选项控制。要永久禁用某个服务,请移除 .yml 文件扩展名。
一个受害者服务的示例:
bwapp:
labels:
class: 'victim'
cluster: 'pentest_lab'
level: 'beginner'
image: raesene/bwapp
ports:
- '8080:80'
networks:
pentest_lab:
ipv4_address: 10.5.0.100
hostname: bwapp
volumes:
- bwapp-data:/var/lib/mysql
注意:如果某个服务在首次使用时需要某种安装,请使用 docker inspect <image_name> 找出 docker 镜像存储数据的位置,并添加指向该目录的卷。在上面的示例中,这是:
volumes:
- bwapp-data:/var/lib/mysql
这确保您不必在每次重新启动实验室时都重新设置该服务。但是,如果您想重置实验室并完全重新开始,可以使用 ./lab.sh -p | --prune。这将删除实验室拥有的所有资源。
我们使用静态 IP 地址的原因是 Kali 机器需要有一个不变的 IP 地址,以简化 SSH 登录。更多信息请参见下面的技巧/窍门部分。
如果您添加的服务有其他对运行此实验室的人有用的信息,可以将这些信息添加到 ./etc/services_info。运行 ./lab.sh -i 时,此文件的内容将逐行原样打印。
为了轻松连接到 Kali 服务,可以将以下内容添加到 $HOME/.ssh/config:
Host kali
User root
Hostname 10.5.0.5
UserKnownHostsFile /dev/null
StrictHostKeyChecking accept-new
这样,您就可以运行 ssh kali 而不是 ssh [email protected] -o "UserKnownHostsFile /dev/null"。
对于 tmux 用户,以下配置将自动附加到 tmux 会话:
Host kali
User root
Hostname 10.5.0.5
UserKnownHostsFile /dev/null
StrictHostKeyChecking accept-new
RequestTTY yes
RemoteCommand tmux -L tmux new-session -As hacktheplanet