黑客攻防从入门到精通(智能终端版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-31 23:25:11

点击下载

作者:武新华,李书梅

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

黑客攻防从入门到精通(智能终端版)

黑客攻防从入门到精通(智能终端版)试读:

前言

随着技术的日新月异,移动设备逐渐担当起了越来越重要的角色,智能手机的功能越来越强大,并且能够提供类似于台式计算机和笔记本计算机的功能,新的移动技术和具有WiFi功能的产品的广泛使用为新的攻击类型敞开了大门——网络犯罪正通过移动设备向人们靠近。这也使得安全人员面临更严峻的挑战:需要保护移动设备不受移动病毒、蠕虫和间谍软件等传统的恶意软件以及针对移动设备的垃圾邮件的影响。

随着移动设备的广泛应用,移动付款也成为用户青睐的资金交换方式。几乎在任何地方都能通过移动付款并以电子支付的方式进行购物和支付。对于用户来说,这确实很方便。然而,黑客对一些疏于防范的移动设备展开攻击,识别、窃取信用卡账号、勒索银行等行为也越来越多。

在WiFi安全方面也存在很大问题。如今,WiFi的应用也不再局限于计算机,移动设备对其的应用已经占据了相当大的比例。2015年的“3·15”晚会上,央视曝光了免费WiFi的安全问题。在现场,几位工程师利用伪造WiFi技术窃取了台下观众的上网内容,并在大屏幕上向大家进行了展示,相信不少读者看了都会心惊胆颤的。

因而,面对智能手机和PDA受到的安全威胁日益加剧的现状,进行有效的安全应对,让手持移动设备的用户能够将潜在的风险遏制在萌芽状态,就显得非常重要。

本书围绕“攻”“防”两个不同的角度,在讲解存在于移动设备中的安全问题时,介绍相应的防范方法,图文并茂地再现黑客攻防全过程。

在此,感谢广大读者对本书的阅读与支持,由于作者水平有限,书中难免存在疏漏之处,欢迎批评指正。

第1章 初识黑客

黑客这个名词我们并不陌生,随着智能手机行业的蓬勃发展,黑客也把目光从计算机转移到了移动设备上。如今使用移动设备购物、支付的方式越来越普遍。如果移动设备感染了病毒、木马,或者被恶意软件入侵,可能会导致个人隐私被曝光,账户以及财产被窃取。

1.1 认识黑客

1.1.1 什么是黑客

1994年以来,互联网在全球的迅猛发展为我们提供了方便、自由和无限的财富,政治、军事、经济、科技、教育和文化等各个方面都越来越网络化,互联网逐渐成为人们生活、娱乐的一部分。可以说,信息时代已经到来,信息已成为物质和能量以外维持人类社会的第3资源,它是未来生活中的重要介质。随着计算机的普及和互联网技术的迅速发展,黑客也随之出现了。

黑客是指一类拥有熟练计算机技术的人,但大部分媒体将计算机侵入者称为黑客。而实际上,黑客可分为如下几种:

白帽黑客是指有能力破坏计算机安全但没有恶意目的的黑客。白帽黑客一般遵守道德规范并常常试图同企业合作去改善所发现的计算机安全弱点。

灰帽黑客是指处于伦理和法律边缘的黑客。

黑帽黑客别称骇客,经常用于区分黑帽黑客和一般(正面的)有理性的黑客。这个词流行于1983年,采用了“Safe Cracker”的相似发音,并被理论化为一个犯罪和黑客的混成语。1.1.2 手机黑客

智能手机的发展和虚拟支付的进步,给黑客组织进行非法攻击创造了机会。随着移动端市场的扩大,社交软件集结了大量用户,在手机端支付还尚未完全成熟的市场环境下,黑客组织瞄准时机,将大量新增移动恶意程序和手机银行木马植入社交软件中,直接威胁用户的手机钱包。

移动端这一块蛋糕大而美,人人都想瓜分,这更刺激了非法分子的欲望。专家认为,在未来很长的一段时间内,各种层出不穷的新型病毒和木马将纷纷进入手机用户市场。为此,给手机设一道保护锁已成必然。保护锁可全面抵御病毒、木马和恶意软件的威胁,因此,能有效拦截骚扰电话和短信的卡巴斯基安全软件是手机用户的不二之选。此外,提高自身网络安全防范意识,在正规网站下载软件,切勿单击不明网站链接,是每个网民应具备的技巧。1.1.3 黑客的特点

黑客的特点一般是:有英文基础、知道常用的黑客术语和网络安全术语、能熟练使用常用的DOS命令和黑客工具,还会使用主流的编程语言以及脚本。

在常见的黑客论坛中,经常会看到肉鸡、后门和免杀等词语,这些词语可以统称为黑客术语。除了具有相关的黑客技术之外,黑客一般还拥有TCP/IP、ARP等网络协议知识。

而常用DOS命令是指在DOS环境下使用的一些命令,主要包括ping、netstat以及net命令等,利用这些命令可以实现不同的功能。例如,使用ping命令可以获取目标计算机的IP地址以及主机名。黑客工具则是指黑客用来远程入侵或者查看目标计算机是否存在漏洞的工具。例如,使用X-Scan可以查看目标计算机是否存在漏洞,利用EXE捆绑器可以制作带木马的其他应用程序。

主流编程语言可分为5类,分别如下。(1)网页脚本语言(Web Page Script Languages)

网页脚本语言就是网页代码。例如HTML、JavaScript、CSS、ASP、PHP和XML等。(2)解释型语言(Interpreted Languages)

解释型语言包括Perl、Python、REBOL和Ruby等,也常被称为脚本语言,通常被用于和底层的操作系统沟通。这类语言的缺点是效率差、源代码外露,因此不适合用来开发软件产品,一般用于网页服务器中。(3)混合型语言(Hybrid Languages)

混合型语言的代表是Java和C#,介于解释型语言和编译型语言之间。(4)编译型语言(Compiling Languages)

C/C++、JAVA都是编译型语言。(5)汇编语言(Assembly Languages)

汇编语言是最接近于硬件的语言,不过现在用的人很少。【提示】程序语言的学习顺序建议如下。如果完全没有程序经验,可按照这个顺序:Javascript→解释型语言→混合型语言→编译型语言→汇编学习。

1.2 黑客基础知识

1.2.1 黑客常用术语介绍

1.肉鸡

肉鸡比喻那些可以随意被黑客控制的计算机,黑客可以像操作自己的计算机那样来操作它们,而不被对方发觉。

2.木马

木马是指表面上伪装成了正常的程序,但是当这些程序运行时,就会获取系统的整个控制权限。很多黑客都热衷于使用木马程序来控制别人的计算机,比如灰鸽子、黑洞、PcShare等。

3.网页木马

网页木马是指表面上伪装成普通的网页文件或是将木马代码直接插入到正常的网页文件中,当有人访问时,网页木马就会利用对方系统或者浏览器的漏洞自动将配置好木马的服务端下载到访问者的计算机上来自动执行。

4.挂马

挂马是指在别人的网站文件里面放入网页木马或者是将代码潜入到对方正常的网页文件里,以使浏览者中马。

5.后门

后门是一种形象的比喻,黑客在利用某些方法成功地控制了目标主机后,可以在对方的系统中植入特定的程序,或者是修改某些设置。这些改动从表面上是很难被察觉的,但是黑客却可以使用相应的程序或者方法轻易地与这台计算机建立连接,重新控制这台计算机,就好像是黑客偷偷配了一把主人房间的钥匙,从而可以随时进出房间而不被主人发现一样。通常,大多数的特洛伊木马程序都可以被入侵者用语言制作后门。

6.IPC$

IPC$是共享“命名管道”的资源,它是为了让进程之间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。

7.弱口令

弱口令是指那些强度不够,容易被猜解的口令,类似123、abc这样的口令(密码)。

8.Shell

Shell是指一种命令运行环境,比如我们按下键盘上的“开始键+R”组合键时出现“运行”对话框,在里面输入“cmd”会出现一个用于执行命令的窗口,这个就是Windows的Shell执行环境。

9.WebShell

WebShell就是以ASP、PHP、JSP或者CGI等网页文件形式存在的一种命令执行环境,也可以将其称为一种网页后门。

10.溢出

确切地讲,应该是“缓冲区溢出”,简单解释就是程序对接收的输入数据没有执行有效的检测而导致错误,后果可能是程序崩溃或者是执行攻击者的命令。其大致可以分为两类:①堆溢出;②栈溢出。

11.注入

由于程序员的水平参差不齐,相当大的一部分应用程序存在安全隐患,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些想要的数据,这个就是SQL注入。

12.注入点

注入点是可以实行注入的地方,通常是一个访问数据库的连接。根据注入点数据库运行账号的不同权限,所得到的权限也会不同。

13.内网

内网通俗地讲就是局域网,比如网吧、校园网、公司内部网等都属于此类。查看IP地址,如果是在以下3个范围之内的话,就说明我们是处于内网之中的:10.0.0.0~10.255.255.255,172.16.0.0~172.31.255.255,192.168.0.0~192.168.255.255。

14.外网

外网直接连入互联网,可以与互联网上的任意一台计算机互相访问。

15.免杀

通过加壳、加密、修改特征码和加花指令等技术来修改程序,使其逃过杀毒软件的查杀。

16.加壳

利用特殊的算法,改变EXE可执行程序或者DLL动态连接库文件的编码(比如实现压缩、加密),以达到缩小文件体积或者加密程序编码,甚至是躲过杀毒软件查杀的目的。目前较常用的壳有UPX、ASPack、PePack、PECompact和UPack等。

17.花指令

花指令是几句汇编指令,可让汇编语句进行一些跳转,使得杀毒软件不能正常地判断病毒文件的构造。通俗地讲,就是杀毒软件是从头到脚按顺序来查找病毒的,如果我们把病毒的头和脚颠倒位置,杀毒软件就找不到病毒了。1.2.2 IP地址概念

所谓IP地址,就是一种主机编址方式,给每个连接在互联网上的主机分配一个32bits(比特)地址,也称为网际协议地址。

按照传输控制协议/Internet协议(Transport Control Protocol/Internet Protocol,TCP/IP)的规定,IP地址用二进制来表示,每个IP地址长32bits,比特换算成字节就是4个字节。例如,一个采用二进制形式的IP地址是“00001010000000000000000000000001”,这么长的地址人们处理起来会很费劲,为了方便使用,IP地址经常被写成十进制的形式,中间使用符号“.”将其分为不同的字节,即用XXX.XXX.XXX.XXX的形式来表现,每组XXX代表小于等于255的10进制数,如192.168.38.6。IP地址的这种表示方法称为“点分十进制表示法”,这显然比二进制的1或0容易记忆。

一个完整的IP地址信息通常应包括IP地址、子网掩码、默认网关和DNS等4部分内容。它们4个只有在协同工作时,用户才可以访问互联网并被互联网中的计算机所访问(采用静态IP地址接入互联网时,ISP应当为用户提供全部的IP地址信息)。

1.IP地址

企业网络使用的合法IP地址,由提供互联网接入的服务商(ISP)分配,私有IP地址则可以由网络管理员自由分配。但网络内部所有计算机的IP地址都不能相同,否则会发生IP地址冲突,导致网络连接失败。

2.子网掩码

子网掩码是与IP地址结合使用的一种技术,其主要作用有两个,一是用于确定地址中的网络号和主机号,二是用于将一个大IP网络划分为若干个子网络。

3.默认网关

默认网关是指如果一台主机找不到可用的网关,就把数据包发送给默认指定的网关,由这个网关来处理数据包。从一个网络向另一个网络发送信息时,必须经过一道“关口”,这道关口就是网关。

4.DNS

DNS服务用于将用户的域名请求转换为IP地址。如果企业网络没有提供DNS服务,则DNS服务器的IP地址应当是ISP的DNS服务器。如果企业网络自己提供了DNS服务,则DNS服务器的IP地址就是内部DNS服务器的IP地址。

1.3 智能手机操作系统

智能手机操作系统是一种运算能力及功能比传统功能手机更强的操作系统。使用最多的操作系统有iOS、Android、Windows Phone、Symbian和BlackBerry OS。它们之间的应用软件互不兼容。

智能手机可以像个人计算机一样安装第三方软件,并且能够显示与个人计算机所显示出的一致的网页,它具有独立的操作系统以及良好的用户界面,拥有很强的应用扩展性,能轻松随意地安装和删除应用程序。1.3.1 iOS

iOS智能手机操作系统的原名为iPhone OS,其核心与Mac OS X的核心同样都源自于Apple Darwin。它主要是供iPhone和iPod Touch使用的,该操作系统大概占用1.1GB的存储空间。

iOS由两部分组成:操作系统和能在iPhone和iPod Touch设备上运行原生程序的技术。由于iPhone是为移动终端而开发的,所以要解决的用户需求就与Mac OS X有些不同,尽管在底层的实现上iPhone与Mac OS X共享了一些技术。如果你是一名Mac开发人员,你可以在iPhone OS中发现很多熟悉的技术,同时也会注意到iPhone OS的独有之处,比如多触点接口(Multi-Touch Interface)和加速器(Accelerometer)。

iPhone和iPod Touch使用基于ARM架构的中央处理器,而不是x86处理器,它还使用由PowerVR视频卡渲染的OpenGL ES 1.1图形库,因此,Mac OS X上的应用程序不能直接复制到iPhone OS上运行,它们需要针对iPhone OS的ARM重新编写,但就像下面所提到的,Safari浏览器支持“Web应用程序”。从iPhone OS 2.0开始,通过审核的第三方应用程序已经能够通过苹果的App Store进行发布和下载了。1.3.2 Android

Android是一种以Linux为基础的开放源代码操作系统,主要应用于便携设备。目前尚未有统一的中文名称,中国大陆地区较多人使用“Android”或“安致”。Android操作系统最初由Andy Rubin(安迪·鲁宾)开发,主要用于手机,2005年被谷歌公司收购注资,并组建开放手持设备联盟(Open Handset Alliance)来共同研发改良Android系统并生产搭载Android的智慧型手机,使其逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的BlackBerry OS。

Android的Linux Kernel控制包括安全(Security)、存储器管理(Memory Management)、程序管理(Process Management)、网络堆栈(Network Stack)和驱动程序模型(Driver Model)等。

Android平台有5大优势。

1.开放性

Android平台的首要优势就是开放性,该平台允许任何移动终端厂商加入Android联盟。友好的开放性可以使其拥有更多的开发者。随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。

开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商。而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大的竞争,如此一来,消费者便可以用更低的价位购得心仪的手机。

2.挣脱运营商的束缚

在过去很长的一段时间内,特别是在欧美地区,手机应用往往受到运营商的制约,使用什么功能、接入什么网络,几乎都受运营商的控制。从2014年iPhone上市之后,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G过渡技术和移动网络的出现,手机随意接入网络已不是运营商口中的笑谈。当你可以通过手机IM软件方便地进行即时聊天时,再回想之前天价的彩信和图铃下载业务,是不是觉得像噩梦一样?

3.丰富的硬件选择

丰富的硬件选择还与Android平台的开放性有关。由于Android的开放性,众多的厂商会推出多种千奇百怪、功能特色各异的产品。虽然这些产品在功能上有差异和特色,但却不会影响数据同步,甚至软件的兼容,好比你之前用诺基亚Symbian风格的手机,现改用苹果的iPhone,也可将Symbian中优秀的软件带到iPhone上使用,联系人等资料更是可以方便地转移,这样是不是非常方便呢?

4.不受任何限制的开发商

Android平台给第三方开发商提供了一个十分宽泛、自由的环境,使其不受各种条条框框的阻挠,可想而知,在此条件下会有多少新颖别致的软件诞生。但这也有两面性,对血腥、暴力和情色方面的程序和游戏如何控制正是留给Android的难题之一。

5.无缝结合的谷歌应用

如今叱咤互联网的谷歌已经有10余年历史,从搜索巨人到全面的互联网渗透,谷歌服务(如地图、邮件和搜索等)已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的谷歌服务。1.3.3 Windows Phone

Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验集成在手机中。Windows Phone具有桌面定制、图标拖曳、滑动控制等一系列前卫的操作体验,其主屏幕通过提供类似仪表盘的体验来显示新的电子邮件、短信、未接来电和日历约会等,对重要信息实时更新。

2012年6月21日,微软正式发布手机操作系统Windows Phone 8,Windows Phone 8采用和Windows 8相同的内核。不过,2015年1月22日凌晨1点,微软召开主题为“Window 10,下一篇章”的Windows 10发布会,发布会上提出Windows 10将是一个跨平台的系统,无论手机、平板、笔记本、二合一设备、PC都可以使用。这也就意味着,2010年发布的Windows Phone品牌将正式终结,被统一命名的Windows 10所取代。而Windows Phone系统也将在经历Windows Phone 7、Windows Phone 7.1/7.5/7.8、Windows Phone 8和Windows Phone 8.1后正式谢幕。不过Windows Phone 8和Windows Phone 8.1将继续为用户提供支持,直到各自36个月的生命周期结束。1.3.4 Symbian

Symbian(塞班)由塞班公司设计,被诺基亚收购之后,移转到塞班基金会,并以开放源代码的形式发布。它的前身是Psion的EPOC,可独占式地运行于ARM处理器中。它包含由塞班公司所提供的相关函数库、用户界面架构和共用工具的参考实现。

Symbian智能手机的操作系统是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,适合手机等移动设备使用,可支持GPRS、蓝牙、SyncML以及3G技术。

诺基亚的智能手机大多使用塞班系统,该系统同时也为其他一些品牌所使用,但随着2011年诺基亚宣布放弃此系统,开放塞班系统源代码,并停止更新,现今塞班系统的市场占有率已经极低。1.3.5 BlackBerry OS

BlackBerry OS是由Research In Motion(现为BlackBerry)为其智能手机产品BlackBerry开发的专用操作系统。它具有多任务处理能力,并支持特定的输入装置,如滚轮、轨迹球、触摸板以及触摸屏等。BlackBerry平台最著名的特色莫过于它的邮件处理能力,该平台通过MIDP 1.0以及MIDP 2.0的子集,在与BlackBerry Enterprise Server连接时,以无线的方式激活并与Microsoft Exchange、Lotus Domino或Novell GroupWise同步邮件、任务、日程、备忘录和联系人。

1.4 常见的手机攻击类型

随着手机的不断普及,人们对手机的依赖已经达到了前所未有的高度,而对手机安全造成威胁的正是防不胜防的网络黑客。纵观当今的互联网界,木马病毒泛滥、黑客攻击猖獗,各种病毒变体花样百出,恶意攻击手段层出不穷。如何防黑、反黑、制黑,已成为所有用户共同面对的巨大挑战。

对于计算机受到黑客攻击的类型我们或许有所了解,如今的智能手机已经实现了计算机的大部分功能,因而黑客对智能手机的攻击与计算机也类似,常见的手机攻击类型有蓝牙攻击、拒绝服务攻击、电子邮件攻击及病毒、木马和蠕虫攻击等。

第2章 iOS操作系统

iOS是由苹果公司为iPhone开发的操作系统,主要供iPhone、iPod Touch以及iPad使用。iOS与苹果的Mac OS X操作系统一样,属于类UNIX的商业操作系统。原本这个系统名为iPhone OS,直到2010年6月7日在WWDC大会上宣布将其改名为iOS。

2.1 iOS操作系统概述

2.1.1 iOS的用户界面

iOS的用户界面基本上是能够使用多点触控直接操作的。用户可通过滑动、轻触开关及按键来控制系统,并通过滑动、轻按、挤压及旋转行为来与系统交互。此外,通过内置的加速器、可旋转设备令屏幕改变方向。

屏幕上方有一个能显示一些相关数据的状态栏,如时间﹑电池电量和信号强度等。在屏幕的下方有一个主屏幕按键,屏幕底部则是Dock,且有几个用户最频繁使用的程序图标被固定在Dock上。其余的屏幕用于显示当前的应用程序。iPhone(左)和iPod Touch(右)的界面如下所示。

单击屏幕上的应用程序即可启动它,对于iPhone和iPod,是按屏幕下方的Home键可退出程序,对于iPad,可使用五指捏合手势回到主屏幕。在退出第三方应用软件后,相关程序直接就被关闭了,但在iOS及后续版本中,当第三方软件收到了新的信息时,苹果公司的服务器会将这些通知推送至iPhone、iPad或iPod Touch上,也可通过设定来隐藏此类通知。2.1.2 iOS的发展历程

iOS最早于2007年1月9日的苹果Macworld展览会上公布,随后于同年的6月发布第一版iOS操作系统,当初的名称为“iPhone runs OS X”。

最初,由于没有人了解“iPhone runs OS X”的潜在价值和发展前景,所以没有一家软件公司,也没有一个软件开发者给“iPhone runs OS X”开发软件或者提供软件支持。于是,苹果公司时任CEO斯蒂夫·乔布斯说服各大软件公司以及开发者可以先搭建低成本的网络应用程序(Web App)以像iPhone的本地化程序一样测试“iPhone runs OS X”平台。

2007年10月17日,苹果公司发布了第一个本地化iPhone应用程序开发包(SDK),并且计划在同年2月将其发送到每个开发者以及开发商手中。

2008年3月6日,苹果发布了第一个测试版开发包,并且将“iPhone runs OS X”改名为“iPhone OS”。

2008年9月,苹果公司将iPod Touch的系统也换成了“iPhone OS”。

2010年2月27日,苹果公司发布iPad,iPad同样搭载了“iPhone OS”。同年,苹果公司重新设计了“iPhone OS”的系统结构和自带程序。

2010年6月,苹果公司将“iPhone OS”改名为“iOS”,同时还获得了思科iOS的名称授权。

2010年第四季度,苹果公司的iOS占据了全球智能手机操作系统26%的市场份额。

2011年10月4日,苹果公司宣布iOS平台的应用程序已经突破50万个。

2012年2月,应用总量达到552247个,其中游戏应用最多,达到95324个,比重为17.26%;书籍类以60604个排在第二,比重为10.97%;娱乐应用排在第三,总量为56998个,比重为10.32%。

2012年6月,苹果公司在WWDC 2012上宣布了iOS 6,提供了超过200项新功能。

2013年1月29日,苹果公司推出了iOS 6.1正式版的更新。更新内容仍以完善iOS系统为主,对Siri、Passbook等进行了改善,修复了一些iOS 6上存在的Bug等。

2013年3月20日,苹果公司推出iOS 6.1.3更新版,主要修正了iOS 6的越狱漏洞和锁屏密码漏洞。这是iOS 6的最后一次更新。

2013年6月10日,苹果公司在WWDC 2013上发布了iOS 7,几乎重绘了所有的系统App,摒弃了所有的仿实物化设计,整体设计风格转为扁平化。

2014年6月3日,苹果公司在WWDC 2014上发布了iOS 8,并提供了开发者预览版更新。2.1.3 iOS 8的新特性

iOS 8继续沿用了iOS 7扁平化风格,两者的图形界面基本没有什么变化。在功能上有一些改进,下面详细介绍。

1.支持第三方键盘输入

iOS 7不支持第三方键盘,而iOS 8则把这个权限留给了用户,可由用户自由选择是否使用第三方键盘。

2.短信快捷回复功能

之前的系统收到一条短信时,需要单击打开短信应用界面,才可以进行回复操作,而iOS 8系统中的短信功能有所改进,增加了快捷回复操作功能。

在iOS 8上收到短信时,将通知栏向下滑动。

输入要回复的内容,单击“发送”按钮即可回复信息。

如果在锁屏界面收到短信,向左滑动界面同样可实现快捷回复。

3.语音信息和群组信息功能

在信息中加入了语音短信功能,类似于微信,可以通过iMessage直接发送语音消息或者录音,也可以发送短视频信息。同时加入群组信息功能,用户可以在聊天中增加和移除联系人,以群发短信,更加便捷。

4.家庭分享功能

使用该功能,用户可以与家庭成员分享照片、日历事项、备忘,甚至可以查看其他家庭成员的位置。

5.收集用户健康数据(Healkit)

Healkit是iOS 8全新的主打功能之一,正如传闻Healkit相当于一个可以收集用户健康数据的系统。在Healkit里,用户可以随时查看各种与健康和健身相关的信息,比如血液、心率、水化、血压、营养、血糖、睡眠、呼吸频率、血氧饱和度和体重等。Healkit可作为每位用户健康数据的储存中心,用户需要时可以将其提供给医疗机构。

图中所示为运动步数曲线统计图,可以看到这一天走了752步,0.34km。

6.在日历中加入农历

打开通用→邮件、通讯录、日历→其他历法→农历,即可添加农历。设置完成后打开日历就能看到农历了。这项功能也算是iOS 8对用户在日历查看方面的特殊满足,实用性也非常高。

2.2 iOS的系统结构与开发语言

2.2.1 iOS的系统结构

iOS的系统结构分为4个层次:核心操作系统(the Core OS Layer)、核心服务层(the Core Services Layer)、媒体层(the Media Layer)以及可轻触层(the Cocoa Touch Layer)。

1)Core OS位于iOS系统架构最下面的一层,是核心操作系统层,它包括内存管理、文件系统、电源管理以及一些其他的操作系统任务。它可以直接和硬件设备进行交互。

