Total Pageviews

Tuesday, 15 December 2015

mitmproxy的使用案例 -『抱抱』所谓“24小时内销毁图片”的真相

自称『新一代社交软件』的『抱抱』,被很多人称为又一个『陌陌』。
虽然阅后即焚、匿名社交已经不是什么新鲜概念了,但是作为一名产品狗,自从 Snapchat 被爆出裸照丑闻之后,我就一直很关注这些以阅后即焚为卖点的APP的安全性和对用户隐私的保护措施。
是否真的阅后即焚?
是否真的没有获取用户身份信息?
是否真的匿名?
本教程将通过 mitmproxy 最基本的使用方法,带你还原事实的真相。
  • 难度指数: 新手入门
  • 使用工具: mitmproxy
  • 示例系统: Mac
  • 适合人群: 比如像我这样的产品狗

安装并启动 mitmproxy

  1. 安装 mitmproxy
    1
    pip install mitmproxy
  2. 启动 mitmproxy
    1
    2
    3
    mitmproxy
    # 端口默认为 8080,如果你有程序已占用此端口可以指定其他端口(如1234)
    mitmproxy -p 1234

配置手机端

PS: 这里以 iPhone 为例,其他平台手机请自行搜索不再赘述。
测试手机应和运行 mitmproxy 的电脑同处一个网络,手机网络设置代理如下:

监听网络

手机代理设置完毕后,这时候就可以打开『抱抱』了。
随便把玩几下,回到电脑终端看看是不是出现了很多信息,这时候我们需要过滤一下网络请求,
因为我们只关心『抱抱』请求的网络,其他 APP 的我们不管。


1
2
l # 设置 limit filter
myhug.cn 回车

现在只有 url 里包含 myhug.cn 的请求才会显示出来。
现在可以开始我们的实验了,
我想知道『抱抱』所说的发出的图片会在24小时(或者其他设定的时间)自动销毁是不是真的销毁。
我发了一张图,设定为10分钟销毁
然后在 mitmproxy 里找到这个图片的地址(一般会在最底下的几个请求里)
我们在浏览器输入图片地址,看看是不是相同的图片
确定是这张图片后,我们就等个10分钟吧,真相马上就会出现
10分钟后,手机里『显示』已销毁,并且在发布的历史里也找不到了刚刚那张图。这对于普通用户来说,手机里已经不存在的图片,确实可以说是『已销毁』。
但事实上,这张图片并没有在服务器里删掉,你可以在浏览器里重新输入刚刚那个图片地址,十分钟销毁,是不是还可以看得到?
没有删掉服务器上的图片,只是不在手机端显示,『抱抱』这是葫芦里卖什么药?
也许只是浏览器缓存?我想。不是。
也许他们工程师设了定期任务要定期才清理?我想。
也许是吧,不过距离我上次试验已经过去了4天了,依然没发现图片被删除。
『抱抱』24小时销毁的真相已经很清楚了,销毁并不是真正的销毁,别有用心的人不费吹灰之力(mitmproxy 可以跑脚本)就可以拿到所有图片的地址并保存下来,如果真的有人盯上的话,下一个泄露风波可能已经不远了。
流氓不可怕,最怕流氓有文化,请谨慎.
 相关帖子:http://briteming.blogspot.in/2013/09/ssl-mitm-proxy.html
------------
mitmproxy是一款支持SSL的HTTP代理,它可以用于调试HTTP通信,发起中间人攻击等。mitmproxy提供了一个控制台接口用于动态拦 截和编辑HTTP数据包。mitmdump是mitmproxy的命令行版本,功能与其相同。
mitmproxy的主要特点:
    Intercept and modify HTTP traffic on the fly
    Save HTTP conversations for later replay and analysis
    Replay both HTTP clients and servers
    Make scripted changes to HTTP traffic using Python
    SSL interception certs generated on the fly
官网:http://mitmproxy.org/
--------------------------------------

使用 mitmproxy 进行 HTTP 分析

之前使用的是 Wireshark 进行 HTTP 的一些分析,功能很全面,不过有些大材小用。同类型的简化工具其实很多,甚至 Firefox & Google Chrome 本身就自带,只是浏览器自带的工具又无法满足我们的需求,下面介绍下 mitmproxy 工具,简单又不失强大。

mitmproxy 是一款基于 Python,支持 ssl 的中间人代理框架,他提供了一个控制台用于动态拦截和编辑 HTTP/HTTPS 数据包。官方介绍:

An interactive console program that allows traffic flows to be intercepted, inspected, modified and replayed.

mitmproxy 包含 3 款工具:

  • mitmproxy: 带交互的终端界面
  • mitmdump: mitmproxy 的命令行版本,类似于 tcpdump
  • libmproxy: 用于 mitmproxy/mitmdump 的库

安装他非常简单,Linux 用户直接通过包管理命令来安装即可,OS X 用户通过 Homebrew 工具进行安装

brew install mitmproxy

当然,你也可以通过 pip 进行安装

pip install mitmproxy

使用上非常简单,移动方向类似 vi,使用 hjkl 来进行操作向左、向上、向下、向右,以 q 键来返回,回车键进入。

在 Request/Response 界面按 e 键进入编辑,m 键进入显示模式选择,tab 键切换 Request/Response/Detail。

详情请参考:http://mitmproxy.org/doc/index.html