模拟攻防演练上篇,蓝方靶场部署

以下这篇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

https://yeasy.gitbook.io/docker_practice/install/debian

查看靶场系统信息

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 LinuxBunsenLabs 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的套娃玩意,可以玩玩。🤪

官方dind【docker in docker】镜像

docker从入门到实践

Hfish蜜罐部署

评论