mac使用docker版kali
一般使用kali都是通过pd虚拟机或者vm虚拟机,但是利用虚拟机使用kali还是有点过度占用资源了,有时候我们根本不需要使用图形化界面运行kali,只需要一个终端就行了。最精简的kali其实就是使用docker来部署kali
1、下载安装docker
https://docs.docker.com/desktop/install/mac-install/
这是docker的官方下载地址
下载docker desktop即可
具体安装流程不赘述了
注:本文用的docke desktop版本为3.5.2.18,非最新版
2、下载kali镜像
https://hub.docker.com/r/kalilinux/kali-rolling
这是kali的镜像
可以看到右边有一条命令,直接复制这个命令到本机的终端运行,即可自动下载kali镜像
1 |
|
3、运行kali并配置
使用以下命令即可运行kali
1 |
|
因为这个kali镜像只有一百多兆,所以什么软件都是没有安装的,甚至vim和vi都没有,所以我们需要安装这些软件
因为网络问题,我们先需要配置一下国内源,但是连vi和vim都没有,如何修改源?
输入以下命令,将原来的源重命名为sources.list.bak
1 |
|
然后添加一个清华源到新的souces.list
1 |
|
然后我们查看一下souces.list
可以看到这里面都是清华源了
先更新一下源
1 |
|
然后我们就可以安装vim这些软件了
1 |
|
接下来我们需要安装kali的工具,因为现在的镜像连vim都没有,怎么会有kali的那些工具
要安装kali工具需要更换源,因为我们刚刚的清华源其实看网址就知道是debian的,不是kali的,所以要换源成kali的
但是这里有个坑,就是如果直接换成kali的源,apt update的时候会报错:
The following signatures were invalid:EXPKEYSIG ED444FF07D8D0BF6 KaliLinuxRepository<devel@kali.org>
这个报错是签名问题,所以我们需要先解决一下签名
先安装一下wget
1 |
|
然后输入如下命令下载签名
1 |
|

接着安装签名
1 |
|
注意!安装签名可能会失败,他会提示你有三个模块没有安装,需要安装其中任一模块,我试了下,前两个模块都安装不了,只能安装第三个,所以就安装一下第三个模块
1 |
|

再安装签名
1 |
|

看到OK说明签名安装成功,然后我们就可以换kali的源了
1 |
|
把下面这两个阿里的kali源加进去
1 |
|

我这里把之前清华源的debian注释掉了,万一以后要用到直接把注释符去掉就能用了
接着更新一下源
1 |
|

可以看到,成功更新了源,接着就可以安装kali的工具了
我们先查看一下有哪几种工具包
1 |
|

刚开始我想直接安装kali-linux-everything这个工具包,因为包含了所有工具,但是我安装的时候它提示有27个G,太大了,放弃了

还是安装kali-linux-default吧,以后有什么需要的工具再自行安装
1 |
|

不过这个也不小,也有9个G了,安装了再说
安装过程中可能要输入y或者回车,一顿操作即可
安装可能会碰到这个
让我们选择控制台的字符集,我们当然选择27.UTF-8
然后又要选
Please choose the character set that should be supported by the console font.
也不知道哪个好,直接选23,就是让他猜我们想要什么,其实就是用默认
又有要选的
这个是Apache的两种运行模式,如果不想占用太多资源,就选1即可

终于装完了
测试一下常用的工具都在不在



sqlmap正常,msf正常,nmap正常,那就没什么大问题了
4、基本操作
关闭kali
1 |
|
打开kali
1 |
|
打开终端
1 |
|
退出终端
1 |
|

查看所有容器
1 |
|
如果想要再开一个命令窗口,就这样
1 |
|
5、安装conda环境
为了更好的管理python环境,还是建议装一下这个conda
我在home下新建了tools文件夹用来保存各种工具,再在tools文件夹内新建了conda文件夹,然后在该文件夹下载conda
1 |
|

1 |
|
我们需要给这个文件权限,然后再安装,安装过程要么回车,要么yes就可以了
1 |
|
注意!一定要输入sudo,不然的话conda安装过程中的初始化无法完成,会报错如下:
Miniconda3-latest-Linux-x86_64.sh: 467: SHELL: parameter not set

正常安装结束就会提示安装成功,如下:

然后现在直接输入conda看看

发现不行,应该是环境变量没配置
进bashrc看看配置
1 |
|

发现安装的时候自动配好了,那应该就是没有刷新bashrc,输入如下命令刷新一下
1 |
|

可以看到刷新后,命令行前面直接带了base环境,说明完成了
这个base环境不好,先退出,我们重新创建一个环境
1 |
|

创建一个python3.8的环境,命名为py38
1 |
|

创建完成后,输入以下命令进入环境
1 |
|

然后就可以pip安装各种包在这个环境里面了,如果出了什么问题,直接把这个环境删了,重新建一个环境
删除环境的命令如下
1 |
|
注意:删除环境必须要先退出当前环境才可以
如果要退出环境,就输入
1 |
|

这里补充一下,因为conda安装好了,最开始下载的conda安装文件可以删除了
1 |
|

