【看雪2017安全開發者峰會演講回顧0x1】如何黑掉無人機

Editor發表於2017-11-21

PPT 下載附在文末


看雪編輯按:最近兩年越來越多的安全人員開始投入到 IoT裝置的研究熱中,常見的研究方向包括路由器、攝像頭、汽車等。並且隨著時間的推移其中所涉及的領域也在不斷增多,前段時間就曾曝出過美國國土安全部DHS團隊黑掉了一架波音757,這似乎聽起來離我們有些遙遠,但確實正在發生。此次議題是由謝君為我們帶來的如何黑掉無人機,其中就涉及了諸如飛控系統等專業領域的研究。而從最初的裝置拆解到各個晶片子系統的深入剖析都展現了演講者求索與收穫的一段心路歷程,相信現場很多的聽眾對於這種鑽研態度都是由衷的欽佩,再考慮到目前國內外這方面的公開資料都很少,其中的難度是可想而知。以下內容為謝君演講實錄,由看雪學院(微信公眾號:ikanxue)整理。

【看雪2017安全開發者峰會演講回顧0x1】如何黑掉無人機

謝君

阿里安全IoT安全研究團隊Leader,資深安全專家,12年安全領域工作經驗。現專注於IoT安全研究與 提供解決方案。

2016年發現小米整個智慧硬體生態高危遠端漏洞,在XPwn2016展示其漏洞利用並協助修復;

2016年發現美的智慧生態遠端高危漏洞,並協助修復;

2015年發現Broadlink整個智慧硬體生態高危遠端利用漏洞,在GeekPwn2015展示其漏洞利用;

2014年發現美國賓士高危遠端漏洞,並控制超過50輛賓士汽車。此前並發現過惠普,富士施樂印表機遠端漏洞和微軟高危漏洞;

2011年發現迅雷網路多個高危漏洞,並且驗證利用迅雷網路發起大規模DDOS攻擊。


【看雪2017安全開發者峰會演講回顧0x1】如何黑掉無人機


謝君:今天我分享的議題是如何黑掉某品牌的無人機。我在研究無人機的過程中從物理接觸和非物理接觸兩個方面對整個無人機進行系統化的研究,研究的過程其實也是一個學習的過程,所以今天我想跟大家分享一下我在這個研究過程中的一些收穫和所學到的一些東西。


無人機是個複雜的系統工程


自我介紹一下,我現在是在阿里安全負責IoT安全攻防研究以及安全解決方案,在安全領域也折騰了十幾年。現在專注於網際網路安全這一塊的研究,無人機對於我來講是一個比較新的東西,我接觸的時間也比較晚了,才有一年的時間。我在整個研究和學習的過程中,總結了無人機的一些功能,無人機系統一個複雜的系統工程,裡面涉及到領域實在是太多了、太複雜了,裡面涉及到結構工程、自動化控制,空氣動力學,計算機視覺處理以及各種感測器、無線通訊,並且涉及到人工智慧相關的深度學習。

對它有整體的感官,我整個系統全部拆開,發現裡面應用了哪些硬體,哪些感測器,哪些晶片。無人機這一塊涉及到不同的感測器以及控制系統,很多嵌入式晶片沒有這個OS的概念,所有程式碼是直接上位機執行,透過實時中斷以及計時器和IO的控制來完成整個系統的實時操作。

【看雪2017安全開發者峰會演講回顧0x1】如何黑掉無人機

我的分析是基於某品牌的無人機進行分析,包括無線通訊、飛行控制,以及微機電感測器、機器視覺處理,這些微控制晶片來自各個不同廠商。

這麼多的感測器晶片之間進行通訊,必須滿足相應的通訊規範,大家才能協同自如,所以產商設計了一套無人機各個模組之間的通訊協議,整個協議滿足它整個全系列消費級無人機的產品,定義最多不超過32個硬體功能模組,硬體功能模組下面可以定義子功能模組,比如說我們的飛控系統用03來表示,06表示飛控系統下面這個子控制功能,比如下面支援的飛機起降功能等。

我們可以看到攝像頭採集系統是用01的來編號的,雲臺控制系統是用04來編號的,而在傳輸過程中,這些編號將會透過演算法來編碼。這些不同的感測器之間通訊鏈路有多種,這裡面通訊協議按照他自己的一些劃分,有本地的,透過串列埠的,區域網路等等,在裡面用的最多的通訊協議是兩個,一個logic以及是V1,logic像程式間通訊的方式,V1指遠端不同硬體之間進行通訊的一種協議方式。

模組間通訊也做了一些相應的隔離,非常像現在的汽車系統,汽車有不同ECU各個模組,各個模組通訊也有一定的通訊協議和格式,也有一些閘道器隔離某一些子系統是不允許公共訪問的。像無人機裡面GPS模組的話,只允許飛控系統訪問,其他應用系統是不允許訪問,整個無人機的通訊的結構,類似於這張圖一樣,所有的不同的感測器之間通訊是有一定的路徑,而且也有一定的限制。這是無人機通訊格式,就是說他們有一定的規範比如說他的頭部一定是55開頭的,它的每一個包的長度不能超過多少個位元組,它的控制命令設定還有一些校驗位。並且,對於每一個子系統的編碼透過一定的演算法來計算的。

