使用C118手机进行GSM/SMS嗅探实验

⚠警告⚠声明
仅供学习交流!严禁将此技术用于非法途径!违者后果自负!PS:为了避免相关情况发生,本文不进行教程支援及问题解答

这技术很早以前就有了,记得当时还可以用OpenBTS进行短信发送。。。

写出来第一个目的是为了看看还能不能嗅探到短信,其次是重温下 GSM 网络的相关知识,温故而知新嘛,不喜勿喷,如有错误还请指出。

### 初探GSM

GSM网络即全球移动通信系统,GSM是一个蜂窝网络,每个网格都有自己的覆盖范围

GSM基本系统构成:OSS(操作维护子系统)、BSS(基站子系统)、NSS(网络子系统),每个子系统还都划分了不同的服务,如:ISDN、PDN、PSTN、DPPS等等,一个个的写太麻烦了,这里简单阐述下就好,想要深入了解的可以找我要PDF文档自己研究。

相关资料补充:
  • SIM(用户识别模块)
这是一张符号 ISO 标准的卡,就是你手机里边的那张,它包含所有与用户有关的和某些无线接口的信息,使用移动台时都需要插入SIM 卡,当紧急呼叫时可以不使用SIM操作ME(移动台)
  • BTS(基站收发信台)和BSC(基站控制器)
BTS属于BSS(基站子系统)的无线部分,由BSC(基站控制器)进行控制,一般服务于某个小区的收发信设备,完成BSC与无线信道之间的交换。
  • MSC(移动业务交换中心)

MSC是一个控制多个BSC的节点。它是GSM系统中的核心设备,具有多种功能。

  • HLR(归属用户位置寄存器)和VLR(用户位置寄存器)
VLR服务于控制区域内移动用户的,存储着进入控制区内域内已登记的移动用户相关信息,为已接入的用户提供呼叫必要条件
HLR是GSM的中央数据库,存储着该HLR控制的所有移动用户的相关数据,一个HLR可以控制若干个移动交换区所有移动用户重要的静态数据都存储在 HLR 中,包括移动用户识别号码、访问能力、用户类别和补充业务等等数据
  • EIR(移动设备识别寄存器)
EIR存储着移动设备的IMEI识别码,通过检查白色清单、黑色清单或灰色清单这三种表格,在表格中分别列出了准许使用的、出现故障需监视的、失窃不准使用的IMEI识别码
  • AuC(鉴权中心)
AUC主要负责安全措施,对无线上的语音数据和信号信息进行保密
有关GSM安全算法(A5…)可以自行谷歌,本文不再赘述
那么说回来,不法分子是如何知道我们的短信信息呢?这个很简单,我们的手机都处在一个大的基站辐射范围内(3G/4G)这就好比基站是谷仓,而手机是一粒粒的米粒,米粒通过电饭锅煮熟,基站负责(收发)每一粒米粒喷发出来的香味(信号)而不法分子使用降频工具手机会降级到2G进行通信,这个时候GSM嗅探工具就可以嗅探到我们的SMS信息了。

### Pre

硬件:

  1. Moto C118 (某鱼十几)
  2. USB转TTL 2.5mm线 (一瓶饮料的价格)
  3. CP2102模块 (一瓶饮料的价格)

