本章将了解一些不知名的 Android 攻击向量,这是 Android 渗透测试可能很有用。我们还将涵盖一些主题,如 Android 广告库中的漏洞和漏洞WebView实现中的漏洞。本章作为渗透测试者,将帮助您以更有效的方式审计 Android 应用程序,并发现一些不常见的缺陷。
7.1 Android WebView 漏洞
WebView是一种 Android 视图,用于在应用程序中显示 Web 内容。它使用 WebKit 渲染发动机使用file//和data//协议显示网页等内容,可用于从文件系统加载文件和数据内容。WebView也用于各种 Android 应用程序,如提供注册和登录功能的应用程序。它通过在应用程序布局中构建移动网站来显示应用程序中的 Web 内容WebKit 及其渲染引擎。对于本章,我们只关心使用 WebKit 那些应用程序。
用于应用WebView
在应用程序中使用WebView非常简单和直接。假设我们希望我们的整个活动都是一个WebView组件,从http://examplewebsite.com加载内容。
下面是在 Android 在应用程序中实现WebView代码示例:
WebView webview = new WebView(this);setContentView(webview);webview.loadUrl("http://vulnerable-website.com");另一件重要的事情是,为了增强应用程序的功能,大多数开发人员都在这里WebView使用以下命令实现JavaScript(默认设置为False):
setJavascriptEnabled(true);确保 以前的命令JavaScript 可在应用程序中执行,并使用注册界面。
识别漏洞
想象一下,在不安全的网络中使用应用程序允许攻击者执行中间人攻击(更多中间人攻击请参 OWASP 网站https//www.owasp.org/index.php/Man-in-the-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 界面:
我们也可以从源代码中创建它apk文件,只需右键单击项目,然后选择Export as an Android Application(导出为 Android 应用程序)Burp 代理中的流量,我们将看到应用程序中指定的 URL 请求如下图屏幕截图所示:
现在,当响应来自服务器时,我们可以修改响应数据并使用它来利用这个漏洞,如下面的屏幕所示
让我们假设攻击者需要使用这个漏洞应用程序,使用受害者的设备向一个号码发送短信。以下屏幕截图显示了修改后的响应:
一旦点击Forward(转发)按钮,邮件将从受害者的设备发送到攻击者指定的号码。
以上内容简单调用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新的 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/[应用程序包名称]位置中的所有内容。漏洞的根本原因是,应用程序允许在不受信任的区域中使用受信任区域的访问权限。
如果漏洞应用程序是 Web 浏览器,攻击会变得更加严重,攻击者可以悄悄窃取浏览器存储的所有 Cookie 和其他信息,并发送给攻击者。
甚至一些著名的应用程序,如 Skype,Dropbox,在早期版本中,海豚浏览器存在跨应用程序脚本漏洞。
让我们来看看海豚浏览器 HD 中的漏洞,如 Roee Hay 和 Yair Amit 发现的漏洞。海豚浏览器 在这个例子中使用HD 应用程序版本为 6.0.0,以后的版本修复了漏洞。
海豚浏览器 HD 有个名字BrowserActivity的漏洞活动,它可以被其他应用程序以及其他参数调用。攻击者可以使用它来调用海豚浏览器 HD 并打开特定的网页和恶意 JavaScript。以下屏幕截图显示 POC 代码及通知(http://packetstormsecurity.com/files/view/105258/dolphin-xas.txt):
使用屏幕截图中的上述代码,我们将打开它http://adityagupta.net网站以及 JavaScript 函数alert(document.domain),它将在提示框中简单地弹出域名。一旦我们在手机上打开恶意应用程序,它将调用海豚浏览器 HD,打开 URL 以及我们指定的 JavaScript 代码,如下截图所示:
总结
在本章中,我们了解了 Android 从渗透测试者的角度来看,不同的攻击向量非常有用。本章应用于快速练习不同的攻击向量; 然而,建议您尝试这些攻击向量,修改它们,并在现实生活中使用它们。
在下一章中,我们将离开应用层,专注于 Android 平台基于 ARM 的利用。