第11章 攻击移动设备
11.1 攻击Android
1、开放手机联盟OHA主要负责Andriod的开发。Android系统被定位为“第一个完全的、开放的和免费的移动平台”。
2、Android系统面临最大的安全问题——分化。
3、Android的另外一个重要特点在其核心:Linux内核。
4、底层操作系统功能交互的渗透测试程序——Nmap和tcpdump
- 原生开发包NDK——允许开发者使用原始代码建立库。
- 便于第三方供应商提供那些需要访问操作系统底层的应用程序。
11.1.1 Android基础
1、Android体系架构的特点:
- 拥有一个ARM交叉编译的Linux内核,从而提供了硬件和其余系统部件之间的桥梁。
- 最重要也是最有特点的一个组件是Dalvik虚拟机——每一个应用程序都在自己的Dalvik虚拟机实例中运行。
- 体系架构的下一层是应用框架,该框架是一系列帮助开发者创建Android应用的软件组件,包括具备创建在后台运行的用户接口和服务功能之类的东西。
2、SQLite是SQL数据库引擎,大多数应用程序使用SQLite实现数据在设备中的永久存储,而不需要相应的安全方法保护其机密性。
3、在系统和内核层,Android提供了一个应用程序沙盒,沙盒使用基于Linux用户的保护,从而识别和隔离应用资源。
提供系统安全性的做法:
- 提供全系统加密
- 系统分区默认被设定为只读
Android提供了一些安全机制,用于提高攻击内存泄露漏洞的难度:
- 地址空间布局随机化
- 使用NX比特使得内存的某些区域不可执行,并因此阻止在诸如栈和堆之类受保护内存区域中的执行
- 权限模式控制对用于敏感或私有数据/功能的受保护的API访问
- 所有应用程序必须使用证书来签名,其实是经过应用程序开发者签名的证书。
4、有用的Android工具:
Android Emulator(模拟器)
- 使得用户可以在一台电脑上定制、开发和测试Android应用程序。
- 缺陷:不能进行实际的电话呼叫或发送真实的短信,不支持关键的设备功能(蓝牙、摄像头/视频输入)。
Android 调试桥
- 实现同模拟器或一个物理设备之间的通信方式。
dalvik调试监控服务器(DDMS)
- DDMS是用于连接adb的调试工具
- 可以执行端口转发、捕捉设备屏幕、使用logcat获取日志信息,向设备/模拟器发送模拟的位置数据、短信、和电话呼叫
- 并提供线程和堆之类的内存管理信息。
其他工具
- Android登录系统或logcat——允许收集和查看系统调试信息。
- sqlite3允许查看使用Android应用程序创建的SQLite数据库。
11.1.2 攻击你的Android
1、越狱:再利用现有系统的脆弱性漏洞之前,用户就具有了管理员的权限。
获取Root权限也可以通过刷定制系统图像来获得默认的root权限。
2、越狱的常用工具:
SuperOneClick
Z4Root
GingerBreak
3、获取Root权限的Android设备上的精致应用
超级用户
- 控制哪些程序能够在你的而设备上以Root权限执行命令
ROM管理器
- 安装一个定制ROM来获取最新版本的Android
市场推进器
- 可以临时修改SIMM发布方代码,使用假冒的位置和电话运营商网络。
ConnectBot
- 远程执行shell命令
Screenshot
- 简单的晃动你的设备可以实现屏幕截图
ES文件管理器
- 能够解压缩和创建加密的ZIP文件,并通过WIFI访问你的电脑,还有SMB,FTP服务器和蓝牙文件传输工具。
SetCPU
- 可以在特定的配置环境中对处理器进行超频或降频。
4、Android上的原生应用
通过使用一个交叉编译器实现的。交叉编译能偶从编译器所运行的平台执行 编译创建在另一个平台的可执行代码。
5、在具有root权限的Android上安装安全原生二进制文件
可以直接从网上下载一些预编译的二进制文件。
BusyBox
- 一个 Unix工具包,允许执行tar、dd和wget等有用的命令。通过传递一个命令名称作为参数就可以使用这个工具。
Tcpdump
- 可以捕获并显示在网络中传输的数据包,可以用作嗅探器来捕获网络通信数据并将信息存储在pcap文件中。
Nmap
- 发送网络数据包到可达的设备,然后分析得到的应答,从中识别特定的细节信息。
Ncat
- 在网络中从命令行读取和写入数据,建立多种远程网络连接的有效工具。
6、特洛伊木马程序
通过使用与原始应用程序相同的图标或名称来达到欺骗的目的。藏身于合法的应用之内,价格恶意代码包含在合法的应用程序中并与合法程序一起执行。
7、apk文件包含两个最重要的部分
Manifest(全局配置)——一个编码的XML文件
Classes.dex——编译后的代码,Dalvik可执行文件。
应用程序组件
- 广播接收器
- Services
11.1.3 攻击其他Android
常见的远程Android攻击
1、通过WebKit的远程shell
- 该攻击从根本上来说是一个手动创建的HTML文件,当使用默认的Android网页浏览器通过网页服务器访问它,会返回一个远程shell到IP地址为10.0.2.2的端口222上。
针对WebKit浮点漏洞的防范对策:
- 为你的设备获取最新版本的Android
- 在你的设备上安装防病毒软件
2、获取Android的Root权限:RageAgainstTheCage
- 常用工具:exploid、RageAgaintTheCage
针对RATC漏洞的防范对策:
- 为你的设备获取最新版本的Android
- 在你的设备上安装防病毒软件
3、数据窃取漏洞
- 另一种可以远程执行的攻击是数据窃取,这使得恶意站点可以窃取存储在SD卡和设备上的数据和文件。
针对数据窃取漏洞的防范对策:
- 为你的设备获取最新版本的Android
- 在你的设备上安装防病毒软件
- 暂时关闭默认的Android网页浏览器里的JavaScript
- 使用诸如Firefox或Opera等第三方浏览器
- 卸载/sdcard分区,保护存储的数据,从而在被攻击时不可用
4、具有零权限的远程shell
攻击其他Android设备的另一种方法是“废掉”Android特色的安全措施:基于权限的安全模型在没有权限的条件下执行特定行为的方法:
- REBOOT
重新启动是一种特殊权限,因为它具有“系统或签名”保护级别,它只可以授权给安装在/system/app分区中的应用程序。- RECEIVEBOOTCOMPLETE
需要和侦听意图BOOT_COMPLETE的接收器一起使用;
绕过这个权限的方法:不要在manifest文件中声明其权限,只要定义了接收器,应用程序的启动功能就自动生效。- INTERNET 使用默认的浏览器,在没有权限的情况下也可以发送数据到远程服务器。
针对数据窃取漏洞的防范对策:
- 调查所要安装的应用程序以及它们的开发者,查看它们的评价和用户的意识,试着识别出可疑的应用程序。
5、能力泄露的漏洞攻击
能力泄露:绕过基于权限的安全模型的另外一种方法是利用泄露的权限。
能力泄露的类型:
- 显式的
- 隐式的
针对数据窃取漏洞的防范对策:
- 调查所要安装的应用程序以及它们的开发者,查看它们的评价和用户的意见,试着识别出可疑的应用程序。
6、来自URL的恶意软件 针对来自URL的恶意软件的防范对策:
- 找到“设置|应用”并取消对“未知来源”选项的选择。
7、Skype数据暴露
另外一种攻击Android的方法就是对安装在设备上的应用程序的漏洞实施攻击。针对Skype数据暴露 的防范对策:
- 保持对应用程序的更新
- 同时删除不使用的应用程序
8、Carrier IQ软件
Android Logger应用程序,该类应用程序的目的是监控设备上的特定活动,收集诊断信息,用于帮助网络供应商或制造商解决诸如呼叫掉线和接听之类的问题。
针对Carrier IQ软件的防范对策:
- 检查你的Android上是否安装了Carrier IQ。
9、HTC logger
预先安装的手持设备爱制造商的应用程序,使用logcat可以从这些应用程序中查点出诸如短信内容和击键等敏感信息。
针对HTC logger 的防范对策:
- 通过无线自动获取补丁或通过“设置|系统上传|HTC软件更新|现在就检查”手动打开补丁下载过程。
- 如获取了设备的Root权限,就可以从/system/app/HtcLoggers.apk中手动删除HTC Logger应用程序。
10、破解Google手机钱包的PIN码
移动支付系统采用近距离通信(NFC),使用移动设备和一个用户定义的PIN码就可以实现电子交易。
针对破解Google手机钱包的PIN码的防范对策:
- 不要对你的电话安全漠不关心
- 使用传统的Android锁幕机制
- 若使用手机进行电子支付,不要获取该手机的Root权限
- 在你的设备上安装反病毒软件,以保护设备不受漏洞攻击的侵害。
11.1.4 Android作为便携式黑客平台
黑客工具:
网络嗅探器
NetWork Spoofer
Connect Cat
Nmap for Android
11.1.5 保护你的Android
Android系统的安全措施核对表
- 保证你的设备在物理上是安全的
- 锁住设备
- 避免安装来路不明/来自未知开发者的应用程序
- 安装安全软件
- 设置全内部存储加密
- 保持更新为Android最新版本
11.2 iOS
iPhone的封闭性是其平台安全性的催化剂
11.2.1 了解你的iPhone
基础的操作系统来源于卡耐基梅隆大学的Mach内核。
ios从NeXTSTEP/Mac OS X 家族演变而来,并或多或少地成为Mac OS X的消减版,其内核依旧基于Mach/BSD,并采用了相似的编程模式,且其应用程序编程模式依然是基于面向对象的C,并严重依赖苹果提供的类库。
11.2.2 iOS有多安全?
设备上安装的应用程序必须被苹果签名后才能执行,但并不能完全保证ios系统的安全。
11.2.3 越狱:发泄愤怒!
1、越狱可以描述为实现对基于ios的设备的全部控制。
- 被越狱的电话还可能丢失一些功能。
- 代码签名验证被关闭了。
优点:
- 你完全控制了一个设备,并能够操作它来发挥它的最大潜能。
缺点:
- 暴露在多种类型的攻击向量之下,这可能导致你的设备被攻陷。
2、越狱的两种方式
- 基于启动过程的越狱
- 远程越狱
11.2.4 入侵其他iPhone:发泄愤怒!
1、从远程网络访问ios以获取访问权限是非常困难的。
- 可选攻击手段取决于客户端漏洞利用、局域网访问或物理访问设备的一些组合。局域网或基于物理访问攻击的可行性取决于攻击的目标。
- 留给攻击者的实际选项通常归结为客户端攻击
- 在获取了对应用程序的控制之后,该过程的第一步就是通过利用内核级别的漏洞来打破沙盒。
2、常见的攻击
1、JailbreakMe3.0 漏洞
- 一个是PDF程序设计错误
它可以执行任意代码,提及的攻击向量是把一个特殊构造的Type 1字体塞入到PDF文件中,当加载时会导致前述代码的执行。- 一个是内核程序设计错误
是一个无效的类型转换程序设计错误,它会影响IOMobileFrameBuffer,导致使用系统权限执行任意代码。- 针对JailbreakMe3.0 漏洞 的防范对策
确保你的操作系统和软件拥有最新的补丁是最佳安全方法。 (1)必须保留ios漏洞,以保证越野能工作
(2)一旦系统被越狱了,你就无法从苹果获取官方更新为发现的漏洞打上补丁。2、iKee攻击——第一个攻击ios的蠕虫病毒被检测到
发动攻击的方式:
- 利用有漏洞的网络服务发动的远程网络攻击
- 利用应用程序的漏洞发动的客户端攻击
- 本地网络攻击
- 接近目标设备的物理攻击
针对iKee攻击 的防范对策
- 不要越狱你的iPhone
- 安装SSH之后马上修改越狱设备上的默认证书,并确保只连接到可信任的网络。
- 可以安装诸如SBSetting之类的实用工具
- 必须确保设备更新为对应iOS的最新越狱版本,同时及时安装有越狱社区提供的针对漏洞的补丁。
3、FOCUS 11中间人攻击
入侵攻击综合利用了几个漏洞攻击技术:
- 利用客户端漏洞的JBME3.0技术
- 利用SSH证书验证漏洞的攻击技术
- 局域网的攻击技术
针对FOCUS 11中间人攻击 的防范对策
- 更新你的设备,并使其保持最新
- 配置你的iOS设备为“在加入网络前进行询问”
- 不要连接未知的无线网络
- 对设备上存储数据的价值进行评估
4、恶意应用程序:Handy Light和InstaStock
- Handy Light——一个闪光灯应用
允许用户以特定的顺序点击闪光的颜色,随后就可以让电话开启一个SOCKS代理服务器。- InstaStock——实时跟踪股票报价软件
针对App Store商店恶意软件的防范对策 :
- 来自著名供应商的应用程序几乎都是安全的,且安装也不会有任何问题
- 对于存储高度敏感数据的用户来说,推荐只在确实有必要使用时才安装所需的应用程序。
- 尽量安装最新版本的固件
5、有漏洞的应用程序:iOS绑定的应用程序和第三方应用程序
在任意事件中,应用程序漏洞都被认为是对基于iOS设备进行非授权访问的关键因素之一。
针对FOCUS 11中间人攻击 的防范对策
- 保证你的设备更新为最新版本的iOS,并保持应用程序更新到最新的版本
6、物理接触 获取存储在iPhone上的敏感口令的步骤
- 使用基于引导过程的越狱方法获得手机的控制
- 然后安装SSH服务器,一旦通过SSH获取了访问权限,将上传一个脚本,使用获得的权限执行该代码,把保存在设备上钥匙链中的口令导出。
针对物理接触式攻击的防范对策
- 确保设备上的所有敏感数据都被加密
- 存储敏感信息的设备必须拥有一个至少六位数字长度的口令并随时使用口令
- 安装能够用于远程追踪设备位置或远程清理敏感数据的软件。
第12章 防范对策手册
12.1 通用策略
通用策略:对策组合的一般原则:
- 移动(删除)资产
- 职责分离
- 身份认证、授权和审核(3A)
- 分层
- 自适应增强
- 有序失败
- 策略及培训
- 简单、便宜和易用
实例场景:
- 桌面场景
- 服务器场景
- 网络场景
- 网页应用程序和数据库场景
- 移动场景
12.1.1 移动(删除)资产
避免冲突的最好方法就是当冲突发生时不要在哪里。
12.1.2 职责分离
前提是将对策中的每一个可操作方面分离。 实现该目标的方法有:
预防、侦测和响应
- 预防:端点固化
- 侦测:网络入侵侦测
- 响应:事件响应流程执行
人员、流程和技术
- 另一种方式是变换对策本身的性质
- 定期检查防火墙日志的异常
检查和平衡
- 防止共谋
- 提供检查和平衡
12.1.3 身份认证、授权和审核(3A)
“3A”是对策设计的另一个关键基础。
12.1.4 分层
分层通常被称为深度防御或补偿控制。
在IT堆栈的每一层都设置补偿策略:
- 物理
- 网络
- 主机
- 应用
- 逻辑
12.1.5 自适应增强
该对策方法是与分层密切相关的。
- 网页应用程序防火墙成为一个临时的自适应机制,用来降低漏洞的威胁性。
- 根据不断变化的环境条件而使用额外的认证要素。
12.1.6 有序失败
- 良好的反应/响应对策
- 技术的测试以及人员和流程
- 计划好哪一项功能在失败后不会自动复位
12.1.7 策略及培训
应该一直把培训作为对策规划的一个关键因素
12.1.8 简单、便宜和易用
“保持简单愚蠢”适用于任何设计的工作,也适用于对策的指定。
12.2 示例应用场景
12.2.1 桌面应用场景
1、配备完善的预防措施和侦测控制:
- 终端的反恶意软件
- 配置管理
- 日志传送
- 基于主机的入侵防御系统
- Tripwire的文件系统完整性监控器
2、基于网络的异常侦测也是一项良策。
在终端部署取证代理程序可以捕获入侵事件中的相关信息。
12.2.2 服务器应用场景
系统管理权限的管制
- 保护系统管理员账户需要设置更高的门槛,采用“3A”是最常见的对策。
最小的攻击面
- 减少城堡门的数量是阻止入侵者行之有效的方法。
- 如何在这个流行平台上减少受到的攻击面
(1)使用Windows防火墙相纸服务权限
(2)禁用不必要的服务强化维护措施
- 使用健壮快捷的安全修补流程是非常有效的对策。
- Windows漏洞修补指导 及时测试和修补漏洞
与补丁发布之前,测试并实施临时的变通方案
启用日志记录和监测- 快速修补漏洞使消除该漏洞的最号选择
主动监控、备份和应急预案
- 对已知有漏洞的系统进行监控,并制定用于系统被攻陷时的应急预案。
12.2.3 网络应用场景
最好的防御手段就是在攻击到达目标之前就阻止它。
网络级控制对第三层防火墙是不可见的——解决该问题的几种方法:
- 在更高网络层部署可视性和控制能力更精细的防火墙
- 把风险较高的系统同含有敏感信息的系统在网络上分离,让他们处于不同的网段。
12.2.4 网页应用程序和数据库应用场景
如何防止网络攻击——方法是分层实施:
- 现有OTS组件
- 定制开发的应用程序代码
12.2.5 移动应用场景
移动(或删除)数据时首先需要考虑的对策之一。
12.3 小结
1、本书的第10、11、12章,主要是从应用程序、移动设备以及防范对策手册的角度,详细的介绍和分析了常见的攻击方法、目前流行的攻击技术和相应的预防手段。其中sql注入是很有趣的部分,但是由于这个周的阅读量比较大,我只是先把书中的内容阅读了,还没有开始实际操作。
2、截止目前,本书已经全部阅读完毕,是在我的阅读计划内完成的,由于我开始制定阅读计划的时候,没有考虑到这是一本专业类的工具书,忽略了实践的部分,所以实际操作起来有一种囫囵吞枣的感觉。对于后半部分的内容,感觉实践起来还有很大的难度,毕竟,我曾想扫描出一台活动的主机,扫描了192.168.1.0/24网段,却并没有发现活动的主机。该网段并不是真的没有一台活动的主机,而是现在的计算机都开启了防火墙和IDS,像我这样一个刚刚入门的门外汉,实际操作起来真是有些寸步难行。
3、我虽然看完了这本书,但是我觉得还需要一定的时间整理一下,所以我准备接下来的两个周,用来回顾这本书的内容,将我能实现的操作,实现一下,再接着进行阅读计划,当然,每周的成果还会以读书笔记的方式呈现。