-
-
Android抓包,涵盖14,15
-
发表于: 2024-8-28 21:25 4134
-
Android抓包无非就是三种情况:
1.未校验:直接放证书就能抓
2.单向认证:通过hook技术,绕过sslping
3.双相认证:逆向分析,找证书及密钥
对于前期工作,导入证书信任,可参考下面文章,未作认证校验情况下均可以解决
常规抓包,Android14可用
Android14已经将证书位置更改为/apex下面,正常使用chmod 644将证书push到system下面已经
不再好用,可以尝试将权限更改为777,一般情况下都是可以抓到数据包的。
该操作一般可能需要具备root和remount权限,能够将整数永久存储在system下面,临时存储的
话,可以参考我这篇文章
上述抓包机制,终归是取巧,并非能够真实导入到系统袭人目录下。下面方法,临时创建目录将证书映射到apex下面,不过该方法不是永久的导入到该目录,每次重启设备需要重新导入,可以做成脚本,方便使用。该方法能够将整数添加到设备的系统信任证书根目录下,真正实现系统信任机制
1.创建cmd命令方便将整数以及脚本导入到设备中
复制代码 隐藏代码
eg:
set_ca_android14.sh脚本
其核心原理就是将整数注入到apex下面,具体代码理解大家可以自行搜索
准备好两个文件之后运行第一个cmd文件就行,结果:
证书注射成功,查看设备系统信任证书目录
这个是fiddler的证书,别的不在列举
3.1tcpdump+wireshark
可根据应用包名,链接adb之后,使用ps命令获取该应用的进程id
跟据应用进程id,使用netstat得该应用使用的tcp端口号
将pacp文件拖入wireshark进行分析,具体加解密机制,可参考此文章
虽然显示目前仅支持13及一下,但是可以通过2中脚本将小黄鸟证书导入到设备中,绕过设备对于根目录证书新人的机制,进行抓包,并且可以进行筛选指定监听的进程
好用,还可以多端互动,设备和pc端进行联动,蛮好用的·,github链接:
以上抓包足以满足大部分抓包需求,对于做了证书校验的,如果是单向认证或者伪双相认证,均可以通过hook技术,绕过sslping机制进行抓包,操作并没有什么难度;针对双向认证,一般就需要逆向基础,去反编译app找证书及其通讯的密钥,目前本人水平仅限于java层逆向,正在尝试native层学习so加固相关知识,后续有能力再补充双相认证机制绕过。hook绕过sslping回头整理一下发出来。
其实测试如果对于android版本并没有要求的话,完全可以采用低版本或者模拟器进行抓包,本人是工作所需,所测试任务均指定需要android14和android15,紧跟android版本,所以进行各种尝试,对于版本没有要求的完全可以采用低版本进行,方便还好用
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 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
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
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
/
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"
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
/
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
/
赞赏
- Android抓包,涵盖14,15 4135