Android Attack Surface(持续更新)
更新日期:
Android系统有哪些攻击面呢?如何指导我们做好Android安全?
先上一幅总图:
1.Remote Attack Surface(远程攻击面)
最巨大的、最危险的、最有吸引力的攻击界面,攻击者无需本地物理接触受害者
Networking Stacks(网络协议)
Android系统使用的Linux内核提供的TCP/IP协议栈可能会引入攻击面,1)Linux底层的网络协议栈由C/C++编写,其存在的“缓冲区溢出”等代码问题可能导致远程执行任意代码,2)协议处理过程中某些字段没有判断而导致拒绝服务
检查方法:代码review,并搜索不安全函数
Exposed Network Services(暴露的网络服务)
Android本身很少暴露网络服务,多是由应用程序暴露,如开启WIFI热点功能后,会监听TCP 53端口
检查方法:通过nmap扫描或者本地执行netstat -na|grep LISTEN可以获得暴露的服务,再进行分析
Moblie Technologies
这里指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
Client-side Attack Surface(客户端攻击面)
手机上安装的客户端软件引入的的攻击界面
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攻击)
另外,还有其他第三方浏览器由于存在漏洞而引人的攻击面
Web-Powered Mobile Apps(web引擎移动应用)
使用webview技术而引人的攻击面
利用WEB View的攻击:.Java-style reflection attack针对
addJavascriptInterface和Android AD network?
Security research firm MWR InfoSecurity released an advisory this week detailing a reflection attack against the addJavaScriptInterface functionality offered by the Android operating system’s WebKit component, which allows developers to define methods which can be called by JavaScript. Although the original intent of the functionality was to expose only clearly defined methods, a trivial sequence of calls could allow full command execution by malicious web pages if any methods are exported at all through this interface. While the issue has been fixed in Android 4.2, MWR’s research shows a wide array of popular apps and ad networks still vulnerable to attacks.
Ad Networks(广告)
Media and Document Processing(媒体推送)
处理图片、文档的开源库,如(libpng、libjpeg),包括最近的png攻击和stagefright攻击
Electronic Mail(电子邮件)
电邮应用引入的漏洞
Googel Infrastructure(Google基础服务)
Google体系中的后端云服务引人的攻击面
Google Play
Google应用市场中可能存在恶意APP或木马APP
Third-Party App Ecosystems
非官方应用市场中可能存在伪装为热门APP的恶意程序,以及在热门APP中注入的后门软件
Google Phones Home
GTalkService是google云服务中的重要组件,允许google在用户不知情的情况下在用户设备上安装或卸载应用
已知攻击查询:https://jon.oberheide.org/
2.Physical Adjacency(物理邻接攻击)
攻击者与被攻击对象在一定范围内,如GPS,WIFI
Wireless Communications(无线通讯)
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
Other Technologies
Google可穿戴设备使用的技术(Quick Response、Voice Commands)
3.Local Attack Surfaces(本地攻击面)
攻击者可以达到实现任意代码执行和提权的目的,这种攻击界面在测试新root方法时最为明显
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
4.Physical Attack Surfaces(物理攻击面)
攻击需要物理接触设备,虽然大部分物理攻击可防御,但仍很严重因为有些攻击会在瞬间完成
Dismantling Devices(拆解设备)
暴露的串口、JTAG口、可拆卸的Flash
USB
Enumerating USB Attack Surfaces
USB暴露的攻击面取决于设备支持哪些USB modle(ADB、存储、MTP等)
ADB
通常使用adb shell,4.2.2之前 ADB shell不需要认证,之后需要
攻击场景:Juice Jacking 假充电站攻击
Other Physical Attack Surface
SIM Cards、SD Cards、HDMI、exposed test points、docking conectors
5.Third-Party Modifications(第三方修改)
如何识别这些定制和修改:可以与Nexus设备对比,例如:
1.使用ps命令,进程对比
2.文件对比,新增/修改过的文件
3.init文件对比,新增的服务和启动项
4.源码compare