思想声明

这篇文章将指导你如何在任意已ROOT的安卓手机上安装并使用Kali Linux,以将你的手机转化为一台强大的便携式设备。

如果你想ROOT你的手机,对于低版本安卓设备,可以部分参考这篇文章。对于小米、Google等品牌的手机,可以部分参考这篇教程

本教程应只被用于教育和研究目的。任何违反所在地区法律的活动都不应该被进行。

介绍

能够在手机上使用Kali Linux是很多人梦寐以求的事情,因为这意味着,比如,随手就能使用Linux或随时随地就能发起攻击行动,而无需打开电脑。我们甚至可以将闲置的旧手机转变为攻击专用的便携式设备。

在网络上有众多为实现此目的的教程和方法。但是,他们大部分都存在各种各样的问题。其中有很多能够使你成功地安装Kali Linux,但却由于各种各样的原因,系统内的工具根本无法使用,仅有一“空壳”。

本教程将指导你安装一个大概率能够被实际使用的Kali Linux系统。

准备工作

为了开始我们的尝试,你需要确保你具备下列条件。

  • 一台已取得ROOT权限的安卓手机,其安卓版本在7或以上。
  • 良好的网络通信。

如图所示,你需要确保手机已经ROOT
如图所示,你需要确保手机已经ROOT

下载必要应用

我们需要使用一些应用帮助我们完成工作。我们需要安装

  • Termux。该软件运行在安卓上,功能是模拟一个Linux系统环境并提供了命令行界面。
  • AnLinux。该应用允许我们在Termux提供的Linux环境里模拟出一个Kali Linux系统。

这两款应用有多种下载渠道。对于Termux,你可以在开源应用市场F-Droid上下载到。除此之外,你还可以在GitHub上Termux的发布中下载到;对于AnLinux,你可以在F-Droid上下载到。

Github上,Termux的发布
Github上,Termux的发布

如果你决定从Github下载Termux,那么大概率你需要下载arm64-v8a的版本,因为现在的大部分手机都具有aarch64架构。如果你使用的是比较老旧的32位ARM架构手机,你则需要选择armeabi-v7a

如果上述网页你都由于某种原因无法访问,你可以从这里下载Termux,并从这里下载AnLinux。

安装必要应用

在下载了这两个应用的安装包后,我们安装这两个应用。

安装Termux

你一定不希望Termux,盛放你手机上全部Linux环境的容器,的行为受到限制,或在运行途中突然被系统因耗电问题而结束进程。这可能会导致模拟的Linux环境内出现不必要的问题。所以,在安装完Termux后,我们立刻允许了Termux应用的各项重要权限,并命令系统不要因耗电问题而结束其后台进程。
Termux安装完成
Termux安装完成

允许Termux的各项权限
允许Termux的各项权限
阻止省电策略结束进程
阻止省电策略结束进程

安装AnLinux

紧接着,我们安装AnLinux。
安装完成后的AnLinux图标
安装完成后的AnLinux图标

安装Kali Linux

接下来,我们可以开始配置环境并安装Kali Linux了。

开始使用Termux

我们打开Termux,并看到了其终端的欢迎页面。
Termux欢迎页面
Termux欢迎页面

这时,我们需要执行如下命令。

pkg upgrade

该命令告诉Termux获取最新的可用更新信息,并下载更新所有包。简言之,这将Termux内的所有程序更新到最新状态。

有时,人们可能在执行这条命令时遇到错误。这通常是由于源不可用或不可达。
升级命令遇到错误
升级命令遇到错误

我们可以尝试执行如下的命令解决问题。

termux-change-repo

该命令告诉Termux列出所有不同的源,并供我们选择。
Termux询问我们选择哪一个作为新源
Termux询问我们选择哪一个作为新源

我们选择一个新源,以使Termux尝试从这个新源获取包信息和下载包。然后,我们再次执行pkg upgrade

这次,命令成功地执行。
成功执行升级命令
成功执行升级命令

在执行途中,我们遇到一些询问我们是否同意更改Termux系统配置文件的提示。我们全部键入Y以同意更改。
同意更改配置文件
同意更改配置文件

至此,我们已经准备好在Termux上进行各种操作了。

配置Kali Linux

