前言 前一章描述了《Android 渗透测试学习手册玩转 SQLite》,这个继续解释不太知名的Android漏洞。 在本章中,我们将介绍一些鲜为人知的Android攻击向量,它们可能在Android渗透测试中很有用。我们还将介绍Android广告库中的漏洞和WebView实施中的漏洞等主题。作为渗透测试人员,本章将帮助您以更有效的方式审核Android应用程序并发现一些不常见的缺陷。 7.1 Android WebView 漏 洞 WebView是一个用于在应用程序中显示Web内容的Android视图。它使用WebKit渲染引擎使用文件//和数据//协议显示网页和其他内容,这些协议可用于从文件系统加载文件和数据内容。 WebView还用于各种Android应用程序,例如提供注册和登录功能的应用程序。它通过在应用程序布局中构建其移动网站来显示应用程序中的Web内容。我们将在下一章中进一步讨论WebKit及其渲染引擎。对于本章,我们只关心那些使用WebKit的应用程序。 在您的应用中使用WebView 在您的应用程序中使用WebView非常简单直接。假设我们希望我们的整个活动是一个WebView组件,它从http://examplewebsite.com加载内容。 以下是在Android应用程序中实现WebView的代码示例: 1 2 3 WebView webview = new WebView(this); 的setContentView(web视图); webview.loadUrl('http://vulnerability-website.com'); 另一个重要的事情是大多数开发人员最终使用以下命令在WebView实现中启用JavaScript(默认设置为False)以增强应用程序的功能: 1 setJavascriptEnabled(真); 以前的命令确保可以在应用程序中执行JavaScript并使用注册界面。 识别泄漏 想象一下这种情况,应用程序在不安全的网络上使用,允许攻击者执行中间人攻击(参见OWASP网站https //www.owasp.org/index.PHP/Man-in-对于更多的中间人攻击)。该-middle_attack)。如果攻击者可以访问网络,他们可以修改请求并响应设备。这意味着他们可以修改响应数据,如果他们从网站加载JavaScript内容,他们可以完全控制JavaScript内容。 实际上,通过使用它,攻击者甚至可以使用JavaScript来调用手机上的某些方法,例如向另一个号码发送文本消息,拨打电话,甚至使用Drozer等工具来获取远程shell。 让我们举一个简单的例子来说明WebView漏洞的可能性。在这里,我们将使用Joshua Drake的GitHub存储库(https://github.com/jduck/VulnWebView/)创建的概念证明。此POC使用应用程序中的WebView简单地加载URL并加载网页http://droidsec.org/addjsif.html(如果链接未打开,您可以访问http //attify.com/lpfa/addjsif。Html )。 这是Eclipse中代码示例的屏幕截图,它使用Android名称来创建JavaScript接口:
我们还可以通过右键单击项目并选择“导出为Android应用程序”,从源代码创建apk文件。一旦我们运行应用程序并监听Burp代理中的流量,我们将看到应用程序中指定的URL请求,如下面的屏幕截图所示:
现在,当响应来自服务器时,我们可以修改响应数据并使用它来利用此漏洞,如下面的屏幕所示
假设攻击者需要利用此漏洞应用程序使用受害者的设备向一个号码发送文本消息。下面的屏幕截图显示了修改后的响应:
一旦我们点击“转发”按钮,该消息将从受害者的设备发送到攻击者指定的号码。 以上简单地调用SMSManager()将预定义的号码发送到包含文本pwned的SMS。 这是一个利用易受攻击的WebView应用程序的简单示例。实际上,您可以尝试调用其他方法或使用Drozer从设备获取远程shell。您还可以访问https://labs.mwrinfosecurity.com/blog/2013/09/24/webview-addjavascriptinterface-remote-code-execution/以阅读有关在Drozer中使用WebView的更多信息。 7.2 感 染 合 法 APK 由于Google的非严格政策,在将应用上传到Play商店时,许多开发者已经上传了恶意应用和软件来窃取用户设备上的私人数据。 Google Play上存在的大多数恶意软件只是合法应用程序的受感染版本。恶意软件作者只需要一个真实的应用程序,反编译它,插入自己的恶意组件,然后重新编译它以分发给应用商店和受感染的用户。这可能听起来很复杂,但实际上,这是一件非常简单的事情。 让我们尝试分析恶意软件作者如何修改合法应用程序以创建受感染版本。最简单的方法之一是编写一个简单的恶意应用程序并将其所有恶意活动放入服务中。此外,我们将一个广播接收器添加到AndroidManifest.xml文件中,以便指定的事件(例如接收SMS)可以触发我们的服务。 以下是创建受感染版本的合法版本的简单步骤: 使用apktool提取应用程序如下: 1 Apktool d [appname] .apk 反编译恶意应用程序以生成Java类的smali文件。在这里,我们需要将所有恶意活动放入服务中。此外,如果您有使用smali语言的经验,则可以直接从smali本身创建服务。假设恶意服务的名称是malware.smali。 接下来,我们需要将malware.smali文件复制到smali文件夹,该文件夹位于我们的反编译合法应用程序的文件夹中。 我们将对malware.smali中包名称的所有引用更改为合法应用程序的包名称,并在AndroidManifest.xml中注册该服务。这里我们需要在AndroidManifest.xml文件中添加另一行,如下所示: 1 < service droid: name = 'malware.java'/> 此外,我们需要注册一个广播接收器来触发服务。在这种情况下,我们选择SMS作为触发器,如下面的代码所示: < receiver android: name='com.legitimate.application.service'> < intent-filter> < action android: name='android.provider.Telephony.SMS_RECEIVED' /> </intent-filter> < /接收机GT; 用apktool重新编译应用程序,如下所示: 1 Apktool b appname / 使用apktool重新编译应用程序后,新的apk将成为感染的合法版本。向手机发送消息可能会自动触发此恶意软件。如果恶意软件服务需要比合法应用程序更多的权限,我们还需要手动将缺少的权限添加到AndroidManifest.xml文件中。 7.3 广 告 库 中 的 漏 洞 Google Play上提供的大多数免费Android应用都使用广告来赚钱。但是,广告库本身通常存���漏洞,使整个应用程序容易受到一些严重威胁。 要识别特定应用程序中存在的广告库,我们可以使用dex2jar/apktool简单地反编译应用程序并分析创建的文件夹。您还可以在http://www.appbrain.com/stats/libraries/ad找到一些最受欢迎的Android广告库和应用程序。广告库可能存在许多漏洞,例如上一节中讨论的WebView漏洞,不安全的文件权限或任何其他可能导致攻击者破坏整个应用程序,获取反向shell或甚至创建后门的漏洞。 7.4 Android 中 的 跨 应 用 脚 本 跨应用程序脚本漏洞是一个Android应用程序漏洞,允许攻击者绕过同源策略并访问应用程序位置中存储在Android文件系统上的敏感文件。这意味着攻击者可以访问位于/data/data/[app package name]位置的所有内容。此漏洞的根本原因是应用程序允许使用对受信任区域的访问权限在不受信任的区域中访问内容。 如果漏洞利用是Web浏览器,则攻击变得更加严重,攻击者可以无声地窃取浏览器存储的所有cookie和其他信息并将其发送给攻击者。 甚至一些众所周知的应用程序,如Skype,Dropbox,Dolphin Browser等,在早期版本中都存在跨应用程序脚本漏洞。 让我们来看看Dolphin Browser HD中的漏洞,例如Roee Hay和Yair Amit发现的漏洞。此示例中使用的易受攻击的Dolphin Browser HD应用程序版本为6.0.0,该漏洞在未来版本中已得到修复。 Dolphin Browser HD有一个名为BrowserActivity的漏洞活动,可以被其他应用程序和其他参数调用。攻击者可以使用它来调用Dolphin Browser HD并打开特定的网页以及恶意JavaScript。下面的屏幕截图显示了POC代码和通知(http://packetstormsecurity.com/files/view/105258/dolphin-xas.txt):
在这里,使用屏幕截图中的上述代码,我们将打开http://adityagupta.NET网站和JavaScript函数alert(document.domain),它只会在提示框中弹出域名。一旦我们在手机上打开这个恶意应用程序,它就会调用Dolphin Browser HD,打开我们指定的URL和JavaScript代码,如下面的屏幕截图所示:
总 结 在本章中,我们了解了Android中的不同攻击媒介,从渗透测试人员的角度来看这非常有用。本章应该用作对不同攻击向量的快速演练;但是,建议您尝试这些攻击向量,尝试修改它们,并在实际渗透测试中使用它们。 在下一章中,我们将离开应用层并专注于基于ARM的Android平台利用率。 [本文由龙使者编撰。参见Snow Academy原创,安全脉冲编辑和发布]