引言:理解NetHunter备份与恢复的重要性

NetHunter是Kali Linux为Android设备定制的移动安全测试平台,它将强大的渗透测试工具集成到移动设备中。由于NetHunter系统涉及复杂的配置、自定义内核和大量安全工具,一旦系统损坏或数据丢失,重新配置将耗费大量时间。因此,掌握完整的备份与恢复策略至关重要。

核心价值:通过本指南,您将学会如何创建完整的系统备份,包括系统分区、用户数据、应用程序和配置文件,确保在系统崩溃、误操作或硬件故障时能够快速恢复,避免数据丢失和时间浪费。

第一部分:备份前的准备工作

1.1 确认设备兼容性和NetHunter版本

在开始备份前,必须确认您的设备支持NetHunter并了解当前安装版本。不同版本的NetHunter可能使用不同的分区结构。

# 在NetHunter终端中检查系统信息
cat /etc/os-release
uname -a
# 查看NetHunter特定版本信息
cat /proc/version

关键检查点:

  • 设备型号(如OnePlus 6T、Pixel系列等)
  • Android版本(NetHunter通常基于特定Android版本)
  • NetHunter版本(kali-nethunter-2023.2等)
  • 是否使用自定义内核

1.2 确保设备已Root并安装TWRP恢复

NetHunter需要Root权限和自定义恢复环境(推荐TWRP)才能进行完整备份。

# 检查Root权限
su -c "whoami"
# 应该返回"root"

# 检查TWRP是否安装(重启到recovery模式验证)
adb reboot recovery

准备工作清单:

  • ✅ 设备已解锁Bootloader
  • ✅ TWRP已刷入并正常工作
  • ✅ 已安装SuperSU或Magisk获取Root
  • ✅ 至少有8GB可用存储空间用于备份
  • ✅ 电池电量充足(建议>50%)

1.3 识别关键分区

NetHunter系统涉及多个关键分区,了解这些分区是制定备份策略的基础。

分区名称 作用 备份优先级
/boot 内核和ramdisk 高
/system 系统文件和NetHunter工具 高
/data 用户数据、应用和配置 极高
/cache 缓存文件 中
/recovery 恢复模式镜像 中
/efs IMEI和基带配置(重要!) 极高

查看分区表命令:

# 在TWRP中查看分区信息
cat /proc/emmc  # 部分设备
# 或者
ls -l /dev/block/platform/*/by-name/

第二部分:使用TWRP进行完整系统备份

2.1 TWRP备份基础操作

TWRP(Team Win Recovery Project)是NetHunter备份的首选工具,提供图形化界面和强大的命令行支持。

2.1.1 图形界面备份步骤

  1. 重启到TWRP:

    adb reboot recovery
    # 或者使用硬件按键组合(通常是音量上+电源键)
    
  2. 进入TWRP备份界面:

    • 点击”Backup”(备份)
    • 选择需要备份的分区
    • 选择存储位置(内部存储或SD卡)
    • 滑动确认开始备份

2.1.2 命令行备份(推荐用于自动化)

TWRP提供了强大的命令行工具twrp,适合脚本化操作。

# 基本备份命令格式
twrp backup <分区列表> [选项]

# 完整备份示例(包括所有关键分区)
twrp backup SDBOOT SDDATA SDSYSTEM SDCACHE SDRECOVERY

# 参数说明:
# SDBOOT: /boot分区
# SDDATA: /data分区
# SDSYSTEM: /system分区
# SDCACHE: /cache分区
# SDRECOVERY: /recovery分区

完整备份脚本示例:

#!/system/bin/sh
# NetHunter完整备份脚本
# 保存为:/sdcard/nethunter_backup.sh

# 设置备份路径
BACKUP_DIR="/sdcard/nethunter_backups/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"

# 执行备份
echo "开始备份NetHunter系统..."
twrp backup SDBOOT SDDATA SDSYSTEM SDCACHE SDRECOVERY SDEFS

# 检查备份是否成功
if [ $? -eq 0 ]; then
    echo "备份成功完成!"
    echo "备份文件位于:$BACKUP_DIR"
    # 创建备份信息文件
    cat > "$BACKUP_DIR/backup_info.txt" <<EOF
设备型号: $(getprop ro.product.model)
Android版本: $(getprop ro.build.version.release)
NetHunter版本: $(cat /etc/os-release | grep PRETTY_NAME)
备份时间: $(date)
备份大小: $(du -sh $BACKUP_DIR | cut -f1)
EOF
else
    echo "备份失败!请检查存储空间和权限。"
    exit 1
fi

2.2 备份存储管理

2.2.1 备份文件结构

TWRP备份会生成以下文件:

  • nandroid.md5:校验文件
  • boot.emmc.win:boot分区镜像
  • data.win:data分区镜像(可能分卷)
  • system.win:system分区镜像
  • recovery.emmc.win:recovery分区镜像

2.2.2 备份空间优化

# 查看备份大小
du -sh /sdcard/TWRP/BACKUPS/*/