2)Core Services是核心服务层,可以通过它来访问iOS的一些服务。

3)Media是媒体层,我们可以通过它在应用程序中使用各种媒体文件,进行音频与视频的录制、图形的绘制以及制作基础的动画效果。

4)Cocoa Touch是可触摸层,这一层为应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,从本质上来说,它负责用户在iOS设备上的触摸交互操作。2.2.2 iOS的开发语言

Objective-C是iOS的开发语言,它是一种简洁的、面向对象的程序设计语言,所有的iOS应用程序都由它来驱动。

对初学者来说,Objective-C存在了很多令人费解的写法,实际上它们是非常优雅的。有C语言基础的程序员可以很容易掌握Objective-C这门编程语言。

程序员写得最多的就是函数以及调用自己写的或者别人写的函数。下面就从函数的角度来看下Objective-C的优雅之处。

C#和Objective-C同属于C语言系列。让我们先看一下C#的函数定义和调用,做个对比。

C#函数的定义如下。public void doIt(string actorName, string movieName, int timesSeen){Console.Write("{0} is my favorite actor in the movie {1}, I saw it {2} times.", actorName, movieName, timesSeen);}

函数的调用如下。Class1 objMovie = new Class1();objMovie.doIt("李·佩斯", "霍比特人", 40);

