《黑客大曝光:移动应用安全揭秘及防护措施》一2.1 基础移动网络功能

本文涉及的产品
短信服务,100条 3个月
短信服务,200条 3个月
国际/港澳台短信套餐包,全球plus 100条 6个月
简介:

本节书摘来自华章出版社《黑客大曝光:移动应用安全揭秘及防护措施》一书中的第2章,第2.1节,作者 (美)Neil Bergman ,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.1 基础移动网络功能

几乎世界上每个人都至少对一个无线电网络进行过访问。无论是在吉隆坡、卡拉奇、亚特兰大或在南极洲海岸之外的乔治王岛,许多手机运营商希望采用光纤或铜缆来提供货币化的移动服务。事实上,据估计超过80%的陆地被一些类型的移动通信网络覆盖,用户量达32亿(大约占世界人口的50%!)。这意味着地球上每4个人中就有两个人能同地球上任何地方的另外两个人聊天。
这种方式的覆盖需要规模、合作与资金。从安全的角度来看,我们的首要工作是理解一些事物是如何工作的。一旦我们了解了,就能够各个击破,然后用我们所学习的知识去完善它。让我们从能够带来安全问题的一些移动网络的关键属性开始。

2.1.1 互操作性

攻击者拥有的首要优势是他们不需要担心在手机或者移动终端到通信塔之间的连接使用的是什么技术。虽然许多人喜欢讨论移动网络就好像他们是技术专家。但是简单的事实是这样的:当谈到通信时,我们已跨过简单的技术障碍。我能用一个基于CDMA的北美洲的电话向一个基于GSM的马来西亚的电话发送短信。拘泥于最底层技术并不是我们在这里的目的。手机使用的无线电波调制类型与今天手机带来的功能没有多大的关系。
 因为GSM和CDMA是当今主要使用的无线电访问技术,因此它们成为了最主要的攻击目标。我们将注意力集中在这些技术上。我们也会在本章最后谈到如LTE和基于IP服务的下一代协议。
事实上,当今现代移动网络最好的一部分恰恰正是互操作性—事实上,两个不同的无线电技术对消费者来说意义不大。这也使得安全研究者的生活如此轻松!黑客(好意与恶意的)并不是必须在破译无线电传通信中浪费时间,原因在于,所有技术细节被移动网络运营商(MNO)抽象得很好,以至于各方面都运作顺畅。我们关注的主要安全类型是受攻击的和防御终端。
由于所有主要的移动网络都支持,因此这方面有许多目标:
语音呼叫;
语音信箱;
手机短信服务(SMS);
基于位置的服务(LBS);
IP连接。
大多数支持的:
二进制配置消息;
多媒体短信服务(MMS);
传真。
图2-2向你展示了所有这些。
图2-2是一个相对复杂系统的简化视图。尽管GSM在几十年前就已设计,但系统仍然是可靠的,交互良好,并且在全世界范围内部署。当然所有这些特征均伴随着一些复杂性。
让我们快速浏览一个GSM网络部署中的用户。当然,你知道有许多的消费者—用户,他们随身携带手机,用于呼叫、发短信等等。那些人在图表的左侧。在GSM领域中,移动设备称移动终端(MT)。在他们旅行的过程中,这些移动终端连接到许多天线,称为基站发信台(base station transceiver,BTS)。
从一个移动设备到一台BTS的连接被设计为Um。(字母U的设计来自更早期的数字信号时代,当时综合业务数字网或ISDN使用U信道为用户设备提供连接服务。针对移动又添加了m字母,之后就成了现在这样)!每个BTS连接到一个基站—本质上是一个接受无线电信号的设备,将天线接收的无线电信号转换为数字分组数据。当前的基站由两个主要的组件构成:一个用于语音与控制,称为基站控制器(BSC),另一个用于传输IP包和管理移动IP,称为数据包控制单元(PCU)。但是在我们看来,这两个设备都是GSM网络的“边缘”设备,因为我们通常不会爬过围墙然后进入装备室(对于那些城市“攀岩者”来说,可以将移动交换中心或MSC认为是GSM网络的边缘)!基站子系统(BSS)结合了BTS、BSC和PCU。基站子系统能够被一些没必要与大型运营商有关的人们所拥有和关注。它允许在使用更高、更大覆盖面运营商的同时,可以利用小规模的移动网络运营商覆盖个别的国家。
现在我们已经制定了基础拓扑结构,让我们更详细看一些攻击能力。
image

2.1.2 语音呼叫