现在,让我们开始使用AnLinux在Termux里安装Kali Linux。首先,我们打开AnLinux。AnLinux仪表盘界面
AnLinux仪表盘界面

接着,我们点击选择以选择我们要安装的系统。AnLinux弹出了若干种选项。我们选择安装Kali Linux。选择一种系统
选择一种系统

在点击确定后,AnLinux弹出了如下界面。安装系统界面
安装系统界面

AnLinux让我们点击复制来复制它提供的一长串命令,并要求我们将这串命令粘贴到Termux中执行。这段命令将帮助我们安装Kali Linux。

pkg install wget openssl-tool proot -y && hash -r && wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/Installer/Kali/kali.sh && bash kali.sh

这事实上是下面若干条命令的连写。

pkg install wget openssl-tool proot -y
hash -r
wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/Installer/Kali/kali.sh
bash kali.sh

这段Shell脚本命令Termux先安装需要依赖的包,包括wget、openssl-tool和proot,并在安装过程中遇到任何需要用户键入的提示时都自动选择Y。紧接着,清空哈希表内的缓存。之后,去下载获取储存在Github上的一个名为kali.sh的文件。该文件能帮助我们自动完成kali的安装。最后,我们执行kali.sh

我们执行这段脚本。执行AnLinux提供的脚本
执行AnLinux提供的脚本

紧接着,我们就可以看到kali.sh自动开始下载Kali的基础文件系统(root file system)。我希望阅读这篇文章的你拥有比我还快的网速。

在下载完成后,kali.sh开始为我们解压基础文件系统。解压基础文件系统
解压基础文件系统

这可能需要一些时间,取决于不同手机的性能。

最后,完成解压后,kali.sh帮助我们布置好了环境,并提示我们现在可以通过执行./start-kali.sh来启动Kali Linux了。
安装完成
安装完成

启动Kali Linux

必须使用ROOT启动

非常遗憾地,我们不能够按照AnLinux的提示直接启动Kali。我们必须使用ROOT启动Kali。否则,Kali内安装的很多工具将无法正常工作。

为了以root启动Kali,我们需要安装一个名为tsu的包。我们执行如下命令。

pkg install tsu

紧接着,我们使用如下的命令让Termux获取ROOT权限。

tsu

这时,Termux应该请求ROOT权限。
Termux请求ROOT权限
Termux请求ROOT权限

我们永久赋予Termux ROOT权限。这时,我们应看到提示符从$变成了#。这表明Termux成功地使用了超级用户。

~ $ tsu
.../files/home #

为了验证,我们还可以查看当前的用户是否为root,以确定是否成功取得了ROOT权限。

.../files/home # whoami
root
.../files/home #

不同的设备情况可能有所不同——至少在我的设备上,切换为root用户后,当前目录没有变化。如果你发现切换后当前路径发生了变化,你可以执行下面的命令帮助你回到start-kali.sh所在的Termux普通用户家目录以找到该文件。

cd ~/..

之所以该命令有效,是因为普通用户家目录是超级用户家目录的上级目录。最后,我们执行start-kali.sh进入Kali。

./start-kali.sh

解决Autospawn锁错误

你可能在启动后看到了如下错误。
Autospawn锁错误
Autospawn锁错误

这是因为AnLinux试图使用一个名为Pulseaudio的程序以使Termux中的Kali能够播放声音。但是,AnLinux没有很好地使Pulseaudio能在ROOT下启动。这是一个bug。

为了解决这个bug,你需要一个诸如MT管理器的安卓文件资源管理器。我们需要手动编辑start-kali.sh中的内容来修复这个bug。

首先我们需要在文件管理器中找到start-kali.sh。该文件位于/data/data/com.termux/files/home。你可能需要赋予你的文件管理器超级权限以使它能够访问这个目录。
在文件管理器中找到目标文件
在文件管理器中找到目标文件

我们打开并编辑该文件。我们只需要注释掉原来的第3行,并在第4行后插入如下替代命令。

pulseaudio=" --start --system"

更改文件
更改文件

再次尝试使用ROOT启动Kali。错误输出消失。
成功正常启动
成功正常启动

如果你有兴趣查看关于该bug的更多讨论,你可以查看这个Github议题

开始使用Kali Linux

