通过OsmocomBB和C118进行GSM劫持+短信嗅探实验

通过OsmocomBB和C118进行GSM劫持+短信嗅探实验

知识介绍

GSM全名为:Global System for Mobile Communications,中文为全球移动通讯系统,俗称”全球通”,是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。我国于20世纪90年代初引进采用此项技术标准,此前一直是采用蜂窝模拟移动技术,即第一代GSM技术(2001年12月31日我国关闭了模拟移动网络)。目前,中国移动、中国联通各拥有一个GSM网,为世界最大的移动通信网络。GSM系统包括 GSM 900:900MHz、GSM1800:1800MHz 及 GSM1900:1900MHz等几个频段 。GSM(全球移动通信系统)是一种广泛应用于欧洲及世界其他地方的数字移动电话系统。GSM使用的是时分多址的变体,并且它是目前三种数字无线电话技术(TDMA、GSM和CDMA)中使用最为广泛的一种。GSM将资料数字化,并将数据进行压缩,然后与其它的两个用户数据流一起从信道发送出去,另外的两个用户数据流都有各自的时隙。GSM实际上是欧洲的无线电话标准,据GSM MoU联合委员会报道,GSM在全球有12亿的用户,并且用户遍布120多个国家。因为许多GSM网络操作员与其他国外操作员有漫游协议,因此当用户到其他国家之后,仍然可以继续使用他们的移动电话。

美国著名通信公司Sprint的一个辅助部门,美国个人通信正在使用GSM作为一种宽带个人通信服务的技术。这种个人通信服务将最终为爱立信、摩托罗拉以及诺基亚现在正在生产的手持机建立400多个基站。手持机包括电话、短信寻呼机和对讲机。

GSM及其他技术是无线移动通信的演进,无线移动通信包括高速电路交换数据、通用无线分组系统、基于GSM网络的数据增强型移动通信技术以及通用移动通信服务。

当前仍有大多数人使用的手机采用是移动的2G信号,也就是所有的短信发送都走的是GSM协议。

基站主要是有如下几部分组成的,基站子系统(简称基站BS)由基站收发台(BTS)和基站控制器(BSC)组成;网络子系 统由移动交换中心(MSC)和操作维护中心(OMC)以及原地位置寄存器(HLR)、访问 位置寄存器(VLR)、鉴权中心(AUC)和设备标志寄存器(EIR)等组成。

手机的所有通信方式都是通过基站发送出去的,因为你手机在哪,然后周围的基站会不停的对外广播自己的信号及相关信息,手机只要搜索信号,选择相应的连接上去即可(一般情况手机连接的基站都是附近信号最强的基站),在连接过程会做一些信息的注册,比如Imel,手机号等。当自己的手机正常关机时,也会给基站发送注销信息,这样别人拨打你的电话,就会提示已关机。假如自己的手机突然断电,会意外的断开与基站的连接,基站那面没有完成正常的注销操作,这样别人拨打你的电话,就会提示暂时无法接通或者不在服务区。

OsmocomBB介绍

OsmocomBB(Open source mobile communication Baseband)是国外一个开源项目,是GSM协议栈(Protocols stack)的开源实现。其目的是要实现手机端从物理层(layer1)到layer3的三层实现,主要进行2G网短信嗅探。

C118介绍

C118其实是Moto C118该款型号的手机,因为该款手机可被软刷成一个GSM短信嗅探器,也可选择其他款型的手机。如MotorolaC115/C117 (E87)、MotorolaC123/C121/C118 (E88) — our primary target、MotorolaC140/C139 (E86)等型号的手机,以下图示是本次实验所用的Moto C118手机。

实验需要相关的硬件和软件设备

  • 硬件设备
  • 手机

Moto C118手机,淘宝上售卖价比较优惠,30-50之间不准,带有充电线等其余配件。下图是在淘宝搜索的截图

  • USB转串口模块

本次使用的是FT232模块,带有TX/RX LED等功能,成本价也比较低,只有几十块钱。

  • C118数据线

GSM sniffer 2.5MM三级USB转杜邦线转接线,淘宝上有现成的先,减少了自己手工做的成本,如下图所示。

  • 软件环境

本次我使用的是ubuntu-16.04-desktop-amd64环境,通过在 ubuntu环境上进行OsmocomBB编译。