再来看一下Objective-C的定义:- (void) doIt:(NSString *) actorName movieName: (NSString*) value timesSeen: (int)times {NSLog(@"%@ is my favorite actor in the movie %@, I saw it %i times.",actorName, value, times);}

如果你是第一次看见Objective-C,肯定会琢磨不透上面的代码,怀疑是不是写错了。

对于上面这个函数的定义,解释如下。

1)“-”表示这个函数是实例函数(类似非静态函数),而“+”表示这个函数是类函数(类似静态函数)。

2)(void)表示这个函数没有返回值。

3)函数名是“doIt:”,而不是“doIt”。

4)参数用空格隔开。

5)参数类型写在括号中。

6)参数分内部参数和外部参数,如电影名称,内部参数是:value,外部参数是:movieName。

7)该函数中只有一个参数没有外部参数名,而有内部参数名,如actorName。

调用:[objMovie doIt:@" 李·佩斯" movieName:@" 霍比特人" timesSeen:40]

从上面代码可以看出除了第一个参数,其余的参数都可以加上外部参数名称以进行区分。

从上面可以看出Objective-C和C#区别很大,实在会令“.NET”程序员费解。Objective-C函数设计的优雅之处在于既有内部参数名又有外部参数名,可以不用再在内部定义变量来存放函数的参数。

2.3 iOS操作系统刷机

2.3.1 什么是刷机

刷机泛指通过软件或者手机自身对系统文件进行更改,从而使手机达到自己想要的或者更好的使用效果。有时,智能手机的系统被损坏造成功能缺失或无法开机,这种情况也通常用刷机的方法恢复。

刷机可以通过生产商指定的地点及人员进行,可以是官方的,也可以是非官方的,即DIY固件。在实际生活当中,由于手机固件与其使用的软件升级不同步,使得一些新手机在使用之初就可能出现各种各样的问题,若出现这样的情况,一般需要到生产商指定的服务网点进行刷机解决。

利用刷机可以全面清理手机内部的软件系统,用户可以不受限制地在各版本中互刷,无须改代码,便可实现版本降级,让手机实现更多的功能或让原有的功能更加完善,同时也可以把机器刷成任意一种语言。对于的手机软件的版本或是水货手机,为了中文化而进行软件升级,也就是把手机里面现存的软件删掉,然后复制更高级别版本的软件。若有更大的自主空间可用于手机DIY,那刷机就不仅是像在线升级那样更新一下手机软件了。2.3.2 iOS 8刷机方法及步骤

刷机前要注意以下几点:①将iTunes升级到最新版本;②保持设备电量充足;③下载8.X.X固件。

下面详细介绍刷机过程。

1)让设备进入DFU模式。

①按住电源键3秒。

②不要放开电源键,并按住HOME键,两个按键一起按住大约10秒(屏幕会黑掉)。

③松开电源键,继续按着HOME键,持续大约30秒,直至进入DFU模式。

2)下载最新版本的固件。

3)打开iTunes,确保自己的iTunes是最新版本,接着界面上会弹出对话框,如下图所示,用户请按住键盘上的键,然后单击“恢复”按钮。

4)选择之前下载好的固件。

5)出现提示对话框“iTunes将抹掉iPhone并将它恢复到iOS 8.X,并将与Apple验证此恢复”,单击“恢复”按钮。

6)等待一段时间,此时勿动数据线,确保正常连接。等待的时间会比较长,直至设备重新开机,进入激活界面为止。

2.4 备份和恢复iPhone/iPad/iPod数据

2.4.1 使用iCloud备份和恢复用户数据

1.使用iCloud备份数据

1)找到iPhone或者iPad上的“设置”,单击打开,然后找到“iCloud”。

2)单击“iCloud”,输入Apple ID帐号和密码。如果没有帐号,可单击下图所标识的“免费获取Apple ID”。

3)输入帐号和密码以后,单击“登录”,系统会提示正在验证。

4)在系统验证完帐号以后,接下来系统会询问我们,是否要把手机上的数据和iCloud合并。单击“合并”按钮,系统会显示“正在储存”。

5)系统提示是否要启用“查找我的iPhone”,单击“好”按钮继续。

6)设置好以后,单击“储存与备份”。

7)系统会显示当前iCloud备份的储存空间。单击下图所标识的“iCloud云备份”,让其处于打开状态。下次在我们充电的时候,并且已经接入无线局域网,设备就会自动进行数据备份了。

8)当然,我们也可以选择手动备份,单击下图红色标识的“立即备份”。如果觉得免费的备份空间不够用的话,可以单击“更改储存空间方案”,选择适合自己的空间付费购买。

2.使用iCloud还原数据

在iPhone刷机或者购买新机激活的时候,会出现如下提示界面,然后选择“从iCloud云备份恢复”即可。2.4.2 使用iTunes备份和还原用户数据

1.使用iTunes备份用户数据

1)把iPhone用原配USB数据线与计算机连接起来,打开iTunes软件,单击右上角的“iPhone”图标。

2)在iPhone的摘要界面中,单击“立即备份”按钮。

3)接下来就可以看到iTunes软件正在备份了。

2.使用iTunes恢复用户数据

若要恢复之前的备份,还是在摘要界面,单击“恢复备份”按钮。2.4.3 使用91助手备份和还原用户数据

1.使用91助手备份用户数据

在iPhone/iPad/iPod Touch已越狱的前提下,下载并安装PC端91助手。

1)使用数据线将iPhone/iPad链接计算机,打开91助手界面后,将91助手更新到最新版本。

2)在91助手界面中依次单击“我的设备”>“备份还原”>“创建备份”。

3)单击“本地备份”,此时会有联系人、短信、通话记录和图片等内容可供用户选择,勾选需要备份的内容,单击“备份”按钮。

4)此时91助手会自动进行备份,无须进行操作。

5)备份完成。若有显示失败项目,可以单击失败详情查看。

2.使用91助手还原用户数据

1)在91助手界面中依次单击“我的设备”>“备份还原”>“创建备份”。

2)单击“本地还原”,选择备份包后单击“下一步”按钮。

3)勾选需要还原的资料,然后单击“立即还原”按钮。

4)正在还原。此时无须操作,并且不要断开设备。

5)数据还原完成。

2.5 iOS越狱

2.5.1 什么是越狱

iOS越狱是对苹果公司便携装置操作系统iOS进行破解的一种技术手段,用户使用这种技术及软件可以获取到iOS的最高权限,甚至可以进一步解开运营商对手机网络的限制。用户越狱完毕之后,可安装App Store以外未经Apple许可的社群软件以及自由软件,甚至自行编译的软件,也可改装操作系统及使用命令行Shell程序。2.5.2 越狱的利与弊

万事都有两面性,越狱也一样,究竟是否需要越狱还是要想清楚再说。越狱的风险如2.6节所述。(1)利

越狱后可以通过Cydia安装各类插件,比如Auxo、icon renamer、zephyr、Activator、KuailDail等,通过这些插件我们可以做到原来系统根本无法做到的东西,可以实现来电归属地查询、手势操作、安装中文输入法、定时发短信、更酷更炫的主题、美化系统、修改图标名称等。另外,还可以通过类似SBsetting等让iOS的下拉通知栏实现更多的功能,带来更好的使用体验。

另外,越狱后一个明显的好处就是可以尝试更多的新应用,不过其实我们不越狱也可以实现这一功能,感兴趣的读者自行研究。(2)弊

越狱的弊也是非常明显的。首先是系统的稳定性问题,由于这些第三方插件可能会出现兼容性问题,可导致系统崩溃,甚至是数据丢失。另外,安装的插件增多后,还会出现占用系统资源、影响设备响应速度等情况。对于大家所关心的续航问题也会有一定的影响。不过,最让人担心的是一些不法分子会利用一些插件来盗取用户的个人信息,比如照片、电话号码等。2.5.3 iOS 8越狱

1.越狱前的准备工作

1)备份数据。

在越狱前备份你的iPhone/iPad/iPod数据,以免意外丢失。

2)OTA升级的设备,建议刷机后再越狱。

OTA升级就是让iPhone/iPad/iPod Touch直接联网,通过在“设置”中的“软件更新”直接在线升级固件。OTA直接升级的设备,有可能会导致越狱失败,建议越狱前先使用iTunes刷机,恢复至iOS8.1.X固件。

2.越狱工具下载及开始越狱

