Android漏洞挖掘第三期:客户端完整性未校验

引言:每一期都有相同的内容部分,主要为了让大家单独看一期依旧能看懂!!!

0x01 APK文件

  1. 依然从APK文件开始说起,相信大家看我之前的帖子,已经知道APK文件怎么看里面的文件内容了。这里还是啰嗦一下吧!

  2. APK文件(全称:Android Application Package),是安卓系统使用的一种应用程序包文件格式,也就是说可以将apk文件双击对其进行安装。既然说是包文件格式,说明apk文件应该是一个将其他文件进行整合压缩后的一个压缩包。既然是压缩包,就可以利用winrar软件对其进行解压并得到里面的软件。

0x02 利用工具

  1. 本次的利用工具:apktool,SignAPK,ApkBurster

  2. apktool:这个工具就不多解释了,就是一个解包工具。或者修改尾部扩展名,一样的哈

  3. SignAPK:这是个新名词,我也是有幸第一次接触到,这是一个对未签名的APK问价进行签名的工具。

  4. 神器之ApkBurster:这也是个新名词,作用是加载APK时会自动进行解包,使用“解包目录”功能打开文件夹进行修改后,使用重“打包安装”即可自动完成打包,签名,覆盖安装操作。

0x03 开始切入正题了—–测试步骤

  1. 第一步当然是利用apktool进行解包咯。当然也是可以修改尾部扩展名,将.apk修改为.zip的哦

  2. 先附上apktool的解包公式。然后我们找一款android进行解包。(当然,涉及敏感信息的地方我会打马赛克的)

java -jar apktool.jar d -f apk文件路径 -o 解包目标文件夹

0x04 找到res文件,并修改里面的图片

  1. 为啥是修改里面的图片?而不是修改里面的数据呢?其实修改logo图片首先是最简单。其次是最容易看到效果的。

  2. 首先,先找到res文件夹。这个文件夹里面存放着大量的图片。很容易就可以找到logo的图片

  3. 其次,从网站下载好一个图片(随便大小,别超过手机屏幕就行),然后与本身里面的logo进行替换。(注意哦,替换的名字也必须是一样的,因为程序会以名字调用的)

0x05 封装

  1. 我们把APK解压出来,是否要对整个信息进行封装了呢?其实封装就是要对apk文件进行签名。如果无法签名的话,apk文件是不会正常运行的。那我把他们再压缩成zip压缩包,然后再改成apk可以吗?我这里告诉你,我试过了,不行的。

  2. 但是还有一个方法可以做掉。你当初把apk扩展名改为zip的那个包,是可以利用的,直接整个替换里面的或部分替换后,再改为.apk就行了。(亲测可用)

  3. 封装命令我还是照常给出,便于大家去测试方便一些

java -jar signapk.jar testkey.x509.pem testkey.pk8 待签名的APK路径 签名后输出apk路径
  1. 从这里面看来,我们的逆向的,基本都是要用到java程序耶!所以大家一定要装好java程序。另外,建议大家装一下java1.8,因为java版本高会不支持很多的软件和工具的。

  2. 同时,这个命令,又多出了2个文件,一个叫testkey.x509.pem,另外一个叫testkey.pk8。这2个文件是用来给apk文件签名用的,不知道大家是否用burpsuite抓过https的包。我们是先要去burp上下载一个CA证书,然后将CA证书安装到浏览器并添加信任。抓取https的包的时候,就是利用burp官网下载的CA证书,去骗取浏览器的信任,让浏览器误认为这是一个真证书。而apk里的这个签名也是同样的道理

0x06 安装前和安装后进行对比

  1. 对比是肯定要的,可以看一下安装前和安装后的差异,那。。。。我们以我们这个软件进行测试一下!

  2. 这个截图是安装前的画面。基本没有什么变化,是一个正常的软件

  3. 这个截图是安装后的画面。我们把里面的logo的图片改了,打开后,安装卸载的图标都发生了变化。是不是很好玩啊!

0x07 解决方法

  1. 有的人说,看了文章,也会了。但是遇到些解决方法反而就不会了。远离说不清楚。这里也给大家写出来了。

  • 解决方法:客户端再没次开机启动时,实际上都会对客户端自身的应用完整性进行校验的。再验证逻辑中,不使用MANIFEST.MF中的数据作为验证凭证。并且需验证是否有不属于该客户端版本的新文件添加,验证过程于服务器完成即可

  • 通俗说法:客户端没有对自己的程序进行校验,导致攻击者可以任意修改里面的内容。本次虽然是改了图片。那如果真正的攻击者是改了数据呢?

Android漏洞挖掘第三期:客户端完整性未校验

原文 

http://mp.weixin.qq.com/s?__biz=MzUyNTk1NDQ3Ng==&mid=2247485149&idx=2&sn=418ed179c8f36f45be717c3848673a7f

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Android漏洞挖掘第三期:客户端完整性未校验

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址