美文网首页iOS 逆向工程 app安全 网络安全网络与信息安全
网络应用(1):抓包获取APP的重要信息 | charles

网络应用(1):抓包获取APP的重要信息 | charles

作者: 广州小程 | 来源:发表于2019-05-10 13:42 被阅读4次

    小白:何为抓包?

    小程:就是截获网络上收发的数据包。

    小白:网络上那么多数据包,怎么知道哪些是有用的?

    小程:只截获目标app的数据包就缩小了范围,但即便是缩小了范围,也需要进一步分析与排查。

    小白:在垃圾堆里找坏人的行动时间与地点吗?这是使徒行者2的桥段啊,你有没有看过?

    "抓包看看呗",这样的话听过不少了吧,不管怎么表达,“抓包”,本质都是分析网络交互时的数据包,以取得想要的信息。

    我们有可能会遇到这样的场景:“对方这个App是怎么实现的?它发送的网络请求有没有带上时间限制?”、“获取这个资源的网络地址是什么,要不要带token?我能够模拟发送吗?” ,等等,而在研究某个APP时,分析网络数据包,往往就是第一个手段。

    本文解决一个问题:通过抓包分析出重要信息。

    抓包的工具有很多,适合在不同的平台上使用。这里只介绍charles的使用。

    小白:都有什么样的抓包工具呢?

    小程:比如wireshark、tcpdump、tcpflow、charles、fiddler、sniffer等等。

    小白:为什么只介绍charles,难道其它的不好用吗?

    小白:不是其它的不好用,是我一次只讲一个东西!

    小白:你......

    Charles,是截取网络数据包的工具。小程这里演示的是mac系统下的charleas使用。

    官网:http://www.charlesproxy.com

    charles

    (1)破解charles

    用破解的charles.jar,覆盖到程序包内Contents/Java目录即可(比如4.0.1版本)。

    (2)使用charles

    charles运行后,就可以看到截获到的数据包。

    charles的视图分“按结构”跟“按顺序(时间先后)”,按顺序时可以筛选。

    两个视图都可以选择特定的url,再选择focus,这样就重点观察这个url的相关请求与响应,不会跳来跳去。

    mac上,抓https包,需要安装ssl证书:

    help->ssl proxying ->install charles root cer..,
    同时要在keychain中信息这个证书(简介->信任->ssl设置为始终信任)。
    

    对于https包,确定url后,要右击选择enable ssl proxying,才可以做到解密https包

    可以右键选择breakpoints,这时会监控这个url的相关行为并下断点(可以修改发送请求等),在发送请求时、收到回复时、正在接收response body时,都会触发断点。触发断点后,可以执行“取消(即让其继续执行)”、“中止”、“执行”等操作,比如可以修改请求的值后再执行“execute”。

    (3)演示:获取appstore的app的历史版本

    iphone上使用的一些app,新版本还不如旧版本好使。

    虽然appstore会把很旧的版本的下载链接给隐藏掉,但存货还是在的。

    如果你的itunes不支持appstore了,那你应该安装itunes12.6.3或itunes12.6.5版本,再使用下面的办法,因为这两个版本还能使用appstore,如果都不能下载APP了,那这个演示还怎么进行呢。

    如何通过itunes拿到某个app的所有历史版本的信息,并下载到历史版本呢?

    操作如下:

    打开charles,再打开itunes并搜索到目标app,再下载这个app,会观察到
    https://p23-buy.itunes.apple.com 或 https://buy.itunes.apple.com 
    是目标url,focus这个url。
    
    对这个url选择enable ssl proxying,退出charles。
    
    启动charles,删除掉itunes上已下载的目标aap,刷新并重新下载。
    
    这时,在目标url下面的buyProduct页面的contents的response部分,
    会显示一个array,是一堆id串,
    这个就是不同版本的下载id(用xml text来查看,可拷贝)。
    
    再次删除已下载的app,并对目标url加上breakpoints,再次下载app。
    
    在发送request时会触发断点,选择edit request页面并选择
    xml text查看模式,把下载id替换成目标下载id,
    之后不断点击execute或取消掉断点再执行。
    
    这时,itunes会下载到目标版本的app,之后可以找到对应的ipa,并同步到手机。
    

    以“微信”为例,大概的步骤是这样的:

    (a)下载微信时,在charles上focus目标url,并激活ssl:
    focus目标url
    (b)删除已下载的微信,启动charles后,重新下载微信,留意目标url下面的内容:
    找到目标id
    (c)删除已下载的微信,对目标url加上breakpoints,再次下载,修改请求,再execute:
    对目标url下断点
    修改请求时的目标id
    (d)下载到最旧版本的微信:
    下载到最旧的微信

    (4)演示:抓取手机qq音乐歌手详情的信息

    这里演示的是手机上的APP的抓包。操作如下:

    charles,proxy->proxy setting,port使用8888,
    勾选enalbe transperent http proxying,开启代理。
    
    help->local ip address,查看charles代理的ip地址。
    
    设置手机,如iphone,wifi信息->http代理,填写服务器(charles的代理ip)
    与端口(8888)。
    
    手机会连接上charles,允许它连接。
    
    对于https协议,手机上需求安装ssl的证书:
    在safari上输入http://charlesproxy.com/getssl,跳转安装证书。
    
    锁定目标url,即可拿到数据。
    比如,对于iphone上的qq音乐的歌手详情,目标url是
    https://u.y.qq.com,focus它,
    右键打开ssl proxy,就可以拿到详情信息。
    

    大概的演示是这样的:

    (a)charles开启代理:
    charles开启代理
    (b)手机连上代理后,对https://u.y.qq.com特别处理,可以看到歌手信息:
    qq歌手信息

    (5)演示:获取“抖音短视频”的歌曲下载链接

    小白:我知道!这个抖音短视频很好玩的,所有歌曲都只是副歌部分。它的下载链接是可以用的吗?歌曲是否加密了?

    小程:可以用,歌曲至少现在是没有加密的。(此话的时间,大概是2018年中)

    抖音,这时,大概有50几万首歌曲。

    可以通过搜索接口或者分类歌曲接口,来取得歌曲列表信息。歌曲列表信息是json格式的内容,其中包括这样的信息:

    "play_url": {
        "url_list": [
            "http://p3.pstatp.com/obj/29c90000eb8b5ca6fff2"
        ], 
        "uri": "29c90000eb8b5ca6fff2"
    }, 
    

    url_list就是歌曲下载链接(请求时需要带上额外的参数比如cookies等)。除了这个,还可以找到歌手名、歌曲名等。

    小白:为什么不详细说说请求链接是什么呀?

    小程:因为演示只是为了学习,不应该涉及太多商业的内容。

    小白:我去!


    smile make you pretty

    相关文章

      网友评论

        本文标题:网络应用(1):抓包获取APP的重要信息 | charles

        本文链接:https://www.haomeiwen.com/subject/heqaoqtx.html