<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    原文地址:http://drops.wooyun.org/tips/11955

                    Author:綠盟科技博客

                    0x00 簡介


                    p1

                    OsmocomBB(Open source mobile communication Baseband)是國外一個開源項目,是GSM協議棧(Protocols stack)的開源實現。其目的是要實現手機端從物理層(layer1)到layer3的三層實現,主要進行2G網短信嗅探。本文詳細地介紹了實現方法,以供安全愛好者學習和參考。

                    目前來看,真正的物理層(physical layer)并沒有真正的開源實現,暫時也沒看到實施計劃。只有物理層控制。因為真正的物理層是運行在baseband processor的DSP core上,涉及到許多信號處理算法的實現,而且還要牽扯很多硬件RF的東西。這項技術至少在2010年,技術已經成熟,2011年就有開源實現了。得益于OsmocomBB 的開源項目,使得我們用一臺筆記本和很簡單的硬件就能完成GSM sms嗅探。

                    0x01 原理分析


                    關于加密

                    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。

                    工作流程

                    手機開機時的位置更新流程:

                    1. MS(手機)向系統請求分配信令信道(SDCCH);
                    2. MSC收到手機發來的IMSI可及消息;
                    3. MSC將IMSI可及信息再發送給VLR,VLR將IMSI不可及標記更新為IMSI可及;
                    4. VLR反饋MSC可及信息信號;
                    5. MSC再將反饋信號發給手機;
                    6. MS傾向信號強的BTS,使用哪種算法由基站決定,這也導致了可以用偽基站進行攻擊。

                    關于GSM網絡相關知識

                    p2

                    0x02 所需硬件


                    支持的手機

                    我們選擇Moto C118,因為官方支持的最好、硬件成本低,¥35/臺(手機+電池+充電器)

                    p3

                    USB轉串口模塊

                    推薦帶TX/RX LED的 FT232模塊,當然其他模塊也可以,比如CP2102、CP2303等模塊,不過使用前要先調好比特率。FT232模塊,我買的是¥35的,第一個嘛,為了求穩定。后面做多個手機聯合嗅探的時候可以嘗試買一些便宜的。

                    p4

                    C118數據線

                    這個數據線就是2.5mm耳機頭轉杜邦線,注意一頭是2.5mm耳機孔的,另一邊是杜邦線連接串口模塊。手邊有2.5mm耳機插頭的可以自己做一個。當然網上現在也有現成的了,不過成本稍微高一點。¥15左右一條

                    p5

                    MiniUSB鏈接線

                    這個線應該都有,以前的mp3、手機啥的都是這個線,馬云家賣¥10,如果你用了Pl2303那類的USB轉換板,就可以不用這根線了,那個板子上自帶U口。

                    p6

                    0x03 編譯OsmocomBB


                    基礎環境

                    MacOs 10.10.5 + VMworkstation + Ubuntu 12.04 x64

                    我的實驗用的是這樣的環境,網上很多教程都說X64的虛擬機不能正常編譯,但是我確實是成功了。也可以嘗試使用別的環境試試,畢竟我的實驗環境僅供參考。

                    網路環境要求能夠正常訪問github,實驗環境周圍存在GSM信號。

                    C118手機有足夠的電量,支持實驗。

                    準備所需目錄以及文件

                    具體項目目錄結構和所需文件如下圖:

                    p7

                    準備好之后的目錄如下圖:

                    p8

                    我是把整個source目錄放在了用戶文件夾下,僅做參考。只需要按照上面文字格式的結構圖準備就好,圖片中未出現部分后面會寫如何出現…

                    編譯環境準備

                    編譯前安裝所需的依賴庫文件:

                    #!bash
                    sudo 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
                    

                    p9

                    在arm根目錄執行build.sh文件進行build操作:

                    #!bash
                    chmod +x gnu-arm-build.2.sh ./ gnu-arm-build.2.sh
                    

                    p10

                    完成后arm/install/目錄結構如圖所示:

                    p11

                    因為編譯需要,把arm/install/bin路徑加入到環境變量中,我這里是加入到用戶的環境變量中。使用pwd命令獲取絕對路徑:

                    p12

                    修改~/.bashrc文件,最后一行加入:

                    #!bash
                    export PATH=$PATH:/home/wooyaa/source/arm/install/bin
                    

                    執行source命令讓配置文件即時生效:

                    #!bash
                    source ~/.bashrc
                    

                    在終端中輸入arm然后按tab鍵,如果出現如下圖所示就說明編譯環境搞定了:

                    p13

                    編譯OsmocomBB

                    把osmocom項目gitclone到source目錄下:

                    #!bash
                    git clone git://git.osmocom.org/osmocom-bb.git git clone git://git.osmocom.org/libosmocore.git
                    

                    在libosmocore/目錄中編譯osmocom核心庫文件

                    #!bash
                    cd /home/wooyaa/source/libosmocore/ autoreconf -i ./configure make sudo make install
                    

                    編譯OsmocomBB:

                    #!bash
                    cd /home/wooyaa/source/osmocom-bb/src/ git checkout –track origin/luca/gsmmap //選擇分支 make //交叉編譯
                    

                    如果沒什么問題,軟件環境和固件就都編譯好了。

                    Ununtu 12.04自帶FT232R驅動,所以直接連接就能使用,不需要再裝驅動。

                    常見錯誤

                    常見報錯有可能是autoconf、libtool、libpcsclite-dev等文件的缺失,只要裝好就行了。具體版本請使用apt-cache search xxx在你自己電腦中的apt-get的list中查找。

                    0x04 使用方法


                    連接硬件

                    在終端中輸入lsusb,會顯示當前usb連接的信息:

                    p14

                    如果驅動正常,插上MiniUSB線后就能看到usb-serial:

                    p15

                    網上的教程大多都誤認為是將firmware刷入手機,實際上這里只是把固件加載到手機RAW中執行。

                    加載Firmware到手機raw中

                    #!bash
                    cd /home/wooyaa/source/osmocom-bb/src/host/osmocon/./osmocon -m c123 -p /dev/ttyUSB0 ../../target/firmware/board/compal_e88/layer1.compalram.bin
                    
                    1. 其中 –m c123跟c123xor的區別就是是否檢測數據總和
                    2. 上面命令需要在關機下執行,然后短按開機鍵

                    終端上會顯示”starting up”字樣,如下:

                    p16

                    手機屏幕顯示Layer 1 osmocom-bb 字樣就表示成功了:

                    p17

                    掃描基站

                    #!bash
                    cd /home/wooyaa/source/osmocom-bb/src/host/layer23/src/misc/sudo ./cell_log –O
                    

                    其中cell_log的參數是字母O,具體作用是只檢查ARFCN是否可用,不進行其它操作,可以用./cell_log –help參看說明。

                    終端中會輸出日志信息,其中會包含能夠收到的基站的相關信息,格式類似這樣:

                    #!bash
                    cell_log.c:248 Cell: ARFCN=40 PWR=-61dB MCC=460 MNC=00 (China,China Mobile)
                    

                    ARFCN后面的編號可以代表基站信道號,還包含了運營商信息。

                    p18

                    關于嗅探

                    因為我們買的便宜貨,每個手機只能嗅探一個信道,具體一些的,可以參考下面的圖(我們現在只能抓Downlink的數據包):

                    p19

                    因為想要Sniffer Uplink的包,要修改硬件,C118主板上的RX filters要換掉,換成我們需要的HHM1625&&HHM1623C1濾波器組件,才能抓Uplink的數據包。

                    有關信道號ARFCN的問題,可以參考下面的圖:

                    p20

                    開始嗅探

                    選擇想要監聽的信道號并開始嗅探廣播數據。

                    在目錄/home/wooyaa/source/osmocom-bb/src/host/layer23/src/misc/下執行嗅探:

                    #!bash
                    ./ccch_scan -i 127.0.0.1 -a THE_ATFCN_ID
                    

                    其中THE_ATFCN_ID就是掃描到的日志中參數ARFCN的值。

                    蘋果手機可以執行:3001#12345# 進入工程模式后,選擇GSM Cell Environment->GSM Cell Info->GSM Serving Cell,就可以看到目前手機連接的基站ARFCN值了,應該在第二步中,也能看到這個ID存在。

                    其他手機的命令

                    Samsung (Android): *#0011#

                    p21

                    使用wireshark抓取監聽數據

                    因為osmocomBB執行之后默認會在本地開啟4729端口,這時候的GSM協議已經被封裝上了TCP-IP,可以在本地用wireshark抓到,所以我們使用wireshark去監聽4729的端口

                    #!bash
                    sudo wireshark -k -i lo -f 'port 4729'
                    

                    p22

                    在wireshark中過濾gsm_sms協議數據,過濾之后得到的數據里面就包含短信的明文信息。 過濾后得到的明文短信信息

                    p23

                    SMS text就是短信的明文內容,其他git分支還支持把監聽到的數據保存到cap包,然后通過腳本來過濾包內容,達到嗅探短信明文的目的。后面會有計劃的去嘗試。

                    配置OsmocomBB

                    layer23是用/home/wooyaa/source/osmocom-bb/src/host/layer23/src/mobile下的mobile程序實現,所以通過執行mobile文件可以進行自定義,配置一些關于osmocom-bb的信息。

                    #!bash
                    cd /home/wooyaa/source/osmocom-bb/src/host/layer23/src/mobile
                    sudo ./mobile -i 127.0.0.1
                    

                    執行mobile程序之后,會在本地開啟4247端口,使用telnet連接,然后配置執行,隨時使用?來查看help信息。

                    p24

                    關于嗅探內容

                    簡單來講,短信接受者的號碼、IMEI等數據,只有在”Location Update”時才會在網絡中出現,并且是以加密形式傳輸的。當接收短信時,基站根據之前位置更新時注冊的信息,判斷接收者的位置。所以,想要拿到接受者的號碼,需要破解A5/1算法并還原出”Location Update”時的原文。

                    只不過需要價格昂貴的USRP2…

                    另外還看到個RTL-SDR的文章(就是以前傳說中可以跟蹤飛機的電視棒),也支持Airprobe:

                    http://www.rtl-sdr.com/rtl-sdr-tutor…and-wireshark/

                    Tips

                    1. 記住所有操作在sudo -s root權限下操作。
                    2. 開機鍵不是長按,而是短按,否則就進入原系統了。
                    3. 現在2G短信越來越少了,多等等會有的。理論上話音一樣能夠被監聽及解碼,只是涉及技術更為復雜。
                    4. CP210x的接線,RX和TX有可能需要對調。運行cp210x-program需要先安裝ibusb-dev,如果輸出是“No devices found”或“Unable to send request, 3709 result=-110”,則有問題。

                    0x05 后期計劃


                    捕獲上行包

                    因為想要嗅探Uplink的包,要修改硬件,C118主板上的RX filters要換掉,換成我們需要的HHM1625&&HHM1623C1濾波器組件,才能抓Uplink的數據包。修改方法如下:

                    要使手機能夠成為『passive uplink sniffer』,必須動到電烙鐵,替換掉RX filters。

                    替換前:

                    p25

                    摘掉后:

                    p26

                    替換后:

                    p27

                    使用OsmocomBB RSSI monitor查看信號強弱:

                    #!bash
                    ./osmocom-bb/src/host/osmocon/osmocon -p /dev/ttyUSB0 -m c123xor -c ./osmocom-
                    bb/src/target/firmware/board/compal_e88/rssi.highram.bin ./osmocom-
                    bb/src/target/firmware/board/compal_e88/chainload.compalram.bin
                    

                    由于RSSI太大,不便于像OsmocomBB那樣直接加載,所以要先用-C參數加載一個小的chainloader程序去加載我們真正的RSSI Payload程序:

                    p28

                    短信內容實時web頁面展示

                    制作成綿羊墻,在線實時顯示嗅探到的短信

                    多設備聯合嗅探

                    嘗試多設備一起嗅探,增強嗅探范圍和效果

                    0x06 附錄


                    DIY Moto C118數據鏈接線

                    p29

                    圖中例子耳機為moto T191的耳機,右圖中標注的顏色為耳機線拆開后里面線芯的顏色。耳機線拆開后里面會包含3根帶有外皮的銅線。

                    GSM網絡相關知識

                    p30

                    從協議圖中得知,移動設備(MS)和基站(BTS)間使用Um接口,最底層就是刷入手機的layer1物理傳輸層,之上分別是layer2數據鏈路層和layer3網絡層

                    p31

                    位于圖中layer2的LAPDm,是一種保證數據傳輸不會出錯的協議。一個LAPDm幀共有23個字節(184個比特),提供分片管理控制等功能。

                    layer3的協議則可以分為RR/MM/CM三種,這里只列出嗅探相關的功能:

                    p32

                    參考GSM的文檔 TS 04.06 得知 LAPDm 的Address field字段中,定義了 3.3.3 Service access point identifier (SAPI)。SAPI=3就是我們要的Short message service。 使用tcpdump配合show_gsmtap_sms.py腳本在console列出短信明文。

                    #!bash
                    tcpdump -l -ilo -nXs0 udp and port 4729 | python2 -u show_gsmtap_sms.py
                    

                    一些名詞解釋

                    參考文獻

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频