现在经过了复杂的步骤,你已经成功地在你的手机上安装了Kali Linux!现在,你可以使用它探索无限的可能了!

安装软件以测试能否正常使用

由于我们安装的是基础文件系统,所以系统内并没有安装任何工具。我们将更新Kali的所有包,并下载nmap来尝试能否正常使用。

我们进入Kali,然后使用下面的命令完全升级Kali。此次升级还将更新包依赖关系。

apt update && apt full-upgrade -y

之后,我们安装nmap。

apt install nmap

安装完成后,我们启动nmap。

nmap

这时,nmap自动打印了帮助页面。nmap帮助页面
nmap帮助页面

现在,我们用nmap随便扫描一个网络上的主机。这里,我们选择scanme.nmap.org
端口扫描
端口扫描

我们能够成功地进行TCP通信,说明网络一定没有问题!

探索无限可能

现在,你可以自由地使用Kali去探索无限可能了!下载你想要的工具,并按照你的意愿尽情使用吧!

卸载Kali Linux

为了以防万一,我必须提供卸载Kali的方法。你只需打开AnLinux,选择删除系统再选择Kali,复制其提供的命令并执行即可。

由于我们平时一直在超级权限下使用Kali,在普通权限下执行卸载命令可能会引发错误。所以,你只需要在tsu状态下执行AnLinux提供的命令即可。

tsu
wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/Uninstaller/Kali/UNI-kali.sh && bash UNI-kali.sh

删除系统页面
删除系统页面

为何ROOT?

权限深渊

你可能为为何一定要使用ROOT权限启动Kali而感到疑惑。如果你没有兴趣探索这个问题,而只是想愉快地使用Kali,请跳过这一部分。

我们有注意到,大部分在安卓手机上运行Linux方法失败的原因是因为权限不足。Linux系统能够正常地启动,但是一旦涉及诸如网络之类的操作时,一切行为都被安卓系统自动阻止。而这些方法又大多无法在ROOT下被使用,因为,例如,这些方法使用的程序被设计为只能通过普通用户运行,以至于即使拥有超级权限也无法解决问题。

虽然没有经过证实,但似乎在Google手机上没有这一问题。不同的手机品牌似乎在行为表现上存在区别。相关的行为还有,在一些Google手机上能够直接通过应用调用内置无线网卡进行无线攻击,但在小米设备上,即使具有相同的ROOT权限,也会出现各种问题。

对于权限问题更进一步的讨论,请参照这里

反其道而为之

如果我们故意在非ROOT状态下启动Kali并使用它会发生什么?

为了故意进行试验,我们可能需要重装Kali,以让所有东西恢复最初状态。因此,除非你乐意试验,否则我不建议你这么做。

然后,我们使用普通权限进入Kali,并更新所有包和依赖关系,并安装nmap。然后启动nmap以测试是否安装成功。

./start-kali.sh
apt update && apt full-upgrade -y
apt install nmap
nmap

仍然,我们尝试扫描scanme.nmap.org

nmap scanme.nmap.org

糟糕!一个错误发生了。原因是权限不足。
拒绝访问
拒绝访问

这至少在现象上验证了我们刚刚的说法。现在你应该能明白为什么我一直坚持要求使用ROOT权限启动Kali了。

扩展使用

现在你已经将你的手机变成了一台Kali Linux设备。也许你还有一台闲置的大屏iPad。你可以在Termux中开启SSH服务,并使用iPad远程连接到手机。这使操作命令行时变得舒服了许多。为了方便管理文件,你还可以使用SFTP服务对文件进行远程管理。

也许你正好缺一台服务器,又不想出钱购买。于是你打算使用你的闲置旧手机作为服务器。虽然它的性能可能不如一台x86_64设备,但是它的功率很小,即使放在家里24小时开机也不会对设备造成过大的伤害。

也许你喜欢使用Metasploit Framework进行渗透测试。现在,你立刻就可以在手机上使用Msf了。

需要注意的是,在Termux中模拟的Kali Linux可能在一些特性上与真实的Kali有区别,也不能完全替代真实的Kali。而且,模拟的Kali与你的手机架构相同。如果你想使用x86_64的Kali,你需要使用另一种方法。

祝你将想象力和无限可能发挥到极致。

Logo

更多推荐