# 删除旧备份(保留最近3个)
cd /sdcard/TWRP/BACKUPS/*/ && ls -t | tail -n +4 | xargs rm -rf

# 使用压缩备份(TWRP支持)
twrp backup --compress SDBOOT SDDATA SDSYSTEM

第三部分:高级备份策略

3.1 应用程序和数据备份

除了系统分区,NetHunter用户通常安装了大量渗透测试工具和自定义应用,这些也需要单独备份。

3.1.1 使用ADB备份应用

# 备份所有用户安装的应用(包括数据)
adb backup -apk -shared -all -f nethunter_apps.ab

# 恢复应用备份
adb restore nethunter_apps.ab

3.1.2 使用Titanium Backup(需要Root)

# 使用Titanium Backup命令行版批量备份
# 首先安装Titanium Backup并授予Root权限

# 备份所有用户应用
su -c "tb -b"

# 备份特定应用(如Termux)
su -c "tb -b com.termux"

# 备份系统应用(谨慎操作)
su -c "tb -b --system"

3.1.3 备份NetHunter特定配置

NetHunter有独特的配置需要单独备份:

# 备份NetHunter配置文件
mkdir -p /sdcard/nethunter_config_backup

# 复制关键配置
cp -r /data/data/com.offsec.nethunter/files/* /sdcard/nethunter_config_backup/
cp /etc/kali-arm* /sdcard/nethunter_config_backup/
cp /etc/apt/sources.list.d/kali* /sdcard/nethunter_config_backup/

# 备份SSH密钥(如果配置了远程访问)
cp -r ~/.ssh /sdcard/nethunter_config_backup/

# 备份自定义脚本和工具
cp -r /usr/local/bin/* /sdcard/nethunter_config_backup/

3.2 自动化备份方案

创建定期自动备份脚本,使用cron定时任务。

# 创建自动备份脚本
cat > /system/etc/init.d/99nethunter_backup <<'EOF'
#!/system/bin/sh
# NetHunter自动备份脚本

# 每周日凌晨2点执行备份
# 需要安装cron并设置定时任务

BACKUP_DIR="/sdcard/nethunter_backups/auto_$(date +%Y%m%d)"
MIN_BACKUPS=3  # 保留最少备份数量

# 检查是否为Wi-Fi连接(避免移动数据消耗)
if [ "$(dumpsys connectivity | grep -c 'TYPE_WIFI')" -eq 0 ]; then
    echo "未连接Wi-Fi,跳过备份"
    exit 0
fi

# 执行备份
twrp backup SDBOOT SDDATA SDSYSTEM SDCACHE SDRECOVERY

# 清理旧备份
cd /sdcard/nethunter_backups/
ls -t | tail -n +$(($MIN_BACKUPS + 1)) | xargs rm -rf

# 发送通知(需要安装通知工具)
echo "NetHunter备份完成" | su -c "am broadcast -a android.intent.action.NOTIFY"
EOF

# 设置执行权限
chmod +x /system/etc/init.d/99nethunter_backup

# 安装cron并设置定时任务
apt update && apt install cron
crontab -e
# 添加:0 2 * * 0 /system/etc/init.d/99nethunter_backup

第四部分:系统恢复操作

4.1 TWRP恢复基础

4.1.1 图形界面恢复

  1. 重启到TWRP
  2. 点击”Restore”
  3. 选择备份文件
  4. 选择要恢复的分区
  5. 滑动确认

4.1.2 命令行恢复

# 恢复所有分区
twrp restore SDBOOT SDDATA SDSYSTEM SDCACHE SDRECOVERY

# 恢复特定分区(如只恢复system)
twrp restore SDSYSTEM

# 指定备份文件路径
twrp restore /sdcard/TWRP/BACKUPS/20240101/boot.emmc.win

4.2 常见恢复场景

4.2.1 系统无法启动但TWRP可用

# 1. 通过ADB连接
adb devices

# 2. 重启到TWRP
adb reboot recovery

# 3. 在TWRP中执行恢复命令
twrp restore SDBOOT SDSYSTEM

# 4. 如果data分区损坏,恢复data
twrp restore SDDATA

# 5. 重启系统
reboot

4.2.2 完全变砖(Bootloop)恢复

如果设备无法进入TWRP,需要使用Fastboot模式:

# 1. 进入Fastboot模式(按键组合或adb)
adb reboot bootloader

# 2. 刷入TWRP
fastboot flash recovery twrp.img

# 3. 重启到recovery
fastboot reboot recovery

# 4. 现在可以执行TWRP恢复
twrp restore SDBOOT SDSYSTEM SDDATA

4.2.3 数据分区损坏恢复

当data分区损坏但system正常时:

# 1. 挂载system为读写
mount -o rw,remount /system

# 2. 从备份恢复data分区
twrp restore SDDATA

# 3. 重新挂载system为只读
mount -o ro,remount /system

# 4. 检查文件系统
fsck /dev/block/bootdevice/by-name/data

4.3 恢复后配置

恢复系统后,需要进行一些后处理:

# 1. 重新挂载分区
mount -a

# 2. 修复权限
chmod 755 /system/bin/su
chown root:root /system/bin/su

# 1. 重新安装NetHunter应用(如果丢失)
dpkg -i /sdcard/nethunter_config_backup/nethunter.apk

# 2. 恢复自定义脚本
cp -r /sdcard/nethunter_config_backup/usr/local/bin/* /usr/local/bin/
chmod +x /usr/local/bin/*

# 3. 恢复SSH配置
cp -r /sdcard/nethunter_config_backup/.ssh ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

# 4. 更新NetHunter包
apt update && apt upgrade

第五部分:高级技巧与故障排除

5.1 备份验证

确保备份文件完整可用:

# 验证TWRP备份完整性
cd /sdcard/TWRP/BACKUPS/*/20240101/
md5sum -c nandroid.md5