【看雪2017安全開發者峰會演講回顧0x1】如何黑掉無人機

無人機的核心中心橋的控制板,主要是基於LC1860SoC外加影像識別晶片,雙目避障,無線收發器,無線基帶,LightBridge,它的主要功能是整個系統的協調以及韌體更新和攝像內容資料編碼和圖象深度學習,ROI檢測之類的。這個LC1860晶片執行的是嵌入式Linux系統,下面是三星的EMCP,是集LPDDR和eMMc於一體的儲存晶片,作業系統就存放在這個晶片裡面。下面這一塊晶片intel Movidus MA2155,這是英特爾影像深度學習晶片,因為無人機不能聯網,無人機需要做實時的機器視覺分析,需要用到大量的向量執行,這個時候這個晶片的優勢就體現出來了,這個晶片在這個無人機上面的應用有視覺測距,障礙物識別,還有ROI,比如說你的飛機進行跟隨飛行的時候,跟隨一個人飛行的時候,透過CNN建立好的深度學習模型,來精確判斷。LATTICE的這塊FPGA晶片,主要是用於雙目避障功能,透過可見光反射回來檢測障礙物的存在。


root無人機


我們在研究IOT裝置的時候說的最多一個詞就是能否root這臺裝置,root掉裝置意味著我們可以獲得系統很高的控制權。我們為什麼要root無人機,我們root無人機目的是擴大它的攻擊面,更好研究無人機。我們在研究的過程中發現要root無人機,最好的辦法就是利用一個合適的漏洞,執行開啟Adb這個介面功能,就能得系統的root

shell了。如果你要是沒有漏洞的話,這個時候怎麼辦。這個時候我們在研究過程中發現有意思的辦法:可以不利用漏洞也可以root無人機。其實這個辦法也可以運用到很多的領域。像一些路由器。研究的過程中發現啟動指令碼里面有一個變數是控制adb功能開啟與否的,預設出出廠是這個ADB是不開啟的,ADB功能介面在安卓手機應用廣泛,怎麼開啟這個adb功能,一種是利用漏洞執行ADB_en.sh的指令碼,另外一種就是方法就是直接修改這個啟動指令碼的變數。

我們不透過漏洞的方式來root無人機,因為安卓系統是存在三星EMCP裡面,是集記憶體和儲存於一體的EMCP的晶片,如果我們可以修改這個晶片裡面的內容,我們就可以直接root無人機了。

【看雪2017安全開發者峰會演講回顧0x1】如何黑掉無人機

操作步驟是這樣子:首先找到這一塊儲存晶片的位置,把它電熱風槍吹下來,需要EMMC的讀書卡,把這個內容讀取出來,這個時候我們就找到了EMMC的讀卡器,把這個EMMC插到電腦上,這個時候可以看到有一個彈出,用儲存器裡面的空間和內容,找到那個設定除錯的變數的地方,修改了之後,再寫到EMCP裡面焊回來。這個裡面有一個小細節,因為這個儲存器裡面的內容是有一些分割槽,我們需要把這些系統分割槽直接掛在到電腦上面,用EXT4的方式掛在,修改完了以後再儲存,再剪輯切回去EMCP的晶片裡面,後續我們需要把它焊回去。再執行直接ADB開啟,就可以得到root的許可權,成功後可以看到它的系統資訊和程式。這裡面涉及到很複雜的問題,要手工脫焊和焊接的過程,這個晶片是BGA封裝,引腳多,引腳間距小,而且這個晶片底座裡面人為灌了一些黑膠,對於操作過程帶來很大的不便,而且操作不當,很容易使這個晶片廢掉了。手工操作的難度是非常高的。


飛控系統


【看雪2017安全開發者峰會演講回顧0x1】如何黑掉無人機

飛控系統是無人機裡面的核心。因為會蒐集到很多的無人機的各個感測器模組的一系資料,透過一些綜合的演算法來判斷飛控系統應該如何操作,飛控系統核心晶片用的ATSAME70Q21,這個不需要外接儲存器儲存它的部件以及演算法,與之相關有兩塊IMU陀螺儀以及加速度計,檢測這個飛機處於什麼狀態。氣壓計,主要是為了檢測這個飛機的高度,作為一個飛機高度的判斷因素。UbloxGPS模組,這一個可程式設計的模組,因為飛控和GPS通訊是有一個協議互動,並不是說任何一個GPS模組可以替換它,可以做一些欺騙GPS的事情。因為之前說用於替換GPS模組做GPS的切換。指南針模組,主要用於方向的定位。

智慧電源,智慧電源是用德州儀器MSP430G2755