事实上,你是如何拨通电话的呢?很开心你问这个问题。这个过程需要我们用上千张篇幅的标准,无数的维基百科知识和许多电话来理解真正建立电话通信所需的流程。为了不浪费我们的时间,我们将给你一个非常全面的视图。
首先,我们需要它谈一下Um信道—MT与基站之间的连接。Um信道有许多组成部分,包括传输与控制。尽管所有这些组成部分均有相应的名称和职责,但是只需要记住:它们均使用相同的无线载波,仅仅是使用不同的时隙。时分复用(TDM)是一组终端设备共享有限的电磁波容量的一个繁琐但是行之有效的方法。简单来说,时分多址的意思是(TDMA)设备1将使用时隙1,设备2使用时隙2,设备3使用时隙3,等等。当然,如果你不知道时隙是什么,那么这种解释对你就没有任何帮助。一个时隙是在一个设备被允许进行广播的时间片。借用我们的例子,如果所有设备在相同的时间启动,你将会看到无线电通信在一段时间内属于设备1,然后是设备2,接着是设备3,等等。这个序列允许所有参与通信的设备有序地共享所有可能的电磁波容量(当一个设备不再参与通信将会发生什么?我们一会涉及这个问题,把它认为是一个“无线电干扰”)。一段时间内,TDMA系统已经在中低比特速率中取得巨大成功(为了我们的目的,让我们继续关注TDMA,但是我呼吁那些真正喜欢这种会话方式的人们去看看FDMA、OFDM和其他多种多路技术)。
所以我们回到TDMA。每个设备有一个特定的时隙,在这个时隙中允许设备“说话”。这个时隙本质上是从一个控制器中传下来的—我们将控制器称为BSC—然后监听每个被分配了时隙的设备的广播;注意这个控制器BSC—BTS的大脑—实际上是监听这些无线电广播的“听众”;BTS仅仅是一个天线,它自己本身无任何智能功能。
现在让我们对每一个设备的时隙再一次进行细分以便给这个系统带来一定的顺序。当一个移动设备同一个基站建立联系时,它不得不经历大量繁琐的程序以分配到一个可用的时隙。一旦一个设备已经认证通过开始使用移动网络进行实际服务时,情况就会变得更加复杂。可以说,当一个用户想要拨打电话或者发送短信时,手机设备已经在监听5个或6个广播信道了,向基站控制器发送一些消息后,很快就可能被通知重新分配了从一个频率到好几百倍的另一个频率的无线电载波。
下面是来自于上述过程的其他产物:移动网络依赖大量的技术以确保看起来在同一个基站内部,你不用与其他500个用户竞争有限的电磁波容量。主要的技术是将电磁波频谱划分为控制信道、数据和语音。

2.1.3 控制信道

想象一下在一个正在举办晚间比赛项目的体育馆或者正在播放邦德电影的电影院附近,会有多少人需要连接基站。在大城市的每一个基站,精力都集中在对成百上千的移动设备的顺序上,并且移动网络全天候不间断处理数据。移动网络的解决方式是上行线路(从移动设备到基站塔)、下行线路(从基站塔到移动设备)和广播信道协同工作为用户提供完美的体验。一般来说,信道分为两种主要类别:手机信号发射和控制,以及业务信道。业务信道携带语音数据,而控制信道负责管理其他所有关于移动设备的连接、使用、切换和切断与移动网络的连接。
控制信道是GSM系统中非常有趣的一个部分。我们将利用一点时间让你知道看似简单的事情下隐藏的复杂性,例如启动手机。在图2-3中你会发现我们已经为每个独立的信道箱标注了箭头;这些箭头指示这个信道的数据方向。只有一个箭头的信道是只读的,通常包含状态信息。从注入的角度来看,这些信道看通常不受人关注,但是通过修改数据或者淹没广播和常见的控制信道,这些信道最终可被破坏。一个手机干扰器其实就是一个大功率的调频发射器,同时它也相对容易建立。如果在网上搜索手机干扰器,你会发现成百个设计,其中一些是有用的,一些是无用的。它们完全拒绝服务攻击直到被无线电测量到。可利用它实施拒绝服务攻击,除非通过无线电定位技术你被准确地找到并送进监狱。

  1. 广播控制信道:学习这个网络
    当一个移动设备首次开机时,它对周围的环境一无所知。它开始监听多种频率(基于国际条约和频谱协议可知)。这些多样化的频率通常对应多个信道(见图2-3),这些信道基于电磁波容量和初始地理位置分配给设备。一般来说,一部手机监听的第一个内容是BCCH,也就是广播控制信道。BCCH包含允许移动设备同步和将要连接的网络及BTS所服务网络的相关属性(如邻近基站ID和信道信息)的信息。这样,移动设备就会知道如何访问RACH,也就是随机接入信道。RACH是手机与移动网络中某基站开始建立联系时获取信息的方式。一旦手机已经通过RACH发送了一个信道请求,那么BTS将尝试响应该请求。如果BTS在无线电配置(可用容量)中有空闲的时隙,那么它会分配一个控制信道,称为独立专用控制信道(SDCCH)。BTS通过接入允许信道(AGCH)告诉手机这些分配信息。一旦移动设备接收到SDCCH,则该移动设备成为网络的一部分且可以请求位置更新。
  2. 位置更新
    位置更新实际上意味着你的移动设备正在让GSM网络知道它在哪个区域。一般来说,需要移动设备验证该网络。所有这些过程来回仅仅需要一秒左右的时间,时间长短取决于基站负载和电磁波质量。通常,这个工作在你解锁手机后完成。位置更新通知主位置寄存器(HLR)—用户信息数据库—和移动交换中心(MSC)现在设备所在的地理位置信息。一旦移动设备执行一个定位更新,那么基站控制器就会告诉移动设备通过释放仅仅几秒之前分配给它的SDCCH进行“休眠”。这将最大化利用基站资源以确保每个人得到一个高质量服务。

