模拟攻防演练上篇,蓝方靶场部署
以下这篇blog只是记录了当时做这些的一个思路,以及搭建的过程,但最终实现的时候有一些难以解决的问题。因为那些docker靶场不支持ARM架构,所以后来我又采用了另外一种方式,详情见Blog 模拟攻防演练中篇
前言
记录一次入侵检测/应急响应的实战攻击。
实战思路:物理机用docker搭漏洞靶场,让男朋友来做红方攻击,他来打docker漏洞靶场,我在docker里面做蓝方的防守以及入侵检测/应急响应。
期间我的蓝队防守,会用蜜罐来迷惑和检测攻击。
感谢 @Gryffinrab 的友情出演
靶场搭建
vulhub靶场搭建初步
前提已经有docker的安装
没有docker环境的参考另外一篇blog sql靶场搭建(内置docker的安装步骤)
pip3 install docker-compose
下载vulhub
Vulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。官网地址:https://vulhub.org/
git clone https://github.com/phith0n/vulhub.git
指定到vulhub的路径
cd vulhub
进入vulhub目录,可以看到很多测试环境目录,每个环境目录下都有相应的说明文件
ls
cd struts2
进入某一漏洞的环境
ls
cd s2-007
修改docker-compose.yml
进入漏洞所在文件夹,修改docker-compose.yml
vim docker-compose.yml
增加一行
privileged: true
因为后面启动docker的时候,需要用到systemctl命令,要用这一行来赋予这个docker高权限
自动化编译环境
docker-compose build
启动整个环境
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
查看靶场系统信息
cat /etc/issue
发现是Debain,根据docker的官方下载,安装docker
安装
sudo
命令su //进入root权限 apt-get update apt-get install sudo
把root添加到sudo组
adduser root sudo
卸载旧版本
旧版本的 Docker 称为
docker
或者docker-engine
,使用以下命令卸载旧版本:sudo apt-get remove docker sudo apt-get remove docker-engine sudo apt-get remove docker.io
使用 APT 安装
由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。
sudo 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-release
debian更换源
为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。
# 阿里源 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
。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
。sudo apt-get update sudo apt-get install docker-ce sudo apt-get install docker-ce-cli sudo apt-get install containerd.io
使用脚本自动安装
curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun
执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。
启动docker
sudo systemctl enable docker sudo systemctl start docker
配置docker
默认情况下,
docker
命令会使用 Unix socket 与 Docker 引擎通讯。而只有root
用户和docker
组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用root
用户。因此,更好地做法是将需要使用docker
的用户加入docker
用户组。建立
docker
组:sudo groupadd docker
将当前用户加入
docker
组:sudo usermod -aG docker $USER
测试 Docker 是否安装正确
看是否能正确输出
docker run --rm hello-world
为靶场部署蜜罐
之前的思路是用vulhub的现成docker靶场,在docker里面安装docker,然后再用这个docker去pull一个现成的独立蜜罐,但是这样会比较麻烦,而且docker部署有问题,所以后来就改变了另外一种方式。用物理机上的docker去搭建了一个蜜罐,作为管理端,然后把靶场docker作为这个蜜罐的子节点。
HFish蜜罐部署,参考以前的blog HFish蜜罐部署
查看靶场部署情况
访问docker靶场
找到容器内的对象的ID
docker ps
将docker的8080端口映射到本地的8081端口,去访问
http://127.0.0.1:8081/
查询容器内系统的IP
docker inspect [对象ID]
与物理机同一网段下,均可访问到dokcer
在蜜罐管理端添加节点
添加节点,把靶场访问地址填入
http://192.168.0.71:8081/
进入靶场bash,输入以下命令,部署蜜罐
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的套娃玩意,可以玩玩。🤪