移动安全入门

移动安全带来了许多Web安全的挑战 - 广泛的受众,快速开发和持续的网络连接 - 加上更多传统胖客户端应用程序(例如缓冲区管理,本地加密和恶意软件)的常见风险。 移动环境的一个独特功能是来自未知开发人员的已安装应用程序的流行,这些应用程序应被视为“不受信任的”。

移动应用的被攻击面

如下所示,移动攻击可以涉及设备层,网络层,数据中心或这些的组合。 固有平台漏洞和社会工程继续为网络盗贼提供重要机会,从而为那些寻求保护用户数据的人带来重大挑战。

Anatomy of a Mobile Attack

攻击方向

在移动技术链中有三个点,恶意方可能利用漏洞来发起恶意攻击:

  • 设备
  • 网络
  • 数据

设备

移动设备对敏感的公司信息(SCI)构成重大风险; 主要风险包括数据丢失和安全性受损。 无论是iPhone,Android或其他智能手机,针对设备本身的攻击者可以使用各种入口点:

  • 浏览器, 邮件, 或其他预加载数据的应用
  • 电话/短信
  • 第三方应用 (apps)
  • 操作系统
  • 射频(例如基带), 蓝牙或其他通信通道

基于浏览器的攻击

基于浏览器的攻击点可以包括:

网络钓鱼 – 涉及通过电子邮件欺骗来伪装为受信任实体来获取个人信息,例如用户名,密码和信用卡详细信息。 研究表明,移动用户比网络用户提交个人信息的可能性是钓鱼网站的三倍。 这在一定程度上可能是由于移动浏览器运行的缩小的环境,由于有限的屏幕不动产,有限的警告对话,缩小的安全锁图标,并且放弃了许多用户界面指示器,所述环境只显示URL的一小部分 例如大的STOP图标,突出显示的地址栏和其他可视指示器。

框架 - 构架涉及在iFrame中传送Web / WAP站点,这可以使“包装器”站点执行点击劫持攻击。

点击劫持 – 也称为UI修复,点击劫持涉及欺骗用户揭露机密信息或当用户点击看起来无害的链接或按钮时控制他们的设备。 此攻击采用嵌入式代码或脚本的形式,无需用户知识。 点击劫持已被利用在包括Facebook的网站窃取信息或直接用户攻击网站。

下载驱动攻击 – Android尤其容易受到这种攻击,其中网站访问导致发生没有用户知识的下载,或通过诱骗用户具有欺骗性的提示。 下载可以是恶意应用,并且用户然后可以由设备自动提示以安装应用。 当Android设备设置为允许来自“未知来源”的应用时,允许安装。

Man-in-the-Mobile (MitMo) – 允许恶意用户利用放置在移动设备上的恶意软件绕过通过短信向用户的手机发送代码以进行身份确认的密码验证系统。

基于电话或短信的攻击

电话/短信攻击点可以包括:

基带攻击 – 利用在手机的GSM / 3GPP基带处理器中发现的漏洞的攻击,GSM / 3GPP基带处理器是向小区基站发送和接收无线电信号的硬件。

短信钓鱼 – 类似于钓鱼,但使用手机短信代替电子邮件,以提示用户访问非法网站并输入敏感信息,如用户名,密码和信用卡号。

射频攻击 – 蓝牙,NFC攻击和其他RF攻击在各种外围通信信道上发现通常在附近的设备到设备通信中使用的漏洞。

基于应用程序的攻击

基于应用的攻击点可以包括:

敏感数据存储 – 2011年viaForensics研究发现83%的流行应用程序采样存储数据不安全。

无加密或弱加密 – 允许传输未加密或弱加密数据的应用程序容易受到攻击。

SSL验证不正确 – 应用程序的安全套接字层(SSL)验证过程中的错误可能会允许数据安全漏洞。

配置操作 – 包括未经授权访问管理界面,配置存储和检索明文配置数据。

动态运行时注入 – 允许攻击者操纵和滥用应用程序的运行时,绕过安全锁,绕过逻辑检查,访问应用程序的特权部分,甚至窃取存储在内存中的数据。

非必要权限 – 错误配置的应用有时可能会通过授予非必要的权限来打开攻击者的大门。

提升的权限 – 利用一个错误,设计缺陷或配置监督,以获得通常受应用程序或用户保护的资源。

基于操作系统的攻击

基于操作系统的攻击点可以包括:

没有密码 – 许多用户选择不设置密码,或使用弱PIN,密码或模式锁定。

iOS 越狱 – “越狱”是用于消除制造商和运营商提出的防止未经授权的代码在设备上运行的安全机制的术语。 一旦这些限制被删除,设备可以成为恶意软件和其他攻击的网关。

Android rooting – 类似于越狱,rooting允许Android用户更改或替换系统应用程序和设置,运行需要管理员级权限的专门应用程序。 像越狱,它可能导致敏感数据的暴露。

密码和数据的可访问性 – 诸如Apple的iOS设备系列的设备在其用于存储加密密码和数据的加密机制中已经存在漏洞。 具有这些漏洞知识的攻击者可以解密设备的钥匙串,暴露用户密码,加密密钥和其他私人数据。