有很多越狱工具可供选择,例如Redsn0w、evasi0n、盘古和PP越狱等。下面将以盘古越狱工具为例进行介绍。

1)屏幕锁定设定为永不锁定、取消锁屏密码、关闭“查找我的iPhone”。

为避免越狱过程中出现错误,请先按照以下步骤分别设置。

①屏幕锁定设定为永不锁定:“设置”>“通用”>“自动锁定”>“永不”。

②取消锁屏密码:“设置”>“Touch ID与密码”>“关闭密码”。

③关闭查找我的iPhone:“设置”>“iCloud”>关闭“查找我的iPhone”。

④为提高越狱成功率,建议开启飞行模式。

2)使用数据线将iPhone/iPad/iPod Touch设备与计算机连接。双击打开越狱工具,越狱工具自动识别到您的设备后,单击按钮“开始越狱”。

3)新版本工具增加了越狱须知提醒,已做到的用户,单击“已经备份”。

4)设备开始越狱,在此过程中,请勿进行任何操作,只需耐心等待工具提示“越狱完成!”即可。【提示】在越狱过程中,设备会进行一次自动重启。然后会继续提示:“正在越狱”>“一些清理工作”,最后提示“越狱完成!”。【注意】如果在此过程中遇到“越狱超时,请重新越狱”的失败提示,你的设备就会处于飞行模式,这时需要重新越狱,单击越狱工具上的按钮“开始越狱”即可。

5)越狱完成后,设备会自动重启,越狱工具会识别并用亮色文字提示“已经越狱”。此时已经越狱成功了。

6)当看到苹果设备提示“存储容量几乎已满”,并弹出提示信息,不用担心,单击按钮“完成”即可,不影响正常使用。同时,你可以看到设备界面上有盘古应用以及已集成的Cydia。

7)这时请保证你的苹果设备连接网络正常(即能上网状态),然后打开Cydia,Cydia自动载入一段时间后,设备会自动注销重启。

8)为了保证越狱后设备正常使用,必须手动安装appsync和afc2add补丁,安装过程如下。

①安装afc2add补丁(即Apple File Conduit“2”)。【注意】Cydia内置源中就有afc2add补丁,只是它的名字早已被更改为Apple File Conduit“2”,大部分用户在刚越狱后都找不到Apple File Conduit“2”,原因是Cydia内置源中还未加载插件与补丁。

请按照以下步骤进行加载操作:打开Cydia,依次单击“软件源”>左上角“刷新”>等待内置源插件补丁完全加载完毕>然后再进入“搜索”中找到补丁Apple File Conduit“2”>单击右上角“安装”按钮>右上角“确认”按钮>“重启SpringBoard”。

②添加91源安装appsync补丁。

打开Cydia,依次单击“软件源”>“编辑”>“添加”>输入源地址“http://apt.91.com”>单击“添加源”>等待数据自动加载更新>单击“回到Cydia”。

添加完源地址后,直接进入91源内安装appsync补丁,具体操作步骤为:单击进入91源,进入“破解”分类中找到“appsync for ios8beta5”,单击右上角的“安装”按钮,再单击右上角“确认”按钮,Cydia就会自动安装好appsync补丁,安装完成后,请务必重启设备使其生效。

9)此时您的设备已经真正完美越狱了。

10)最后建议,越狱后的用户应立即修改OpenSSH密码,可通过盘古应用里提供的小工具来修改。具体操作:打开盘古应用>小工具>修改OpenSSH密码里“修改密码”>可选择随机生成,也可以输入自定义密码,然后单击右上角保存即可。

2.6 针对iOS系统的攻击曝光

2.6.1 iKee攻击与防范

1.iKee攻击曝光

iPhone在越狱后会破坏设备的整体安全架构,主要因为越狱后的系统禁用了代码签名机制,而且允许安装软件,其中关键是运行了未签名代码,从而扩大了受攻击面,为设备增加了系统实用程序(比如Shell),允许安装以root用户权限运行的应用。而关闭了代码签名机制,也就关掉了强有力的DEP。也就是说,ROP有效载荷可以禁用DEP,并在越狱过的设备上写入和执行shellcode。最后,新的未签名应用是不受任何限制的。因此,越狱基本上会关闭iPhone的所有安全机制,而不只是代码签名。

因此,越狱过的iPhone会成为漏洞攻击的目标也就不足为奇了。iKee蠕虫(又名Dutch ransom、iPhone/Privacy.A或Duh/iKee.B)就是利用了很多用户为iPhone越狱后安装了SSH服务器却没有修改默认root密码这一事实。这意味着任何连接到这种设备的人都能用root权限远程控制这些设备。有了这些条件,编写蠕虫就不是什么难事了。

2009年11月,第一个攻击iOS的蠕虫病毒被检测到,这种病毒就是iKee,它扫描到分配给荷兰和澳大利亚的电信运营商的IP块后就会自动运行,扫描的逻辑直截了当:当设备开启了TCP 22端口(SSH),并尝试使用默认证书“root”和“alpine”(越狱iPhone中最常见的默认账户)进行登录。

该蠕虫的变种(如iKee.A)在登录之后会执行一些基本操作,如关闭用户访问的SSH服务器、改变手机的墙纸,以及将蠕虫二进制代码复制到设备本地。此时,被感染的设备就可以用来扫描和感染其他设备。像iKee.B之类的后续变种引入了类似僵尸网络的功能,通过命令和控制信道来远程控制被感染的设备。

下图所示为被iKee感染的设备,墙纸被设置成了20世纪80年代英国流行歌手Rick Astley的照片。

2.针对iKee蠕虫/SSH的默认证书攻击的防范

发生iKee蠕虫的主要原因就是错误配置的越狱iPhone连接到了网络中。第一个防范此类攻击的措施就是,不要越狱你的iPhone。如果必须要越狱,也要在安装SSH后马上修改越狱设备上的默认证书,即登录账户和口令,并确保只连接到可信任的网络。另外,像SSH之类的网络服务只有当有需要的时候才应开启。另一个措施是:可以安装如SBSetting之类的实用工具,其中,SpringBoard可以用来快速开启或关闭像SSH之类的功能。对于一般的越狱设备来说,只要有可能,必须确保设备更新为对应iOS的最新越狱版本,同时及时安装由越狱社区提供的针对漏洞的补丁。2.6.2 中间人攻击与防范

1.中间人攻击的定义

