詳解藍牙Bluebugging攻擊技術
目前流行的藍牙協議版本應該是2.0和2.1,但作為2005年以前生產的手機、PDA等便 攜式設備,普遍使用的是1.1版本。而無論是早期的藍牙1.1還是現在的藍牙2.0,都已經被 公布出是存在漏洞和潛在攻擊隱患的。至于這些漏洞的具體內容是什么,又如何表現,本節 就來講述較為有名的Bluebugging攻擊。
13.3.1 基本概念
1.關于Bluebugging攻擊
Bluebugging允許惡意攻擊者利用藍牙無線技術通過連接手機隱藏且未經保護的頻道, 在事先不通知或提示手機用戶的情況下訪問手機命令。此缺陷可以使惡意的攻擊者通過手機 撥打電話、發送和接收短信、閱讀和編寫電話簿聯系人、偷聽電話內容以及連接至互聯網。 雖然現在很多智能手機已基本不受其影響,但是仍舊有大量的手機面臨此類攻擊的威脅,比 如一些采用MTK解決方案的國產手機。
2.何謂MTK
目前市場上主流的平臺有TI、摩托羅拉、飛利浦、MTK、ADI、展訊、英飛凌、凱明 等。一般來說,在服務方面所有手機平臺沒有特別大的差別。MTK公司的產品因為集成較 多的多媒體功能、容易開發的特點及較低的價格在手機公司和手機設計公司待到廣泛的應 用。MTK全名MediaTek,是我國臺灣聯發科技多媒體芯片提供商研制的一種高度集成的多 媒體基帶芯片方案,是一個主要應用于手機的廉價解決方案。
對消費者來說買MTK方案的手機主要是因為功能多價格便宜。雖然MTK曾一度被戲 稱為黑手機,但很多手機廠商都是用MTK的方案,因為其縮短了產品研發周期,使得手機 廠商能夠更加靈活地應對市場多變的需求。雖然MTK有很多缺點,但是該解決方案的實際 表現證明了其強大的生命力,龐大的市場占有率和銷量都是其他平臺所無法企及的。MTK 并不像很多人認為的那樣僅僅是黑手機的標志,即使是MTK手機也是有區別的。品牌手機 無論是在做工還是保修上肯定要比一些低端手機生產廠商拼裝的黑手機強得多。而這些廠家 生產的MTK手機其外觀常與某些大品牌的手機產品類似,甚至在名稱上也使用了Nokai、 Anycoll等相似名稱來迷惑消費者,圖13-55所示為某MINI手機。而圖13-56為所示的手機 是D899,外觀上與時下流行的iPhone相似。
圖13-55 圖13-56
本節中的內容適用對象也包含了使用MTK芯片的部分手機,這一點請大家注意,
13.3.2工具準備
大多數的藍牙工具在Linux下默認已安裝,如hciconfig、hcitool等,主要需要安裝的是 minicom這款Linux下的終端工具。
Linux下的minicom的功能與Windows下的超級終端功能相似,可以通過串口控制外部 的硬件設備。適于在Linux通過超級終端對嵌入式設備進行管理。同樣也可以使用minicom 對外置Modem等進行控制。對于BackTrack4 Linux的用戶來說,minicom已經內置安裝完 畢無須再下載。
對于Linux下的用戶,可以從http://alioth.debian.org/projects/minicom/下載minicom的安 裝包至本地再安裝。
至于Linux下的具體安裝命令,參考如下:
13.3.3攻擊步驟
下面以目前在國內廣泛流行的低端手機為例來演示Bluebugging 攻擊。如圖13-57所示,作為本節演示用的低端手機名為Anycoll, 與三星Anycall品牌中的某一款型極其相近。這款用于測試的低端手 機采用的就是MTK芯片。
關于Bluebugging攻擊的具體步驟如下:
掃描藍牙設備。
在載入藍牙適配器后,就可以對周邊開啟籃牙的移動設備進行 圖13-57 掃描了,具體命令如下:
按IEnter]鍵后即可看到圖13-58所示的內容,可以看到發現一個名為MTKBTDEVICE 的設備,該設備即為測試用的低端手機,這個名稱是其內置的藍牙芯片名稱,其中,MTK 表示出其芯片廠商,而BT即Bluetooth的縮寫,DEVICE就是設備的縮寫。
一般在搜索到開啟藍牙功能的設備后,會使用L2ping測試與該設備的藍牙模塊之間是 否數據可達,具體命令如下:
按【Enter]鍵后即可看見圖13-58所示的內容,會顯示出類似于“6 sent,6 received, 0% loss”的提示,即“發送6個包,收到6個包,沒有丟失”的意思。
圖13-58
查找串行端口服務。
為了獲取手機的控制權,需要連接目標設備的串行端口。所以需要通過藍牙來搜索關于 串行端口的服務。這里需要使用到sdptool工具,這里使用的具體命令如下:
其中,browse用于瀏覽所有可用服務,主要是列出所有隱藏的服務內容、工作頻道等。 按IEnter]鍵后可以看到出現了詳細的服務列表,這些都是該手機設備支持的服務內容, 如圖13-59所示。
對于攻擊者而言,需要找到串行端口即Serial Port的信息,在sdptool命令返回的內容 中查看,即可看到名為Serial Port的內容,其中,主要需留意的是Channel即頻道的數值。 如圖13-60所示,這里的Channel為10,即串口使用的隱藏頻道是10。
圖13-59 圖13-60
配置藍牙連接設置。
接下來需要對Ubuntu下的藍牙配置文件進行修改和設置,具體命令如下:
在上述命令中,nano是Linux下一款工作在Shell下的編輯工具,rfcomm.conf別是藍牙 連接的配置文件。按IEnterl鍵后即可看到圖13-61所示的內容,當然,對于之前很少在 Linux下使用藍牙的讀者,實際看到的內容可能與圖13-61所示的稍有偏差,請將原始的配 置文件內容修改成與圖13-61所示的一致。其中,在device后面輸入需要連接的目標藍牙設 備MAC,這里就是上面使用hcitool搜索到的藍牙設備MACo然后在channle后面輸入Serial Port的頻道數值,這里就是上面使用sdptool 列出的內容,即10頻道。
配置完畢后,按ICtrl+X】組合鍵退 出,注意選擇Y保存。然后開始配置設備的 映射:
其中,bind綁定在某一個設備上,這里 指與目標藍牙設備之間建立映射關系,也就 是rfcomm0指代目標設備。 按LEnterl鍵后就可以開始配置終端工具 nurucom。
圖13-61
配置minicom。
◇在使用minicom連接之前,需要先對串口進行設置,具體命令如下:
其中,-s用于進入setup模式,即配置模式。
@按【Enterl鍵后即可看到圖13-62所示的配置菜單,使用方向鍵在菜單中選擇Serial
port setup選項并按【Enter]鍵,該選項主要設置串口。
在打開的設置框中,確保Serial Device選項設置為/dev/rfcomm0,與前面綁定的一 樣,具體如圖13-63所示。然后在配置菜單中選擇Save setup as dfl保存【一定要 記得這一步),提示成功后再選擇Exit from Minicom退出菜單。
圖13-62 圖13-63
實施Bluebugging攻擊。
④一切配置無誤后,就可以開始進行Bluebugging攻擊了,先確定目標手機設備在藍
牙適配器的工作范圍內,然后輸入如下命令:
④按【Enter]鍵后即可看到圖13-64所示的內容,成功連接至該手機設備。此時,受害者手機上會出現“串口已連接”的提示,不過該提示會一閃而過,不需要對方的確定。這時,攻擊者就已經成功地獲取了該手機的控制權。 ◇現在攻擊者已經可以對該手機進行任意操作了,包括命令該手機向外拔打電話、讀
取手機短信、編寫短信向外發送、讀取通話記錄等。比如輸入參數如下:
其中,atdt num參數用于拔打電話,后面的num為具體的電話號碼,需要注意的是,由 于機型的不同,有時在撥打手機時需要加入086這樣的國際區號。
按【Enter】鍵后如圖13-64所示,此時受害人的手機會自動拔打該號碼。 作為攻擊者而言,當然不會簡單地撥 號那么簡單,輸入參數如下:
參數解釋:
at+cpbr=[,] 參數 用于查詢手機中電話薄的內容。其中,在 indexl處輸入序號,即可查詢該順序號碼 下的電話號碼。若需要查詢某一段號碼, 則在indexl處輸入起始位,在index2處輸入結束位即可。
圖13-64
該命令的意思是列舉出手機電話號碼薄中l~ 100住的內容。按IEnterl鍵后就可看到圖 13-65所示的內容,自動將讀取的前100位號碼全部列舉出來。此時,受害者的手機是沒有任何 提示和反應的。
從圖13-66可以看出,由于該手機中只存了70個號碼,所以經過數秒后,就成功地將 全部號碼讀取完畢了。
圖13-65 圖13-66
由此可見Bluebugging攻擊的危害性,而由于攻擊者已經獲得了該手機的全部控制權, 更可以以此做出更多嚴重的危害,比如撥打惡意聲訊臺詐取高額話費、騷擾他人、偽造短信 騙取錢財、偽造身份等,由于本節僅為研究和探討Bluebugging攻擊的存在形式,所以更進 一步的操作就不再演示了。不過為方便安全及滲透測試人員進行深一步的安全測試,下面給 出幾個常用的手機測試參數,具體如表13-2所示。
表13-2
13.3.4小結
關閉藍牙是最簡單且有效的方法。若是確實需要藍牙功能,那么應當設置為不可見。升 級固件也是個好方法,只是對于一般用戶來說稍有難度。
13.4 藍牙D,O.S
前面說到了針對目前Wi-Fi無線網絡的D.O.S攻擊的原理、工具及方法,本章主要講解 關于藍牙D.O.S的知識。 13.4.1 關于藍牙D.O.S
在傳統的有線網絡中,早期的D.O.S攻擊方式中有一種被稱為“死亡之Ping”的攻擊方 式,這種攻擊是以向目標主機發送大量畸形的ICMP數據包的方式,使得目標計算機忙于響 應從而達到資源耗盡死機的目的。這種攻擊在以前對于Windows 98之類的系統很有效,但 隨著系統內核的升級等原因,對于現在的Windows系統都已經失效了。不過,若能集合足 夠數量的機器,還是可以造成龐大的D.O.S數據流。
L2ping是一款用于測試藍牙鏈路連通性的工具,主要在Linux下使用。這款工具 類似于平時使用的Ping俞令,能夠對藍牙連通情況做出回饋。不過這款工具并不需要 先使用PIN碼建立連接,而是對藍牙適配器探測范圍內的藍牙設備都可以進行連通性 測試。
在藍牙安全測試中,該工具也可用于進行基礎的藍牙D.O.S攻擊,通過對指定設備 發送大量連通數據包來進行淹沒式攻擊。而使用L2ping進行藍牙D.O.S的原理與Ping of Death類似,只不過傳輸手段換成了藍牙協議,而對象則換成了藍牙設備。關于L2ping的資 料大家可以在http://linuxcommand.org/man_page s/12pingl .html網站中查看。
13.4.2 藍牙D.O.S實戰
下面就來講解如何操作,作為本書中一直在推崇的BackTrack4 Linux同樣也內置了 L2ping,所以就不需要再次安裝了。具體操作步驟如下:
載入藍牙適配器。
在開始實戰前需要先載入筆記本電腦內置的或者外置藍牙適配器,具體命令如下:
參數解釋:
●hci0:此為藍牙適配器名稱,一般都為hci0,若同時使用多個藍牙適配器,則第二個 就是hcil,以此類推。
●up:與ifconfig類似,up就是載入該設備,若是不再使用適配器,此處應當使用down來卸載該設備。
一般都會先輸入hciconfig來查看是否有藍牙設備插入,若有hci0存在,再執行hciconfig up來激活,若沒有任何回應,則應該重新插入藍牙適配器,具體如圖13-67所示。
圖13-67
掃描藍牙設備。
接下來確認攻擊目標,需要掃描周邊的藍牙設備,具體命令如下:
由于之前的小節已經詳細講解了該命令,這里就不再解釋了。執行效果如圖13-68所示, 可以看到掃描出一個開啟藍牙的設備,MAC地址為“00:12:D2:91:34:C8”,設備名稱為 Christopher Yang。
圖13-68
對藍牙設備進行D.O.s攻擊。
既然目標已確認,那么就可以直接開始連通性測試了,L2ping的基本命令很簡單,具 體如下:
其中,目標MAC用于此處輸入之前掃描得到的目標藍牙設備的MAC地址。
按LEnterl鍵后,將看到類似于如下所示的內容:
在默認情況下,Linux下和Windows下的Ping命令不同,使用上述命令會持續發包, 直到按【Ctrl+C】組合鍵來終止。默認發包的大小為44字節,如圖13-69所示。
圖13-69
就好比在傳統有線網絡中使用Ping命令一樣,由于發送數據量很少,所以上面的操作 及命令只能算是藍牙連通性測試,而不能算是藍牙D.O.S。那么,想要對目標藍牙設備造成 D.O.S攻擊,則應該增大藍牙數據流,具體命令如下:
參數解釋:
●-s num:定制發送數據包的大小,而num處則是輸入具體的數值。
●目標MAC:此處輸入之前掃描得到的目標藍牙設備的MAC地址。 大家需要注意返回的數據報文的延時,如圖13-70所示,當設置包大小為2000字節時, 延時達到了160ms左右,而之前在默認情況下應為40ms左右,可見隨著單包容量的增大, 目標設備的響應也開始變得緩慢了
圖13-70
如圖13-71所示,當數據包變為5000字節時,延時增長到2000ms左右,可見由于數據 包的增大,確實使得目標耗費了大量的資源進行處理,也就造成了響應的緩慢。
圖13-71
類似地,如圖13-72所示,當數據包變為40000字節時,延時增長到7500ms左右,目 標的藍牙模塊或適配器耗費了大量的運算性能進行處理,從而響應也變得愈發緩慢。
圖13-72
檢查攻擊效果。
由圖13-73可以看到,在攻擊前,使用hcitool還能探測到開啟藍牙的PDA設備,而在 遭到攻擊后,則無法探測到,或者出現時而能夠探測到,時而不能探測到的情況。
圖13-73
需要注意的是,包的大小也不能設置得太大,對于不同的藍牙適配器,能夠承受的程度 也不一樣,比如當設置為10000字節時,如圖13-74所示,直接就提示連接被中斷了。而比 較圖13-72,那款Broadcom芯片的藍牙適配器是可以達到40000字節的。
圖13-74
13.4.3 藍牙D.O.S測試問題
為了解決初次學習藍牙攻擊可能遇到的幾種情況,本節也給出了對應的解釋。
1.目標藍牙芯片不支持
當發送的藍牙通信數據包大小過于龐大,超過目標設備藍牙芯片默認所能接受時,會失 去響應或者直接拒絕響應,具體如圖13-75所示。
2.程序出錯
若長時間用于進行大數據流的藍牙D.O.S攻擊,L2ping也會出現一些莫名的錯誤,如圖 13-76所示,會顯示當前程序已經在執行中,這往往是程序在緩存上出現問題所導致的。
3.遠程藍牙設備關閉,或者關機、重啟
當突然無法探測到藍牙設備時,比如對方關閉藍牙功能、關機或重啟等,也會現如 圖13-77所示的提示Host is down,即目標已關閉。
具體的安全防護及改進方法請看接下來的內容。
13.5 安全防護及改進
下面給出比較有效的幾種改進現有藍牙設備安全性的方法,供大家參考。
13.5.1 關閉藍牙功能
最簡單的方法也是最有效的方法即關閉藍牙功能,看到這一項估計有很多讀者會顯得頗 不以為然。但是事實證明,目前有很多用戶在購買了全新手機后,由于對很多手機默認設置 藍牙開啟的不了解,所以導致自己手機藍牙功能長期處午開啟狀態但卻毫不知情,增加了自 身隱私泄露的隱患。 經過實際檢查證明,絕大多數朋友開啟藍牙都并非本意,但自己卻毫不知情,無形中增加 了風險。例如,可能是與朋友聚會時,偶爾用藍牙傳輸一兩張照片或者文件,但用完忘了關; 或者有家人玩手機,無意中打開藍牙,但歸還后自己卻未發現等。根據筆者的經驗,這類情況 時常會出現。由此可見,定期檢查及關閉智能手機的藍牙功能將有必要成為一種習慣。
13.5.2設置藍牙設備不可見
其實有一個很簡單的辦法就是將藍牙功能設置為不可見,所謂不可見就是不能夠被其他 藍牙設備直接搜索到,只有之前連接過的藍牙設備才可以直接連接此設備。具體如圖13-78 所示,在安裝了Windows Mobile 6系統的智能手機上,進入藍牙配置頁面,取消勾選“使此 設備對其他設備可見”復選框即可實現藍牙功能不可見。
13.5.3 限制藍牙可見時長
直接關閉可見模式可能對于一些用戶而言,反而會造成一些麻煩。那么,也可以通過限 制可見模式的時長來達到加強安全性的目的。如圖13-79所示,對于使用Windows Mobile 系統的智能手機而言,進入到藍牙配置頁面下,可以將藍牙昀可見時間設置為5分鐘,即5 分鐘后該智能手機的藍牙功能將自動轉為“不可見”模式。這樣,就有效地防止了可能的藍 牙掃描及攻擊隱患。
圖13-78 圖13-79
13.5.4升級操作系統至最新版本
應及時將鐲氍手機的操作系統或者固件升級到最新的版本。尤其是那些既需要藍牙功 能,又需要不時使用藍牙與朋友分享桌面、音樂、鈴聲以及圖片或者傳送文件的朋友,避免 藍牙安全漏洞隱患最好的辦法就是升級手機的操作系統,比如將智能手機默認的Windows Mobile 5.0/6.1版系統升級為官方最新的6.5版本系統。
13.5.5設置高復雜度的PIN碼
通常情況下,藍牙耳機等便攜式外設默認PIN碼長度均為4位數,且一般為純數字的簡 單組合,如1234、0000、1111等。即使個別產品支持額外配置PrN碼,但很多人為了方便 起見,仍然會使用三四位純數字這樣簡單的密碼。
同樣地,在具備藍牙功能的智能手機與筆記本電目崮藝間通過藍牙連接時,一樣需要配置 PIN碼,在這里就需要注意使用在本章前面講述的長度達6位的隨機PIN碼進行連接,盡可 能地不要使用弱PIN碼。
13.5.6 拒絕陌生藍牙連接請求
對于手機或者PDA上突然出現的藍牙連接提示,應明確來源。若無法確定來源,應拒 絕接受藍牙連接請求,這樣可最大可能地避免藍牙攻擊及病毒的侵擾。
13.5.7拒絕可疑藍牙匿名信件
同樣地,當自己的手機上顯示為一個藍牙信息收取,而來源是并不熟悉的其他設備時, 應拒絕接收,這樣同樣對避免藍牙攻擊及病毒的侵擾有所幫助。
13.5.8啟用藍牙連接驗證
對于智能手機或者使用外置藍牙適配器的筆記本電腦而言,開 啟強制安全驗證將有效地確保通過藍牙信道傳輸的安全性。在開啟 驗證后,所有的藍牙連接操作都將經過對方的同意,比如通過藍牙 發送文件,則接收方的設備上會出現連接提示,只有接收方選擇同 意后,文件才能夠通過藍牙發出。
如圖13-80所示,應確保在藍牙配置中無線發送驗證頁面的“需 要驗證”選項是開啟的。
圖13-80