16位的微控制晶片,它主要是收集了電源現在狀態,保持了我什麼時候放電,什麼時候透過飛控系統說我的電量還剩多少的時候應該返航。電調晶片,因為無人機有四個螺旋槳,四個馬達,每一個馬達需要一個電調的晶片控制轉速,控制不同的馬達的轉速和相位,來達到控制飛行姿態以及速度的操作。


視覺系統


【看雪2017安全開發者峰會演講回顧0x1】如何黑掉無人機

視覺系統是無人機裡面非常重要的功能,這裡面核心的一個處理晶片是用的英特爾的MA2155深度學習的處理晶片,飛機搭載攝像頭首先是可以進行影片的錄製、拍照,影像內容輸出給視覺處理晶片來完成視覺識別的一些特點功能,這裡面有一個功能叫做飛行跟隨,這個飛行跟隨就是在手機螢幕上選點跟隨飛行的目標,無人機就可以跟著他/它飛行了,這個時候就利用了這一塊晶片的強大深度學習的能力,感興趣的區域進行識別,人物、姿態,再有一個功能就是測距,透過MA2155這塊深度學習晶片來完成視覺測距的功能,飛機前面以及後面障礙物的距離我是透過這個圖象識別的方式來識別出來的。還有一個是雙目避障,這是觀測傾斜度70度是否有障礙物,是有兩個,一個接收端一個發射端,發射出去的光,透過反射回來,我要判斷右下角是否有障礙物。超聲波檢測下方障礙物以及檢測地面的功能。


無線通訊


無線通訊是無人機裡面最核心的一塊功能,也是最複雜的一塊功能。因為裡面涉及到控制系統和圖象傳輸。基本上的原理就是前端的收發器收到訊號,透過基帶系統解調,解碼以後透過遙控器的LPC1549晶片處理進而透過Cypress的USB晶片反饋到手機上。

無線通訊的特點,透過OFDM方式進行圖傳以及數控的傳輸,它的特點就是控制通道資料透過遙控器透過1Mhz頻寬的跳頻傳送,飛機回傳的圖象和控制通道回傳資料是透過10Mhz頻寬進行定頻傳輸。為了保證數控通道及時性,採取定時跳頻的方式。因為有可能訊號會被干擾,在某一個特定的頻點的時候會被干擾到,如果被干擾了的話,飛機有可能收不到遙控器的一些資料,這個時候我們就需要切換不同的頻點,找訊雜比高的地方,保證它的可靠性。它在FCCID通訊管理局申請的5G頻段的頻寬執照在5727-5821Mhz,但是實際上,它的操作已經超過了它的通訊管理局規定的頻段,濫用這個頻段的資源,在我們的研究過程中發現已經到了5845Mhz。遙控器跟飛機怎麼樣進行識別,這需要一個配對以及連線的過程。配對的唯一資訊是來自於遙控器,所有資訊都是遙控發給無人機,配對成功以後接下來的過程可以在操作的過程中識別到哪個是我控制無人機,而且這些控制的配對資訊都是透過搖控器的晶片LPC1549的序列號來生成的。

【看雪2017安全開發者峰會演講回顧0x1】如何黑掉無人機

無線通訊系統架構,首先是遙控器先初始化的晶片,初始化基帶系統各個暫存器,暫存器裡面存入了唯一可以配對碼的資訊。這個配對碼是有五個位元組,寫入到暫存器裡面,真正用到只有三個位元組,所以在未來需要無線劫持這個無人機,就有了可能。無線通訊傳輸的過程其實是非對稱的傳輸,無人機遙控器發的資訊是跳頻傳輸給飛機,接收端也是跳頻接收,但是圖傳和下行的通道是由飛機是一個定頻的方式來發到,而且這些跳頻演算法都是透過程式碼來實現的。旁邊這張圖就是遙控器用於檢測飛機是否配對上的演算法檢測基帶晶片SPI地址0xE4、0xE5、0xE6進行比較。所以劫持一臺無人機,其實我們是透過可以暴力破解的方式,用所有的金鑰空間進行離線的破解,找到配對碼,去控制這個無人機,在空中的時候就可以動態改掉這個配對碼,然後這個無人機就屬於你了。

無人機反調對抗技術


【看雪2017安全開發者峰會演講回顧0x1】如何黑掉無人機

我們也發現了一些硬體的反調技術和軟體的反調技術,比如說用atmel晶片的安全位置1,可以阻止外接硬體模擬器的掛載除錯,遙控器的LPC1549透過ADC的粒度檢測來檢測偵錯程式,LightBridge用的stm32F103晶片透過remap

SWDIO來使用swd除錯介面失效,透過遙控器的硬體開關電路來阻止LPC1549晶片硬體模擬除錯。

最後還有很多工作還沒有來得及做,未來會更加深入的研究各個硬體模組的功能hacking與未來一些想法的驗證工作。

謝謝大家。


PPT下載:https://bbs.pediy.com/thread-222879.htm

相關文章