image

认证和A5/1、CAVE、AKA
由于将会用很大篇幅来介绍认证如何工作,具有怎样的缺陷,以及如何能够更好工作,所以我们不在本节对其进行深入介绍。对读者来说,剩下可作为最佳练习的如同A5/1、CAVE和AKA。通常,对那些对大范围攻击感兴趣的人来说,A5/*系列加密算法覆盖了GSM网络,而CAVE和AKA覆盖了CDMA。当IP多媒体子系统变成移动运营商选择的系统架构的时候,AKA将会重现。众所周知,A5已经不安全许多年了,但事实上位置(能够从手机到基站的无线电信号中窃听)和装备通常能够使人们不再对其恐慌。在我们看来,有趣的不是过去而是将来—基于SIP的电话呼叫、纯IP连接和基于网络的服务。对于那些之前在GSM网络上破解A5感兴趣的人来说,我们建议可将events.ccc.de/congress/2009/Fahrplan/events/3654.en.html作为最容易的起始点。

2.1.4 语音信箱

语音信箱是复古技术中的一种,但这种技术确实非常有用,只是我们有些倾向于将其边缘化。将你的思维回到“攻击语音信箱”丑闻中,该丑闻在过去一年里震惊了整个出版发行行业,但是你可能重新考虑将语音信箱归入“已有”技术中。
语音信箱早已成为一个与手机系统相关的基础服务,并且随着技术的发展,语音信箱也在不断进步。我们从简单的模拟录音设备开始到数字短信储存(和管理),再到作为IMAP的语音信箱,以及当今作为云服务的语音信箱。简单来讲,语言信箱其实就是一种将一个电话呼入连到录音设备的机制,将数字化文件存储在某处,当另一个电话通常是邮箱所有者的电话呼入时,重放该语音文件。系统本身不是十分简单,但是它确实能为盗取、丢失和误导提供大量可能性。大多数现有的语音信箱系统运行在SMS消息、电话呼叫和IMAP信箱的相互作用下!
许多热衷于复用已有技术和系统知识的大型运营商开始向基于IP的语音信箱发展。许多这类的实现仅仅是一些轻量级的IMAP服务器,这些服务器为使用简单号码的IMAP信箱提供服务。随着我们不断前进,我们可能会看到基于网络服务的纯IP解决方案开始出现。作为安全从业者,我们需要停下来思考。鉴于电信巨人通常已经能够阻止脚本小子和非常容易实现的攻击,对人们来说,即将到来的标准和最少组件共享(lowest-common denominator)方法的技术部署方式将创造极大的可能性,使得系统更加可靠、更加安全和更加易用。这也将允许漏洞信息通告人员和网站更容易尽快发现错误,为此,我们应该正确完成我们的工作,确保在部署时进行了良好的配置并且保护好应用和服务。

2.1.5 短信服务

SMS是一个最有特色的移动网络服务,这里有点奇怪,因为它的加入是事后的想法。SMS信息对大多数生于20世纪70年代后的人们来说很常见—我们甚至已经快速打出一个“omw,eta5”而不是给朋友打电话说“我会在5分钟内赶到。”
SMS系统对手机来说是实际上工作在控制信道上。控制信道正常建立呼叫,切断呼叫,管理无线电信道定位和无线电访问网络开支。事实证明人们没有真正发明带有SMS想法的GSM,而是最后才加入了SMS的想法。许多人都说过移动网络很容易遭到“SMS泛滥攻击”(SMSanalysis.org),事实证明他们有时候是正确的。由于SMS传递信道需要同控制信道相竞争,因此有些人相当快就想到如果攻击者能够发送一个离奇数量的SMS信息的—按照这样的规则:每秒钟有上百条信息涌入一个站点,有十几万条信息涌入一个区域—这样你已经遭到了一个攻击。但是,移动运营商也是非常机智的。
SMS信息一般通过图2-3中描述的一对逻辑控制信道传输。通常情况下,当用户不在通话时,消息通过SDCCH传递;当用户恰好在通话中,消息通过慢速随路控制信道(SACCH)传递。一个单独的SDCCH的数据速率大约在0.6 kbit/s和2.4 kbit/s之间,这取决于每个BTS基础的信道配置和用法。这意味着在最好情况下它要用0.07秒给一个移动设备发送包含160个字符的信息,在资源最有限的情况下,则大约需要花费0.27秒。你可能为了单个用户能够发现网络出现的任何错误而不得不发送一个信息,这个信息需要绕过SMS服务中心(SMSC)计时器和每秒至少4次的泛滥控制。很可能该用户会被文本警告所淹没,但是在任何情况下GSM网络中都没有出现真正的危害。
在所有的这些情况中第二个更有趣的方面是,记得我们是怎么谈到供应商是非常机智的吗?他们已经考虑过这个问题。由于他们的关注点在于让用户满意和维持网络的可靠,因此他们很早就决定SMS信息将会由一个超时和优先的系统进行管理。这个超时和优先系统可以确保当SMS信息风暴发生时,SMS服务中心,也就是SMSC可以承受负载的冲击。这类事情总是发生在紧急情况中或者周五晚上的体育赛事中……当他们这样做时,短信就很少干扰到通话。当类似SDCCH事件的争论越来越多,一般是认为由于错误配置的设备而不是GSM标准自身所导致的。
现在让我们回到这个部分的起点。SMSC是目前所有移动网络中难度最大的工作设备。基于一组数据中心和一些SMS服务中心,全国的供应商每个月大约传输1 000亿消息。一年就有超过1.2万亿的消息。这些SMSC基于一个简单的任务所建立,并且它们擅长接收信息,读取电话号码然后发现电话号码的定位并发送信息。这听起来很简单,但是文本信息不只是发送表情……
SMS有一个有趣的属性—它们不只是发文本!几年前,当Java移动信息设备配置文件(MIDP)和有限连接设备配置(CLDC)设备在全世界范围内使用时,它们使用一个用户数据头(UDH)指定一个端口指向短信这样一种非常老式的做法,来接收一个特殊形式的短信。这就是Java工程师如何实现每个应用的短信服务,从技术上来说这是非常好的。它使用已有的非常强大的SMS基础设施;一个简单组件来验证应用(“端口”,看起来其行为非常像TCP或UDP端口);它是可访问的,并且对任何应用没有干扰,不需要专用库和运营费用。
SMS信息实际上是短通信服务的多用途机制,这种通信不仅在用户之间,也在网络组件(像配置服务器)到移动设备和其他移动设备之间(像P2PJava应用)。UDH通常是对SMS信息最有用的扩展,它包括许多潜在的特征:
改变回复电话号码(UDH22);
信息连结(UDH08);
信息指示器设置—视频、语音、短信、邮件、传真(UDH01);
移植的SMS信息(UDH05)。
我们不过多讨论使用这些信息所能完成的所有事情,因为你能在这里找到解答(在你喜欢的搜索引擎中输入UDH教程)。但是要记住:随着时间的推移SMS信息一直在进化和发展,并且在移动网络中保持着强大的能力。将标准、运营商配置和手机配置相结合,意味着:如果运营商和手机制造商没有仔细关注他们在这些信息中嵌入什么信息,以及这些信息涉及什么类型的可信关系,则SMS信息将可能带来巨大的危害。
许多年前,一个电话制造商决定,允许发送“配置信息”到自己的手机上。因为手机盲目服从这些信息的配置指令,因此只要攻击者知道用户的手机号码,他们就能够轻易地对该移动设备进行错误的配置。请记住SMS信息没有验证、完整性检查与机密性。世界上任何人都可以给你发送一条短信。即使移动网络运营商可以过滤特殊信息类型和特征,像我们刚刚描述的UDH 的“愚蠢之举”,你的家庭网络中仍然有潜在的上百万人。
当多种系统出于一个共同的原因需要协同工作时,一个令人烦恼的事情刚好发生了。在我们描述的情况下,我们将这个共同的原因归为全功能智能手机—你可能使用这种手机发邮件、编辑短信以及给你的朋友或商业伙伴打电话。像苹果iOS系统一样使用一个标准接口,你看起来好像是在服从UX设计者的决定。在iOS UDH回复攻击时,iOS决定显示“回复”号码而不是初始电话号码。可怕的是大多数人使用电话不会考虑反复两次检查短信的来源。Pod2g描述了这个情景,pod2g.org/2012/08/never-trust-SMS-ios-text-spoofing.html。
iOS UDH能够回复攻击,使得黑客很容易欺骗一个用户。除此之外,还有另一个伪造SMS信息的途径,并且它与移动网络没有任何关系。大多数情况下,享有特权的应用和有些不享有特权的应用均能很容易地凭空创建SMS信息。例如,这可能允许一个攻击者在某人的电话上安装一个app,并直接给用户的信箱发送可信的SMS文本:请参考bitdefender.com/Security/android-vulnerability-opens-door-to-SMS-phishing-scams.html。
也许一些恶意事件永远不会发生在你的身上,但是你也应该阅读这本书,因此你是一个有安全倾向的人。因此我们提出一个问题:如果未来你有机会设计一个像这样的系统,你会把一些强大的认证功能包含进去吗?谢谢。

相关文章
|
14天前
|
运维 物联网 网络虚拟化
网络功能虚拟化(NFV):定义、原理及应用前景
网络功能虚拟化(NFV):定义、原理及应用前景
31 3
|
12天前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架
|
12天前
|
网络协议 网络安全 Apache
一个整合性、功能丰富的.NET网络通信框架
一个整合性、功能丰富的.NET网络通信框架
|
1月前
|
机器学习/深度学习 算法
神经网络的结构与功能
神经网络是一种广泛应用于机器学习和深度学习的模型,旨在模拟人类大脑的信息处理方式。它们由多层不同类型的节点或“神经元”组成,每层都有特定的功能和责任。
40 0
|
2月前
|
5G 网络安全 SDN
网络功能虚拟化(NFV)和软件定义网络(SDN):赋能5G网络灵活、智能演进的关键
网络功能虚拟化(NFV)和软件定义网络(SDN):赋能5G网络灵活、智能演进的关键
74 3
|
1月前
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
17 0
|
2月前
|
网络协议 C语言
C语言 网络编程(十三)并发的TCP服务端-以进程完成功能
这段代码实现了一个基于TCP协议的多进程并发服务端和客户端程序。服务端通过创建子进程来处理多个客户端连接,解决了粘包问题,并支持不定长数据传输。客户端则循环发送数据并接收服务端回传的信息,同样处理了粘包问题。程序通过自定义的数据长度前缀确保了数据的完整性和准确性。
|
2月前
|
网络协议 C语言
C语言 网络编程(十四)并发的TCP服务端-以线程完成功能
这段代码实现了一个基于TCP协议的多线程服务器和客户端程序,服务器端通过为每个客户端创建独立的线程来处理并发请求,解决了粘包问题并支持不定长数据传输。服务器监听在IP地址`172.17.140.183`的`8080`端口上,接收客户端发来的数据,并将接收到的消息添加“-回传”后返回给客户端。客户端则可以循环输入并发送数据,同时接收服务器回传的信息。当输入“exit”时,客户端会结束与服务器的通信并关闭连接。
|
2月前
|
C语言
C语言 网络编程(八)并发的UDP服务端 以进程完成功能
这段代码展示了如何使用多进程处理 UDP 客户端和服务端通信。客户端通过发送登录请求与服务端建立连接,并与服务端新建的子进程进行数据交换。服务端则负责接收请求,验证登录信息,并创建子进程处理客户端的具体请求。子进程会创建一个新的套接字与客户端通信,实现数据收发功能。此方案有效利用了多进程的优势,提高了系统的并发处理能力。
|
2月前
|
C语言
C语言 网络编程(九)并发的UDP服务端 以线程完成功能
这是一个基于UDP协议的客户端和服务端程序,其中服务端采用多线程并发处理客户端请求。客户端通过UDP向服务端发送登录请求,并根据登录结果与服务端的新子线程进行后续交互。服务端在主线程中接收客户端请求并创建新线程处理登录验证及后续通信,子线程创建新的套接字并与客户端进行数据交换。该程序展示了如何利用线程和UDP实现简单的并发服务器架构。
下一篇
无影云桌面