记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

【系列分享】安卓Hacking Part 24:利用Inspeckage进行自动分析

2017-04-06 15:50

2017-04-06 09:53:23 来源:infosecinstitute.com 作者:shan66
阅读:878次 点赞(0) 收藏


翻译:shan66

预估稿费:170RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


概述 


在本系列的前一篇文章中,我们讨论了如何使用AndBug来“钩住”给定Android应用程序中的类和方法。在本文中,我们将讨论另一个非常有用的实用程序Inspeckage。Inspeckage是一个Xposed模块,可用于Android应用程序的动态分析。无论是在恶意软件分析方面,还是在渗透测试领域,Inspeckage都具有突出的特点,因此该软件的前途将一片光明。Inspeckage还带有一个内置的网络服务器,可以使用简洁优美的GUI来执行所有操作。


配置Inspeckage


如果您以前已经使用过Xposed Framework的话,那么对您来说Inspeckage的设置将易如反掌。

1.在已经取得root权限的设备上下载并安装Xposed Framework。

2.接下来,启动Xposed应用程序,如下图所示。

http://p5.qhimg.com/t0126bc7c0b14e9c108.png

3.点击Modules按钮,这里应该什么都没有,因为我们还没有安装任何模块。

4.现在,我们可以从下面链接下载安装Inspeckage模块了。

    http://repo.xposed.info/module/mobi.acpm.inspeckage 

    另一种方法是使用Xposed App的下载选项并搜索Inspeckage,如下所示。

http://p7.qhimg.com/t013a5e2f8f1eb26bd5.png

我们可以点击这个模块,这时将会看到以下窗口。

http://p6.qhimg.com/t01648a499eb357c56d.png

点击“Download”按钮,如果下载成功则出现“Install”按钮,如下图所示。

http://p1.qhimg.com/t01704aba879083e698.png

点击“Install”按钮,安装应用程序。您需要接受Inspeckage在此过程中请求的权限。

http://p2.qhimg.com/t0106c5b6008635a9d7.png

上图表明Inspeckage已成功安装。

5.现在,导航到Xposed应用程序,然后再次单击Modules,您应该看到刚才安装的新模块,具体如下图所示。

http://p4.qhimg.com/t01d8736e8ad5e0c4b0.png

选中上图右侧的复选框,执行软重启,使更改生效。为此,我们可以导航到Xposed中的Framework功能,并点击Soft Reboot按钮来完成,如下图所示。

http://p9.qhimg.com/t01858081b908585800.png

重新启动后,点击Xposed模块中的Inspeckage模块,您将看到以下窗口。在这里,我们可以看到设备上安装的应用程序列表。

http://p2.qhimg.com/t01adec627ee6f79d9b.png

我们也可以选择待分析的应用程序。我选择了一个名为“Secure Store”的应用程序,这是我专门创建的一个易受攻击的应用程序。

http://p0.qhimg.com/t01eebc020ff9764505.png

单击“Launch App”并浏览应用程序的全部功能。在运行目标应用程序时,Inspeckage将监视应用程序执行的各种调用。我们还可以通过指定类名和方法名来钩住方法,然后观察传递的参数及返回值。这方面的内容,我们将在本文后面部分进行具体介绍。

此外,上述窗口中还有一些地址,它们可用于访问用户界面,具体如下图所示。

http://p5.qhimg.com/t0190e5ba61e99ca154.png

访问用户界面时我们会发现,这里有许多不同的部分,具体如上图所示。在本文的下面几节中,我们会针对上面标出的那些部分展开详细的介绍。

我们可以看到与应用程序有关的基本信息,其中包括备份属性,包名称和数据目录位置。有趣的是,点击“Tree View”按钮可以了解应用程序的应用程序目录中有什么文件可用,如下图所示。

http://p9.qhimg.com/t01b614f3ef7f123921.png

接下来,点击“Package information”部分将会显示应用程序使用的组件清单。在本例中,我们有一个导出activity和三个非导出activity。我们也可以使用“Start Activity”功能强制启动activity。

http://pic1.hackdig.com/pp/e9bc9757a3269a7bcd34a164302bda7321934a9355540fb22afcf6fc3e8ff00742de59eede53060df40bc910347deec4.jpg

另外,我们还可以看到应用程序当前使用的权限,如下图所示。

http://pic1.hackdig.com/pp/7c360a5426b1886df0a9cfdd6f62828396f90befa3cb42f1138d2fb64e0c2fdfde469943d250d5891f5a7ef48915c920.jpg

接下来,让我们转到SQLite部分。它能够显示应用程序是否执行了SQLite查询,如下图所示。

http://pic1.hackdig.com/pp/d2bd8ab8780efecdb70a25b22e968cee973bdff0df5fbfdd7a87a12442e37b95ad9232c93a9c6705d12d43a33b351c54.jpg

如果有可用的提供者的话,我们也可以使用“Query Provider”功能来查询内容提供者。

做了标记的下一部分是“Shared Preferences”。Inspeckage会分别显示读调用和写调用。下图表明应用程序使用共享首选项在“userdata.xml”文件中存储“auth token”。

