首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

安卓脱壳&协议分析&Burp辅助插件编写

先知安全技术社区独家发文,如需转载,请先联系社区授权;未经授权请勿转载。前言

本文以一个 为例,演示对 脱壳,然后分析其 协议加密和签名方法,然后编写 脚本以方便后面的测试。

文中涉及的文件,脱壳后的 dex 都在:

链接: https://pan.baidu.com/s/1nvmUdq5 密码: isrr

对于 burp 扩展和后面加解密登录数据包工具的的源码,直接用 反编译 包即可。

正文

首先下载目标 ,然后拖到 里面看看有没有壳。

发现是腾讯加固,可以通过修改 的源码进行脱壳。

具体可以看: https://bbs.pediy.com/thread-210275.htm

脱完壳 文件,扔到 里面进行分析(GDA分析能力还是不太强,不过速度快)

类和方法都出来了,脱壳成功。

首先看看协议抓取,建议自己电脑起一个 (热点), 然后用手机连接热点,对于 的数据包,可以使用 进行抓取(对于 还要记得先安装 的证书),对于 的数据包,由于我们是连接的 电脑的 所以我们可以直接用 抓取我们网卡的数据包就能抓到手机的数据包。对于笔记本,可以买个无线网卡。

首先看看注册数据包的抓取,设置好代理,选择注册功能,然后去 里面,可以看到抓取的数据包。

对于登录数据包,点击登录功能,去发现 无法抓到数据包, 怀疑使用了 发送请求数据,于是开启 抓取 手机连接的热点到的网卡的数据包。抓取时间要短一些,不然找信息就很麻烦了。

然后我们一个一个 数据包查看,看看有没有什么特殊的。

发现一个数据包里面有 加密的数据,猜测这个应该就是登陆的数据包。查了一下 ,应该就是了。

下面针对不同类型的协议加密措施进行分析。

HTTP协议

协议分析关键是找到加密解密的函数,可以使用关键字搜索定位。为了方便搜索,先把 转成 然后用文本搜索工具搜索就行了,我使用 。在这里可以使用 , 等关键词进行搜索,定位关键代码。我选择了 ,因为它搜出的结果较少。

函数没经过混淆,看函数名就可以大概猜出了作用,找到关键方法,拿起 分析之。

先来看看 的 方法。

获取手机号进入了 方法,跟进

先调用了 (看名称估计他就是增加签名的函数了),然后发送 请求。

继续跟进

至此签名方案非常清晰了。

获取时间戳,新增一个 的参数,值为 时间戳

由于有时间戳和签名的存在,而且服务器会检测时间戳,后续如果我们想测试一些东西,就需要过一段时间就要计算一下 签名和时间戳,这样非常麻烦,我们可以使用 编写插件,自动的修改 时间戳和 签名,这样可以大大的减少我们的工作量。

看看关键的源代码

首先注册一个 , 这样 的流量就会经过我们的扩展。

然后看看 对流经扩展的流量进行处理的逻辑。只处理 请求的数据,然后根据域名过滤处理的数据包,只对 进行处理。接着对于数据包中的 参数和 参数进行重新计算,并且修改 数据包中的对应值。

加载扩展,以后重放数据包,就不用管签名的问题了。

TCP

对于 的协议可以通过搜索 端口号, 地址等进行定位,这里搜索 (这里是, 可以在 中查看),有一点要注意,程序中可能会用 进制或者 进制表示端口号为了,保险起见建议两种表示方式都搜一下。

通过搜索 ( 的 进制表示)找到两个可能的位置。分别检查发现 第二个没啥用,在 中查找交叉引用都没有,于是忽略之。然后看看第一个。

可以看到 把端口号都转成了 进制数,这里与服务器进行了连接,没有什么有用的信息。于是上下翻翻了这个类里面的函数发现一个有意思的函数。

用于发送数据,里面还用了另外一个类的方法,一个一个看,找到了加密方法。

就是简单的 加密,然后在 编码。

为了测试的方便写了个图形化的解密软件。

用 测试之

正确。

总结

不要怕麻烦,一些东西尽早脚本化,自动化,减轻工作量。逆向分析,搜索关键字,定位关键代码。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180122G06RJ200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券