嗅探 Outlook android 应用程序的流量

逆向工程 安卓 嗅探
2021-06-21 03:38:49

几个月来,我一直试图让 Android 版 Outlook 电子邮件应用程序的流量显示在我的 Fiddler 中,但没有成功。虽然来自应用程序的一些流量确实会显示在 Fiddler 中,但不是全部。例如,当我发送消息时,我看到以下 POST 请求

POST https://mobile.pipe.aria.microsoft.com/Collector/3.0/ HTTP/1.1
x-apikey: MYAPIKEY
Content-Type: application/bond-compact-binary
Client-Id: JavaLibrary
sdk-version: ACT-Android-Java-no-2.0.7.0-ECS
User-Agent: Dalvik/2.1.0 (Linux; U; Android 5.1.1; Nexus 4 Build/LMY48T)
Host: mobile.pipe.aria.microsoft.com
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 1943

K  f ՝ 2 w  2h  EP^      ^K+
Iact_default_source $4f9c4caf-b12c-46b6-8d69-160f4ed5ea7d   ۿ U   
)$3c249ec9-dc4e-4c1a-8a94-0828b6d0d9deq  ۿ U custom send_message 
        EventInfo.Sourceact_default_sourceDeviceInfo.OsName AndroidCustom.first_launch_date
2016-09-14Custom.correlation_id43c97824f9e48f50EventInfo.Sequence138AppInfo.Languageen-USDeviceInfo.OsBuild 2237560DeviceInfo.NetworkCost UnknownUserInfo.Languageen-USUserInfo.TimeZone-04:00Custom.OutlookOAuth1Custom.MsDrive1EventInfo.Time2016-09-15T03:54:41.704ZAppInfo.Version2.1.65    Custom.ci
1x0RPaHRLoDeviceInfo.MakeLGEDeviceInfo.Model Nexus 4
DeviceInfo.Id43c97824f9e48f50
Session.Id$3722b64a-0582-4709-9e14-230036b55856DeviceInfo.SDKUid$60a51498-07e5-4d46-92b4-574023226050
eventpriorityNormalEventInfo.InitId$79f1ffb3-fa19-4f5d-b88b-714b862e0cadEventInfo.SdkVersionACT-Android-Java-no-2.0.7.0-ECSEventInfo.Namesend_messageDeviceInfo.OsVersion5.1.1DeviceInfo.NetworkTypeWifiCustom.has_attachment0   
  )$79e9da80-8d9c-4a35-85c9-e0baec49e4a5q  ۿ U custom feature_flags_test 
        EventInfo.Sourceact_default_sourceDeviceInfo.OsName AndroidCustom.first_launch_date
2016-09-14Custom.correlation_id43c97824f9e48f50EventInfo.Sequence139AppInfo.Languageen-USDeviceInfo.OsBuild 2237560DeviceInfo.NetworkCost UnknownUserInfo.Languageen-USCustom.feature_enabledyesUserInfo.TimeZone-04:00Custom.OutlookOAuth1Custom.MsDrive1EventInfo.Time2016-09-15T03:54:41.761ZAppInfo.Version2.1.65 Custom.ci
1x0RPaHRLoDeviceInfo.MakeLGEDeviceInfo.Model Nexus 4
DeviceInfo.Id43c97824f9e48f50
Session.Id$3722b64a-0582-4709-9e14-230036b55856DeviceInfo.SDKUid$60a51498-07e5-4d46-92b4-574023226050
eventpriorityNormalEventInfo.InitId$79f1ffb3-fa19-4f5d-b88b-714b862e0cadEventInfo.SdkVersionACT-Android-Java-no-2.0.7.0-ECSEventInfo.Namefeature_flags_testDeviceInfo.OsVersion5.1.1DeviceInfo.NetworkTypeWifi     

但是我在 Fiddler 中看不到电子邮件的文本。我认为他们没有使用 SSL Pinning。从我所看到的使用 SSL Pinning 的应用程序来看,任何中间人攻击的尝试都会导致应用程序出错。我没有在应用程序上收到任何错误,并且电子邮件确实已送达。但我无法捕获与发送的电子邮件相关的任何流量。

任何想法如何捕获 Outlook Android 应用程序的所有流量?

2个回答

我相信这里的关键是“内容类型:应用程序/bond-compact-binary”

看看https://microsoft.github.io/bond/manual/bond_cpp.html#protocols,也许这可能会有所帮助。Fiddler 或 ZAP 代理的插件会很棒!

协议

Bond 协议是可插拔的,允许应用程序选择最合适的编码格式。Bond 支持三种协议:

标记的协议

标记协议在有效负载中交错模式元数据。这使得有效载荷具有自描述性,即使消费者不知道生产者使用的模式,也允许消费者解释它。

未标记的协议

未标记的协议仅序列化数据,因此要求消费者通过某种带外机制了解有效负载模式。未标记协议通常用于存储场景,因为它们允许将模式存储一次(例如,在数据库的系统表中),从而消除使用相同模式的许多记录的元数据开销。

基于 DOM 的协议

基于 DOM 的协议将整个有效负载解析为内存中的数据对象模型,然后在反序列化期间进行查询。通常这种协议用于实现基于文本的编码,例如 JSON 或 XML。

压缩二进制

使用可变整数编码和紧凑字段标头的二进制标记协议。对于 RPC 场景,与 Fast Binary 一起是一个不错的选择。

在 CompactBinaryReader 和 CompactBinaryWriter 类中实现。

Compact Binary 的第 2 版为结构添加了长度前缀。这可以在恒定时间内反序列化绑定和跳过未知结构字段。权衡是双通道编码,导致序列化性能降低 30%。

另请参阅紧凑二进制编码参考。

你可以使用mitmproxy

  • 使用本地无线网络
  • 在连接到该 wifi文档的笔记本电脑上安装 mitmproxy
  • 在您的智能手机上,安装 mitmproxy 提供的 CA 证书。然后,将智能手机连接到您的 wifi,并将您的笔记本电脑指定为代理。mitmproxy 的默认代理端口是 8080。
  • 启动 Outlook Android 应用程序,并在笔记本电脑上的 mitmproxy 控制台中查看 HTTP(S) 请求。