模拟攻防演练上篇,蓝方靶场部署
以下这篇blog只是记录了当时做这些的一个思路,以及搭建的过程,但最终实现的时候有一些难以解决的问题。因为那些docker靶场不支持ARM架构,所以后来我又采用了另外一种方式,详情见Blog 模拟攻防演练中篇
前言
记录一次入侵检测/应急响应的实战攻击。
实战思路:物理机用docker搭漏洞靶场,让男朋友来做红方攻击,他来打docker漏洞靶场,我在docker里面做蓝方的防守以及入侵检测/应急响应。
期间我的蓝队防守,会用蜜罐来迷惑和检测攻击。
感谢 @Gryffinrab 的友情出演
靶场搭建
vulhub靶场搭建初步
前提已经有docker的安装
没有docker环境的参考另外一篇blog sql靶场搭建(内置docker的安装步骤)
1 | pip3 install docker-compose |
下载vulhub
Vulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。官网地址:https://vulhub.org/
1 | git clone https://github.com/phith0n/vulhub.git |
指定到vulhub的路径
1 | cd vulhub |
进入vulhub目录,可以看到很多测试环境目录,每个环境目录下都有相应的说明文件
1 | ls |
进入某一漏洞的环境
1 | ls |
修改docker-compose.yml
进入漏洞所在文件夹,修改docker-compose.yml
1 | vim docker-compose.yml |
增加一行
1 | privileged: true |
因为后面启动docker的时候,需要用到systemctl命令,要用这一行来赋予这个docker高权限
自动化编译环境
1 | docker-compose build |
启动整个环境
1 | docker-compose up -d |
为靶场部署docker
可能是由于vulhub靶场的原因,docker的部署不是很顺利,不支持systemctl,service也会报错,所以这里暂时没有找到好的方法,只提供一种思路。
可参考之前蜜罐部署的blog [hfish蜜罐部署docker](https://gryffinbit.top/2022/02/24/hfish%E8%9C%9C%E7%BD%90%E9%83%A8%E7%BD%B2/)
进入docker靶场的bash
为该docker靶场,安装docker
查看靶场系统信息
1 | cat /etc/issue |
发现是Debain,根据docker的官方下载,安装docker
安装
sudo
命令su //进入root权限 apt-get update apt-get install sudo
1
2
3
4
5
6
7
![](https://blog-1310394682.cos.ap-beijing.myqcloud.com/202203200011273.png)
* 把root添加到sudo组
```shell
adduser root sudo
卸载旧版本
旧版本的 Docker 称为
docker
或者docker-engine
,使用以下命令卸载旧版本:1
2
3sudo apt-get remove docker
sudo apt-get remove docker-engine
sudo apt-get remove docker.io
使用 APT 安装
由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。
1
2
3
4
5
6
7sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get install ca-certificates
sudo apt-get install curl
sudo apt-get install gnupg
sudo apt-get install lsb-releasedebian更换源
为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。
1
2阿里源
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg向
sources.list
中添加 Docker 软件源:在一些基于 Debian 的 Linux 发行版中
$(lsb_release -cs)
可能不会返回 Debian 的版本代号,例如 Kail Linux、 BunsenLabs Linux。在这些发行版中我们需要将下面命令中的$(lsb_release -cs)
替换为 https://mirrors.aliyun.com/docker-ce/linux/debian/dists/ 中支持的 Debian 版本代号,例如buster
。1
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian buster stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
以上命令会添加稳定版本的 Docker APT 源,如果需要测试版本的 Docker 请将 stable 改为 test。
安装docker
更新 apt 软件包缓存,并安装
docker-ce
。1
2
3
4
5sudo apt-get update
sudo apt-get install docker-ce
sudo apt-get install docker-ce-cli
sudo apt-get install containerd.io
使用脚本自动安装
1
2curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。
启动docker
1
2sudo systemctl enable docker
sudo systemctl start docker配置docker
默认情况下,
docker
命令会使用 Unix socket 与 Docker 引擎通讯。而只有root
用户和docker
组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用root
用户。因此,更好地做法是将需要使用docker
的用户加入docker
用户组。建立
docker
组:1
sudo groupadd docker
将当前用户加入
docker
组:1
sudo usermod -aG docker $USER
测试 Docker 是否安装正确
看是否能正确输出
1
docker run --rm hello-world
为靶场部署蜜罐
之前的思路是用vulhub的现成docker靶场,在docker里面安装docker,然后再用这个docker去pull一个现成的独立蜜罐,但是这样会比较麻烦,而且docker部署有问题,所以后来就改变了另外一种方式。用物理机上的docker去搭建了一个蜜罐,作为管理端,然后把靶场docker作为这个蜜罐的子节点。
HFish蜜罐部署,参考以前的blog HFish蜜罐部署
查看靶场部署情况
访问docker靶场
找到容器内的对象的ID
1
docker ps
将docker的8080端口映射到本地的8081端口,去访问
1
http://127.0.0.1:8081/
- 查询容器内系统的IP
1
docker inspect [对象ID]
与物理机同一网段下,均可访问到dokcer
在蜜罐管理端添加节点
添加节点,把靶场访问地址填入
1
http://192.168.0.71:8081/
进入靶场bash,输入以下命令,部署蜜罐
1
sh -c "$(curl -k http://192.168.0.71:8081//tmp/yW1SuCpRbGl0.sh)"
参考文章
docker in docker一个好玩的东西,docker in docker,因为这个Blog的思路就是用docker装靶场,在靶场里面在装一个docker来实现蜜罐的功能,docker in docker的套娃玩意,可以玩玩。🤪