GSM sniffer实践报告

一、声明
这东西在国内挺敏感,国外已经玩了两三年了,国内现在才开始火起来,总之一句话,本报告只做研究用,勿做非法用途,违者自负!
二、OsmocomBB简介
OsmocomBBGSM协议栈(Protocols stack)的开源实现,全称是Open source mobile communication Baseband.目的是要实现手机端从物理层(layer1)layer3的三层实现。但是目前来看,真正的物理层(physical layer)并没有真正的开源实现,暂时也没看到实施计划。只有物理层控制。因为真正的物理层是运行在baseband processorDSP core,涉及到许多信号处理算法的实现,而且还要牵扯很多硬件RF的东西。
OsmocomBB项目始于2010年,到目前,还没有实时操作系统支持,没有GPRS的实现,以及移动管理(Mobility Management)的实现,所以还需很多志愿者的加入。
至目前为止,最廉价的监听设备只要几十块钱,比如这次实验我们使用的摩托罗拉C118,所需要的技能只是懂英语,会编译Linux程序,到目前为止,技术已经相当成熟,并且有开源实现。已知已经有人可以通过此类技术实验短信嗅探,通话监听,GPRS流量监控,实时位置监控,信号干扰等。危害还是相当大的,现在网上已经有相当成熟的短信嗅探教程,其他方面的技术则基本都藏着掖着,想要研究得靠自己上国外网站学习。

三、前期准备
想要进行OsmocomBB的实验,首先得买入相关的硬件,以个人为例,先到淘宝店        
http://item.taobao.com/item.htm?id=35569340806 购买摩托罗拉 C118


 
然后到radiowar的淘宝店买入相关的配件
http://meal.taobao.com/mealDetail.htm?spm=2013.1.1000371.d9.oqhSSm&meal_id=88452519&item_num_id=35107847811&seller_id=817724908


    
买到设备后,这里有些地方需要注意下,首先是线的接法,
GND = TX= RX=白,接完后如下图所示


这里有个小地方要注意下,就是TX=红这里最好反面接(注意图中的细节),根据实验过程中的经验,这样接的话在给手机写入固件时成功率更高。接下来需要对数据线的接口进行裁剪,不然会出现接触不良的现象(血泪史!!!)。

接下来只需要把数据线接到摩托罗拉的音频接口,USB口接到计算机的USB口就可以了。当接上计算机USB口时,蓝灯会亮一下,橙色灯常亮时,说明成功了。
  

 
四、OsmocomBB安装过程
我这里的实验环境是:
VMware8.0+Ubuntu12.0432位)
Ubuntul12.04下载地址:
http://120.198.238.81/down2.chinaunix.net/57165595ee21902bcb5cc9d2751e1bdc/disc/ubuntu/12.04/ubuntu-12.04-desktop-i386.iso

安装完Ubuntul12.04后,在命令行里输入
$ sudo passwd root
更改root用户的密码,如何重启系统以root用户登录系统
接下来是安装编译osmocomBB所需的软件包:
# aptitude install libtool shtool autoconf git-core pkg-config make gcc
安装GnuARM ToolChain
wget http://gnuarm.com/bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.tar.bz2
# tar xf bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.tar.bz2
# mv gnuarm-* ~/gnuar
   
设置环境变量
# export PATH=~/gnuarm/bin:$PATH
编译libosmocore
# git clone git://git.osmocom.org/libosmocore.git
cd libosmocore/ 
autoreconf -i  
./configure  
make  
make install  
cd .. 
ldconfig
编译OsmocomBB
git clone git://git.osmocom.org/osmocom-bb.git
cd osmocom-bb
git checkout --track origin/luca/gsmmap
cd src
make
 
安装过程大家可以参考以下几个网站:
http://www.creturn.com/radiowar-osmocombb-sms-sniffer
http://wiki.radiowar.org/OsmocomBBInstallation
http://wulujia.com/2013/11/10/OsmocomBB-Guide/

五、开始实验  
接下来先将计算机的USB接口分配给虚拟机,过程如图所示。
     
 

USB接入虚拟机后,接下来我们写入固件到手机中,这里需要说明的一点,很多人说是刷入固件,导致很多人误认为是刷机,其实只是把
固件加载到手机raw中执行而已,所以也不要担心输入固件后手机就不能用了。   
输入命令
#cd ~/osmocom-bb/src/host/osmocon/
#./osmocon -m c123xor –p /dev/ttyUSB0 ../../target/firmware/board/compal_e88/layer1.compalram.bin

   
运行命令后,轻按手机的红色开机键,只需点亮机器而不需要进入手机的系统!!!当出现如图所示的内容时,表示成功


当成功写入时,手机屏幕会显示:
 
Layer 1
Osmocom bb
这样的字样
接下来再开一个窗口,输入一下命令扫描附近的基站:
~/osmocom-bb/src/host/layer23/src/misc/cell_log 


这里简单说一下返回的结果,这次扫描一共扫描到一个联通的基站,看括号里的“(chinachina Unicom)”就知道,然后是ARFCN这个参数,这个参数是表示信道的意思,这个后用得到,需记下来。PWR这个值表示的是信号的强弱,PWR的值如果小于-100,基本上就可以认为是无信号了。
接下来我们再开一个窗口开始扫描一个基站,嗅探短信信息,例如扫描709
~/osmocom-bb/src/host/layer23/src/misc/ccch_scan -i 127.0.0.1 -a 709
在正式运行这条命令前,我们先输入以下命令把扫描基站的数据包保存在本地:
dumpcap -i lo -w ~/sniffer.log


当然你也可以打开wireshare实时监控相关信息:
wireshark -k -i lo -f 'port 4729'
OK,我们开始嗅探


当出现蓝色时,表示嗅探成功,手机已经在嗅探基站的数据包了,如果出现如下图红色的情况,则说明周围信号不好,也就是我们前面所说的PWR的值如果小于-100的情况,这时程序将无法与基站进行同步,会崩掉,重新开始就好了,如果还不行,就换个信号好的地方。


六、查看数据包
wireshark打开sniffer.log

可以看到里面有很多的数据包,我们需要对其进行过滤。在过滤那里输入gsm_sms,点应用就可以了。




最后提一下,理论上八台手机就可以嗅探到附近所有基站的通信,包括发送和接收短信,网上有人试过,当然穷学生就玩不起这么高端的了,以后有机会再研究。