尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
白話物聯網安全系列文章
(一)什麼是物聯網的信息安全?:https://www.freebuf.com/column/191098.html
(二)物聯網的安全檢測:https://www.freebuf.com/articles/wireless/191065.html
我們這次先說IoT設備的安全,談IoT設備安全防禦,這次談IoT的設備安全,咱們先要涉及到IoT的協議,現在IoT的協議非常多,主要設計這些,藍牙,Zigbee,Z-Wave,6LowPAN,線程,WiFi,GSM/3G/4G蜂窩,NFC,Sigfox,HTTP,MQTT,CoAP,DDS,AMQP,XMPP,JMS。
我們通過協議,我們會發現一個頭疼的問題,我們現在涉及到的物聯網的協議標準不統一,應用範圍和使用場景限定了必須要使用多種感知手段繼續測試,而且基礎層的大量感知設備因為內存,計算能力有限,本身很難做到安全防禦,比如智能汽車的CAN總線,只要能直接通訊,一定能控制汽車,根據這些內容,我們把可能遭受的攻擊方式分為了這麼三種:
物理接觸:OBD,NFC,USB等等方式。
近場控制:藍牙,WIFI,射頻,信息模塊等等方式。
遠程控制:雲服務系統,經營商網路,3G/4G等等方式。
那我們在考慮安全防禦的時候,需要按照層級防護進行聯防控制,先從物理層開始,物理接觸涉及到的最核心的問題兩個,第一個惡意攻擊者接觸到設備不能進行認證,第二認證之後沒有授權,無法進行操作。
我們以最常見的NFC破解為例,進行簡單的說明,M1卡的容量為1KB,里麵包含16個扇區,每個扇區有四個塊,一般數據區域占用1個扇區,0扇區會有uid,內部存儲為16進制,一般扇區數據 4位為金額位,4或者2位為校驗位,金額常見是取反然後進制轉換。 比如 1E75 取反(XOR) 57E1然後轉10進制。
在能處理數據開始,我們先要確定能夠訪問存儲的該扇區,也就是我們先要對訪問扇區的密碼進行破解(全加密只能利用字典破解,半加密可以採用驗證漏洞破解一下)。
這玩意會生成一個XXX.dump的文件,然後拖進去WinHex,搞搞校驗方法就可以進行修改了。
還有各種小工具可以協助計算。
那麼我們整理一下,如果說有公司找我們做這種NFC(水卡,公交卡等等)的安全防護,我們從上面的內容先知道要注意以下幾點:
1:UID後端校驗不能重復,出現重復凍結。
2:扇區加密不能採用半加密模式,必須採用全加密模式,密碼足夠強壯
3:校驗位算法要足夠複雜,不要局限金額位的字節長度。
上面這個例子是我們在使用過程中一定要接觸的設備,物理層次的一些建議,但是其實很多設備的物理接觸是不需要的,或者我們可以設計對應的插拔式接觸產品,綁定該產品的硬件編碼,做唯一認證,其他人操作均需要廠家認證,這種方式相對麻煩,但是安全和便捷總是互相衝突的。
那我們說說IoT安全防禦第二層必須要考慮的安全,近場控制,近場指的是在指定範圍內,可以通過某種手段去連接到與IoT設備同一網路環境下,對IoT設備進行攻擊,我們常見的wifi,藍牙,射頻等等,IoT設備與其他設備不同,現在市面上大量IoT設備都是只需要配置網路網關,本身認證方式採取硬編碼方式,一旦入侵,只要對內網端口和地址進行掃描,嗅探數據包,一打一個準,咱們就從一個藍牙利用的小工具(Hcitool)談一談。
Hcitool集成在kali里面,先執行hciconfig檢查我們藍牙適配器是否被識別並啟用,然後啟動 hciconfig hci0 up。
我們只有一個藍牙適配器,啟動hci0,然後開始找找周邊的藍牙,我手機自己開了一個藍牙(藍牙系統所使用的波段為2.4 GHz ISM波段。其頻率範圍是2400 – 2483.5 MHz。BlueTooth 有79個射頻信道,按0-78排序,並於2402 MHz開始,以1 MHz分隔)。
發現我手機,oppo r15 的藍牙,咱們獲取更多的信息,hcitools inq。
通過hcitools,我們可以執行一些命令,比如:啟用iscan和禁用pscan等等操作。
Hcitools有很多用法,直接hcitool -h 就可以。
對於我們發現的設備,下一步可以進行嗅探。
工具:ubertooth,下載地址:https://github.com/greatscottgadgets/ubertooth;在此基礎上,還需要安裝一個安裝BLE解密工具crackle,下載地址:https://github.com/mikeryan/crackle(大家有興趣可以搬小板凳在共享單車旁邊開始操作,抓取藍牙開啟指令,也可以留言我要個授權搞一下)。
針對藍牙的安全,我們可以看到,做這種通用的安全協議本身,我們可以通過增加破譯每個PIN的時間: 對於加密過程來說,加密時間如果比原來增加一倍,那麼對於暴力攻擊來說,要想得到正確的PIN碼,便要增加密鑰空間的倍數。也就是說,對於PIN長度為4的密鑰來說,如果在藍牙設備每次配對時的加密過程時間增加l秒,那麼,對於暴力攻擊來說,它的每一次PIN的破譯過程便需要增加1秒,所以要想得到正確的PIN碼,對於PIN碼長度為4的密鑰來說,平均便需要l10∧4/20.36*10∧4=1小時的時間。而對於PIN碼長度為8的密鑰來說,平均便需要增加
l10∧8/20.3610∧4=10000小時的時間,從而可以看出,它的安全強度己經遠遠要超過原來的把PIN長度設置到12位的安全強度了。對於人們己經習慣的銀行系統的6位密碼來說,平均也需要l10∧6/20.3610∧4=100小時的時間。如果把中間的加密過程增加到2秒,那麼平均攻擊成功的時間便需要210∧6/20.36*10∧4=200小時的時間(此方法選自中國論文網-淺談藍牙的安全)。有關近場安全,現階段安全的做法就是加密,隱藏信號。
我們現在談一談IoT安全防禦的最後一塊,遠程控制,遠程控制就是那些我們大量直接裸漏的暴露在公網上的IoT設備,單單只靠IoT設備本身很難進行防禦。
這時候我們就不得不多現在裸露在公網的IoT設備的目前存在5大安全隱患。
也就是其實我們在做防禦的時候,只需要把他當成一個直接開放在公網上的脆弱的業務系統即可,也就是對身份認證、會話管理、訪問授權、數據驗證、配置管理、業務安全、漏洞安全等七個方面進行安全安全防禦即可,在出口部署下一代防火牆+WAF+APT,就能避免其中大部分安全問題,這就回歸了常規的安全,這里就不多說。
總結一下,這次安全防禦主要從三個方向去談了IoT設備的安全,物理,近場和遠程,現在市面上的安全設備,針對IoT的防禦很多都只是把IoT上的承載的功能系統作為純互聯網設備進行防禦(而且缺乏大量規則庫),面對近場和物理的防禦,現階段沒有一個好的解決辦法,接下來的文章,我們開始搞漏洞和規則庫吧(從物理,近場,遠程這三個方向)。
*本文原創作者:大胖,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載