中间人攻击(Man-in-the-Middle Attack,简称“MITM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”。入侵者把这台计算机模拟一台或两台原始计算机,使“中间人”能够与原始计算机建立活动连接并允许其读取或修改传递的信息,然而两个原始计算机用户却认为他们是在互相通信。通常,这种“拦截数据——修改数据——发送数据”的过程就被称为“会话劫持”。

2.中间人攻击的常见攻击手法(1)DNS欺骗

攻击者通过入侵DNS服务器、控制路由器等方法把受害者要访问的目标机器域名对应的IP解析为攻击者所控制的机器,这样受害者原本要发送给目标机器的数据就发到了攻击者的机器上,这时攻击者就可以监听,甚至修改数据,从而收集到大量的信息。(2)ARP缓存中毒攻击

ARP缓存中毒利用了ARP协议不安全的本质。ARP协议有别于其他协议,例如DNS协议可以配置为仅接受安全动态更新,而使用ARP的设备则可以接受任何时间的更新。这意味着任何机器都可以向另一台主机发送ARP回复数据包,并迫使主机更新其ARP缓存。发送ARP回复而没有生成请求时,被称为无效ARP。当恶意攻击者以这种方式放置一些无效ARP时,用户就会认为他们正在与另一用户通信,而实际上是与窃取信息的攻击者通信。(3)会话劫持

会话劫持是一种结合了嗅探以及欺骗技术在内的攻击手段。广义上说,会话劫持就是在一次正常的通信过程中,攻击者作为第三方参与到其中,或者是在数据里加入其他信息,甚至将双方的通信模式暗中改变,即使直接联系变成有攻击者参与的联系。

简单地说,就是攻击者把自己插入到受害者和目标机器之间,并设法让受害者和目标机器之间的数据通道变为受害者和目标机器之间存在一个看起来像“中转站”的代理机器(攻击者的机器)的数据通道,从而干涉两台机器之间的数据传输,例如监听敏感数据、替换数据等。由于攻击者已经介入其中,他能轻易知道双方传输的数据内容,还能根据自己的意愿去左右它。这个“中转站”可以是逻辑上的,也可以是物理上的,关键在于它能否获取到通信双方的数据。常见的会话劫持攻击方式有:HTTP会话劫持、HTTPS会话劫持和SMB会话劫持。

3.FOCUS 11的中间人攻击

2011年10月,在拉斯维加斯举办的McAfee FOCUS11会议上,Stuart McAfee和McAfee TRACE团队演示了一系列入侵,包括针对iPad的现场入侵。

执行攻击的具体过程是,为MacBook Pro计算机安装和设置两个无线网卡,然后配置其中一个网卡来作为恶意无线接入点(WAP)。这个无线接入点被分配了一个SSID,这个SSID类似于会议中合法的无线接入点SSID。这样做是为了说明用户很容易连接到恶意的无线接入点上。

然后配置桌面系统将所有来自那个恶意无线接入点的通信数据流转发到一个合法的无线接入点。这使得在桌面计算机系统上运行的工具具有了中间人通信数据流的接收和转发能力——接收或转发来自iPad的通信数据流。据Trustware SpiderLab的报道,为了让这一切更有趣,演示中还利用了CVE-2011-0228X.509证书链验证的漏洞,为SSL连接的中间人提供了证书支持。

上述设置完成后,就用iPad来浏览Gmail(在SSL协议层上)。Gmail被加载到了iPad的浏览器中,不过邮件中增加了点东西,即iframe中含有一个指向PDF文件的链接,该文件可以用来悄悄地获取设备的root权限。加载的PDF与JBME 3.0PDF相似,但经过了修改,以避免改变SpringBoard的外观,如增加Cydia图标。然后使用该PDF来加载自定义的freeze.tar.xz文件,其中包含越狱后需要的文件以及在设备上安装SSH和VNC所需要的相应软件包。

许多人都有这样的印象,即iPhone或iPad这样的设备对各种攻击都是免疫的。这个入侵演示改变了人们这种错误的观点,因为获取iOS设备的非授权访问也是完全可能的。

这种入侵综合利用了几种漏洞攻击技术:客户端漏洞的JBME 3.0攻击技术、SSH证书验证漏洞的攻击技术和基于局域网的攻击技术。这表明了不仅iOS可以被入侵,而且可以使用多种方法入侵。但是,攻击iOS也不是一次就能搞定的,需要利用多个漏洞发起的复杂攻击。

4.针对FOCUS 11的防范

FOCUS 11攻击利用了一组漏洞和一个恶意的无线接入点,获取受影响设备的非授权访问权限。这是操作系统的基本组件被颠覆的事实,所以找到技术上能够抵御此类攻击的防范方法非常困难。

防范此类攻击的第一步是更新你的设备至最新版本。另一个简单的方法就是在无线网络设置中开启“询问是否加入网络”,如下图所示。对于一直加入的网络依然可以自动加入,但是在加入新的未知网络前用户会被询问,只有在我们同意时才会加入,从而有效避免加入到恶意网络中。FOCUS 11攻击使用了一个看似友好的无线网络名,然而却是个恶意网络。所以,平日里最好不要连接到未知的无线网络中。2.6.3 恶意应用程序(Handy Light和InstaStock)曝光与防范

1.Handy Light和InstaStock曝光

还有许多客户端攻击方法,可用于获取iOS的非授权访问。其中一种比较复杂的攻击方式是引诱用户在其设备上安装恶意应用程序。此攻击方法面临的挑战不仅在于欺骗用户,而且要了解苹果公司的应用程序分发模式。众所周知,苹果应用程序都要求有苹果公司签名,并且只能从官方的App商店发布和下载。所以,一个程序为了能够保证在App商店中展出,它必须先交给苹果公司审核,如果审核中发现问题,比如会泄露用户信息,如电话号码、联系信息,则提交会被拒绝,这就意味着应用程序不能分发到App商店中。

但是在2010年,一个名为Handy Light的新应用程序提交到苹果公司审查并通过,放到了App商店中销售。这个程序表面上是一个简单的闪光灯应用,用于选择光线的颜色。然而在其发布后不久,Handy Light包含一个隐藏“栓套”功能的消息就变得众所周知了。这个功能允许用户以特定的顺序单击闪光的颜色,随后就可以让电话开启一个SOCKS代理服务器,该服务器可把一台计算机“栓套”到电话的蜂窝式网络的互联网连接上。该功能一经公布,苹果公司就将该应用程序从App商店下架,这主要是因为苹果公司不允许包含支持“栓套”功能的应用程序在其App商店中销售。然而,该应用程序当时确实是躲过了苹果公司的审查。

2011年9月,著名的iOS黑客Charlie Miller提交了一个名为InstaStock的应用程序到苹果公司进行审查。该应用程序被审查后通过并发布在了App商店中供用户下载。InstaStock表面上允许用户实时跟踪股票报价,据报道有数百个用户下载了这个应用程序。而InstaStock中隐藏的逻辑被用来利用iOS中的一个“零天”漏洞,该漏洞允许应用新程序加载并执行未签名的代码,由于存在的iOS的运行代码签名验证,这本来是不可能发生的。然而,在iOS 4.3中,苹果公司引入了使InstaStock能够实现其所必需的功能。在iOS 4.3中,苹果公司引入了在一些特殊情况下可以执行未签名代码的能力。理论上,该功能只对Mobile Safari开放,并只能用于开启JavaScript的即时编译。后来的结果显示,该功能实现上的一个错误导致该功能对所有应用程序都是开放的,而不仅仅只对Mobile Safari开放。该漏洞后来归档为CVE-2011-3442,它使InstaStock应用程序能够使用特定的一组标志调用mmap系统,从而获得了避开代码签名验证的能力。有了执行未签名代码的功能,InstaStock应用程序能够回连到一个命令和控制服务器,来接收并执行命令,执行从“被感染”设备中获取联系人信息等类型的活动。

对于iOS系统,Handy Light和InstaStock应用程序告诉我们一个事实,黑客可以通过App商店植入一个攻击。经过这些事件,苹果公司也致力于改善对应用程序的审查过程,以使黑客要想成功地隐藏恶意功能变得越来越困难。

2.针对App商店恶意软件的防范

Handy Light和InstaStock的例子说明,即使从苹果公司的App商店下载应用程序,仍然会存在一定的风险。所以,对于存储高度敏感数据的用户,推荐只在确实有必要使用时才安装所需要的应用程序,而且只从有信誉的供应商处获取应用。另外,如果可能,尽量安装最新版本的固件,因为新的固件版本通常解决了可能被恶意软件用于获取设备访问权限的问题,例如JBME3.0内核漏洞或InstaStock未签名代码执行的问题。2.6.4 具有漏洞的应用程序:iOS和第三方应用程序

1.具有漏洞的应用程序

2010年,一个现在归档为CVE-2010-2913的漏洞被报出来,它影响了Citi Mobile应用程序的2.0.2及其以下版本。这个报道的大意是应用程序将与银行相关的敏感信息存储在设备本地,如果设备被远程攻击,或者设备丢失、被偷,那么敏感信息就可能在设备中被抽取。这一漏洞并未提供远程访问,严重性相对较轻,但却恰好说明针对iOS的第三方应用程序像桌面计算机系统对应的软件一样,只要安全相关的设计存在疏忽,就会受到攻击。

另外一个第三方应用程序的漏洞,现在归档为CVE-2011-4211,在2010年11月被报道出来:PayPal应用程序受到了一个X.509证书验证问题的影响。事实上,该应用程序并没有验证服务器主机名的值是否与为建立SSL连接而收到的X.509服务器验证书的主题字段中的值相匹配。这个漏洞允许一个具有局域网访问权限的攻击者成为中间人,从而获取或修改经由PayPal应用程序的通信数据。该漏洞比Citi Mobile漏洞更严重,因为它允许在没有控制应用程序或设备的前提下,通过局域网访问来利用这个漏洞。然而,这个漏洞的利用需要获取对局域网的访问权,这使得该漏洞在实际中的利用变得十分困难。

在2011年9月,一个跨站脚本攻击漏洞影响了Skype应用程序的3.0.1及其以下版本。该漏洞通过把JavaScript代码嵌入到发送给用户的消息中的“全名”域内,使攻击者能够访问Skype应用程序用户的文件系统。一旦接收到一条这样的消息,嵌入的JavaScript脚本就会被执行,如果再与处理URI机制的问题相结合,就可以允许攻击者获取用户的文件。例如联系人数据库,并传输该文件到远程系统。从某种情况来看,该漏洞是相当有意思的,因为它是第三方应用程序在不需要获取局域网访问或设备物理访问的情况下也会被远程利用的第一个实例。

2012年4月,iOS上的包括Facebook以及Dropbox在内的几款流行软件受到漏洞的影响,并且导致用于身份验证的数据段保存在本地设备上,并缺乏更多的安全措施。攻击者可以通过一个应用(如iE)来入侵设备,浏览设备的文件系统和复制文件。这种攻击方式已经被证实。之后,攻击者还可以将文件复制到另一设备上,并且通过“借来”的证书登录。

2012年11月,iOS上的Instagram应用程序的3.1.2版本受到了一个信息泄露漏洞的影响。这个漏洞允许对设备网络连接进行中间人攻击的攻击者获取会话信息,并且能利用该漏洞来恢复或删除信息。

2013年1月,iOS上的ESPN ScoreCenter应用程序的3.0.0版本受到了两个漏洞的影响:一个是XSS漏洞,另一个是明文认证漏洞。这个应用程序没有对用户的输入进行审查,而且泄露了敏感数据,包括网络上未加密的用户名及密码。

无论目标应用程序是iOS捆绑应用程序,还是安装的第三方应用程序,当要入侵iPhone时,获取应用程序的控制就相当于完成了一半的工作。由于应用程序沙箱和代码签名验证的限制,即便成功获取了对一个应用程序的控制,要从目标设备获取信息还是相对困难的。这和传统的桌面系统不同,在桌面系统上一旦获取了对应用程序的控制,再获取信息的成功率就非常大,甚至可以继续攻击系统中各个应用程序的执行。要真正攻陷并占领iPhone,应用程序级的攻击必须利用内核级的漏洞攻击才可能凑效,对于那些期待破解iOS的人来说,这个难度相当高。富有经验的攻击者会倾向于重新利用内核级的漏洞。不管哪种情况,iOS默认绑定的应用程序,再加上App商店中可以下载的超过80万种的应用程序,这些为数众多的应用程序提供了大量的攻击目标。所以,针对应用程序漏洞的攻击将继续成为获取iOS设备初始访问权限的最可靠途径。

2.针对应用程序漏洞的防范

针对应用程序的漏洞,最基本的防范措施就是保证设备为最新版本的iOS,并使应用程序升级到最新版本。通常来说,随着应用程序中漏洞的发现,供应商会更新并发布修复版本。要跟踪什么时候发现了漏洞或这些漏洞何时会通过更新而被修复有一点困难,所以,最安全的方式就是尽可能保证iOS和所有安装的应用程序都是最新版本。

第3章 Android操作系统

随着移动互联网的发展,作为当今最大的移动操作系统之一,Android已经被越来越多的用户所使用。然而,由于市场自身制度的不完善,垃圾软件、恶意软件的泛滥为用户带来了非常大的危害。用户面临着极大的移动终端安全问题,内置病毒、信息窃取、吸费等威胁层出不穷。所以,了解Android系统特性以及做好预防就非常重要。

3.1 Android操作系统概述

Android系统是谷歌公司开发的一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机和平板电脑。3.1.1 Android的发展历程

2003年10月,Andy Rubin等人创建Android公司,并组建Android团队。

2005年8月17日,谷歌低调收购了成立仅22个月的高科技企业Android及其团队。Andy Rubin成为谷歌公司工程部副总裁,继续负责Android项目。

2007年11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且在当天宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成,并与84家硬件制造商、软件开发商及电信营运商组成开放手持设备联盟(Open Handset Alliance)来共同研发改良Android系统,这一联盟将支持谷歌发布的手机操作系统以及应用软件,谷歌公司以Apache免费开源许可证的授权方式,发布了Android的源代码。

2008年,在谷歌I/O大会上,谷歌公司提出了Android HAL架构图,在同年8月18号,Android获得了美国联邦通信委员会(FCC)的批准,在2008年9月,谷歌公司正式发布了Android 1.0系统,这也是Android系统最早的版本。

2009年4月,谷歌公司正式推出了Android 1.5这款手机,从Android 1.5版本开始,谷歌公司开始将Android的版本以甜品的名字命名,Android 1.5命名为Cupcake(纸杯蛋糕)。该系统与Android 1.0相比有了很大的改进。

2009年9月,谷歌公司发布了Android 1.6的正式版,并且推出了搭载Android 1.6正式版的手机HTC Hero(G3),凭借着出色的外观设计以及全新的Android 1.6操作系统,HTC Hero(G3)成为当时全球最受欢迎的手机。Android 1.6也有一个有趣的甜品名称,它被称为Donut(甜甜圈)。

2010年2月,Linux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux内核“状态树”(staging tree)上除去,从此,Android与Linux开发主流分道扬镳。在同年5月,谷歌公司正式发布了Android 2.2操作系统。谷歌公司将Android 2.2操作系统命名为Froyo,翻译成中文为冻酸奶。

2010年10月,谷歌公司宣布Android系统达到了第一个里程碑,即电子市场上获得官方数字认证的Android应用数量已经达到了10万个,Android系统的应用增长非常迅速。在2010年12月,谷歌公司正式发布了Android 2.3操作系统Gingerbread(姜饼)。

2011年1月,谷歌公司称每日的Android设备新用户数量达到了30万部,到2011年7月,这个数字增长到55万部,而Android系统设备的用户总数达到了1.35亿,Android系统已经成为智能手机领域占有量最高的系统。

2011年8月2日,Android手机已占据全球智能手机市场48%的份额,并在亚太地区市场占据统治地位,终结了Symbian(塞班系统)的霸主地位,跃居全球第一。

2011年9月份,Android系统的应用数目已经达到了48万,而在智能手机市场,Android系统的占有率已经达到了43%。继续排在移动操作系统首位。谷歌将会发布全新的Android 4.0操作系统,这款系统被谷歌公司命名为Ice Cream Sandwich(冰激凌三明治)。

2012年1月6日,谷歌公司Android Market已有10万开发者推出超过40万活跃的应用,大多数的应用程序为免费。Android Market应用程序商店目录在新年首周周末突破40万基准,距离突破30万应用仅4个月。在2011年早些时候,Android Market从20万增加到30万应用也花了4个月的时间。

2013年11月1日,Android 4.4正式发布。从具体功能上讲,Android 4.4提供了各种实用小功能,新的Android系统更智能,添加更多的Emoji表情图案,UI的改进也更现代,如全新的Hello iOS 7半透明效果。

2014年10月15日,谷歌发布了Android 5.0。3.1.2 Android 5.0的新特性

1.全新Material Design设计风格

Android 5.0系统使用一种新的Material Design设计风格。这套设计图对Android系统的桌面图标及部件的透明度进行了稍微调整,并且各种桌面小部件也可以重叠摆放。界面加入了五彩缤纷的颜色、流畅的动画效果,呈现出一种清新的风格。

2.支持64位ART虚拟机

相比传统的Dalvik模式,新的系统引入了全新的ART模式,不仅可以提升Android手机的流畅度,也有利于续航。

3.支持多种设备

无论是智能手机、平板电脑、笔记本计算机、智能电视、汽车、智能手表,甚至是各种家用电子产品,谷歌的Android系统已经可以在所有设备的屏幕上出现。

4.新的API支持,蓝牙4.1、USB Audio、多人分享等其他特性

Android Lollipop还增加了多个新的API支持、蓝牙4.1、USB Audio外接音响及多人分享等功能。其中,多人分享功能可以在用户手机丢失的情况下,使用其他Lollipop设备登录账户,从云端下载联系人、日历等资料,并且不影响其他设备的内容。

5.锁屏状态下查看通知消息

在锁屏状态下不仅可以查看通知消息,用户还可以直接在锁屏的情况下进行回复或进入应用。另外,如果在操作手机的过程中有电话接入,也不会进行全画面切换,而是同样以弹出通知的方式告知用户。3.1.3 Android模拟器的使用

Android SDK(Android模拟器)是谷歌公司发布的一套开发工具,Android SDK可以方便开发者在手机运行之前先在模拟器上测试应用。我们可以使用它在计算机上运行Android。

Android模拟器能够模拟除了接听和拨打电话外的所有移动设备上的典型功能和行为。Android模拟器提供了大量的导航和控制键,你可以通过鼠标或键盘单击这些按键来为你的应用程序产生事件。同时,它还有一个屏幕以用于显示Android自带应用程序和你自己的应用程序。为了便于模拟和测试应用程序,Android模拟器允许你的应用程序通过Android平台服务、调用其他程序、访问网络、播放音频和视频、保存和传输数据、通知用户、渲染图像和过渡场景。Android模拟器同样具有强大的调试能力,例如能够记录内核输出的控制台、模拟程序中断(比如接收短信或打入电话)、模拟数据通道中的延时效果和遗失。

3.2 Android系统架构

Android的系统架构和其他操作系统一样,采用了分层的架构。Android分为4个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。Android系统架构图3.2.1 应用程序层

应用程序层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。3.2.2 应用程序框架层

应用程序框架层是Android应用开发的基础,开发人员大部分时候是在和它打交道。下面详细介绍应用程序框架层的10个部分。(1)活动管理器(Activity Manager)

管理各个应用程序生命周期以及通常的导航回退功能。(2)窗口管理器(Window Manager)

管理所有的窗口程序。(3)内容提供器(Content Provider)

使得可在不同应用程序之间存取或者分享数据。(4)视图系统(View System)

构建应用程序的基本组件。(5)通告管理器(Notification Manager)

使得应用程序可以在状态栏中显示自定义的提示信息。(6)包管理器(Package Manager)

Android系统内的程序管理。(7)电话管理器(Telephone Manager)

管理所有的移动设备功能。(8)资源管理器(Resource Manager)

提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件和颜色文件等。(9)位置管理器(Location Manager)

提供位置服务。(10)XMPP服务(XMPP Service)

提供Google Talk服务。

在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。3.2.3 系统运行库层

从系统架构图中可以看出,系统运行库层可以分成两部分,分别是系统库和Android运行时,分别如下。

1.系统库

系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。主要分为如下几个部分。(1)Surface Manager

执行多个应用程序的时候,负责管理显示与存取操作间的互动。另外,也负责2D绘图与3D绘图进行显示合成。(2)Media Framework

基于PacketVideoOpenCore的多媒体库支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。(3)SQLite

小型的关系型数据库引擎。(4)OpenGL|ES

根据OpenGL ES 1.0API标准实现的3D绘图函数库。(5)FreeType

提供点阵字与向量字的描绘与显示。(6)WebKit

一套网页浏览器的软件引擎。(7)SGL

底层的2D图形渲染引擎。(8)SSL

在Andorid上通信过程中实现握手。(9)Libc

从BSD继承来的标准C系统函数库,专门为基于Embedded Linux的设备定制。

2.Android运行时

Android应用程序是采用Java语言编写的,程序在Android运行时中执行,其运行时分为核心库和Dalvik虚拟机两部分。(1)核心库

核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.net、android.media等。(2)Dalvik虚拟机

Android程序不同于J2me程序,每个Android应用程序都有一个专有的进程,并且不是多个程序运行在一个虚拟机中,而是每个Android程序都有一个Dalivik虚拟机的实例,并在该实例中执行。Dalvik虚拟机是一种基于寄存器的Java虚拟机,而不是传统的基于栈的虚拟机,并进行了内存资源使用的优化以及具有支持多个虚拟机的特点。需要注意的是,Android程序在虚拟机中执行的并非编译后的字节码,而是通过转换工具dx将Java字节码转成dex格式的中间码。3.2.4 Linux核心层

Android核心系统服务依赖于Linux 2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动包括显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动和电源管理等。

3.3 Android安全模型

从技术架构角度来看,Android安全模型基于强健的Linux操作系统内核安全性,通过进程沙箱机制隔离进程资源,并且辅以独特的内存管理技术与安全高效的进程间通信机制,适应嵌入式移动端处理器性能与内存容量的限制。在应用层面,使用显式定义且经用户授权的应用权限控制机制等,系统化地规范并强制各类应用程序的行为准则与权限许可;引入应用程序签名机制定义应用程序之间的信任关系与资源共享的权限。Android应用程序基于Android特有的应用框架(Framework),由Java语言编写,运行于Dalvik Java虚拟机。同时,部分底层应用仍可由C/C++语言设计实现,以原生库形式直接运行于操作系统的用户空间。应用程序及其Dalvik虚拟机运行环境都被限制在“进程沙箱”的隔离环境下,自行拥有专用的文件系统区域,独享私有数据。

Android安全模型的设计特点可概括如下。·采用多层架构,在保护用户信息安全的同时,保证开放平台上各种应用的灵活性。·既允许经验丰富的开发者充分利用安全架构的灵活性,也为熟悉安全架构的开发者提供更多可以信赖的默认安全性设置。·鼓励用户了解应用程序是如何工作的,并鼓励用户对所持设备进行安全控制。·不但要面对恶意软件的威胁,而且要考虑第三方应用程序的恶意攻击。·安全保护与风险控制同在,在安全防护失效时,尽量减少损害,并尽快恢复使用。

Android安全模型主要提供以下几种安全机制。·进程沙箱隔离机制:Android应用程序在安装时被赋予独特的用户标识(UID),并永久保持;应用程序及其运行的Dalvik虚拟机运行于独立的Linux进程空间,与UID不同的应用程序完全隔离。·应用程序签名机制:应用程序包(.apk文件)必须被开发者数字签名;同一开发者可指定不同的应用程序共享UID,进而使这些应用程序运行于同一进程空间,共享资源。·权限声明机制:应用程序需要显式声明权限、名称、权限组与保护级别。不同的级别要求应用程序行使此权限时的认证方式不同,即Normal级申请立即可用;Dangerous级需在安装时由用户确认才可用;Signature与Signature or system则必须是系统用户才可用。·访问控制机制:传统的Linux访问控制机制确保系统文件与用户数据不受非法访问。·进程通信机制:Binder进程通信机制提供基于共享内存的高效进程通信;Binder基于Client-Server模型,提供类似COM与CORBA的轻量级远程进程调用(RPC);通过接口描述语言(AIDL)定义接口与交换数据的类型,确保进程间通信的数据不会溢出越界,污染进程空间。·内存管理机制:基于标准Linux的低内存管理机制(OOM),设计实现了独特的低内存清理(LMK)机制,将进程按重要性分级、分组,当内存不足时,自动清理最低级别进程所占用的内存空间;同时,引入不同于传统Linux共享内存机制的Android共享内存机制Sshmem,此机制具备清理不再使用共享内存区域的能力。

3.4 Android基础应用组件

Android开发的4大组件:它们分别是活动(Activity),用于表现功能;服务(Service),后台运行服务,不提供界面呈现;广播接收器(Broadcast Receiver),用于接收广播;内容提供者(Content Provider),支持在多个应用中存储和读取数据,相当于数据库。下面详细介绍4个组件。3.4.1 活动

Activity是为用户操作而展示的可视化用户界面。比如说,一个Activity可以展示一个菜单项列表供用户选择,或者显示一些包含说明的照片。一个短消息应用程序可以包括一个用于显示作为发送对象的联系人的列表的Activity,一个给选定的联系人写短信的Activity,以及翻阅以前的短信和改变设置的Activity。尽管它们一起组成了一个内聚的用户界面,但其中每个Activity都与其他的保持独立。每个都是以Activity类为基类的子类实现。

一个应用程序可以只有一个Activity,或者,如刚才提到的短信应用程序那样,包含很多个。每个Activity的作用及其数目自然取决于应用程序及其设计。一般情况下,总有一个应用程序被标记为用户在应用程序启动的时候第一个看到的。从一个Activity转向另一个的方式是靠当前的Activity来启动下一个。

每个Activity都被给予一个默认的窗口以进行绘制。一般情况下,这个窗口是满屏的,但它也可以是一个小的位于其他窗口之上的浮动窗口。一个Activity也可以使用超过一个的窗口,比如,在Activity运行过程中弹出的一个供用户选择的小对话框,或是当用户选择了屏幕上特定项目后显示的必要信息。

窗口显示的可视内容是由一系列视图构成的,这些视图均来自View基类。每个视图均控制着窗口中一块特定的矩形空间。父级视图包含并组织它的子视图的布局。叶节点视图(位于视图层次最底端)在它们控制的矩形中进行绘制,并对用户对其进行的操作做出响应。所以,视图是Activity与用户进行交互的界面。Android界面3.4.2 服务

服务没有可视化的用户界面,而是在一段时间内在后台运行的。比如,一个服务可以在用户做其他事情的时候在后台播放背景音乐、从网络上获取一些数据或者计算一些东西并提供给需要这个运算结果的Activity使用。每个服务都来自Service基类。

一个媒体播放器播放列表中的曲目是一个不错的例子。播放器应用程序可能有一个或多个Activity来给用户选择歌曲并进行播放。然而,音乐播放这个任务本身不应该被任何Activity所处理,因为用户期望在他们离开播放器应用程序而开始做别的事情时,音乐仍在继续播放。为达到这个目的,媒体播放器Activity应该启用一个运行于后台的服务。而系统将在这个Activity不再显示于屏幕之后,仍维持音乐播放服务的运行。

你可以连接至一个正在运行的服务。连接之后,你可以通过那个服务暴露出来的接口与服务进行通信。对于音乐服务来说,这个接口可以允许用户暂停、回退、停止以及重新开始播放。

如同Activity和其他组件一样,服务运行于应用程序进程的主线程内。所以,它不会对其他组件或用户界面有任何干扰,它们一般会派生一个新线程来进行一些耗时任务(比如音乐回放)。

开启Service有两种方式,具体如下。

1.Context.startService()

Service会经历onCreate->onStart(如果Service还没有运行,则Android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart()方法可能会重复调用多次);StopService的时候直接调用onDestroy(),如果是调用者自己直接退出而没有调用StopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService()关闭Service。【注意】多次调用Context.startservice()不会发生嵌套(即使会有相应的onStart()方法被调用),所以无论同一个服务被启动了多少次,一旦调用Context.stopService()或者StopSelf(),它都会被停止。补充说明:传递给StartService(0的Intent对象会传递给onStart()方法。调用顺序为:onCreate-->onStart(可多次调用)-->onDestroy。

2.Context.bindService()

Service会经历onCreate()-->onBind(),onBind()将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind-->onDestroyed相应退出,所谓绑定在一起,就是共存亡。3.4.3 广播接收器

广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。很多广播是源自于系统代码的──比如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。应用程序也可以进行广播──例如,通知其他应用程序一些数据下载完成并处于可用状态。

应用程序可以拥有任意数量的广播接收器以对所有它感兴趣的通知信息予以响应。所有的接收器均来自BroadcastReceiver基类。

在Android系统中,广播是一种广泛运用的在应用程序之间传输信息的机制。而广播接收器是对发送出来的广播进行过滤接受并响应的一类组件。可以使用广播接收器来让应用对一个外部的事件做出响应。例如,当电话呼入这个外部事件到来的时候,可以利用广播接收器进行处理。例如,当下载一个程序成功完成的时候,仍然可以利用广播接收器进行处理。广播接收器不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。广播接收器通过NotificationManager来通知用户这些事情发生了。广播接收器既可以在AndroidManifest.xml中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用Context.sendBroadcast()将它们自己的Intent Broadcasts广播给其他应用程序。

广播接收器没有用户界面。然而,它们可以启动一个Activity来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说,可在状态栏上放一个持久的图标,用户打开它便可获取消息。3.4.4 内容提供者

内容提供者是Android提供的第三方应用数据的访问方案。在Android系统中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件等内容都是不允许直接访问的。Andorid当然不会真的把每个应用都做成一座孤岛,它为所有应用都准备了一扇窗,这就是内容提供者。

内容提供者将一些特定的应用程序数据供给其他应用程序使用。数据可以存储于文件系统、SQLite数据库或其他地方。内容提供者来自ContentProvider基类,为其他应用程序取用和存储它管理的数据实现了一套标准方法。然而,应用程序并不直接调用这些方法,而是使用一个ContentResolver对象,以调用它的方法来进行。ContentResolver可以与任意内容提供者进行会话,以合作的方式对所有相关交互通信进行管理。

3.5 Android手机备份功能

3.5.1 Recovery模式

Recovery模式是Android手机/平板电脑中的一个特殊的小型系统,相当于计算机上的WIN PE。可用来对Android系统进行恢复出厂设置、刷写官方OTA固件等,第三方的Recovery模式还支持备份系统、刷写非官方固件等其他实用的功能。3.5.2 Recovery的方法

在使用计算机的时候,我们经常备份计算机里面的重要数据,以免计算机出现问题而丢失数据;在使用手机时也要养成经常备份的习惯,以免手机出现意外时手机内的重要数据丢失。下面就介绍一下具体的备份方法,其实非常简单。

手机进行备份,也需要第三方软件,如91手机助手、豌豆荚和360手机助手等。下面以360手机助手为例来介绍具体的备份方法。

1)在百度上下载360手机助手,并安装360手机助手。

2)打开USB调试,Android4.0以前的版本基本都是单击“设置”>“应用程序”>“开发”,在这里面就能看到USB调试,而4.0以后的版本单击“设置”>“开发人员选项”,进入就可以开启USB调试了。

