我希望分析使用证书锁定的Android APK发送的SSL的未加密数据。

此可疑APK用于配置无线设备。

我需要确定两件事:


首先,APK与设备建立的WPA密钥
,然后是HTTPS API调用的顺序用来配置APK的设备。

配置过程是:


从公司网站下载混淆的APK
创建帐户在其服务器上,
然后APK用一个私有WPA密钥连接到设备SSID
有一个本地.so可以对密钥进行一些计算

HTTPS会话Internet服务器使用固定证书,尝试代理导致证书错误。

理想情况下,我想使用仿真环境,并挂接库调用(类似于“ Droidbox”的作用) ),但找不到最新版本。

#1 楼

iSEC合作伙伴的Android SSL TrustKiller利用Cydia基板可以提供的钩子来击败证书固定。

评论


如果您分享有关如何使它工作的详细信息,我将永远感激不已?我已经尝试在Genymotion虚拟机和默认的Android虚拟机上使用带有Cydia衬底的Android SSL TrustKiller,并且还尝试了不同版本的android,甚至是我的实体电话,但我仍然只能使用来自不使用证书固定的应用的流量。请分享您正在使用什么设置?

– 43.52.4D。
16年2月9日在1:46

#2 楼

(我在Stack Overflow上给出的答案的副本)

您可以尝试将代码注入Android应用程序以嗅探和转储SSL流量。看一看https://github.com/5alt/ssl_logger(5alt的fork与Android一起使用)。请注意,您需要使用root。

这通过在OpenSSL中挂钩函数来起作用,以便可以在加密之前/解密之后转储原始流量。

您必须安装Frida Android服务器:https://www.frida.re/docs/android/


通过USB调试连接手机
从https:/下载frida-server以获得正确的CPU架构/github.com/frida/frida/releases


要知道您的设备正在使用哪种CPU架构(以获取正确的下载地址),可以在电话上运行getprop ro.product.cpu.abi


以根用户身份推送到Android的/data/local/tmp,使其成为可执行文件(chmod 755)。
在电话上运行/data/local/tmp/frida-server
在计算机上,使用frida-tools安装pip install --user frida-tools。 (必须是Python2,而不是Python3!)
通过在连接电话的计算机上运行frida-ps -U,列出进程以查看一切是否正常
转发Frida的端口:adb forward tcp:27042 tcp:27042; adb forward tcp:27043 tcp:27043

获取ssl_logger在计算机上
在计算机上运行python ssl_logger.py -pcap log.pcap -remote com.android.package.name。 (请注意,自述文件中没有说明-remote,但这是必需的!。)


您可以添加-verbose来查看实时流量输出。
让它运行直到完成。 ,然后按Ctrl + C退出。然后,您将拥有一个文件log.pcap,可以在Wireshark中对其进行分析。
注意:如果遇到JavaScript错误,则必须编辑ssl_logger.py并在与var addresses, SSL_get_fd, SSL_get_session, SSL_SESSION_get_id, getpeername, getsockname;相同的行之前插入与function initializeGlobals相同的行。



在Android上使用Frida的教程:https://11x256.github.io/

#3 楼

对于嗅探https呼叫,我使用Charles代理,当您在设备上安装Charles证书时,您将能够嗅探整个apk <->服务器流量。

评论


这个问题专门提到证书是固定的,因此这是行不通的。

– Cyber​​gibbons
16年1月28日在21:54