带不起虚拟机的电脑让我有机会尝试了更加好用的工具。
相比起虚拟机,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 教程,非常的简短。
1 | docker pull kalilinux/kali-linux-docker |
下载镜像,启动容器,并且连接到 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 位的二进制文件,需要一些兼容措施。
1 | sudo dpkg --add-architecture i386 |
这样即可成功运行 32 位程序。 参考: https://askubuntu.com/questions/454253/how-to-run-32-bit-app-in-ubuntu-64-bit
seachsploit
用来查询 exploit 的软件。
1 | apt update && apt -y install exploitdb |
第二命令为更新数据库,需要大概十分钟。不要看见它没有反映就以为是死机了。
ncat
常用的网络程序,重要性不言而喻。直接 apt 安装即可。
steghide
用来从图片中读取密文,或向图片中写如密文的软件。是一款隐写术软件。直接 apt 安装即可。
更新 image
docker commit containerId newImageName
这会帮助你将你刚刚配置好的容器打包为一个新的镜像。
Docker配置
需要配置端口,关闭安全特性,默认的 shell 为 tmux,挂在目录(方便 Host 和 container 传递文件)。 以下的-v ,-p 参数为参考。 -i 之后为镜像名字。 镜像名字后面跟的是容器初始化执行的命令。 命令建议在 cmd 下执行,不然会因为路径错误报错。
1 | 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 的配置较为繁琐,但是轻便和易扩展。