0x00 前言

最近看到微博以及一些论坛谈论关于GSM Hacking的比较多,使用的是开源的程序 osmocombb 和摩托罗拉的手机 c118。我也凑凑热闹,找来相关资料进行学习,国内关于这方面的资料的确太少了,大都是一些编译 osmocombb 的资料,而没有更深入的学习资料,比如如何进行 GSM SMS 的 Sniffer,估计是在我大宋朝这个太敏感了吧。

不过最近在 http://www.hacklook.com/ 却有不少相关的资料可以参考学习,在次对作者表示感谢。

0x01 准备工具

对这方面学习所需要的工具倒不是很昂贵,下面罗列出需要的材料:

  1. 一台笔记本或者一台虚拟机
  2. C118 手机一台
  3. FT232RL、CP2102、PL2303 USB2TTL 模块一个
  4. 2.5mm 耳机插头带线一根

C118 手机淘宝 25 元左右一台,为了避免广告这里不给出链接了。USB2TTL模块我这里用的是PL2303,我看有的文章说这个不行,但是我这里没问题,2.5mm的耳机线买的是那种两头都是插头的,中间剪开然后接上杜邦头就可以和USB2TTL进行连接了。以上成本加起来30元左右。 下面是全家福

C118 手机一台,FT232RL、CP2102、PL2303 USB2TTL 模块一个,2.5mm 耳机插头带线一根

0x02 编译环境

PC端环境我使用的是虚拟机,操作系统安装Kali Linux操作系统,由于Kali系统中已经有PL2303的驱动,so太方便了。Kali的安装就略过。下面进行osmocombb的编译:

安装需要的包

sudo apt-get install libtool shtool autoconf git-core pkg-config make gcc build-essential libgmp3-dev libmpfr-dev libx11-6 libx11-dev texinfo flex bison libncurses5 libncurses5-dbg libncurses5-dev libncursesw5 libncursesw5-dbg libncursesw5-dev zlibc zlib1g-dev libmpfr4 libmpc-dev  

然后建立交叉编译环境,主要参考下面文章:

http://bb.osmocom.org/trac/wiki/GnuArmToolchain

下载 osmocombb、libosmocore 源码

cd ~
git clone git://git.osmocom.org/osmocom-bb.git
git clone git://git.osmocom.org/libosmocore.git

编译 libosmocore

cd ~/libosmocore
autoreconf -i
./configure
make
sudo make install

然后切换 osmocombb 到下面的分支,并且编译

cd ~/osmocom-bb
git checkout --track origin/luca/gsmmap
cd src
make

0x03 测试

经过上面的编译过程,环境准备的差不多了,下面进行测试,首先确保一下步骤:

把 USB2TTL 模块插入到电脑上,再共享到虚拟机中

把带有 2.5mm 耳机插头的线一头接手机,另外一头链接 USB2TTL 模块

可以通过下面命令来查看是否正常:

lsmod | grep usb

我这边显示为:

usbserial              23960  1 pl2303

手机处于关机状态,运行如下命令:

cd ~/osmocom-bb/src/host/osmocon/
./osmocon -m c123xor -p /dev/ttyUSB0 ../../target/firmware/board/compal_e88/layer1.compalram.bin

这个时候短按手机开机键,在虚拟机中会看到如下输出:

got 1 bytes from modem, data looks like: 2f  /
got 1 bytes from modem, data looks like: 00  .
got 1 bytes from modem, data looks like: 1b  .
got 4 bytes from modem, data looks like: f6 02 00 41  ...A
got 1 bytes from modem, data looks like: 01  .
got 1 bytes from modem, data looks like: 40  @
Received PROMPT1 from phone, responding with CMD
read_file(../../target/firmware/board/compal_e88/layer1.compalram.bin): file_size=56016, hdr_len=4, dnload_len=56023
got 1 bytes from modem, data looks like: 1b  .
got 1 bytes from modem, data looks like: f6  .
got 1 bytes from modem, data looks like: 02  .
got 1 bytes from modem, data looks like: 00  .
got 1 bytes from modem, data looks like: 41  A
got 1 bytes from modem, data looks like: 02  .
got 1 bytes from modem, data looks like: 43  C
Received PROMPT2 from phone, starting download
handle_write(): 4096 bytes (4096/56023)
handle_write(): 4096 bytes (8192/56023)
handle_write(): 4096 bytes (12288/56023)
handle_write(): 4096 bytes (16384/56023)
handle_write(): 4096 bytes (20480/56023)
handle_write(): 4096 bytes (24576/56023)
handle_write(): 4096 bytes (28672/56023)
handle_write(): 4096 bytes (32768/56023)
handle_write(): 4096 bytes (36864/56023)
handle_write(): 4096 bytes (40960/56023)
handle_write(): 4096 bytes (45056/56023)
handle_write(): 4096 bytes (49152/56023)
handle_write(): 4096 bytes (53248/56023)
handle_write(): 2775 bytes (56023/56023)
handle_write(): finished
got 1 bytes from modem, data looks like: 1b  .
got 1 bytes from modem, data looks like: f6  .
got 1 bytes from modem, data looks like: 02  .
got 1 bytes from modem, data looks like: 00  .
got 1 bytes from modem, data looks like: 41  A
got 1 bytes from modem, data looks like: 03  .
got 1 bytes from modem, data looks like: 42  B
Received DOWNLOAD ACK from phone, your code is running now!
battery_compal_e88_init: starting up

然后在虚拟机中再起一个终端,执行如下命令进行基站扫描

cd ~/osmocom-bb/src/host/layer23/src/misc/
./cell_log

