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://bb.osmocom.org/

l   http://openbsc.gnumonks.org/

l   http://openbts.sourceforge.net/

l   http://airprobe.org/

转载于:https://www.cnblogs.com/ddvv/articles/6125362.html

什么是OsmocomBB相关推荐

  1. Osmocom-BB 相关资源、知识分享

    Osmocom-BB 相关资源.知识分享 1.在layer1层添加了解析sniffer的代码 参考http://git.osmocom.org/osmocom-bb/log/?h=luca/gsmma ...

  2. Osmocom-bb系统编译

    Ubuntu 12.04.5 LTS i386环境下编译 sudu su --------------------------------------------------------------- ...

  3. OsmocomBB SMS Sniffer

    绿盟科技 · 2016/01/07 11:09 Author:绿盟科技博客 0x00 简介 OsmocomBB(Open source mobile communication Baseband)是国 ...

  4. Kali LInux 下Osmocom-BB开源项目

    转载至i0ject文章,源地址http://www.cnblogs.com/i0ject/p/3788249.html 本机环境:Kali(amd64),CP2102, 做一个不坑爹的人,配置环境处女 ...

  5. osmocom-bb 国外的一个开源项目, c118

    最近在学习无线安全方面的知识,了解到了  OsmocomB , 拿来研究下 . 以下知识,仅用作研究探讨,请勿用作非法用途  !!!! 理论:   osmocom-bb 国外的一个开源项目, 针对 G ...

  6. 制作一个老旧C118的GSM便携式测试设备

    对于OsmocomBB也是被国内外大神玩得不亦乐乎.什么重定向攻击,中间人攻击.都是N年前的东西咯.当然鄙人不会这些.对于地下市场无非就是获取对方短信,大则支付宝.某日翻了翻"咸" ...

  7. 伪基站识别技巧(一)

    不知道为什么,感觉伪基站又有些卷土重来的趋势,不想废话,先分享几个伪基站识别技巧,供拍砖交流. 0×01 了解伪基站 前几年协助某些部门做过伪基站的电子取证分析,在对批量伪基站设备和软件平台的分析时, ...

  8. RadioWar_RFID_LiveCD_Alpha330

    RadioWar LiveCD 什么是RadioWar LiveCD RadioWar LiveCD是RadioWar所制作的一个开源RFID安全检测的直接引导光盘,该光盘使用的是ubuntu 10. ...

  9. GSM Sniffing入门之硬件篇

    3个月前,听朋友介绍得知OsmocomBB项目.此前一直以为GSM Sniffing需要价格昂贵的专用设备,但osmocomBB的上手成本:一个25元左右的手机,外加一根USB转TTL的串口线,着实让 ...

最新文章

  1. five months plan
  2. Java学习笔记50:JSONObject与JSONArray的使用
  3. channelsftp的put_JSch - Java实现的SFTP(文件上传详解篇)
  4. 在Ubuntu上搭建TensorFlow
  5. 分类预测 | MATLAB实现ELM极限学习机多特征分类预测
  6. x264代码剖析笔记
  7. 五子棋c语言编程软件,C语言实现五子棋游戏
  8. 屏幕录像专家使用手册
  9. python语言实例-Python代码样例列表
  10. 微信订阅通知开发 (小白教程)微擎
  11. 旅行青蛙服务器维护时间,旅行青蛙怎么调节时间 旅行青蛙修改时间攻略
  12. 我国知识共享数学生态圈的发端历程
  13. C语言——数组定义及用法
  14. 石头扫地机器人遇见地毯_当戴森V8遇上石头扫地机器人,彻底拯救懒癌患者
  15. 白话空间统计之:空间异质性
  16. java获取环境变量路径/java获取环境变量和系统属性
  17. git版本回退及代码合并
  18. java递归20元买汽水,瓶盖递归 1块钱买一瓶水,三个瓶盖是换一瓶汽水,问20块钱能买 多少瓶汽水(不能借)...
  19. ubuntu16安装中文输入法
  20. 用excel读取东京奥运会的金牌排行榜信息

热门文章

  1. [imx6 VPU]硬解码+示例[ffmpeg获取海康rtsp h264流 QT显示]
  2. javaweb(基础二)
  3. 解决 java double 减 int 型 产生的精度问题
  4. MAC通过ZOC远程访问Linux
  5. ValueError:Traceback(most ...)数据集中图片 not exists
  6. 美团餐饮SaaS基于StarRocks构建商家数据中台的探索
  7. 【固定定位和绝对定位】
  8. 微信招聘小程序涵盖教程
  9. python培训班一般多少钱-Python培训班多少钱
  10. Win10关闭自动调节亮度问题