介绍

大概在今年7月份,有俄罗斯黑客破解了苹果的应用内付费(In-App Purchases),设备在不越狱的情况下就可以免费获得来自苹果官网App Store里应用的收费道具。受影响的产品众多,包括著名的Angry Birds,切水果,Mega Jump, Pandora等。这里有一份受影响的著名的游戏应用列表。

正常的越狱行为还是比较复杂的,需要下载破解软件,并且操作进入DFU模式,所以大部分人并不能够方便地越狱。但该方案不需要越狱就可以破解应用内付费,给用户实施该行为提供了方便。

为了验证破解的有效性,我今天试了一下,确实能够直接绕开苹果的应用内付费就直接完成购买操作。而苹果也在它的官方文档上特别注明了该漏洞的存在,截图如下:

从该文档中我们可以知道,iOS6以下的所有设备(包括越狱或非越狱设备),都会受到该漏洞的影响。

攻击原理

我们知道通常的IAP购买行为,从逻辑上就是设备向App Store发起一个购买操作,App Store在验证过用户的密码确认身份后,扣费并返回购买成功的凭证,整个网络操作是通过SSL加密的。

该IAP破解方法,是让设备误以为另一个网站就是AppStore,而向它通讯,而这个假AppStore返回一个假的购买成功的凭证,这样就欺骗设备完成了购买。整个欺骗使用的手段包括:

  1. 用户给自己添加一个受信任的证书以完成SSL通讯的证书校验
  2. 设置一个伪DNS(域名解析服务)地址,把AppStore的域名指向假的地址。

应对措施

现在看来,暂时有效的应对方法是,将该交易凭证上传到我们自己的服务器上,然后让我们自己的服务器与AppStore进行验证,以确认该凭证是否是伪造的,然后将验证结果返回给设备。苹果的官方网站上也是这么介绍的。这样做麻烦的地方是,对于那些游戏和工具类应用,增加了服务器开发和维护的开销。

但是就象苹果自己也意识到的那样(如下图),既然破解者可以欺骗设备来和AppStore通讯,那么同样破解者从原理上,也可以欺骗设备同我们自己的服务器通讯,到头来,设备本身无论如何是无法知道自己的信息的真实性的。

对于这件事,我们只能期望于:因为我们的应用用户量不大,验证协议又不是通用的,所以破解者需要专门针对我们的通讯协议进行破解,这需要他本身有动力做这个事情,并且要花费他一些时间。所以可能他觉得做这个事情没什么挑战和意义,就不破解我们了。在这件事情上,“希望他不要破解”,好象也是我们唯一能做的事情。

乐观一点讲,AppStore上有上百万的应用,如果所有应用都采用服务器验证购买凭证,黑客一一针对破解,确实也太不可能了,所以这件事情还是很有必要的。另外随着iOS6的普及,该漏洞也将被修补掉,所以大家也不用过于悲观。

关于IAP的破解的更多相关文章

  1. In-App Purchase(iap)快速指南

      点击IOS IAP APP内支付 Java服务端代码直接跳转到示例点击直接跳转到示例 iap简介   在应用中内嵌Store,在iOS应用中使用Store Kit framework来实现In-A ...

  2. IAP 破解漏洞验证

    IAP支付有个漏洞,用户使用的可能是IAP Free 或者俄罗斯破解什么的,所产生的交易号:170000029449420 product_id:com.zeptolab.ctrbonus.super ...

  3. [转]iOS游戏如何防御外挂及IAP破解

    http://www.j1f3.com/news/game/21371.html 今年3月初写过一篇<iO平台游戏安全小议>,到现今已有7个月了.在这段时间内,iOS平台上的安全问题也产生 ...

  4. NXP恩智浦P89V51RB2/RC2/RD2单片机解密芯片破解方法!

    NXP恩智浦P89V51RB2/RC2/RD2单片机解密芯片破解 P89V51RB2/RC2/RD2是一款80C51微控制器,包含16/32/64kB Flash和1024字节的数据RAM. P89V ...

  5. STC系列STC10F芯片解密STC10L单片机破解复制技术

    STC系列STC10F芯片解密STC10L单片机破解 STC10F12XE | STC10F12 | STC10F10XE | STC10F10解密 STC10F08XE | STC10F08 | S ...

  6. 苹果ipa软件包破解笔记

    苹果的验证机制: Appstore上的应用都採用了DRM(digital rights management)数字版权加密保护技术,直接的表现是A帐号购买的app,除A外的帐号无法使用,事实上就是有了 ...

  7. 利用ZjDroid对 <捕鱼达人3> 脱壳及破解过程-转

    http://blog.sina.com.cn/zihao2015 <捕鱼达人3> 刚出来不久,就被鬼哥Dump出来dex,随之破解也就轻而易举.一开始我用ZjDroid神器试验过,但是没 ...

  8. iOS应用内支付(IAP)的那些坑

    本文转载至 http://blog.devtang.com/2013/04/07/tricks-in-iap/ 前言 udacity 中的在线课程 <How to build a startup ...

  9. Kali对wifi的破解记录

    好记性不如烂笔头,记录一下. 我是在淘宝买的拓实N87,Kali可以识别,还行. 操作系统:Kali 开始吧. 查看一下网卡的接口.命令如下 airmon-ng 可以看出接口名称是wlan0mon. ...

随机推荐

  1. Matlab tips and tricks

    matlab tips and tricks and ... page overview: I created this page as a vectorization helper but it g ...

  2. 网页打印A4纸-----表格在跨页时自动换页打印的实现 (转)

    在最近所做的一个项目中,需要通过网页来打印不少的表单,但是又不想每个打印页签各占用一个页面,这样就需要生存很多不同的冗余页面,为了减少冗余,所有的表单通过jquery的页签tab来实现的. 一 :基本 ...

  3. POJ 1635 树的最小表示法/HASH

    题目链接:http://poj.org/problem?id=1635 题意:给定两个由01组成的串,0代表远离根,1代表接近根.相当于每个串对应一个有根的树.然后让你判断2个串构成的树是否是同构的. ...

  4. node.js整理 06异步编程

    回调 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了 function heavyCompute(n, callback) { var count = 0, i, j; for (i = ...

  5. codeforces 519E A and B and Lecture Rooms LCA倍增

    Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Prac ...

  6. http://blog.sina.com.cn/s/blog_5bd6b4510101585x.html

    http://blog.sina.com.cn/s/blog_5bd6b4510101585x.html

  7. FString的相关文档,另外还有4种LOG的方法

    https://docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/StringHandling/FString/index ...

  8. tidyr包--数据处理包

    tidyr包的作者是Hadley Wickham.这个包常跟dplyr结合使用.本文将介绍tidyr包中下述四个函数的用法: gather—宽数据转为长数据.类似于reshape2包中的melt函数 ...

  9. ggplot2包--R可视化

    1.ggplot2发展历程 ggplot2是Hadley在爱荷华州立大学博士期间的作品,也是他博士论文的主题之一,实际上ggplot2还有个前身ggplot,但后来废弃了,某种程度上这也是Hadley ...

  10. Intellij IDEA常用快捷键——Mac版

    http://blog.csdn.net/longshen747/article/details/17204699 http://totohust.iteye.com/blog/1035550 设置自 ...