Android 安全测试思路总结(攻击面)

  接触Android安全测试一年有余,被同被人问到给你一个App,你如何确定其中的安全问题。平时真的缺乏一份总结,这里简单总结一下。博客中的提到的部分攻击面,我比较熟悉,也有很多不太清楚的地方,不妨先简单记录下吧。

  根据攻击设备的代价,我们做了如下分类。

  • 远程攻击面
  • 物理邻接攻击面
  • 本地攻击面
  • 物理攻击面

    一、远程攻击面

      最巨大的、最危险的、最有吸引力的攻击界面,攻击者无需本地物理接触受害者。

    1、Networking Stacks(网络协议)

      Android系统使用的Linux内核提供的TCP/IP协议栈可能会引入攻击面,1)Linux底层的网络协议栈由C/C++编写,其存在的“缓冲区溢出”等代码问题可能导致远程执行任意代码,2)协议处理过程中某些字段没有判断而导致拒绝服务

    检查方法:代码review,并搜索不安全函数

2、Exposed Network Services(暴露的网络服务)

  Android本身很少暴露网络服务,多是由应用程序暴露,如开启WIFI热点功能后,会监听TCP 53端口。

检查方法:通过nmap扫描或者本地执行netstat -na|grep LISTEN可以获得暴露的服务,再进行分析。

例子:百度系WormHole算这类漏洞。

3、Moblie Technologies

  这类漏洞指的是通过手机专有的服务进入的远程攻击面,例如通过短信、wap服务这是其他操作系统例如windows、linux不具有的。

这里指SMS、MMS、电话等蜂窝网络服务暴露的攻击面。

SMS、MMS服务使用WAP协议,其中的WAP PUSH消息可被用来发送Service Loading request (SL消息),SL消息可以去调用USSD(Unstructured Supplementary Service Data)功能来执行充值、语音邮箱查询等操作

USSD指令:当你使用手机键盘输入一些网络已预先制定的数字或者符号比如*#等,再按send也就是拨号键就可以向网络发送一条指令,网络根据你的指令选择你需要的服务提供给你。可以用来打电话、修改PUK等 http://baike.baidu.com/link?url=ImBFOug4QRZFJHhypYHxY1i2ZPzzsgQw5Fq-LhWuGD1Bmcvry02IMXqG3QyP7sgZ

WAP PUSH:服务信息或推入信息,是种特殊格式短信 WAP PUSH某站点或某业务链接通短信发送支持WAP PUSH功能手机,通过阅读条短信(服务信息)打短信链接直接访问业务,节省寻找业务时间

WAP Push的内容有两种,一种是SI,service indication;另一种 SL,service loading。这两种内容类型的目的都是发送URL链接到手机上。SI是以异步方式发送一个通知、警示、提醒等信息到手机上,用户会看到屏幕上显示这条通知文字内容,然后,提示你是否去那个页面,如果去,手机将激活为WAP浏览器,打开这个链接,浏览其内容。SL则是直接发送一个 URL链接到手机上,手机不会给用户任何提示,自动地启动WAP微浏览器,下载这个URL对应的内容,显示在手机上。让人觉得好像是推送了一个页面下来了似的。MMS就是利用这个机制实现的,已知攻击是发送tel://开头的SL指令可触发手机打电话 http://www.cnblogs.com/edward259/archive/2010/01/29/1659415.html

4、Client-side Attack Surface(客户端攻击面)

指由于Android上安装的App或者系统提供的服务(App)引入的远程攻击面。

4.1 Browser Attack Surface(浏览器攻击面)

主要有URL钓鱼、MitM、XSS、CSRF方面的威胁

android 4.1之前版本使用的是android browser,4.4之前使用chrome for android ,4.4之后使用基于chromium的web browser(libwebview-chromium.so存在于framework层,为上层应用提供API,由于是随framework更新,因此更新慢,容易受到half day攻击)

另外,还有其他第三方浏览器由于存在漏洞而引人的攻击面

4.2 Web-Powered Mobile Apps(web引擎移动应用)

使用webview技术而引人的攻击面 利用WEB View的攻击:例如 addJavascriptInterface和Android AD network。客户端使用webview的xss、csrf等。

4.3 其他

包括:

  • Ad Networks(广告)
  • Media and Document Processing(媒体推送)(处理图片、文档的开源库,如(libpng、libjpeg),包括最近的png攻击和stagefright攻击)
  • Electronic Mail(电子邮件)
  • Googel Infrastructure(Google基础服务)
  • Google Play
  • Third-Party App Ecosystems

二、Physical Adjacency(物理邻接攻击)

  广义上也算远程攻的一种,只是攻击的范围受到限制。 包括:

  • GPS

1.用户位置信息被APP滥用,泄露用户隐私
2.GPS spoofing : 发送虚假GPS信号导致GPS设备定位错误

  • Baseband

基带处理芯片(CP)及android.telephony.stack协议栈

1.假基站
2.针对RIL层的攻击:相关硬软件如USRP,BladeRF,开源协议栈OSmocom

  • Bluetooth

包含近30种Profile,每一个profile描述了蓝牙的一种功能

比如:
1.HFP(Hand-free profile)/HSP(Headset profile)定义了如何控制麦克风、外放等外设
2.FTP(File transfer profile)
3.DUN(Dial-up Networking profile)
4.HID(Human Interface Device profile)
5.AVRCP(audio/video Remote Control profile)

可能的攻击方法:Bluejacking,Bluesnarfing,Bluebugging

使用的此等协议栈:L2CAP/RFCOMM 4.2之后使用Bluedroid在Framework层对上层导出API接口
https://source.android.com/devices/bluetooth.html

  • Wi-Fi

功能点:连接internet,WIFI直连

协议和算法:WEP、WPA、WPA2、开源协议栈:wpa_supplicant

可能的攻击:Rogue热点、MITM

  • NFC

读取Tag,数据传输(Beam)、移动支付

调用关系:物理NFC芯片->内核:libpn544_fs.so->
Native:libnfc_jni.so,libnfc.so,libnfc_ndef.so->
Framework:com.android.nfc ->上层APP

三、本地攻击面

攻击者通过安装本地App达到攻击的效果。

Exploring the File System

文件系统访问权限设置、SUID/SGUID设置,Owner设置

检查工具:adb shell和Canhazaxs

Applications life cycle

应用生命周期中引入的攻击面

install

安装流程中引入的攻击面,如超长应用名攻击,畸形AndroidManifest.xml标签,APK占位攻击,签名漏洞等。

Applications run

运行流程中引入的攻击面

backup

应用备份恢复时引入的攻击面,如ALLOW-BACKUP漏洞

Finding Other Local Attack Surface

System Calls

在源码中以“SYSCALL_DEFINE”定义

Sockets

sockets恶意调用

Binder

Shared Memory

Baseband Interface

Attacking Hardware Support Services

API

JAVA Native Interface

JNI恶意调用,JNI-DOS

AIDL service Calls

TrustZone Proxy

TurstZone Proxy是链接非安全世界和安全世界的代理

CDEV file_operations

驱动源码中file_operations中定义了驱动节点的接口,如open/write/read/mmap/ioctl

四、物理攻击

USB、adb等。

参考文献:http://colbert337.github.io/2015/08/24/android-attack-surface/

你可能感兴趣的:(找工作)