# 手动验证关键分区
twrp verifybackup /sdcard/TWRP/BACKUPS/*/20240101/

5.2 增量备份策略

对于频繁更新的系统,可以使用增量备份减少存储占用:

#!/system/bin/sh
# 增量备份脚本

# 创建基础备份(每月一次)
BASE_BACKUP="/sdcard/nethunter_base_$(date +%Y%m).img"
if [ ! -f "$BASE_BACKUP" ]; then
    dd if=/dev/block/bootdevice/by-name/system of="$BASE_BACKUP"
fi

# 创建差异备份(每周)
DIFF_BACKUP="/sdcard/nethunter_diff_$(date +%Y%m%d).img"
# 使用rsync记录变化(需要安装rsync)
rsync -av --delete /system/ /sdcard/system_snapshot/

5.3 备份存储加密

保护备份数据安全:

# 使用OpenSSL加密备份文件
openssl enc -aes-256-cbc -salt -in /sdcard/TWRP/BACKUPS/*/boot.emmc.win -out /sdcard/backup_encrypted.img -k "your_strong_password"

# 解密备份
openssl enc -d -aes-256-cbc -in /sdcard/backup_encrypted.img -out /sdcard/boot.emmc.win -k "your_strong_password"

5.4 常见问题解决

问题1:TWRP备份失败,提示”空间不足”

解决方案:

