什么是OsmocomBB
OsmocomBB:在手机是上跑你自己的GSM栈
Harald Welte and Steve Markgraf
http://bb.osmocom.org/
27th CCC Congress, December 2010, Berlin/Germany
(所有情况特指2010年的时候。)
GSM/3G Network Security Introduction
Security Problems and the Baseband
OsmocomBB Project
Summary
GSM/3G protocol security
观察
l GSM / 3G和TCP / IP协议规范都是公开的
l 互联网协议栈(以太网/ Wifi / TCP / IP)被大量研究分析
l GSM网络被当作因特网广泛部署
l 然而,GSM / 3G协议没有被这样“审查”过!
有以下原因:
l GSM行业是非常封闭(and closed-minded)
l 只有大约4个封闭源协议栈实现GSM芯片组制造商,但他们没有公布任何任何硬件文档
The closed GSM industry:Handset manufacturing side
l 只有极少数公司今天构建GSM / 3.5G基带芯片。
n 这些公司从第三方购买操作系统内核和协议栈。
l 只有极少数手机厂商都大到足以成为客户。
n 即使这样他们也只能获得有限的硬件文档
n 即使这样他们也不能真正访问固件源
The closed GSM industry:Network manufacturing side
l 只有极少数公司建立GSM网络设备。
n 主要只有爱立信,诺基亚西门子,阿尔卡特朗讯和华为。
n 例外:小型设备制造商用于微微蜂窝/毫微小区/毫微微蜂窝/测量设备和执法设备。
l 只有操作者从他们那里购买设备。
l 由于数量少,价格非常高。
n 例如: 对于BTS,随便就要10-40k欧元
The closed GSM industry:Operator side
l 运营商今天主要是银行
n 典型的运营商外包
n 帐单
l 网络规划/部署/服务
l 操作员只知道制造商提供的封闭设备
l 在运营商中很少有人了解该协议,对超出协议之外的东西一无所知
The closed GSM industry:Security implications
封闭GSM行业的安全隐患:
l 几乎没有人拥有协议栈或GSM网络设备制造商的详细技术知识
l 没有关于协议级安全性的独立研究
n 如果有安全研究,那么只有理论上(如A5 / 2和A5 / 1密码分析)
n 或在应用程序级(例如移动恶意软件)
l 没有开源协议实现
n 这是使更多的人了解协议的关键
n 其通过修改现有代码来实现快速原型设计/测试
Security analysis of GSM:How would you get started?
如果你是从GSM协议级安全分析开始,你将从里并且如何开始呢?
l 从网络方面?
n 困难,因为设备不容易获得,通常非常昂贵
n 然而,网络是非常模块化的并且具有许多标准化/文档化的接口
n 因此,如果设备可用,更容易/更快的进展
n 已在2008/2009年完成:OpenBSC项目
l 从手机端?
l 困难,因为GSM固件和协议栈是封闭和专有的
l 即使你想编写自己的协议栈,第1层硬件和信号处理的部分也是闭源的,并且也没有文档
l 已知的尝试
l TSM30项目作为THC GSM项目的一部分
l mados,诺基亚DTC3手机的替代操作系统
l 没有一个项目成功了
Security analysis of GSM The bootstrapping process
l 日夜阅读GSM规范(> 1000 PDF文档)逐渐增加关于协议的知识
l 获取实际的GSM网络设备(BTS,MS测试仪...)
l 尝试获取实际协议流程作为示例
l 从头开始一个完整的协议栈实现
l 最后,去玩GSM协议安全
The GSM network Source: Wikipedia, User Tsaitgaist, Licensed under GPLv3
GSM network components
l BSS(基站子系统)
n MS(移动站):你的手机
n BTS(基站收发台):小区塔
n BSC(基站控制器):控制多达数百个BTS
l NSS(网络子系统)
n MSC(移动交换中心):中央交换机
n HLR(归属位置寄存器):用户数据库AUC(认证中心):认证密钥的数据库
n VLR(访问位置寄存器):用于漫游用户
n EIR(设备识别寄存器):阻止被盗的手机
GSM network interfaces
l Um:MS和BTS之间的接口
n 无线电唯一使用的接口
l bis:BTS和BSC之间的接口
l A:BSC和MSC之间的接口
l B:MSC和其他MSC之间的接口
GSM网络是非对称分布式网络的主要示例,与端到端透明IP网络非常不同。
GSM network protocols:On the Um interface
l 层1:无线电层,TS 04.04
l 层2:LAPDm,TS 04.06
l 层3:无线电资源,移动性管理,呼叫控制:TS 04.08
l 第4层:用于USSD,SMS,LCS ...
Known GSM security problems:Scientific papers, etc
l 电话和网络之间无相互验证
n 导致流氓网络攻击
n 导致中间人攻击
n 是什么使IMSI捕手
l 弱加密算法
l 加密是可选的,用户永远不知道它是否启用
l 通过RACH信道的request flooding的DoS攻击
l RRLP(无线资源定位协议)
n 网络可以从电话获得GPS定位甚至原始GSM数据
n 无法验证网络的可靠性
Known GSM security problems:The Baseband side
l GSM协议栈始终运行在基带处理器(BP)
l 什么是基带处理器
n 通常ARM7(2G / 2.5G手机)或ARM9(3G / 3.5G手机)
u 运行一些RTOS(通常是Nucleus,有时L4)
u 任务之间没有内存保护
n 某种DSP,型号取决于供应商
u 对RF层1执行数字信号处理
u 有用于A5加密的硬件外设
l 基带处理器上的软件堆栈
n 是用C和汇编写的
n 缺少任何现代安全功能(堆栈保护,不可执行的页面,地址空间随机化,..)
A GSM Baseband Chipset
http://laforge.gnumonks.org/papers/gsm_phone-anatomy-latest.pdf
Requirements for GSM security analysis
我们进行协议级安全分析需要什么?
l 一个我们控制下的GSM MS侧基带芯片组
l 一个Layer1,我们可以使用它来生成任意L1层的帧
l 一个Layer2协议层实现,我们可以使用+修改的
l 一个Layer3协议层实现,我们可以使用+修改
这些组件没有现成的,所以我们需要创建它们!
A GSM baseband under our control
两种不同的DIY方法
l 使用通用组件(DSP,CPU,ADC,FPGA)
n 无需逆向工程
n 在硬件设计和调试上需要花费大量的工作
n 可用的硬件很少,因此昂贵
l 使用现有的基带芯片组
n 需要逆向工程或泄漏的文件
n “层0”上的工作量较少
n 仍然,定制的硬件也很少
另类“偷懒”的方法
l 重新使用现有的手机
n 硬件是已知可正常工作
n 没有原型,硬件版本等。
n 需要逆向工程
n 需要写入硬件驱动程序
n 但是:更多的时间专注于实际工作:协议软件
l 搜索合适的手机
n 尽可能便宜
n 随时可用:许多人可以玩它
n 老旧/简单尽可能保持复杂性低
n 带有大量泄漏信息的基带芯片组
Baseband chips with leaked information
l 德州仪器Calypso
n 在cryptome.org和其他网站的DBB文件
n 在中国手机开发者网站的ABB文档
n 在sf.net(tsm30项目)上的GSM栈/驱动程序源代码
n 自从2008年以来,没有新的Calypso手机
n 引导加载程序中没有加密检查
l Mediatek MT622x芯片组
n 中国网站上的许多文档
n 在中国网站上有且只有GSM堆栈库的二进制SDK库
n 9500万在2010年第一季度生产/销售
初始选择:TI Calypso(可用的GSM堆栈源)
OsmocomBB Introduction
l 项目在2010年1月开始(9个月前,当时!)
l 从头开始实现GSM基带软件
l 这包括
n GSM MS侧从第1层到第3层的协议栈
n 用于GSM基带芯片组的硬件驱动程序
n 手机上简单的用户界面
n PC上详细的用户界面
l 项目名称的标注
n Osmocom =开源移动通信
n BB =基带
OsmocomBB Software Architecture
l 尽可能从OpenBSC重用代码(libosmocore)
n 我们为手机固件和PC创建libosmocore
l 最初在手机中运行一些软件
n 在PC上调试代码很容易
n 拥有更多的屏幕
n 硬件驱动程序和Layer1运行在手机上,Layer2,3和手机应用程序/ MMI运行在PC上
n 之后,L2和L3被移动到手机端
OsmocomBB Software Interfaces
l Layer1和Layer2之间的接口称为L1CTL
n 完全自定义协议,因为没有标准
n 在Sercomm / HDLC / RS232上实现基于消息的协议
l Layer2和Layer3之间的接口称为RSLms
n 在GSM网络中,Um层2终止于BTS但由BSC控制
n 重复使用GSM 08.58无线电信令链路
n 需要的时候扩展MS
OsmocomBB Target Firmware
l 固件包括的一些软件
n Ti Calypso数字基带(DBB)
n TI Iota TWL3025模拟基带(ABB)驱动器,适用于Ti Rita TRF6151 RF收发器
n 多个手机的LCD / LCM驱动器
n 用于NOR闪存的CFI闪存驱动程序
n GSM Layer1同步/异步部分Sercomm - 基于HDLC的多路复用器,用于RS232到主机PC
OsmocomBB Host Software
l 前工作名称:layer23
l 包括
n 层1控制(L1CTL)协议API
n GSM层2实现(LAPDm)
n GSM层3实现(RR / MM / CC)GSM小区(重)选择
n SIM卡模拟
n 根据用途支持各种“应用程序”
OsmocomBB Supported Hardware
l 基带芯片组
n TI Calypso / Iota / Rita
n 一些早期研究正在Mediatek(MTK)MT622x上进行
l 实际手机
n Compal / Motorola C11x,C12x,C13x,C14x和C15x型号
n 大多数开发/测试在C123和C155
n GSM调制解调器部分Openmoko Neo1973和Freerunner
l 所有这些手机都是基于ARM7TDMI的DBB构建的简单功能手机
The Motorola/Compal C123
OsmocomBB Project Status: Working
l Calypso / Iota / Rita的硬件驱动程序非常完整
l 音频/语音信号路径的驱动程序
l 层1
n 功率测量
n 载波/比特/ TDMA同步
n 在SDCCH上接收和发送正常突发
n 发送RACH突发
n 自动Rx增益控制(AGC)
n 跳频
l Layer2 UI / SABM / UA帧和ABM模式
l RR / MM / CC的Layer3消息
l 根据GSM 03.22的小区(重新)选择
OsmocomBB Project Status: Working (2/2)
OsmocomBB现在可以做GSM语音电话(08/2010)
l 很早就分配+后期分配
l A3 / A8 SIM的验证
l A5 / 1 + A5 / 2加密
l 全速率(FR)和增强型全速率(EFR)编解码器
OsmocomBB Project Status: Not working
l 层1
n 相邻小区测量
n 通话中切换到其他单元格
l 电话上的实际UI
l 电路交换数据(CSD)呼叫
l GPRS(分组数据)
l 没有类型批准的堆栈!
OsmocomBB Project Status: Executive Summary
l 可以在跳频和非跳跃GSM小区的上链接控制/信令信道
n 控制合成意味着可以到GSM-R频段
l 可以在这些控制通道上发送任意数据
n RR消息到BSC
n MM / CC消息到MSC
n SMS消息到MSC / SMSC
l TCH(话务信道)支持语音呼叫
n Dieter Spaar和Andreas Eversberg使用当前主分支(master branch)进行了多次20分钟通话
n 有些人已经尝试在真实网络上的alpha code进行长达30分钟通话!
The mobile app
l 手机实现的功能
n 小区(重)选择,移动性管理
n 语音呼叫(仅全速率)
n 短信
l 包括移动发起和移动终止的呼叫工作
l VTY(telnet)接口来配置和调用控制
l 可选接口到linux呼叫路由器PBX
cell_log
cell_log应用程序
l 扫描和记录应用程序的单元信标信息
l 向所有小区发送RACH以获得定时提前(距离)
l 记录找到小区的GPS位置
gsmmap
gsmmap应用程序
l 解析由cell_log生成的日志
l 使用三角测量来计算估计的小区位置
l 导出Google地图的.kml文件
bcch_scan
bcch_scan应用程序
l 遍历全频谱上,并进行功率扫描
l 按照接收信号强度的顺序输出ARFCN
l 获取BCCH并将所有SYSTEM INFO转储到wireshark
cbch_sniff
cbch_sniff应用程序
l 转储小区广播消息的Wireshark
l 一些运营商小区的GPS定位
还有一些更多的应用程序,主要是研发相关。
期待您的贡献,例如。 scapy模糊网关应用程序。
Summary:What we have learned
l 在GSM行业使安全分析非常困难
l 众所周知,GSM栈的安全级别非常低
l 我们现在有多种方法用于发送任意协议数据
n 从流氓网络到手机(OpenBSC,OpenBTS)
n 从A-bis代理到网络或电话
n 从定制的GSM手机基带固件到网络
TODO:Where we go from here
l 对移动网络进行模糊测试的基本工具
l 没有从OsmocomBB到scapy的好接口/集成
l 由安全社区使用这些工具(!)
l 不要你也认为TCP / IP安全是无聊的
l 加入GSM协议安全研究项目
l 大胆地去哪里没有人去过
Thanks
我要表示感谢
l OsmocomBB开发团队,最引人注目
n Dieter Spaar(对这个项目的无价奉献!)
n Andreas Eversberg(第3层,小区选择等)
n Sylvain Munaut(layer1,dsp,misc)
l 其他开发者对开源GSM的贡献
n g3gg0(MADos)
n David Burgess,Harvind Simra(OpenBTS)
n Holger Freyther(OpenBSC)
Further Reading
l http://laforge.gnumonks.org/papers/gsm_phone-anatomy-latest.pdf
l http://openbsc.gnumonks.org/
l http://openbts.sourceforge.net/