3)插上数据线并连上手机,单击右下方的“手机备份”按钮。

4)选择要备份的联系人、短信及应用,单击“一键备份”按钮。

5)单击“完成”按钮,即可备份成功。

6)恢复文件。如果手机数据信息遗失,选择备份好的备份文件,单击“一键恢复”按钮,即可还原以前的短信和联系人。

7)数据恢复完成,单击“完成”按钮即可。

3.6 Android系统刷机

3.6.1 Android系统刷机常用词

下面我们来介绍Android系统刷机需要用到的几个名词以及它们所起到的作用。当然,这也是刷机的关键步骤和要点所在。

1.固件、刷固件

固件是指固化的软件,中文为固件,它是把某个系统程序写入到特定的硬件系统中的flashROM。手机固件相当于手机的系统,刷新固件就相当于刷系统。

2.ROM(包)

ROM是只读内存(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,并且资料不会因为电源关闭而消失。

3.固件版本

固件版本是指官方发布的固件的版本号,里面包含了应用部分的更新和基带部分的更新。

4.Recovery(恢复模式)

笼统地说,Recovery就是一个刷机的工程界面。如果你装过系统,你可能知道DOS界面或者WinPE,安装了Recovery相当于给系统安了一个DOS界面。在Recovery界面可以选择安装系统、清空数据、Ghost备份系统、恢复系统等。

5.Root

Root权限跟我们在Windows系统下的Administrator权限可以理解为一个概念。Root是Android系统中的超级管理员用户账户,该账户拥有整个系统至高无上的权利,它可以操作所有对象。只有拥有了这个权限,我们才可以将原版系统刷新为改版的各种系统,比如简体中文系统。

6.Radio

简单地说,Radio是无线通信模块的驱动程序。ROM是系统程序,Radio负责网络通信,ROM和Radio可以分开刷,互不影响。如果你的手机刷新了ROM后有通信方面的问题,可以刷新Radio试一试。

7.SPL

SPL,“第二次装系统”,就是负责装载OS操作系统到RAM中。另外,SPL还包括许多系统命令(如mtty中使用的命令)。SPL损坏了还可以用烧录器重写。

8.金卡

很多朋友第一时间下载了官方的系统,然后就开始升级,不是中国台湾版本的机器都会提示客户ID错误,这是因为更新程序会检测机器的出货地,也就是销售地区,如果和升级程序不一致,就会中断升级,造成升级失败。而金卡实际上就是在一张普通的TF卡上写入一些引导信息,使得程序升级,或者说本机SPL的检测跳过对客户ID的检查,从而达到“天下大一统”,使非官方版本的机器顺利升级。3.6.2 Android手机刷机方法及步骤

手机进行刷机的,需要第三方软件,下面以“深度刷机”为例进行介绍。

1)在百度下载深度刷机软件,并安装深度刷机。

