如何将Android应用流量转换为代理并解密TLS流量?

时间:2019-05-18 06:46:47

标签: android ssl https proxy

提前声明

关于android应用流量有一些疑问

How to capture app traffic on Android

但是他们的目标是capture而不是capture and decrypt


我想解密Android应用程序(称为Seat)TLS流量

我有Windows 10 Pro,Android 8.0(支持完整的iptables)

使用202.194.76.30:8443使用TLS连接,我不知道它使用了哪个应用程序层协议。

也许它使用HTTP(我使用httpie cli测试API http --verify no https://seat.ujn.edu.cn:8443/auth/signIn,响应为http

但是我非常确定它使用TLS

我的解决方法是:

  1. 强制座位使用http代理,我使用ProxyDroid进行此操作,它将任何tcp连接转换为http代理(http CONNECT)
  2. ProxtDroid将应用程序流量重定向到我的PC(192.168.137.1),其中mitmproxy在9090上侦听
  3. mitmproxy使用master key env变量将所有TLS mitsslog.log转储到MITMPROXY_SSLKEYLOGFILE
  4. 我使用Wireshark解密TLS,从mitsslog.log读取TLS主密钥

但是问题是座位不使用代理

我在Android上使用tcpdump捕获到202.194.76.30的所有流量,如您所见,Seat应用程序不使用我的代理! enter image description here

我可以捕获android应用流量,但无法解密。

enter image description here

这是android nat表

enter image description here

我的ProxyDroid配置

enter image description here

我已经搜索了三天,已经阅读了有关mitmproxy的所有文档。

它们都不起作用。剩下的唯一方法就是向stackoverflow-ers寻求帮助。

mitmproxy告诉我可以使用透明的,但是Windows 10不支持netsh路由功能。所以我不能使用NAT

我尝试使用virtualbox,但是由于Windows的Docker,我使用的是hyper-v。我不能使用其他虚拟技术

我来这里寻求您的帮助。如果您可以帮助我,我会尽力为您提供详细信息

:)

1 个答案:

答案 0 :(得分:0)

我自己回答

添加以下规则可以解决我的问题。

iptables -t nat -A OUTPUT -p tcp --dport 8443 -j REDIRECT --to 8124

我们需要将conn重定向到ProxyDroid侦听端口

让其将tcp conn转换为http代理。

整天都用它来解决问题!