直接把整个conda文件夹删除即可
6、性能测试
实测使用docker运行kali,cpu占用极少,ram占用3G,远比虚拟机运行好得多
当然这只是默认的配置,可以在docker desktop的设置里面调整

再看看占用的存储空间
安装完7个多G的kali包之后,总共占用10.6G,可以说是非常省空间了
7、优化
1)安装oh-my-zsh
为了让命令行用的更顺手,需要做一些优化,首先是使用zsh代替默认的bash
前面提到过,可以使用如下命令进入zsh终端
1 |
|
这样打开的kali就是用zsh终端的
然后我们输入如下命令安装oh-my-zsh
1 |
|
这个工具有很多的主题和插件,十分强大

安装完成后,可以看到我们的命令提示符都变了,直接显示当前目录名在最前面,说明安装完成了
2)修改oh-my-zsh主题
但是现在这个命令提示符太丑了,我们需要换一个主题
推荐agnoster主题,是默认自带的,不需要下载
但是使用这个主题之前,需要安装一个特殊字体,不然使用这个主题之后有些字体会乱码
1 |
|
按照如上命令敲一下,即可完成这个特殊字体的下载安装

接下来就设置一下agnoster主题
进入到zshrc里面
1 |
|
然后改一下这里

注意,还需要在底部添加如下内容
1 |
|

如果不加这个的话,会提示:(anon):12: character not in range

添加完之后刷新一下
1 |
|
我这边刷新一次后还是提示上面这个内容,我就再刷新了一次,就成功了

可以看到现在命令提示符显示了当前用户名,当前目录,非常清晰了
现在又出现了一个问题,我退出docker之后重新进来,新主题并没有应用,命令提示符还是这么丑

我只有再刷新一遍zshrc才行,这个问题我网上查了一下,解决方法是在zshrc里面添加一个source ~/.zshrc
注意!是加在/etc/zsh/zshrc文件里面,而不是~/.zshrc里面!他们是两个不同的文件


现在重新进入docker的时候,就会正常使用新主题了

但是又发现刚刚那个报错(anon):12: character not in range好像并没有解决,每次进入docker都会报错一次,虽然好像不影响主题的使用了,但是有个报错在肯定不行,我又查了半天,终于找到解决办法
1 |
|
编辑这个文件,在里面找到如下两条,然后把这两条前面的注释去掉


改好后刷新一下语言环境
1 |
|

然后退出重进一下

终于完美了
3)安装oh-my-zsh插件
接下来开始安装oh-my-zsh里面的插件,其实这才是搞zsh的最终目的
最重要的就是下面两个插件,一个是语法高亮,一个是自动补全
需要把这两个插件下载到本地这个目录里面
1 |
|

现在这个目录里面只有一个example文件夹
然后下载这两个插件到这个文件夹
1 |
|
1 |
|

然后需要应用这两个插件
1 |
|

这里有个插件设置,目前只有git一个插件,我们把刚刚两个插件的名字加进去

然后刷新一下zshrc即可
1 |
|
然后测试一下
输入gi之后,历史输入过的命令自动显示出来了,并且因为gi是非法命令所以标红色,语法高亮也没问题
4)解决使用zsh后conda无法使用的问题

本以为一切完成了,但是突然发现conda又用不了了,应该是conda写在bash的环境变量里,现在是zsh,它们互相隔离不互通
直接查看~/.bashrc文件
1 |
|
把这段复制出来

然后编辑zshrc
1 |
|
把刚刚复制的粘贴到末尾

然后刷新一下zshrc
1 |
|

自动就进入base环境了
5)解决每次打开终端就默认进入conda的base环境
当然我们肯定不想每次打开都自动进入base环境,一个原因是我们需要用的是自己创建的py38环境,另一个原因是我们不是每次都需要用到python,没必要每次都自动开conda虚拟环境。所以我们就需要修改一下,让他默认不启动conda
先看一下conda的配置文件
1 |
|

这里默认为True,所以会自动打开base环境
一条命令直接改一下
1 |
|

现在不会自动进入了
8、与docker中的kali进行文件互传
利用cp命令即可
1)宿主机文件复制到docker
1 |
|

语法格式如下:
1 |
|
2)docker文件复制到宿主机
1 |
|

语法格式如下:
1 |
|
9、将docker容器打包成镜像保存
我们好不容易经过上面步骤做好了一个docker容器,肯定担心一不小心把环境什么的搞砸了,又要重新搭一遍,所以就需要把它打包成镜像,这样的话,就算我们这个kali容器出问题了,我们直接删除,再用镜像做个容器出来,照样用。
打包命令也很简单
1 |
|
解释一下:
-a指定作者
然后后面跟我们容器的id
最后是镜像名mykali和标签v1

可以看到现在多了一个镜像,并且这个镜像的大小和容器大小一样,说明包含了容器里面的全部内容
如果我们想把这个镜像分享给别人,那就打包成压缩包即可
1 |
|

这样mykali.tar这个文件就被保存到当前目录下了
之后如果要把压缩包导入到镜像,只需执行如下命令:
1 |
|
如果想有更好的压缩效果,需要经常传输,那就再压缩成gz包更好
1 |
|

可以看到压缩效果明显,将近省了三分之二的空间

如果要解压,就用下面这个命令
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!