搭建过程以及使用的相关命令

  • 更新系统

更新系统前,最好将更新源改为国内的更新源,以防在OsmocomBB编译,有的软件无法正常下载。在这我推荐几个Ubuntu 16.04使用的相关国内更新源,如所示。在/etc/apt/source.list中添加国内的更新源。

东北大学

deb-src http://mirror.neu.edu.cn/ubuntu/ xenial main restricted #Added by software-properties

deb http://mirror.neu.edu.cn/ubuntu/ xenial main restricted

deb-src http://mirror.neu.edu.cn/ubuntu/ xenial restricted multiverse universe #Added by software-properties

deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates main restricted

deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties

deb http://mirror.neu.edu.cn/ubuntu/ xenial universe

deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates universe

deb http://mirror.neu.edu.cn/ubuntu/ xenial multiverse

deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates multiverse

deb http://mirror.neu.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties

deb http://archive.canonical.com/ubuntu xenial partner

deb-src http://archive.canonical.com/ubuntu xenial partner

deb http://mirror.neu.edu.cn/ubuntu/ xenial-security main restricted

deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties

deb http://mirror.neu.edu.cn/ubuntu/ xenial-security universe

deb http://mirror.neu.edu.cn/ubuntu/ xenial-security multiverse

 

清华大学

# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ – Release amd64 (20160420.1)]/ xenial main restricted

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse

阿里云

# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ – Release amd64 (20160420.1)]/ xenial main restricted

deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted

deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties

deb http://mirrors.aliyun.com/ubuntu/ xenial universe

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe

deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties

deb http://archive.canonical.com/ubuntu xenial partner

deb-src http://archive.canonical.com/ubuntu xenial partner

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties

deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe

deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

更新完成之后,输入如下两条命令,即可完成更新(确保当前系统处于root权限):

apt-get update

apt-get upgrade

  • 安装OsmocomBB所需的一些依赖包

$ sudo apt-get install libusb-0.1-4 libpcsclite1 libccid pcscd

$ 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 libpcsclite-dev

  • 创建相关的目录,并且下载ARM编译器

$ mkdir osmocombb

$ cd osmocombb

$ mkdir build install src

$ wget http://bb.osmocom.org/trac/raw-attachment/wiki/

GnuArmToolchain/gnu-arm-build.3.sh

$ cd 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

$ cd ..

$ chmod +x gnu-arm-build.3.sh

$ ./gnu-arm-build.3.sh

此步骤安装所需的时间较长,本次自己搭建使用了40 多分钟才安装完毕。

  • 添加对应的编译环境

$ cd install/bin

$ pwd(查看对应的路径)

$ vi ~/./.bashrc

export PATH=$PATH:/osmocombb/install/bin(将此行添加在最后一行即可)

$ source ~/.bashrc(进行环境更新,等待结束即可)

  • 下载并编译OsmocomBB

在刚建的osmocombb目录中下载OsmocomBB,

$ git clone git://git.osmocom.org/libosmocore.git

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

之前看的一篇文章中提到安装libosmocore执行./configure的时候会遇到No package ‘talloc’ found 这种错误,原因是找不到talloc,如下是解决办法。

$ wget https://www.samba.org/ftp/talloc/talloc-2.1.7.tar.gz

$ tar -zxvf talloc-2.1.7.tar.gz

$ cd talloc-2.1.7/

$ ./configure

$ make

$ sudo make install

本次我安装libosmocore执行./configure过程中还出现一种问题,是No package ‘gnutls’ found,如下图所示。

此时可通过执行sudo apt-get install libghc-gnutls-dev即可解决该报错信息,再次进行安装即可。

  • 安装libosmocore

$ cd libosmocore/

$ autoreconf -i

$ ./configure

$ make

$ sudo make install

$ cd ..

  • 编译osmocombb

$ cd osmocom-bb

$ git checkout –track origin/luca/gsmmap

$ cd src

$ make

  • 安装wireshark抓包工具

sudo apt-get install wireshark

此时已经安装完成,但是如果在cell扫描的过程中出现扫描停止不动的现象,此时需要在osmocom-bb文件夹中找到如下的文件,修改相关信息,重新进行编译即可解决该问题

vim osmocom-bb/src/target/firmware/board/compal/highram.lds