软件:

  1. osmocom-bb(https://osmocom.org/projects/baseband
有关 osmocom-bb 项目,这是一个开源GSM协议的项目,目的是要实现手机端从物理层layer1到layer3的三层实现。
  1. OpenBTS-5
  2. GNU

### Build

首先更新下系统的环境(笔者这里的系统是Kali),自行换源更新,接下来安装对应依赖,以防后面编译GNU时出现错误。

apt-get install 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
aptitude install libtool shtool automake autoconf git-core pkg-config make gcc

安装完了后,找个目录新建一个文件夹,接着下载编译时要用到的 shell 脚本

http://bb.osmocom.org/trac/raw-attachment/wiki/GnuArmToolchain/gnu-arm-build.3.sh

官网貌似502了,我把shell脚本放在了我的 Github 上,需要的可以自行 Fork。

https://github.com/icecliffs/backup/tree/main/gnu-environment-shell

新建几个文件夹 install src build

进到 src 里边把下面的文件下载到里边

wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
wget http://ftp.gnu.org/gnu/binutils/binutils-2.21.1a.tar.bz2
wget ftp://sources.redhat.com/pub/newlib/newlib-1.19.0.tar.gz

接下来回到上级目录给gnu-arm-build.3.sh 赋予执行权限,然后 ./gnu-arm-build.3.sh 

$ cd ..
$ ./gnu-arm-build.3.sh 
I will build an arm-none-eabi cross-compiler:

  Prefix: <YOURPATH>/install
  Sources: <YOURPATH>/src
  Build files: <YOURPATH>/build

Press ^C now if you do NOT want to do this.

输入 Enter 键,开始编译环境,时间有点久跳出下面的代码即表示搭建成功!

Build complete! Add <YOURPATH>/bin to your PATH to make arm-none-eabi-gcc and friends
accessible directly.

这时候我们还需添加环境变量,打开 ~/.bashrc 在末尾添加以下内容

export PATH=$PATH:<YOURPATH>/install/bin

以上是构建 GNU 的过程,接下来开始搭建 osmocom-bb 环境,克隆仓库到本地目录

git clone git://git.osmocom.org/osmocom-bb.git

搭建前我们还需要安装一个 osmocom-bb 的 libosmocore 库,先把相关依赖安装下

apt-get install build-essential libtool shtool autoconf automake git-core pkg-config make g
克隆仓库到本地目录
git clone git://git.osmocom.org/libosmocore.git
开始编译 libosmocore
cd libosmocore
autoreconf -i
./configure
make 
make install
cd ..
ldconfig

接着切换到 osmocom-bb/src 目录里面,make 即可。

上文的安装步骤非常精简,因为我已经安装过了,所以大多数步骤都是凭记忆写的,想看详细版的可以自行谷歌

如果编译时遇到下图,多半是权限不足或未安装相关函数库导致的,可根据报错内容自行安装软件包

也有可能是丢失下面的包,安装即可(仅作参考

### Attack

将手机接上 2.5mm 杜邦线,然后刷入固件,注意接线顺序

->TXD;->RXD;黑->GND

进到 osmocom-bb/src/host/ 里输入以下命令,手机需关机,命令执行后按下电源键开始刷入固件。

./osmocon -p /dev/ttyUSB0 -m [固件类型] \
../../target/firmware/board/compal_e88/[二进制文件]

刷完后手机屏幕会出现 Layer23 (我把屏幕拆了,不然还可以让你们看 lol)

按手机上的按钮终端会显示相关信息

接下来扫描附近的基站

./cell_log -O

PS:我们这2G服务基本上都没了,到后面学习 OpenBTS 发信技术后我会在原有基础上重新写一篇,如果有2G信号的话会显示信号(PWR)像这样

<000e> cell_log.c:248 Cell: ARFCN=58 PWR=-23dB MCC=460 MNC=01 (China, China Unicom)
Cell ID: 460_1_378E_2DE6
<000e> cell_log.c:248 Cell: ARFCN=59 PWR=-62dB MCC=460 MNC=01 (China, China Unicom)
Cell ID: 460_0_372C_C7D1
<000e> cell_log.c:248 Cell: ARFCN=77 PWR=-34dB MCC=460 MNC=00 (China, China Mobile)
Cell ID: 460_0_3926_0759
<000e> cell_log.c:248 Cell: ARFCN=85 PWR=-24dB MCC=460 MNC=00 (China, China Mobile)
Cell ID: 460_1_378E_2F78
<000e> cell_log.c:248 Cell: ARFCN=68 PWR=-32dB MCC=460 MNC=01 (China, China Unicom)
Cell ID: 460_1_378E_2DE4
<000e> cell_log.c:248 Cell: ARFCN=69 PWR=-12dB MCC=460 MNC=01 (China, China Unicom)

其中PWR为信号强度,值越小说明信号越好,ARFCN为基站信道号

./ccch_scan -i 127.0.0.1 -a [ARFCN]

执行后如果一直滚代码说明能正常嗅探到基站数据

有关 GSM 频段,可参考下面的图表

频段 名称 信道号 上行(MHz) 下行(MHz) 其他
GSM 850 GSM 850 128 – 251 824,0 – 849,0 869,0 – 894,0 美国, 南美洲国家 和 亚洲部分国家。
GSM 900 P-GSM 900 1-124 890,0 – 915,0 935,0 – 960,0 GSM最先实现的频段,也是使用最广的频段。
E-GSM 900 975 – 1023 880,0 – 890,0 925,0 – 935,0 900M扩展频段
R-GSM 900 n/a 876,0 – 880,0 921,0 – 925,0 铁路GSM(GSM-R),为铁路调度通信系统开发的特殊版本。
GSM1800 GSM 1800 512 – 885 1710,0 – 1785,0 1805,0 – 1880,0 适用于对信道容量需求大的市场,应用范围仅次于900M。
GSM1900 GSM 1900 512 – 810 1850,0 – 1910,0 1930,0 – 1990,0 主要用于美洲国家,由于有频率重叠,与1800M系统不兼容。

来源于 http://www.blogjava.net/baicker/archive/2013/11/13/406293.html

接下来打开 Wireshark 嗅探即可,选择协议 gsm_sms

上文已经说了,我们这三网2G基本上都停止服务了,所以得跑到有2G网络的地方

### Extension

为了更方便的识别数据,减少上面的步骤,GSMSniffer项目对2G网络短信嗅探抓取的一个Demo实现自动载入系统/扫描基站与抓取短信并存入数据库

基本架构

  • Tengine
  • PHP 7.3
  • MySQL

上面三个服务都省略搭建步骤,把项目克隆下来后直接修改文件运行即可

### Defence

手机开4G/5G Only,没开的话可以搜索手机工程代码进入到里边自己打开,换服务,移动2G还存在一点点,联通基本上都没了,电信的不知道。

也希望我这是最后一篇关于GSM短信嗅探的,毕竟新的技术过的久了就会发现许多漏洞,几天前 GeekPwn 参赛选手就破解了某信LTE微基站(Orz)

Reference

文章《使用C118手机进行GSM/SMS嗅探实验》采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: www.bilibili.com
Source: ななひら
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
嘉然
ななひら
小恐龙
花!
上一篇
下一篇