Kali Docker的配置

Author Avatar
琉璃 5月 04, 2019

相比起虚拟机,Docker 容器没有 GUI,但是性能开销也小。在渗透测试中,只有终端也是可以的。各种各样的工具都有着命令行的版本。资源占用上,Docker 的镜像和容器文件也会比虚拟机小上不少。

如果想要用 Docker 的话,需要开启 Hyper-V 支持。然而这会导致无法使用 VMware 之类的虚拟机。但是现在,Windows 已经原生支持了基于Hyper-V虚拟机。因此如果真的想要用虚拟机的 GUI 界面的话,也不用为了使用其他虚拟机而关闭 Hyper-V了。直接用 Hyper-v 自带的虚拟机即可。

最近Vscode预览版更新了Remote Dev的插件。它可以为我们的Docker提供一个基本的文档编辑器。简单来说,我们可以有一个与容器相连的Vscode编辑器。编辑文档,shell的管理,端口映射等等等都变得很方便。

Docker 安装

从官网下载 Docker 社区版本进行安装即可,但这个安装还需要注册账号就很神奇。

Kali 镜像

看一眼 Kali 官方的 Docker 教程,非常的简短。

docker pull kalilinux/kali-linux-docker
docker run -t -i kalilinux/kali-linux-docker /bin/bash
apt-get update && apt-get install metasploit-framework

下载镜像,启动容器,并且连接到 shell。更新 Kali,下载 Metasploit。Docker 的具体参数可以docker --help进行查看。

官方的教程简单,但也缺了不少东西。如果仔细看一眼官方镜像的说明,就会发现其实镜像里只内置了十个常用工具,其他工具都要自己装。Docker 的配置也并不完善,例如端口并没进行设置。

工具

Gobuster

一款用来爆破 Web 目录的软件,需要安装 Go。

从 Go 官网下载压缩包,将其解压至/usr/local,接着将/usr/local/go/bin加入系统变量即可。或者通过apt-get install golang。记得要永久添加系统变量,不能单单的用export实现。可以通过修改/etc/profile,添加export PATH="$PATH:/usr/local/go/bin"。应用一下配置,source /etc/profile。别忘了还要设置环境变量GOPATH的值。

从 Gobuster 的代码库下载源码。如果一步步按照官方 Readme 进行安装,会产生报错,大致为go-install-fails-with-error-no-install-location-for-directory-xxx-outside-gopath

我个人的解决方案是执行go get -u github.com/OJ/gobuster,然后在源码目录执行go build。接着在$GOPATH下会找到一个bin/文件夹,里面有Gobuster可执行文件。将这个目录 永久的添加到$PATH 即可。

对于爆破目录用的字典,可以从 Dirbuster 的 git仓库中找到。

参考:
https://stackoverflow.com/questions/18149601/go-install-fails-with-error-no-install-location-for-directory-xxx-outside-gopat
https://github.com/OJ/gobuster/issues/82

Tmux

很好的管理多个终端。可以直接通过 apt 进行安装。(如果使用Vscode的远程开发插件,其实没有特别大的必要使用Tmux了。Vscode本身提供的终端管理也够用的。)

常见快捷键

默认的前缀键是control+b
前缀键加c是创建一个 Tab。
前缀键加“是水平分割窗口。
前缀键加上键是移动到上面的窗口。
前缀键加数字键是移动到编号与数字键相同的 Tab。
前缀键加&是删除窗口。

ltrace 和 strace

这两个是简单的逆向软件,用来分析一些简单的二进制文件,可以直接通过 apt 可安装。但是需要禁用 Docker 的安全特性才可使用,不然会有Opration not permitted

i386 二进制文件兼容

Docker 下的 kali 镜像为 64 位,如果想在上面运行 32 位的二进制文件,需要一些兼容措施

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

这样即可成功运行 32 位程序。
参考:
https://askubuntu.com/questions/454253/how-to-run-32-bit-app-in-ubuntu-64-bit

seachsploit

用来查询 exploit 的软件。

 apt update && apt -y install exploitdb
 searchsploit -u

第二命令为更新数据库,需要大概十分钟。不要看见它没有反映就以为是死机了。

ncat

常用的网络程序,重要性不言而喻。直接 apt 安装即可。

steghide

用来从图片中读取密文,或向图片中写如密文的软件。是一款隐写术软件。直接 apt 安装即可。

更新 image

docker commit containerId newImageName

这会帮助你将你刚刚配置好的容器打包为一个新的镜像。

Docker配置

需要配置端口,关闭安全特性,默认的 shell 为 tmux,挂在目录(方便 Host 和 container 传递文件)。
以下的-v ,-p 参数为参考。
-i 之后为镜像名字。
镜像名字后面跟的是容器初始化执行的命令。
命令建议在 cmd 下执行,不然会因为路径错误报错。

docker run -t -p 4400-4500:4400-4500 --security-opt seccomp:unconfined -v c:/Users/username/Documents/pentestLab/:/root/pentestLab -i pentest /usr/bin/tmux

总体来说 docker 的配置较为繁琐,但是轻便和易扩展。

This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接:https://www.inevitable.tech/posts/eeff9e70/