vim osmocom-bb/src/target/firmware/board/compal/ram.lds

vim osmocom-bb/src/target/firmware/board/compal_e88/flash.lds

vim osmocom-bb/src/target/firmware/board/compal_e88/loader.lds

vim osmocom-bb/src/target/firmware/board/mediatek/ram.lds

找到“KEEP(*(SORT(.ctors)))”代码,并在下面加上如下代码即可。

KEEP(*(SORT(.init_array)))。

最后再进进入osmocom-bb/src中重新编译一下即可。

$ make -e CROSS_TOOL_PREFIX=arm-none-eabi-

最终安装完成的目录如下所示。

GSM短信嗅探使用过程

在这为了方便,直接打开四个命令行框,如下图所示(后面会详解每个命令行框输入的命令)。

  • 首先进行c118软刷

在/osmocombb/osmocom-bb目录中执行如下命令

$ cd src/host/osmocon

$ sudo ./osmocon -m c123xor -p /dev/ttyUSB0

../../target/firmware/board/compal_e88/layer1.compalram.bin

当出现如上界面时,直接按一下C118的开机键即可,如下图所示。

当手机C118手机界面出现Layer 1 osmocom-bb时,说明已经成功将C118刷成了一个短信嗅探器,如下图所示。

  • 第二步扫描附近的基站信息

打开命令行框,仍在osmocom-bb目录输入如下命令。

$ cd src/host/layer23/src/misc

$ sudo ./cell_log -O

搜索过程如下图所示。

其中ARFCN即是该基站的标识,并且PWR代表信号强度,由于是负值,一般选择值最小的基站信号最强,进行GSM短信嗅探,等待完成之后,再执行下一步命令。

  • 接着进行下一步,进行GSM短信劫持

命令如下

$ sudo ./ccch_scan -i 127.0.0.1 -a ARFCN

其中ARFCN就是上图中出现的ARFCN的值,本次选择信号最强的基站,如下图所示。

$ sudo ./ccch_scan -i 127.0.0.1 -a 21

已经进行短信嗅探,最后一步,则是打开wireshark抓包工具,执行如下命令

$ sudo wireshark -k -i lo -f ‘port 4729’

即可正常打开wireshark,如下图所示。已经抓取到相关的GSM协议信息。

因为短信发送的协议是gsm_sms,可在过滤器中输入gsm_sms即可只查看该协议信息,等待了一会,终于抓取到相关的短信内容,如下图所示,但是由于是在凌晨做的实验,所以抓取的短信条数特别少。

总结

本次通过搭建GSM劫持+短信嗅探实验目的是为了提高大家的安全意识,因为现今我们大多数的人通过手机进行支付,并且大多数人的安全意识不足,导致发生经济损失,因为攻击者可以通过此方式嗅探到手机验证码、银行卡余额等敏感信息。

针对于GSM劫持+短信嗅探有如几种防护。

手机定时开关机/飞行模式:晚上睡觉前关机或者打开飞行模式,这样手机不会连到伪基站,基站获取不到手机的状态信息就不会将验证码短信发送给手机,不法分子获取不到手机号码和验证码短信。

警惕信号好的地方掉 2G 网络:因为此次演示的这种攻击需要借助 2G 网络,有时候不法分子会用伪基站让手机掉到 2G 来拦截语音短信和联网数据。当你的手机在平时信号很好的地方突然掉到 2G 就要小心附近是不是有伪基站和 GSM 嗅探了。

开通 VoLTE:开通之后加上手机支持,电话和短信都是走 4G 通道,不会使用 2G 网络。例如移动用户就可以发送KTVOLTE到 10086 开通 VoLTE;联通用户可以发送VBNCDGFBDE到 10010 开通。不过即使这样也防不了不法分子会用伪基站让手机掉到 2G,需结合前面两点使用。

专门使用一个手机号接收验证码:可以先准备一台手机,双卡手机的话可以准备一张手机卡,专门用于接收验证码短信。这个手机或这张卡平时可以不开机或者禁用。这种方法虽麻烦但也许是目前最有效的。

使用二步验证:支持二步验证的网站,也可以打开网站应用的两步验证。让对方仅凭手机号也验证码没办法进入你的账户。

注:本篇文章参考了freebuf及其他平台上的相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

19 + 7 =