运营商预安装软件 – 预安装在设备上的软件可能包含安全漏洞。 最近,在Android手机上的一些预加载应用程序被发现包含安全漏洞,可用于擦除手机,窃取数据,甚至窃听电话。

零日漏洞 – 攻击经常发生在漏洞被首次利用的时间和软件开发人员能够发布解决问题的版本之间的窗口期间。

网络

基于网络的攻击点可以包括:

Wi-Fi (弱加密/无加密) – 当在Wi-Fi网络上使用无法实施加密的应用程序时,存在恶意攻击者窃听无线连接而窃取数据的风险。 许多应用程序使用SSL / TLS,这提供了一定程度的保护; 然而一些针对SSL / TLS的攻击也被证明可以将关键用户数据暴露给攻击者。

恶意接入点 – 涉及物理安装授权各方访问安全网络的未授权无线接入点。

数据包嗅探 – 允许恶意入侵者捕获和分析网络流量,这通常包括以明文传输的用户名和密码信息。

中间人攻击 (MITM) – 涉及窃听现有网络连接,侵入该连接,拦截消息和修改选择数据。

SSLStrip – 一种中间人攻击的形式,利用了网站上的SSL / TLS实现的弱点,这可以依赖于用户验证HTTPS连接是否存在。 攻击将连接降级到HTTP,无需加密,用户很难在移动浏览器中检测到。

会话劫持 – 涉及会话密钥的利用以获得对用户和网络信息的未授权访问。

DNS 劫持 – 利用网络DNS可以将网站的用户引导到攻击者选择的另一个网站。 在某些情况下,攻击还可以通过应用程序注入内容。

假SSL证书 – 另一个中间人攻击涉及发出假SSL证书,允许恶意用户拦截假定安全的HTTPS连接上的流量。

数据

针对数据中心的攻击者使用两个主要入口点:

  • Web server
  • 数据库

基于web server的攻击

基于Web服务器的攻击和漏洞包括:

平台漏洞 – 操作系统,服务器软件或Web服务器上运行的应用程序模块的漏洞可能被攻击者利用。 有时可以通过监视移动设备和web服务器之间的通信来发现脆弱性,以发现协议或访问控制中的弱点。

服务器错误配置 – 配置不良的Web服务器可能允许对通常受保护的资源的未授权访问。

跨站点脚本 (XSS) – 跨站点脚本是一种涉及将恶意JavaScript代码注入网站的攻击。 容易受到此类攻击的页面会将用户输入返回浏览器,而不会正确地对其进行整理。 此攻击通常用于在用户访问页面时自动运行代码,从而控制用户的浏览器。 在已经建立对浏览器的控制之后,攻击者可以将该控制用于各种攻击,诸如内容注入或恶意软件传播。

跨站点请求伪造 (CSRF) – 跨站点请求伪造涉及攻击者根据特定Web应用程序的功能知识创建HTTP(Web)请求,并诱骗用户或浏览器提交这些请求。 如果Web应用程序易受攻击,攻击可以执行似乎来自用户的事务或提交。 CSRF通常在攻击者已经通过XSS,社交工程或其他方法获得对用户会话的控制之后使用。

弱输入验证 – 许多Web服务过度信任来自移动应用程序的输入,依靠应用程序来验证最终用户提供的数据。 但是,攻击者可以伪造自己与Web服务器的通信,或完全绕过应用程序的逻辑检查,允许他们利用服务器上缺少的验证逻辑来执行未经授权的操作。

暴力攻击 – 暴力攻击只是试图猜测对字段的有效输入,通常使用高速率的尝试和可能值的字典。 暴力攻击的最常见用法是身份验证,但也可用于在Web应用程序中发现其他有效值。

基于数据库的攻击

数据库攻击和漏洞包括:

SQL 注入 – 没有正确验证用户输入的接口可能导致SQL被注入到其他无害的应用程序查询中,导致数据库暴露或以其他方式操纵通常应该限制用户或应用程序的数据。

执行操作系统级命令 – 与SQL注入类似,某些数据库系统提供了执行操作系统级命令的方法。 攻击者可以将这些命令插入到查询中,使数据库在服务器上执行这些命令,从而为攻击者提供额外的权限,直至并包括根级别系统访问。

权限提升 – 当攻击利用一些漏洞获得更大的访问时,会发生这种情况。 在数据库上,这可能导致敏感数据被盗。 数据转储 - 攻击者导致数据库转储数据库中的一些或所有数据,暴露敏感记录。

移动应用的类型

移动应用通常分为三个操作类别:

Web – 通过通用网络浏览器操作的应用。 有时被称为WAP或移动网站,这些是移动等同于在过去十年中激增的功能性网络应用程序,提供许多功能,如网上银行和购物。 虽然常规网站可用于移动网络浏览器,但许多公司现在创建单独的移动网络应用以优化移动属性,例如更小的屏幕尺寸,基于触摸的导航和GPS位置的可用性。

Native – 安装的应用程序,其操作本机移动设备操作系统,为特定的移动平台编译并利用其API。 这些通常(但不总是)通过应用程序市场下载和安装。

Wrapper – 通过在专用本机应用程序包装器(有时也称为“shell应用程序”或“混合应用程序”)中利用网页操作的应用程序。虽然对最终用户显示为本机应用程序,但基于Web的功能可能导致不同的漏洞 比在完全本地编码的应用程序中发现。