2)打开深度刷机软件,查看软件功能。

3)插上数据线并连上手机,选择软件面板上的“ROM市场”,下载跟你手机对应的ROM。

4)查看下载的ROM,单击右下角的“下载管理”可以查看下载的ROM。

5)开始刷机。查看手机屏幕,如果有来自系统或者安全软件的授权信息,单击允许。

3.7 获取Android Root权限

Root通常是针对Android系统的手机而言,它使得用户可以获取Android操作系统的超级用户权限。Root通常用于帮助用户越过手机制造商的限制,使得用户可以卸载手机制造商预装在手机中某些应用,以及运行一些需要超级用户权限的应用程序。Android系统的Root与Apple iOS系统的越狱类似。3.7.1 Root的原理

手机制造商原始出厂的手机并未开放Root权限(小米和MEIZU除外),获取Root的方法都是不受官方支持的。因此,目前获取Root的方法都是利用系统漏洞实现的。不同手机厂商可能存在的漏洞不同,也就导致了不同手机Root的原理可能不同。不过,不管采用什么原理实现Root,最终都需要将su可执行文件复制到Android系统的/system分区下(例如/system/xbin/su)并用chmod命令为其设置可执行权限和setuid权限。为了让用户可以控制Root权限的使用,防止其被未经授权的应用所调用,通常还有一个Android应用程序来管理su程序的行为。Root的基本原理就是利用系统漏洞,将su和对应的Android管理应用复制到/system分区。常见的系统漏洞有zergRush、Gingerbreak和psneuter等。3.7.2 Root的好处以及风险(1)获取Root权限的主要好处

1)可以备份系统。

2)修改系统的内部程序。

3)可以把一些应用程序安装在SD卡上,减轻手机负担,删除后台里无用的运行程序,增加手机运行内存,加快手机运行速度。

4)可以美化系统、更改开机动画等:通过直接替换系统内的文件或者刷入开发者修改好的zip安装包,我们可以修改手机的开机画面、导航栏、通知栏和字体等。

5)可以刷入第三方的Recovery,对手机进行刷机、备份等操作。

6)可以汉化手机系统:拥有Root权限,我们就可以加载汉化包,实现系统汉化!这主要是针对那些自带默认语言为非中文汉语的Android手机,这些手机原本是面向非中文国家和地区销售的,但最后有中文的用户也在使用,为了能更好地使用这些手机,符合中文用户的操作使用习惯,就必须对这些手机系统进行汉化。(2)存在的风险

获取Root权限后用户可以访问和修改手机中几乎所有的文件,这些可能是手机制作商不愿意用户修改和触碰的东西,因为获得Root权限后有可能影响到手机的稳定,还容易被一些黑客入侵。(3)如何避免一键Root恶意软件侵害我们的手机

1)不使用手机端一键Root,使用计算机端大品牌Root软件进行Root,如刷机精灵等Root破解工具。

2)不从来历不明渠道下载应用,下载应用一定要选择官方认证应用版本下载。

3)刷机时不刷入来历不明的ROM包,应下载带有ROM安全检测的ROM市场下载ROM,如ROM之家。

4)使用手机需注意,当手机提示一些应用获取不需要的权限时应禁止,比如提示用户获取位置信息、短信权限等。3.7.3 如何获取Root权限

Android手机获取Root权限,一般需要第三方工具,我们以卓大师为例。

1)在百度上下载卓大师,并安装卓大师。

2)打开USB调试,Android4.0以前的版本基本都是单击设置>应用程序>开发,在这里面就能看到USB调试,而4.0以后的版本单击设置>开发人员选项,进入就可以开启USB调试了。

3)用数据线将手机连接至计算机,卓大师刷机专家会自动识别出用户的手机。

4)使用卓大师进行一键Root,单击“Root”图标,在“Root”界面下单击“一键Root”按钮。

5)Root成功后就可以删除系统应用了。

3.8 Android平台恶意软件及病毒

下面将Android平台上的各类恶意软件和病毒分为7大类进行介绍,以帮助用户在实际使用过程中进行识别和警惕,保证平台和个人信息安全。3.8.1 ROM内置恶意软件/病毒(1)a.privacy.devicestatservice.[盗密诡计]

该病毒通过刷ROM的形式安装到用户手机,安装后无启动图标,一旦激活,便盗取包括ICCID、IMEI、IMSI和MSISDN等信息,给用户的隐私造成威胁。(2)a.payment.dg

该病毒安装后没有启动图标,病毒一旦激活,便在特定的时间向某些特定的SP号码发送扣费信息,还会删除相关的反馈信息,让用户在不知情的情况下被扣除高额的话费;同时,该病毒还会自动将后台连接到网络,读取并且上传用户手机IMEI、IMSI和手机号码等信息,造成用户个人隐私的泄露。(3)a.payment.pmx.[刷机吸费大盗]

该病毒安装后没有启动图标,一旦激活,便在特定的时间向某些特定的SP号码发送扣费信息,并删除相关的反馈信息,让用户在不知情的情况下造成严重的经济损失;同时,该病毒还会自动将后台连接到网络,读取并且上传用户信息,造成用户个人隐私的泄露。(4)a.privacy.ju6.[伪谷歌升级]

该病毒安装后没有启动图标,一旦激活,便在后台自动下载安装其他应用,还可能卸载手机应用,不但消耗用户流量,给用户带来一定的经济损失,还可能给用户带来进一步的安全隐患;同时,该病毒还会上传用户数据,跟踪用户位置,造成用户隐私泄露。(5)a.payment.dg.a.[系统杀手]

该病毒被内置在ROM内,具有系统最高权限,不但不能通过正常途径卸载,而且能够阻止指定安全软件被安装,同时发送大量的扣费短信并删除指定号码发送的短信,给用户带来严重的经济损失。3.8.2 破坏类恶意软件/病毒(1)a.privacy.safesys.[root破坏王]