# 清理临时文件
rm -rf /cache/*
rm -rf /data/local/tmp/*

# 检查存储空间
df -h /sdcard

# 使用外部SD卡备份
twrp backup SDBOOT SDDATA SDSYSTEM --storage /external_sd

问题2:恢复后NetHunter应用无法打开

解决方案:

# 重新安装NetHunter应用
dpkg -r nethunter-app
dpkg -i /sdcard/nethunter_config_backup/nethunter-app.deb

# 重新配置权限
su -c "pm grant com.offsec.nethunter android.permission.READ_LOGS"
su -c "pm grant com.offsec.nethunter android.permission.WRITE_EXTERNAL_STORAGE"

问题3:恢复后Wi-Fi监控模式失效

解决方案:

# 重新刷入支持监控模式的内核
cd /sdcard/kernels/
fastboot boot nethunter-kernel.img

# 或者在TWRP中刷入
twrp install /sdcard/kernels/nethunter-kernel.zip

第六部分:最佳实践与安全建议

6.1 备份存储策略

3-2-1备份法则:

  • 3份备份副本
  • 2种不同存储介质(如内部存储+外部SD卡)
  • 1份异地备份(如云存储)
# 示例:创建多份备份
# 1. 内部存储
twrp backup SDBOOT SDDATA SDSYSTEM --storage /sdcard

# 2. 外部SD卡
twrp backup SDBOOT SDDATA SDSYSTEM --storage /external_sd

# 3. 通过ADB传输到电脑
adb pull /sdcard/TWRP/BACKUPS/ /path/to/pc/backup/

6.2 备份频率建议

系统状态 备份频率 保留数量
日常使用 每周一次 最近4个
频繁测试 每3天一次 最近6个
系统更新前 立即备份 保留到更新后
重大配置后 立即备份 保留到下次配置

6.3 安全注意事项

  1. 加密备份:备份包含敏感渗透测试工具和配置,必须加密存储
  2. 权限管理:确保备份文件仅Root用户可读
  3. 验证备份:定期测试恢复流程,确保备份有效
  4. 文档记录:记录备份时间、内容和恢复步骤
# 设置备份文件权限
chmod 600 /sdcard/TWRP/BACKUPS/*/*
chown root:root /sdcard/TWRP/BACKUPS/*/*

第七部分:实战案例

案例1:系统升级导致无法启动

场景:用户尝试升级NetHunter到新版本,但升级失败导致Bootloop。

解决方案:

# 1. 进入TWRP
adb reboot recovery

# 2. 恢复boot和system分区
twrp restore SDBOOT SDSYSTEM

# 3. 如果仍然失败,恢复data分区
twrp restore SDDATA

# 4. 重启系统
reboot

# 5. 重新升级NetHunter
apt update && apt upgrade

案例2:误删除关键系统文件

场景:用户在清理系统时误删了/usr/bin/metasploit-framework。

解决方案:

# 1. 不需要完整恢复,只恢复system分区
twrp restore SDSYSTEM

# 2. 或者单独恢复被删除的文件
# 从备份中提取
cd /sdcard/TWRP/BACKUPS/*/20240101/
mkdir /tmp/system_restore
cd /tmp/system_restore
tar -xzf /sdcard/TWRP/BACKUPS/*/20240101/system.win
cp usr/bin/metasploit-framework /usr/bin/

案例3:数据分区损坏导致应用数据丢失

场景:data分区损坏,但system正常,需要恢复应用数据。

解决方案:

# 1. 只恢复data分区
twrp restore SDDATA

# 2. 重新挂载system
mount -o rw,remount /system

# 3. 修复应用权限
su -c "pm reset-permissions"

# 4. 重新配置NetHunter应用
su -c "am start -n com.offsec.nethunter/.MainActivity"

结论

NetHunter系统的备份与恢复是保障移动安全测试环境稳定性的关键。通过本指南,您已经掌握了从基础到高级的完整备份策略,包括:

  • 系统级备份:使用TWRP进行完整系统镜像备份
  • 应用级备份:保护应用程序和数据
  • 自动化方案:设置定期自动备份
  • 恢复策略:应对各种故障场景
  • 安全最佳实践:加密、验证和存储管理

关键要点回顾:

  1. 定期备份:至少每周一次完整备份
  2. 多重存储:使用内部存储、外部SD卡和电脑三重备份
  3. 验证机制:定期测试备份可恢复性
  4. 安全加密:保护备份数据不被泄露
  5. 文档记录:详细记录备份和恢复步骤

通过实施这些策略,您可以最大限度地降低数据丢失风险,确保NetHunter环境的稳定性和可恢复性。记住,没有验证的备份等于没有备份,务必定期测试恢复流程。


附录:快速参考命令

# 完整备份
twrp backup SDBOOT SDDATA SDSYSTEM SDCACHE SDRECOVERY

# 完整恢复
twrp restore SDBOOT SDDATA SDSYSTEM SDCACHE SDRECOVERY

# 验证备份
twrp verifybackup /sdcard/TWRP/BACKUPS/*/*/

# 查看备份信息
ls -lh /sdcard/TWRP/BACKUPS/*/*/

相关资源: