Android抓包的三种情况及前期导入证书信任的操作方法

抓包看似步骤繁多,但实际上蕴含了许多实用的方法。下面,我会逐一为大家详细讲解抓包过程中的各个重要环。

抓包情况分类

抓包操作一般分为三种情况。若未经过验证,出示证书便可直接抓包,过程相当简单。对于单方面认证,我们可以借助hook技术来绕过限制。至于双方面认证,则需要通过逆向分析来辨别证书与密钥。这三种情形几乎囊括了所有抓包场景,大家需清楚每种情况的处理方式。

常规抓包操作

进行常规的抓包流程,需将证书导入至系统。以往,证书是存放在 //etc// 目录之内的,然而,现在的操作是将证书存放在 /apex 文件夹里,同时,还需将此文件夹的权限调整为 777。通常情况下,这样做可以顺利抓取数据包。但需留意,执行此步骤可能需要 root 权限,以确保证书能够被长期保留。如果只是临时存储,可以查阅相应的操作方法。

临时创建映射

常规方法或许能找到捷径,但并不能真正把证书存入系统目录中。我们可以先临时创建一个目录,把证书映射到apex下面。虽然这种方法不是永久的导入方式,每次系统重启后还得重新导入,但通过编写脚本,使用起来还是挺方便的。这样操作后,证书就能被加入到设备系统的信任证书根目录中,真正实现系统的信任机制。

adb root
adb push set_ca_android14.sh脚本位置 /data/local/tmp/
adb shell chmod 777 /data/local/tmp/set_ca_android14.sh
adb push 工具证书位置 /data/local/tmp/
adb shell /data/local/tmp/set_ca_android14.sh
pause

创建命令与脚本

adb root
adb push E:set_ca_android14.sh /data/local/tmp/
adb shell chmod 777 /data/local/tmp/set_ca_android14.sh
adb push E:9a5ba575.0 /data/local/tmp/
adb shell /data/local/tmp/set_ca_android14.sh
pause

为了方便将证书和脚本导入设备,我们特别设计了相应的命令。这个命令文件的核心作用是将证书嵌入到apex目录中,具体的代码实现细大家可以自行搜索了解。准备好这两个文件后,运行第一个命令文件,就能完成证书的注入。随后,在设备系统信任证书目录中,大家就能看到注入后的效果了。


mkdir -p -m 700 /data/local/tmp/tmp-ca-copy
cp /apex/com.android.conscrypt/cacerts/* /data/local/tmp/tmp-ca-copy/
mount -t tmpfs tmpfs /system/etc/security/cacerts
mv /data/local/tmp/tmp-ca-copy/* /system/etc/security/cacerts/

图片[1]-Android抓包的三种情况及前期导入证书信任的操作方法-东山笔记

cp /data/local/tmp/269953fb.0 /system/etc/security/cacerts/ cp /data/local/tmp/9a5ba575.0 /system/etc/security/cacerts/ cp /data/local/tmp/6e39a726.0 /system/etc/security/cacerts/ chown root:root /system/etc/security/cacerts/* chmod 644 /system/etc/security/cacerts/* chcon u:object_r:system_file:s0 /system/etc/security/cacerts/* ZYGOTE_PID=$(pidof zygote || true) ZYGOTE64_PID=$(pidof zygote64 || true) for Z_PID in "$ZYGOTE_PID" "$ZYGOTE64_PID"; do     if [ -n "$Z_PID" ]; then         nsenter --mount=/proc/$Z_PID/ns/mnt --             /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts     fi done APP_PIDS=$(     echo "$ZYGOTE_PID $ZYGOTE64_PID" |     xargs -n1 ps -o 'PID' -P |     grep -v PID ) for PID in $APP_PIDS; do     nsenter --mount=/proc/$PID/ns/mnt --         /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts & done wait # Launched in parallel - wait for completion here echo "System certificate injected"

获取关键信息分析

依据应用包的名称,我们能够连接到ADB,随后运用ps指令查询应用进程的标识码。获取到进程标识码后,我们便可以锁定应用所采用的TCP端口号。将pacp文件拖拽至分析软件中,可以深入探究其加密及解密的过程,相关信息可参阅相关文献。另外,借助特定的脚本,我们还可以将小黄鸟证书导入至设备中,以此方式绕过信任验证,进行数据包的捕获。同时,我们能够挑选出特定的监听进程,并且,这样能够实现不同设备间的方便交流。

抓包方法总结

这些抓包技术可以满足大部分需求。对于那些已经完成证书验证的单向或假双向认证,我们可以利用hook技术来绕过。至于双向认证,就需要进行证书和密钥的逆向搜索。若没有特定的版本限制,使用较低版本或模拟器来抓包既简便又高效。那么,在抓包操作中,大家更偏爱哪种方法?

© 版权声明
THE END
喜欢就支持一下吧
分享