关于Android攻击面

     先对android整个攻击面有一个体系化的认识,有助于理清思路,

对今后的学习有很大的帮助。

  什么是攻击向量:从语言语法的角度来说,是一个动词,描述用来执行攻击的方法,描述了攻击者如何到达并接触任意给定的漏洞代码。

  什么是攻击面:从语法语法的角度来说,是一个名词,用来描述攻击者可以执行并而进攻的代码,它描述了代码中存在的可能尚未被发现的安全漏洞的位置。

  攻击面主要属性:

    1.攻击向量:所需要的用户交互以及认证条件,限制了给定攻击面中发现任意安全漏洞的影响后果。某些攻击面需要进行物理接触才能发动一次完整的攻击,有些则需要运用社会工程学,诱骗用户对链接进行点击。

    2.获取的权限:在给定攻击面背后的代码可能以极高的权限运行,如内核代码。有的可能在沙盒中以受限权限运行。

    3.内存安全性:是以c系语言还是非c系语言写的,c系语言存在更多的安全漏洞。

    4.复杂性:越复杂的代码,算法,协议越容易出现漏洞。

  攻击面进行分类:

    1:远程攻击面:攻击者无需在物理位置接近目标,而可以直接通过计算机网络发动攻击,具有极大的危害性。

      1>网络协议栈:安全漏洞研究的圣杯,不需要与目标交互就能实施,而且能够获得系统的完全访问控制权,在Android系统中,包含了对IP,TCP,UDP,ICMP等协议的实现。如果在IP包的处理过程中出现可以用的缓冲区溢出漏洞,将成为最为严重的安全漏洞,可以远程执行内核中的任意代码。

      2>暴露的网络服务:无需目标交互的联网服务是第二位具有吸引力的攻击面。这些服务通常的用户空间执行,但是仍有一些潜在的网络服务,如果成功利用,仍然可以获得root权限,当然这类网络服务极少,可以通过nmap等端口扫描器获得,也可以通过netstat获得,当启动wifi,会有额外的网络服务。

      3>移动技术:移动设备通过移动通信暴露了其他远程攻击面,包括通过短信服务(SMS)和多媒体消息服务(MMS),同时使用SMS和MMS消息作为攻击向量还可以达到其它攻击面。MMS消息中可以包含一些多媒体内容。而其它一些协议也实现在SMS之上。

    2:客户端攻击面:由于网络的一般配置屏蔽了许多传统的远程的攻击面,而且客户端对与它通信的服务器非常信任。所以,攻击者很大程度上将关注点转移到客户端软件攻击面中存在的安全漏洞。

      1>浏览器攻击面:现代Web浏览器作为功能最为强大的客户端应用代表,支持HTML,Javascript和丰富的web应用。除了渲染和执行应用逻辑之外还支持一些底层协议。如FTP,HTTP。这些都是有数量惊人的后台代码实现的。而其中的每个组件都带有一个攻击面。可以通过诱导点击,“水坑”等方法进行攻击

      2>web驱动的移动应用程序:每个web驱动的移动应用暴露的攻击面都是不同的。

      3>广告网络:广告网络由于嵌入嵌入式浏览器引擎(WebView),浏览器攻击对于这些应用都是存在的,但一般只能通过中间人攻击人向量。而且与传统浏览器攻击不同,这种组件还会暴露额外的攻击面,可以利用Java类型的反射攻击进行远程攻破。而且,广告框架可能会对隐私构成显著威胁。

      4>媒体和文档处理:常见的文件格式漏洞

      5>电子邮件:相对较少

    3:谷歌基本设施

      1>Google Play商店:国内无需考虑

      2>恶意应用:安装一款应用就等同于授予应用开发者任意代码执行的权限,由于应用数量极大,用户难以确定是否该信任特定的开发者。

      3>第三方应用生态圈:在Google play商店之外安装应用,尤其是部分破解软件,极易捆绑病毒。

      4>Bouncer:

      5>Google Phone Home:

    4:物理相邻

      1>无线通信:Android设备都支持多种基于射频的无线技术,几乎都支持蓝牙和wifi和GPS,较新的还支持NFC(近场通信),每种无线技术都具有特有的频率,且极易受到大量的攻击,包括主动攻击和被动攻击。其中,主动攻击包括阻塞,欺骗,中间人(MitM)等形式。由于wifi和蜂窝网络是用于访问整个互联网,因此可以达到非常丰富的攻击面

        1>>GPS:通常指代Android中的位置信息,可以让设备确定自身在地球的位置。它通过卫星获取信号确定自身位置。

        2>>基带:蜂窝调解器可以提供给基带处理器和移动网络通信的功能。它是Android电话栈的软件组件,由于对它的攻击终端用户难以察觉,而且能够访问手机通话记录及传输数据,对它的攻击具有非常的吸引力。尽管属于远程攻击,但依旧需要在一定的范围内,近年来的“伪基站”攻击

        3>>蓝牙:蓝牙具有30多种协议,每种蓝牙都定义了蓝牙设备的一项特殊功能。如FTP(文件传输协议),HFP(免提协议),HSP(Handest Profile),HID(人机接口设备协议),DUN(拨号网络协议)。蓝牙协议功能首先需要配对。但一些设备使用硬编码的数字码,非常容易攻击。配对后,有可能劫持会话并进行滥用,可能的攻击方法包括BlueJacking,BlueSnarfing和BlueBugging。除了可以与一些免提设备配对,android设备之间还能互相配对,用于传输联系人列表,文件等。蓝牙设计时功能非常多样化,也提供了攻击者希望的几乎所有的功能访问

        4>>Wi-Fi:Wi-Fi主要用于连接局域网,由局域网提供对互联网的访问。详情见于《黑客大曝光:无线网络安全》

        5>>NFC:NFC是建立与射频标示之上(RFID)的无线通信技术,NFC在所有的无线技术中,作用范围最短,通常不超过20cm。Android设备上的NFC有三种典型场景。第一,标签被呈现给设备,设备读取标签的数据并进行处理。第二,两位用户将他们的Anddorid设备贴在一起传输数据。第三,用于非接触式的支付。最流行的消息格式是NFC数据交换格式(NDEF),解析时会导致执行一些动作。在某些情况下,无需用户交互。

      2>其他技术:除了无线通信外,还有其它两个技术也与Android设备的整体攻击面相关。具体来说为QR码(快速响应矩阵码)和语音指令

    5:本地攻击面:当获得对一个设备的任意代码执行后,逻辑上的下一步就是权限提升。终极目标是获得享有特权的代码执行,包括在内存空间执行。或者以root执行。然而只是获得少量权限,也可以暴露更多受限的攻击面。由于权限隔离,为了实现终极目标,需要结合使用多个小的提升目标。

      1>探究文件系统:Android的UNIX血统意味着许多攻击面都是通过文件系统条目暴露的

      2>其它的本地攻击面:除了文件系统,其它的本地攻击面是有linux'内核暴露的,包括系统调用和套接字实现

        1>>系统调用:系统调用处理代表一个值得关注的攻击面

        2>>套接字:Android上运行的软件使用不同类型的套接字进行ipc

        3>>Binder:Binder驱动以及它依赖的软件代表Android特有的一个攻击面。Binder驱动是Intent的基础,而Intent是用于在应用层Android组件进行通信。Binder驱动本身在内核空间实现,并通过。/dev/binder字符设备暴露一个攻击面。

        4>>共享内存:一种定制的内存共享机制

        5>>基带接口:Android智能手机上包含第二个操作系统,就是基带

        6>>攻击硬件支持的服务:包括GPS接收器,光环境传感器,陀螺仪

    6:物理攻击面:需要物理接触设备的攻击被称为依赖于物理攻击面,物理面攻击与物理相邻不同的是物理相邻不需要实际接触目标。

        1>>拆解设备:对目标设备进行拆解,就能够对目标设备中的硬件发起攻击。打开一个硬件设备通常会发现

          【1】:暴露的串口,允许接收调试消息

          【2】:暴露的JTAG调试端口,允许对设备的固件进行调试,重刷或访问

        2>>USB:USB是Android设备与其它设备进行交互的标准化有线接口

        3>>其它物理攻击面:包括手机SIM卡,SD卡,HDMI卡,暴露的测试点和对接连接器

    7:第三方修改:参与生产Android设备的实体会修改操作系统的不同组成部分,一般需要手工进行分析。

        

原文地址:https://www.cnblogs.com/0xJDchen/p/5913325.html