该病毒通常伪装成某些热门小型应用,在使用过程中会弹出Root权限授予请求。如果被授予了Root权限,则在后台下载其他恶意程序并静默安装,给用户手机安全造成威胁。(2)a.privacy.atools.[万能定时器]

该病毒伪装成一款定时软件,并在运行时自动获取Root权限,可能联网下载并静默安装其他恶意应用,对用户手机安全造成威胁。(3)a.privacy.mmainservice.a

该病毒经常伪装成系统软件,启动后从后台服务器静默下载子包,在破解Root权限后进行静默安装,这一系列动作都在用户不知情的情况下完成,给用户的手机安全带来严重威胁。(4)a.privacy.AppleService

该病毒经常伪装成游戏软件,开机自动启动,启动后获取Root权限,以实现静默安装病毒子包,给用户的手机安全带来严重威胁。(5)a.privacy.dbsoft.[宅男必备]

该病毒伪装成一款写真集软件诱使用户下载安装,病毒激活后,利用Android系统漏洞获取Root权限,通过终端设备无提示强制联网,下载并静默安装其他恶意软件。不仅消耗用户数据流量,有可能给用户带来高额的流量费用,还可能影响手机或其他软件的正常运行和使用。3.8.3 吸费类恶意软件/病毒(1)a.payment.smshider.[美女勾魂吸费大盗]

该病毒以“**美女勾魂”软件名义诱惑用户下载安装,一旦激活,会获取用户的IMEI号、手机号等信息并上传网络,并且会发送短信订购某些收费SP业务,同时删除发送信息,不让用户发现,很可能给用户造成严重的经济损失,并造成个人隐私的泄露。(2)a.payment.mj.[麻吉吸费木马]

该病毒以正常软件名义诱导用户下载安装,一旦激活,便试图向多个以106开头的号码发送信息,订购了SP高额业务,同时屏蔽运营商的订购短信,在用户无法察觉的情况下造成经济损失。(3)a.payment.keji.[饥渴吸费魔]

该病毒捆绑正常游戏软件诱导用户安装,安装主程序后启动,提示升级,用户确认升级便安装了该病毒子包;同时,该病毒尝试利用系统漏洞获取Root权限,进行静默安装。病毒激活后,每隔数分钟向号码106***56发送信息,并屏蔽10086短信,同时,在后台拨打指定号码,该号码通过服务器远程设定,可能会消耗用户大量的资费。另外,该病毒会终止某些安全应用,给用户的手机带来严重安全隐患。(4)a.payment.fzbk.[吸费海盗王]

此病毒嵌入到一款国外著名的游戏软件里,散布在几个大的论坛与电子市场上。另外,病毒发作时也伴随着隐蔽的短信扣费,扣费指令与发送时机由云端配置,但这个病毒在扣费成功后,还会向固定的几个手机号码发送扣费手机的IMEI号等信息,存在分成对账的可能。(5)a.payment.zchess.[爱情连陷]

该病毒以“爱情**”名义诱导用户下载安装,每次启动都会发送扣费信息到以106开头的扣费端口,并删除回执短信,给用户造成严重的经济损失。同时,该病毒还收集IMSI、地理位置等用户信息上传到服务器,造成用户个人隐私的泄露。3.8.4 窃取隐私类恶意软件/病毒(1)a.remote.Netvision

该病毒安装后无图标,并且开机自启动。病毒运行后会监听手机收件箱,并根据其他接收到的指令,将收件箱中的短信内容转发到指定号码,给用户隐私带来严重安全威胁。(2)a.remote.strategy.[隐私偷窥王]

该病毒常伪装成某些热门应用诱导用户下载安装,病毒一旦激活,便会在后台收集联系人、短信和通话记录等用户信息并上传到指定服务器,严重侵害用户隐私;同时,还会尝试破解系统获取Root权限,静默安装其他恶意程序或者卸载指定的安全杀毒类软件,使得用户手机处于不设防状态,在后续病毒侵入过程中蒙受更大的损失。(3)a.privacy.qieqie.[窃窃]

该病毒安装后无启动图标,隐藏在用户手机中,一旦激活,便在后台监听用户短信信息,当用户接收到短信时会将该信息转发到138******88,给用户的财产和隐私安全造成双重危害。(4).remote.CarrierIQ

该病毒通常被内置到ROM,启动后将记录用户使用行为,收集用户地理位置和当前移动运营网络信息,并定时收集用户隐私信息,回传到指定服务器,严重侵害用户隐私。(5)a.privacy.mailx.[古哥]

该病毒是一款间谍软件,安装后无启动图标,并在后台自动启动程序,读取用户短信、通话记录和QQ聊天记录等信息,通过邮件的形式发送到指定邮箱,严重泄露用户的隐私信息。(6)a.remote.droiddream.[隐私盗贼]

该病毒经常捆绑在一些常用软件及游戏软件上,安装后病毒会利用Android平台上的系统漏洞获取手机Root权限,并在后台静默安装内嵌子包,同时收集手机上的IMEI、IMSI、SDK等信息,发送到指定服务器并在后台下载一些其他恶意安装包,给用户的隐私带来严重安全威胁。3.8.5 伪装类恶意软件/病毒(1)a.payment.adsms.[伪升级扣费木马]

该病毒安装后会向多个不同的SP端口发送业务订购短信,屏蔽运营扣费通知短信,使用户在不知情的情况下产生多次扣费;该病毒还会收集用户手机号码、硬件串口等隐私信息,并传回给病毒作者,带来严重安全隐患。同时,该病毒会在后台自动联网下载APK程序,可能对手机安全产生更大的危害。(2)a.payment.live.a.[伪google服务框架]

该病毒主要通过其他恶意软件进行传播。当恶意软件安装后,会弹出所谓“用户许可协议”引导用户单击,用户单击“确定”按钮后,病毒会被静默安装到手机上,并进一步深度伪装成系统关键程序,如“Google服务框架”,高度模拟系统程序的图标,只是名称描述有细微差别,表面上跟一般的系统关键程序无异,只看表面甚至还有可能骗过专业工程师的眼睛,对于一般的手机用户更可能是完全“隐形”的。它属于独立封装式伪装类病毒。(3)a.payment.hippo.[伪酷6视频]

该病毒以“酷6视*”名义诱导用户下载安装,每次启动该病毒程序,便自动从后台发送“8”到“10661566**”扣费端口,同时删除“10”开头的号码发送的短信,让用户在不知情的情况下造成严重的经济损失。3.8.6 云更新类恶意软件/病毒(1)a.remote.i22hk.[云指令推手]

该病毒一旦激活,便自动从后台上传IMEI、IMSI等信息到http://www.***.hk,并获取云端指令控制用户手机,屏蔽指定号码发送的短信,同时会修改浏览器书签以及联网下载未知程序,对用户手机安全造成严重威胁。(2)a.payment.ms

该病毒注入正常的应用中后会诱导用户下载使用,并在自动激活后在后台随机向指定的SP端口号发送扣费短信,同时屏蔽SP商的确认短信,可能会给用户造成严重的经济损失;该病毒服务器地址为:http://223.*.*.176/**/trs,病毒会把云端指令的操作记录发送到指定的手机号,泄露用户隐私,具有严重的安全隐患。(3)a.payment.flashp

该病毒伪装成一款手机工具,诱导用户进行下载,病毒安装后会定时从http://cru***.net/flash获取云端指令,如扣费端口号和扣费短信内容,并实施发送扣费短信的恶意行为,同时删除指定端口发送的短信,让用户在完全不知情的情况下,恶意扣取用户资费,给用户带来严重的经济损失。(4)a.payment.dg.a.[系统杀手]

该病毒被内置在ROM内,具有系统最高权限,不但不能通过正常途径卸载,而且能够阻止指定的安全软件(指定的安全软件是由云端指令获取的)安装,同时发送大量的扣费短信并删除指定号码发送的短信,给用户带来严重的经济损失。(5)a.remote.jz.[变形偷窥王]

该病毒常吸附在被篡改过的知名软件(特别是益智类游戏)中,病毒激活后会从后台发送短信,泄露用户隐私;同时,根据服务器返回的指令在后台拨打电话,在用户毫不知情的情况下肆意消耗用户资费;通过云端控制将不明软件安装在用户手机中并卸载干扰病毒运行的其他软件;驻后台悄悄地自动记录本机所有的短信内容和通话记录,分别存放在名为zjphonecall.txt和zjsms.txt的文件中,定期上传到指定的服务器lebar.gicp.net,严重侵害用户的隐私。(6)a.payment.keji.[饥渴吸费魔]

此病毒嵌入在许多款的正常软件中,这些软件曾经遍布多个大论坛与电子市场。发作时,除了由云端配置隐蔽的短信扣费外,还会偷偷盗打IVR电话,此病毒的发现,表明扣费已经从短信横向跨到IVR了。(7)a.payment.fzbk.[吸费海盗王]

此病毒嵌入到一款国外著名的游戏软件里,散布在几个大的论坛与电子市场上。另外,病毒发作时也是隐蔽的短信扣费,扣费指令与发送时机由云端配置,但这个病毒在扣费成功后,还会向固定的几个手机号码发送扣费手机的IMEI号等信息,存在分成对账的可能。3.8.7 诱骗类恶意软件/病毒(1)a.system.go360.[图标密雷]

该病毒伪装成拼图游戏应用诱导用户下载安装,启动后会自动在桌面生成若干程序图标,单击图标提示软件更新,诱导用户下载其他恶意应用,给用户的手机安全造成威胁。(2)a.consumption.Lightdd

该病毒伪装系统通知,诱骗用户单击,用户一旦单击,便自动下载其他恶意程序,不但大量消耗用户流量,给用户带来一定的经济损失,同时给用户的手机造成安全威胁。(3)a.privacy.Fabrbot

该病毒捆绑正常软件诱导用户安装,安装主程序后启动,提示升级,用户一旦确认升级,便安装了该病毒子包com.an***id.ba***y,但该APK没有图标,同时读取通信录等私密信息,并且向特定号码发短信,不但造成用户隐私泄露,还会给用户的手机带来严重的安全隐患。(4)a.consumption.iddIx.[伪google系统升级服务]

该病毒激活后便后台无提示自动联网下载病毒子包,消耗用户流量,给用户带来一定的经济损失。下载完成后不定时提示“系统更新”,一旦用户单击,便安装病毒子包,下载的病毒子包可能给用户带来严重的安全威胁;若用户不单击,该病毒便不定时提示,严重影响手机的正常使用。(5)a.consumption.notifier

该病毒伪装成一款工具软件,安装后,当用户在电子市场下载安装软件时,病毒便会在手机的系统通知栏提示其他软件的安装通知,诱导用户下载安装其他恶意软件,可能消耗大量的数据流量,给用户带来经济损失和手机安全隐患。(6)a.consumption.menu

病毒以“menu”为名骗取用户下载,安装后无桌面图标显示;同时,病毒启动后会弹出通知栏,诱导下载安装其他恶意软件,用户一旦确认将可能消耗大量数据套餐流量,带来严重的经济损失。

第4章 病毒与木马攻防

随着智能手机的普及和移动互联网的高速发展,手机病毒和木马成为继计算机病毒和木马之后的又一个严重的安全隐患。手机病毒和木马是一种破坏性程序,和计算机病毒、木马一样具有传染性、破坏性。手机病毒和木马可利用蓝牙、短信、彩信、电子邮件、浏览网站、捆绑软件下载等方式进行传播。手机病毒和木马可能会导致用户手机死机、卡机、资料被删、隐私被窃取、自动发送短信彩信、自动拨打电话等,甚至还会损毁SIM卡、芯片等硬件。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载