看到如下输出则说明扫描到可用的基站

ARFCN 117: tuning
ARFCN 117: got sync
Cell ID: 460_1_03EE_B130
<000e> cell_log.c:248 Cell: ARFCN=117 PWR=-62dB MCC=460 MNC=01 (China, China Unicom)

基站的绝对无线频道编号为 117,然后通过如下的命令进行抓包

cd ~/osmocom-bb/src/host/layer23/src/misc/
./ccch_scan -i 127.0.0.1 -a 117

同时开启 wireshark 抓包,

sudo wireshark -k -i lo -f 'port 4729'

然后在 wireshark 的 filter 中对 gsm_sms 的包进行过滤显示 下图为抓到的短信包:

在 wireshark 的 filter 中对 gsm_sms 的包进行过滤显示,图为抓到的短信包

0x04 最后

本文参考下面资料:

http://bb.osmocom.org/

https://srlabs.de/gsm-map-tutorial/

https://srlabs.de/gprs/

http://www.hacklook.com/forum.php?mod=viewthread&tid=12

http://www.hacklook.com/forum.php?mod=viewthread&tid=22

下面是部分注意事项

请注意 USB2TTL GND/TX/RX 的接线顺序

以及确认交叉编译环境正常工作

OVER!

[原文地址]

各种吐槽:

DM_ | 2013/11/01 08:48

我擦 好文

Creturn | 2013/11/01 09:55

昨天中午刚买了设备,晚上就有文章了。看来不少人对RadioWar 开始感兴趣了,不过这种技术确实有好几年了

Ocean | 2013/11/01 11:33

问心爱在哪里买的,可以私信发我不?3Q

Creturn | 2013/11/01 14:17

淘宝就能找到,我博客上有我联系方式,这里就不放了。貌似私信不会用~~ http://www.creturn.com

Ocean | 2013/11/02 13:41

已买到了,在研究ing,

iceks | 2013/11/01 11:03

老技术开新花,基础业务备受依赖,安全又是一个轮回。

est | 2013/11/01 11:06

我擦,这个思路好啊。。。代办各种业务???免费用别人的号?????????我日!!!!!!!!!

My5t3ry | 2013/11/01 12:18

碉堡了

╰╃清風 | 2013/11/01 12:28

学习ing

╰╃清風 | 2013/11/01 12:30

测试半径多少?

Micro Da | 2013/11/01 13:01

楼主好像没说完整啊...还有怎么刷firmware入手机....

只抽红梅 | 2013/11/03 22:07

说了。

这个时候短按手机开机键,在虚拟机中会看到如下输出:

这个就是刷固件。

liyang | 2013/11/01 13:11

FT232RL、CP2102、PL2303 USB2TTL 模块一个

这句话是不是说的这三个东西任意一个都行啊~~

只抽红梅 | 2013/11/03 22:07

对的

昵称 | 2013/11/02 18:43

牛逼啊

c2y2 | 2013/11/04 13:50

果断买个手机 洛基亚试哈

c2y2 | 2013/11/04 13:57

楼主 有没有接线的 学习资料呢

Micro Da | 2013/11/04 14:52

问下楼主 是不是ARFCN=117 PWR=-62dB MCC=460 基站信息中包含PWR才能嗅探到? 我这扫的基站中没看到有PWR=-62dB

只抽红梅 | 2013/11/05 14:51

PWR 这个代表信号强度,如果没有应该是没扫描到基站。

小胖子 | 2013/11/04 16:02

这个牛逼了!

z7y | 2013/11/05 14:36

可以来的更详细点吗。亲

TellYouThat | 2013/11/06 11:20

能任意账号发短信么?

TellYouThat | 2013/11/06 11:47

LZ给个手机和模块的淘宝链接吧

只抽红梅 | 2013/11/06 17:21

淘宝搜好多呢。

z7y | 2013/11/07 20:31

杜邦头那个怎么接线= =##

Jason | 2013/11/06 16:37

非常棒的文章,采购设备学习之。

0x_Jin | 2013/11/09 17:44

我次奥 碉堡 求再详细一点 自己如何动手做设备

Jason | 2013/11/11 15:47

@只抽红梅 我也装了kali可是apt-get install时候好多包都找不到,请问下你用的是什么源?能否把/etc/apt/sources.list内容发一下

留言评论(旧系统):

低调小白 @ 2013-11-23 17:37:56

这真的可以实现监听到数据吗。有谁成功了吗 ?为什么的我用r820t 只有gsmtop数据包 - -。

本站回复:

操作正确的话,应该是可以的。

佚名 @ 2013-11-27 15:44:59

gsm hacking 新手和osmocombb 新手请加QQ群323209495

本站回复:

╮(╯_╰)╭

佚名 @ 2014-12-18 22:29:35

早上在朋友电脑上编译好了环境,刷了C118固件,然后扫了基站,一切正常。 下午回家下了VM VirtualBox,装了Ubuntu,编译好环境后应该怎么操作|? *我下午编译好环境后又刷C118固件,手机上显示正常,电脑上不正常 Power up simcard: THIS FIRMWARE WAS COMPILED WITHOUT TX SUPPORT!!! Assert DSP into Reset Releasing DSP from Reset Installing DSP sniff patch Setting some dsp_api.ndb values Setting API NDB parameters DSP Download Status: 0x0001 DSP API Version: 0x0000 0x0000 Finishing download phase DSP Download Status: 0x0002 DSP API Version: 0x3606 0x0000 LOST 1586! 该怎么操作?

本站回复:

不清楚,建议百度一下……