本节书摘来自华章出版社《黑客大曝光:移动应用安全揭秘及防护措施》一书中的第2章,第2.2节,作者 (美)Neil Bergman ,更多章节内容可以访问云栖社区“华章计算机”公众号查看
2.2 攻击与对策
好,我们已经知道了移动手机网络的基础知识;接下来我们来谈一下如何攻击和进行防御。
攻击移动语音信箱
可能近年来最有名的“移动”攻击就是发生在英国的《世界新闻报》对人们语音信箱账号的入侵。想一想,我们已经从这个事件中学到什么了吗?没有,它只是证明(甚至在美国)MNO仍然默认配置语音信箱账号来验证来自对应电话号码的任何呼叫,但没有关于输入语音信箱密码的提示。关于《世界新闻报》事件,结果可能更加不幸,但是我们已经看到这种攻击对聚会的影响,在这些聚会上合作伙伴已经搭建了他们自己私有的PBX服务器(例如,使用像Asterisk的开源架构)。利用这样的装置,你能很容易地对呼叫进行路由和实施来电号码欺骗。这使得只要你知道他们的电话号码就能访问任何人的语音信息变得不再那么重要。因此,当一些人随意问你的电话号码,然后拨通电话并过一会很快挂掉电话,同时回复你一条语音信箱信息,这时你要提高警惕了,因为很可能是一个骗局。
更糟糕的是,互联网存在许多通过实施来电号码欺骗来收取少量费用的服务,所以你能够通过连接到互联网上的任何一台电脑执行这种攻击。约翰•基夫在下面的文章中介绍了他在这方面的经历wnyc.org/articles/wnyc-news/2011/jul/18/hacking-voicemails-scary-easy-i-did-it/。基夫的文章也一再论证了这为什么是可能的:AT&T发言人马克•西格尔说过:“为方便起见,当AT&T用户使用你的手机访问语音信箱的时候,他们也可以选择不输入密码”。再一次说明了,简单胜过安全。哎!
针对移动语音信箱攻击的对策
我们将尽量保持简单和简短—设置一个语音信箱密码(具有适当复杂性),然后配置成在所有情况下都要求输入该密码(即使来电是来自于你自己的手机时)。
恶意移动设备
过去当苹果声称越狱后的苹果手机将对移动网络是一种严重威胁时,他们确实是这样定义它的。只是因为没有人使用该技术做出任何破坏性行为,但这并不意味着它必然不会发生。事实上,“电话—基于网络的攻击”的主要障碍物实际是量—你需要大量分散在各地的手机,以一种有意义同时能够引起媒体关注的方式去真正影响移动网络。好比一个有电话干扰发射机的人确实会产生一定干扰,想象一下如果你遇见的每5个或6个人中恰好都有一个拥有无线电屏蔽设备,那么将会发生什么?
另一个有趣的方面是当在我们谈论手机的时候,如果你曾经看到过iOS或者Android设备的软件内核,那么你已经开始看到许多Unix的相似物—目录结构、数据库、文件版本等等。这能用两个简单的词语总结:“iOS是BSD”与“Android是Linux”。尽管技术上没有这么简单,但是iOS操作系统的本质,就是目前已知的重要部分,都归功于伯克利UNIX,同时Android操作系统是嵌入式Linux,只是一些库和管理功能在笔记本电脑和桌面电脑构建中通常不需要。
这里的要点是什么呢?任何已经破坏、建立或者研究BSD或 Linux的人能够直接将他们90%的成功经验应用到iOS或Android设备中。
所以手机是如何影响网络的呢?还记得图2-2中显示的GSM网络简化图吗?你会回想起我们用电话使用一个Um信道,通过无线电连接到一个基站收发器(BTS)。Um信道确实是许多不同逻辑和物理信道堆叠到一起,这给你一种假象:仿佛来电、短信、邮件和互联网访问无缝到达你的手机。例如,当你发起和接收呼叫时,许多逻辑信道会结合起来为一个电话实现呼叫服务。如果你有修改移动设备的权利,你会说通过有选择的干扰或者修改广播信号或来自于BTS的重要网络传输信息,你就能够在你的广播范围内控制或干扰其他任何合法的手机。总之,这是一个需要考虑的非常可怕的过程。在这个过程中一个主要的问题是定位:每个攻击者都有一个电话确实很麻烦。试想如果每个主流品牌(像Android或苹果手机)的手机都开始恶意行为,那么将会发生什么?它将会是移动运营商所见过的最大规模的分布式拒绝服务攻击。
恶意移动设备对策
改动后的移动设备会对手机网络产生摧毁性的影响,除定位以外。
当人们开始谈论移动网络的厄运时,主要一个需要考虑的问题是移动网络在设计时就被划分为多个更小的部分。如果有人为了针对移动网络的某些恶意目的篡改了某个手机……那么他会影响无线电覆盖范围内的任何其他人。对于一个现代的电话来说,这个范围会覆盖大约几百码之内的大城市和几英里的平坦地形。如果那个人能够做这样一件事,那么危害(是的我们知道“危害”用在这儿是一个可怕的字眼)通常就限制在移动网络内该基站的成员中,很可能仅仅只针对那些暴露在原始无线电信号的人,这取决于接口类型和攻击者的目标。使用简易无线电(simply-radio)是当今人们能够部署的最可行的否认通信的方法。
使用一个火花线圈和一个相对大容量的电池,针对4~5个基础移动服务频率来造成干扰和拒绝服务,而不是修改移动设备的基带信号来为你所用,相对来说更简单。我们认为这些类型的威胁虽然是合法的,但是不应该让你们夜不能寐。
早期恶意移动基站攻击
传统移动网络的信任模式与幼儿园班级有相似之处。在幼儿园,每个班级有一个老师和一群吵闹的孩子。每个孩子可以看作是一个在线手机,每个班级可以大致看作是一个基站。你能想象大多数的信任和授权都来自于顶层,即来自于移动运营商。正因为如此,同时我们假设大多数攻击者的技术并没有达到可以修改硬件和固件的水平,于是我们就看到一个进行自上而下对网络控制的方法。这意味着网络需要对手机进行验证,但是(直到最近)手机并不验证网络。利用这种简单性你就能够对移动网络进行仿真,更类似于你所知的设备测试,而不是绕过安全规则。
为了进一步详述这点,让我们举个简单的例子—我们如何冒充世界上任何一个移动运营商。回到20世纪90年代,当时我们还是容易受影响的孩子,有太多的时间在我们手上而且只有很少的积蓄。我们需要开始使用这个新技术,它能使我们在沙滩、汽车或者山顶上同人们讲话。那时,这种想法十分新鲜,通过无线电波将谈话传送至其他人的想法在当时是相当不可思议的。
在那个时候,只有简单的时分复用技术,原始的无线电输出强度和大体积电池。当时存在许多有竞争力的技术,人们也在努力达到我们现在所享受的互操作性的水平。
无论如何,我们曾经是贫瘠和好奇的,但是我们也确实拥有了一部或两部手机。我们开始对USENET有所了解,并且对无线电、数字化语音和称为GSM的新流行事物产生疑问。GSM技术在当时处于相对不成熟的状态,但是幸运的是对业余爱好者来说,标准和协议规范是可行的一条路,如果你有幸能够发现数字副本的话。我们开始阅读一份1 200页的规范文档,我们不停的阅读……阅读……直到我们对关于GSM协议的一个有趣的现象产生了困惑。任何手机都能够在另一个运营商网络中漫游。当你离开鹿特丹到达斯塔万格,却还能拨打接听电话,这是GSM网络的内置特性。它也引出3个非常有趣的现象:
手机能够简单地加入另一个移动运营商的网络;
当手机加入一个网络时,一般很混杂(为什么漫游会这么容易?);
移动网络由一个简单的3位数字代码和一个3位国家代号定义,如表2-1所示。
如果你像我们一样,你也许会说:“现在,我们怎样去模仿这3位数字代码呢?”如果你与我们并不相似,很好,因为这种想法会让你陷入各种麻烦中。尽管如此,最终我们仍然发现了我们一直在探寻的东西—创建GSM网络,并掌握GSM电话如何加入并使用该网络的方法。现在面临的最大问题是我们没有设备来支撑我们使用新发现理论做任何研究。我们需要在不使用保护措施的情况下获得一个基站。经过几个月的搜索,我们最终发现了我们正在寻找的东西—另一类手机!当时我们不知道基带在这些小设备中会有这么大的作用。事实证明许多特性(例如模拟一个基站),确实就是一个软件的变革。
我们正在到处寻找对整个基站进行仿真的方法—无线电塔,每个电话通过连接无线电塔来获得服务。我们还没有意识到的是,从无线电的本质来说它是一个可共享的广播媒介,这就意味着如果我们距离它足够近,我们就能够监听周围的一切。我们现在知道这非常基础,但是当时我们还年轻,并且是首次研究这个方向。针对一个略微不同的目标—监听电话,而不是模拟一个基站—我们开始向任何能够倾听我们的人提出更多的问题。最终,我们从另一个德国的技术专家那里得到了反馈。他解释到,可以通过修改电话上的固件并将其放置到他所谓的“工程模型”中。我们都没有真正看到这样带来的益处,直到他解释到:“工程模型固件允许这些手机在相同时间内捕获所有基带上的无线电通信,你就可以通过RS232记录所有数据包,像语音和SMS等类的资源,这听起来确实很酷。”
在早期,一直使用的是14.4 k调制解调器,所以对于我们而言,能够发现一种用手机捕获无线电通信的方法是很激动人心的。这个人给我们发送了一个300 KB超大附件,以及一些关于如何格式化特定手机的指令,还有关于如何从海外供应商购买调试电缆的说明。我们花费了大约20美元购买电缆,建立Slackwarebox,并格式化了我们第一个电话。从那以后我们没有回头。
现在,对于那些从电影《Swordfish》或《Hackers》中联想画面的人们,我们现在需要告诉你们:完全不像那样。事实上,对于偶然的攻击,我们需要花费数月的努力才能真正明白我们看到的东西。当然,在我们这样做的同时,世界也在发生着改变。我们正在关注相应的比特流(拨通和中断电话,以及发送短信)、语音信道,甚至包数据,以控制信道。那时,由于简单包数据通常是低速范围,我认为语音和文本信息相对而言更酷。
还要记住的是,所有这些变化都发生在20世纪90年代。手机正在成为一种流行工具;它们变得越来越便宜;并且越来越多的人正在使用并将它们作为一种方便的日常工具。我们花费的所有资源是价值20美元的电缆,以及在USENET上占用的大量时间与下载一些固件的拨号连接。总之,我们仍然认为这20美元是一个很好的投资。
如果让我们快速前进几年,当我们已经有真正的工作和用户时,会再一次产生对手机基站进行模拟的想法。回到2002年,作者应读者要求提供了一个完整的手机测试环境。这个想法可以让人们能够理解并修改手机及手机支付所运行的环境。第二次变得更加智能一些,我迅速找到主要的移动运营商并问他们,“你们用什么来测试手机?”可以预见到的是,所有运营商都答非所问,他们只是说,假设一些疯狂的研究者知道了他们网络测试的机密,那么很快就会发生混乱。
我曾经又一次在网上一直进行搜索,于是发现了一个很好的公司,叫做Rhode& Schwartz公司。R&S刚好为GSM网络创建测试工具,包括我一直追寻的“圣杯”—基站收发信机(BTS)模拟器!我很快发现我可以查到所有关于他们的产品的信息,包括价格。我曾经提到过这些部件很昂贵吗?会是六位数字那么贵吗?看起来好像我的客户并不在意这个,所以我也不在乎。我订购了全套的R&S CMU200,然后开始工作。事实证明这仍然和开始模拟基站一样简单—三位数,即移动网络代码,定义了不同的运营商。我曾经查询了MCC/MNC目录,继而意识到这是一个“测试” MCC/MNC为001/001。当然,考虑到本书内容,我必须声明任何对该领域该兴趣的人都应该停留在001/001。但无论如何,让我们发挥一下想象力吧。
比方说你刚好对其中一个BTS仿真箱进行过访问(从拍卖、促销或者直接从厂商处购买)。比方说你想要模拟我们曾经谈论过的某个移动运营商。你需要做的第一件事是查看你国家的标准移动国家代码;考虑到臆想实验(想法),我们使用沙特阿拉伯作为例子进行讨论。沙特阿拉伯目前有两个主要的移动网络运营商(MNO): Mobily和Al Jawal(阿联酋电信和沙特电信)在争夺移动用户中竞争。我们假定我们是Mobily。我们首先查询KSA的MCC,即420。这是一个好的开端:3个数字留下来,接着是另外3个。现在我们需要确定Mobily提供服务所使用的移动网络代码是什么。我们怎么才能做到呢?最简单的方法是在各种站点上对MCC/MNC组合进行查询。在这个实验过程中,我们使用mcclist.com。Mobily使用“3”(或者“003”)作为移动网络代码。掌握了这个信息后,我们现在能够在沙特阿拉伯模拟GSM网络了。
至少,我们认为我们可以。事实证明虽然最终需要六位数字才能够确定一个GSM网络运营商空间,但是有一个必要的欺骗GSM手机去连接假冒BTS的关键信息:信道分配。当今,信道分配是一个争而未决的问题, “世界电话”和“四波段”(quad band)无线电不是例外而是规范,但是当你试图模仿手机运营商时,你应该非常谨慎。在这个情况下,我们可以通过查阅相同的网站并且可以看到,在我们有着特殊想法的实验中,Mobily使用的是GSM900和UMTS/W-CDMA 2100。因为我们的目的,我们不需要担心无线电兼容性或者信道选择,但是实际上,我们要同时覆盖标准GSM 900-MHz频带和CDMA 2100-MHz频带,以获得两个独立的无线电波。图2-4对GSM嗅探装置进行了介绍。
在所有工作完成后,让我们来回顾下获得了什么。首先,如果我们在沙特打开这个装置,我们就能够查看同我们基站相联的手机。同时,我们也能够看见数据连接、手机呼叫尝试与大量的SMS短信。用户也许会注意到一些其他的方面:它们看起来似乎是无关联的!虽然我们描述的装备会成功欺骗手机,使其与之连接,但是基站仿真器并没有获得所有必需的连接来允许电话呼叫和接收电话、发送短信或者浏览互联网操作。
对于这些问题,像浏览互联网,只需要将以太网电缆插入仿真盒背面就可以了。对于电话呼叫,来电号码欺骗是一个非常可怕的问题,需要同等程度的努力来拦截和验证代理来电的合法性。
恶意基站对策
正如我们所关注的一样,这个问题关于移动网络认证,因此,作为终端用户,要认识到的一点是,你能在认证方面做的事情很少。当下次你呼叫涉及隐秘的电话或者用手机发送SMS或邮件时,请记住这点。哎!
恶意家庭基站攻击
2009年,一个GSM栈的BTS部分的简单开源实现引起了人们的广泛兴趣。这个实现方法,即OpenBTS,声名狼藉,因为安全研究者意识到你可以在一些基础无线电硬件上使用这个免费软件,从而制造出一个价值1 500美元 的“伪基站”(要知道的是,R&SCMU200当时比游艇的还贵,所以这是一个特大新闻)。对安全研究者来说很不幸的是,2009年也是家庭基站普遍发行、轰动北美市场的时刻。家庭基站与基站测试装置不一样,也不像实现GSM栈的开源软件。家庭基站是黑客的至高追求;它们是真实的移动网络运营设备,实现了完整的GSM或CDMA栈,可以在一个运营商网络上支持所有设备,并提供用户合法呼叫、发短信和数据回传操作。图2-5显示一个可能的恶意家庭基站设置。
但是伴随着新技术的发展,出现了很多阻碍。对于每个感兴趣的安全专业人士和有信用卡的年轻人来说,只要家庭基站一旦发布,这些家庭基站就会很快成为炮灰。正如在黑帽网站上提及的,这些设备是非常重要的基础嵌入式Linux版本,具有一些定制应用和一些良好的无线电装备。为打造一个全新世界而花费一点钱,不值得吗?
家庭基站的思想是在你的家中放置一个极小的盒子。在这个小盒子中,有一组连接器(天线、电源、以太网)和除状态LED的其他东西。这个小盒子是如何创造奇迹的呢?其实非常简单。正如刚提及的,一个传统的家庭基站是一个运行许多特定应用的基础Linux版本;它安装了大量驱动并包括一些高性能的简易无线电。大多数实际的实现是通过软件实现的;二进制为连接的设备掌管控制信号和数据信号。固件可对该无线电设备进行修改,以满足一致性和各类协议规则。这些应用一般控制着三个主要方面:控制信号(呼叫建立和断开与SMS信息),正常语音呼叫到实时协议流的转化,以及相关联的SIP安装程序。
家庭基站同样包括基础操作系统,用以保护回程链路;通常是通过IPSec传输或隧道模式连接到移动网络运营商的特殊安全网关完成这项任务。将所有设备整合到一起,你将会有一个多功能装置,它能同时在运营商网络和用户网络中工作。
一个家庭基站的基础操作包括安全人员感兴趣的许多方面,包括:
设备关联;
呼叫建立和断开;
信息传递;
回程连接。
大多数现代家庭基站中的相关设备需要家庭基站在实际通信过程中使用MNO的认证机制。有趣的是,这提供了许多潜在的攻击向量。很明显,后台认证中心的通信通路以及相关的安全(身份验证、授权、等级限定)对于整体平台的安全是至关重要的。目前,任何接收用于验证设备的原始机密的家庭基站,对于MNO和他们的用户来说都是一个严峻的风险。虽然在MNO和家庭基站之间使用一个IPSec通道能够保护机密,但是事实上任何像家庭基站一样可以物理访问一台设备的人都能够很容易获取对软件和硬件的访问权限。而一旦获得物理访问权限,所有安全投入都无效了。正如早期在
hackaday.com/2012/04/12/poking-at-the-femtocell-hardware-in-an-attmicrocell/and wiki.thc.org/vodafone中描述的,许多现成的装置能够精确地实现这个过程。因为这些设备都是基于简单的Linux分布,因此所有的攻击工具和知识都能够被技术精湛的攻击者使用,以挖掘网络连接的基站的全部功能。
这会导致一个很可怕的处境:我们如何为用户提供高性能、高可信的网络设备呢?我们的答案是:你不能。一个简单的事实是出于各种原因,全世界的人们都喜欢使用这种家庭基站,但是并不是所有的原因都是正当的。如果安全人员从希望维护MNO的安全立场保护他们的(与潜在的其他)用户,那么家庭基站应该只能执行简单的“IP无线电”功能。
对于大多数家庭基站来说,另一个有趣的配置选择主要是围绕用户。随着许多网络操运营商做出如下举措,一个具有高度争议的问题产生了。如果将我们的家庭基站的用户范围限制在少量的手机中,那么我们将在免费的网络发展上损失更多。因此,我们将允许任意用户连接任意家庭基站,这样可以使得每个人都能够满意!
一些运营商已经选择将能够连接家庭基站的人员限制在可控的白名单中,但是其他人已简单阐明任何能够连接MNO网络的手机也能连接他们的家庭基站。让我们用一点时间仔细分析这个决定吧。
如果家庭基站只允许来自一个白名单的连接,那么我们在许多因素中将会有一个权衡。这些因素包括用户经验、MNO利益和安全。在目前的相关部署中,我们发现主要在用户经验(他们不需要做任何事让家庭基站“工作”)和MNS利益(即使所有用户没有为使用一个家庭基站支付任何费用,他们也能够享受高级别的服务;他们只需要在一个已购买该家庭基站的用户周围即可)之间的有一个折中。当前家庭基站的设计可以提供给你一个高性能的网络平台,这类家庭基站设计与你最终的潜在安全问题相结合,人们就能够创建恶意基站,这些恶意基站是他们而不是MNO控制的。让我们来说,这种设置可以为人们提供通过低层光纤窃听来自可信路人的电话会话、SMS和数据连接,这些路人的手机将混杂着加入恶意基站中。对于该问题唯一的实际限制是物理层—大多数家庭基站部署的是非常基本的天线,而这些天线的只有有限的覆盖面。但是,在我们的经验中,不到100美元就可以提高天线的功率,极大的提高家庭基站覆盖的范围,这是一个非常险恶的装置。
另一方面,那些已经将他们的家庭基站用户限制在少量IMSI上的MNO仍然在已部署的高性能平台上存在一定问题。在某些情况下,这些平台必须请求来自回程的变量信息,例如,加密密钥。所以尽管那些实施了限制的MNO已经限制了“恶意基站攻击”问题,但是他们仍然可以让一个相对开放的网管运行在移动网络上,若该网关落入错误的人手中,则会导致对用户的敏感信息的访问—这种信息能够被用来成功复制一个用户身份模块,对MNO和用户来说都是潜在的危害。
恶意家庭基站对策
假设家庭基站很流行并且被广泛使用,那么短期内我们不会“将这个妖魔放回瓶里”。但是,MNO和其他人确实可以在家庭基站的设计方面做一些改进以改善这个局面。
最理想的情况下,最容易的事情可能是创建一个看起来非常像当今家庭基站的设备,然而缺少关于请求用户信息的授权。这个新一代的家庭基站能够保护MNO和用户抵御大多数攻击,但是它仍然为坚定的攻击者提供了伪装成一个MNO的能力—看起来像是MNO没有享受到什么。为了解决这个问题,我们不得不将目光转向手机制造商,以及起草协议和接口的标准委员会。
搞笑的是,GSM网络从来没有意识到网络应该向手机证实身份。更甚者,你可能会认为安全来自于外界。为了能够上网,一个手机基站不得不提供一个有效的序列号或设备ID以通过类似“应答–挑战”的多个“包围”,遵守所有独立基站设置的传输规定,甚至到了那时,如果网络繁忙的话,一个移动站点也可能轻易被拒绝网络访问。
这种安全模式是有缺陷的。单向信任已经不能再持续下去。我们着眼于人类历史上最大的分布式计算集群,我们制造出最多的连接、存储、处理能力可以作为一种文明进步的标志。那是非常酷的事情。它还需要手机制造商、标准*和移动网络运营商多制造一些创新的决策。很幸运的是,我们不是第一批考虑这些事情的人,这也是件好事情。
当我们还在漫谈移动网络运营商、GSM和家庭基站的时候,有些人已经默默地生产出一个可靠、开放、正确的移动基站之间的交互认证方法,就像你的手机和移动网络。
在IP多媒体子系统(IMS)领域,该领域基于IP和使用服务模型,在进行交互认证时我们自然会有一些选择。SIP允许多种类型的单边和交互认证方案,IPSec也需要同样的一套方案。所以我们在IMS领域的进展怎么样了?实际上,如果人们把注意力放在那些已知错误的密码、密钥模式、处理问题的关键,以及未履行默认安全上,这是很好的。总之,我们现在比以前处在一个更好的位置去把问题处理好。