http://pic1.hackdig.com/pp/c3eab2e98ed566d0e41940afa978dad644caaccd88a54ab88c7fdb0bbfd828285da34792ad5ac229199a8d6fae017089.jpg

之后,应用程序会读取前面存储的令牌,这可以从下图中标记为27的条目中看到。

http://pic1.hackdig.com/pp/97721f81cf192897d44977a79bcfea8ab657a1a139e177b54ad6314e55b60057e670211b65b3152b0e709b5b3b5337e4.jpg

接下来,我们来考察WebView部分。Inspeckage还发现,目标应用程序正在使用WebView addJavaScriptInterface,它的作用是充当JavaScript与Java交互的桥梁。

http://pic1.hackdig.com/pp/caef4276da6ef4784d52dd7d3c29517c002e146ea24409c099cadce1ee481a5853bdd5ec9645323b1bb610d6e163eac8.jpg

如果应用程序的API级别小于17,则可以利用这个远程代码来执行漏洞。


添加钩子


我们跳转到+ Hooks标签。这是一个非常有趣的部分,因为我们可以给特定的方法添加钩子,从而监视这个方法运行时会发生什么。

我们在应用程序中两个不同方法添加了钩子,并观察Inspeckage是如何进行处理的。


情形1


我们可以通过逆向应用程序来得到类名和方法名。在浏览此应用程序的源代码时,我们发现“isUserAlreadyLoggedIn”是一个看起来很有趣的方法。让我们添加一个钩子,如下图所示。

http://pic1.hackdig.com/pp/e9bc9757a3269a7bcd34a164302bda73fce2e0b078df9160f27f5d450252bc1612769fcbfc5cdf9bd5f2bc9d07810eac.jpg

我们指定了类名和方法名。如果你也想“钩住”构造函数,你就可以这样做。

现在运行应用程序,当应用程序调用此方法时,您应该会看到相应的参数和返回值,具体如下图所示。

http://pic1.hackdig.com/pp/4ae20cb14ac9d56f7929b4ff9e5d52724059e31928872593dc0af8f9e535104a7a9ab35ae2f30f4455003afb1c5483f5.jpg

您可以看到,该方法返回“false”,但是它没有参数。


情形2


现在,我们来考察带有方法参数的例子。让我们删除现有的钩子,并添加一个新的钩子,如下所示(你可以同时拥有多个钩子)。这里“isLoggedIn”是方法名称,请注意,类名也不同。

http://pic1.hackdig.com/pp/2922be572a83b8a8c47e1e825dc54607697bbdcfe08ef472486e70144055e7ea3cd6a7e2cc35da59c2b2341f3cb88b4c.jpg

一旦完成上述操作,我们需要再次运行应用程序,这样就应该能够看到参数以及返回值了。

http://pic1.hackdig.com/pp/c3eab2e98ed566d0e41940afa978dad668a7782fbb340a7d7c24baddd38b9d473f9b47117691c5f6398c2a18b1433421.jpg

上图显示了传递给hooked方法的参数。我们也注意到有一个返回值为“true”。


小结 


毫无疑问,在Android应用程序的动态分析方面,Inspeckage模块是非常有用的。如果您正在分析恶意软件或进行渗透测试的话,Inspeckage能够帮您显著提高工作效率。作为Xposed模块,Inspeckage执行检查的方式绝对算得上强大和可靠的,因为它能够被分析的设备和目标应用程序的完全控制。


传送门


安卓 Hacking Part 1:应用组件攻防(连载)

安卓 Hacking Part 2:Content Provider攻防(连载)

安卓 Hacking Part 3:Broadcast Receivers攻防(连载)

安卓 Hacking Part 4:非预期的信息泄露(边信道信息泄露)

安卓 Hacking Part 5:使用JDB调试Java应用

安卓 Hacking Part 6:调试Android应用

安卓 Hacking Part 7:攻击WebView

安卓 Hacking Part 8:Root的检测和绕过

安卓 Hacking Part 9:不安全的本地存储:Shared Preferences

安卓 Hacking Part 10:不安全的本地存储

安卓 Hacking Part 11:使用Introspy进行黑盒测试

安卓 Hacking Part 12:使用第三方库加固Shared Preferences

安卓 Hacking Part 13:使用Drozer进行安全测试

安卓 Hacking Part 14:在没有root的设备上检测并导出app特定的数据

安卓 Hacking Part 15:使用备份技术黑掉安卓应用

安卓 Hacking Part 16:脆弱的加密

安卓 Hacking Part 17:破解Android应用

安卓 Hacking Part 18:逆向工程入门篇

安卓 Hacking Part 19:NoSQL数据库不安全的数据存储

安卓 Hacking Part 20:使用GDB在Android模拟器上调试应用程序

安卓 Hacking Part 22:基于Cydia Substrate扩展的Android应用的钩子和补丁技术

安卓 Hacking Part 23:基于AndBug的Android应用调试技术


本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:http://resources.infosecinstitute.com/android-hacking-and-security-part-24-automated-analysis-with-inspeckage/#article

知识来源: bobao.360.cn/learning/detail/3684.html

阅读:95165 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“【系列分享】安卓Hacking Part 24:利用Inspeckage进行自动分析”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云