从零开始学Android应用安全测试(Part2)
发表时间:2023-07-30 来源:明辉站整理相关软件相关文章人气:
在上一篇文章中,我们为测试安卓应用程序设置了一个移动渗透平台。到目前为止,你需要保证你已经配置好你的虚拟设备,安装完安卓命令行工具,以及前一篇文章所提及的一些工具(drozer, dex2jar, apktool)。
在这一篇文章中,我会带领大家了解一些信息收集技术,我们将看到如何反编译一款安卓应用程序,分析安卓应用程序的签名以及其他一些东西。
关于虚拟设备这一点,如果你正在寻找一款符合你需求的安卓应用测试平台,那么你可以去看看Android Tamer[https://androidtamer.com/ ]。
提取应用中的信息
首先,确认下你系统中的InsecureBankv2是我们的最新版本。当然,建议你做一个git pull将所有更新都合并到你的主分支中。
完成之后,我们就来对这个apk文件进行一些分析,将apk文件复制到一个独立的文件夹中。就向Ios的ipa文件一样,apk文件也是一个打包文件,所以你可以通过将文件后缀从.apk修改为.zip然后就可以进行提取了。
进入提取文件后的文件夹中,你可以看到许多的文件
让我来简单的进行一下描述:
AndroidManifest.xml——AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。从安全角度来看,它包含了应用程序中所有使用到的组件信息,同时它还会显示应用程序使用的permissiosns信息,我强烈建议大家可以在谷歌文档中多看看[ 在我们所要讨论的漏洞中就会讨论到安卓应用组件中的一些东西。 Assets——这个被用来存储一些原始资源文件,存储在里面的东西会编译到apk文件中。 Res——用于储存像图片,版式文件等 META-INF——这个里边存储的是关于签名的一些信息 classes.dex——这里面就是编译的应用程序代码,如果你要进行反编译操作,那么你需要先将dex文件转换为jar文件,然后用java编译器进行读取。
存储公钥证书的CERT.RSA文件是在META-INF 文件夹下面,找出公钥证书的信息可以键入一下命令
keytool -printcert -file META-INF/CERT.RSA
请注意,在经过反编译,编译然后重新部署到其他设备之后还可以对这个apk文件中的代码进行修改。但是,一旦修改了这个apk文件之后,就会丢失其完整性,那么我们就需要重新弄一个public/private key。
说到这里,推荐大家去了解下如何创建自己的public/private key
[http://developer.android.com/tools/publishing/app-signing.html]
一旦完成应用程序的编译工作,你可以使用jarsigner工具对其完整性进行验证。
现在我们就来使用dex2jar这款反编译工具,dex2jar接受输入为.apk后缀的文件,然后将其转换为jar文件。
完成操作之后,你可以在JD-GUI中打开,并浏览其源代码。
现在我们就可以通过浏览其源代码找到一些潜在的漏洞,我们可以清楚的注意到对这个apk文件进行逆向,并浏览其源代码是多么的简单。这里我们需要注 意的是,我们之所以能够这么简单就得到源代码是由于这款App没有对其源码进行模糊处理。像Google提供的Proguard工具就可对代码进行模糊处 理。虽然对App源码进行模糊处理并非是万无一失的方法,但是至少还是有一部分作用,在今后的文章中我们可能就会遇到对代码进行了模糊处理的案例。
在本节中,我们了解到如何从一款App中提取信息。
下节预告
在下一节中,我们将看到在InsecurBankv2.中一些不同类型的漏洞了。
FreeBuf小编:不得不吐槽一下,原作者不是在上节中就提示说下一节就会开始接触到漏洞了么?这是故意吊咱们胃口么?不过作者肯定有自己的一些安排考虑在内,咱们也就一步一步的将所学内容掌握扎实吧!
[参考来源infosec,翻译/鸢尾,转载请注明来自FreeBuf黑客与极客]