技術(shù)!315晚會報(bào)道的無人機(jī)是怎么被劫持的?
0x00 背景
在2015年GeekPwn的開場項(xiàng)目中,筆者利用一系列漏洞成功演示劫持了一架正在飛行的大疆精靈3代無人機(jī),奪取了這臺無人機(jī)的控制權(quán),完成了可能是全球首次對大疆無人機(jī)的劫持和完整控制。GeekPwn結(jié)束后,組委會立即將漏洞通知給官方,而大疆也很快完成了漏洞的修復(fù)。今年的3月15號,大疆發(fā)布了全新一代的精靈4代無人機(jī),精靈3代從此退居二線;同時央視315晚會也對去年GeekPwn的這個劫持項(xiàng)目進(jìn)行了詳細(xì)的報(bào)道。
考慮到這些漏洞的修復(fù)已經(jīng)過了足夠長的時間,我們決定公開漏洞的完整細(xì)節(jié)和利用流程,希望能為國內(nèi)的方興未艾的射頻安全研究圈子貢獻(xiàn)自己的一份力量。
本文爭取以零基礎(chǔ)的角度對整個發(fā)現(xiàn)和利用過程抽絲剝繭,并盡量詳細(xì)闡述這個過程中涉及的技術(shù)細(xì)節(jié)。本文涉及的技術(shù)細(xì)節(jié)適用大疆精靈3代,2代和1代,不適用最新的精靈4代無人機(jī)。由于行文時間倉促,如有疏漏敬請斧正。
0x01 攻擊場景討論:風(fēng)險真實(shí)存在但可控
可能是因?yàn)榻鼉赡隉o人機(jī)的曝光率頗高,去年GeekPwn上完成無人機(jī)劫持項(xiàng)目后感興趣的電視臺和媒體并不少,也引發(fā)了普通群眾的討論和擔(dān)心。
雖然我們已經(jīng)證明并演示了精靈系列無人機(jī)是可以被劫持和完整控制的,但想要在實(shí)際環(huán)境中的直接將公園、景區(qū)、街道上空飛行的無人機(jī)據(jù)為己有,信號增益和劫持后的穩(wěn)定控制仍然是需要深入研究的問題?;蛟S在官方遙控器上加載自己的萬能遙控器ROM,然后直接借用官方遙控器的信號增益和控制系統(tǒng),會是一個可行的方案。
此外,造成劫持的漏洞已經(jīng)得到合理的修復(fù),新版ROM發(fā)布也已經(jīng)超過4個月。隨著安全研究者的攻防研究以及官方的重視,實(shí)際能攻擊的精靈無人機(jī)也會越來越少。
所以,我們的結(jié)論是,普通群眾不用過于擔(dān)憂無人機(jī)的安全問題,反而應(yīng)該更關(guān)注越來越多的走入普通人家的智能設(shè)備的安全問題。順便提一下,這塊我們團(tuán)隊(duì)亦有關(guān)注(比如同樣是參加了GeekPwn 2015和央視315晚會的烤箱和POS機(jī)),后續(xù)還會有更多的研究成果放出。
好了,現(xiàn)在開始我們的無人機(jī)劫持之旅。
0x02 抽絲剝繭:精靈系列遙控原理全解析
0x0200 射頻硬件初探
要黑掉無人機(jī),第一步要做的是信息收集。我們先來了解一下精靈3代所使用的射頻硬件。
圖1 拆開的精靈3代遙控器(左圖)和無人機(jī)主機(jī)(右圖)
左翻右翻,經(jīng)過了一系列艱難的電焊拆解和吹風(fēng)機(jī)刮除保護(hù)膜后,終于找到了負(fù)責(zé)射頻通信的芯片和負(fù)責(zé)邏輯的主控芯片,并識別出了它們的型號??吹贸鰜泶蠼畬﹄娐钒蹇桃庾隽艘恍┓啦鸾夂托畔⒈Wo(hù)。
從下面的圖中能識別出來,主控芯片選擇的是知名大廠NXP的LPC1765系列,120MHz主頻,支持USB 2.0,和射頻芯片使用SPI接口進(jìn)行通訊。而射頻芯片則是國產(chǎn)BEKEN的BK5811系列,工作頻率為5.725GHz – 5.852GHz或者5.135GHz – 5.262GHz,共有125個頻點(diǎn),1MHz間隔,支持FSK/GFSK調(diào)制解調(diào),使用ShockBurst封包格式,并且支持跳頻,使用經(jīng)典的SPI接口進(jìn)行控制。
圖2 主控芯片
圖3 射頻芯片
而這個參數(shù)強(qiáng)大的國產(chǎn)射頻芯片激起了我們的興趣,經(jīng)過一些挖掘,發(fā)現(xiàn)這個芯片原來山寨自NORDIC的nRF24L01+,沒錯,就是這個號稱性價比之王的nRF24L01+ 2.4GHz射頻芯片的5.8GHz版本,更有意思的是這兩個不同廠家芯片的datasheet中絕大部分內(nèi)容都是通用的。
通過這些基本的硬件信息確定了射頻的頻段后,我們馬上拿出HackRF在gqrx中觀察5.8GHz的信號??粗俨紙D(下圖4)中跳來跳去的小黃線,我們意識到精靈3的射頻通訊應(yīng)該是跳頻的,而在不知道跳頻序列的情況下,無法對射頻信號進(jìn)行完整解調(diào)。此時HackRF的射頻分析基本上派不上用處,唯有通過邏輯分析儀來看看射頻芯片是如何跳頻的。
圖4 使用gqrx觀察射頻信號
0x0201 不得已的控制邏輯追蹤
從上一節(jié)獲得的硬件信息中,我們已經(jīng)知道主控芯片和射頻芯片之間是采用SPI接口進(jìn)行通訊和控制的,因此只要從BK5811的引腳中找到SPI需要的那四個引腳,連上邏輯分析儀,對這四個引腳的電位變化進(jìn)行采樣分析,我們就能看到主控芯片是如何控制射頻芯片的跳頻了。
0x020100 SPI接口定義
SPI協(xié)議本身其實(shí)挺簡單的,在CS信號為低電位時,SCK通過脈沖控制通訊的時鐘頻率,每個時鐘周期里,SI為輸入,SO為輸出,通過SI和SO在每個時鐘里高低電位的切換構(gòu)成一個bit,每八個時鐘周期構(gòu)成一個字節(jié),從而形成一個連續(xù)的字節(jié)流,一個字節(jié)流代表一個命令,由射頻芯片的datasheet約定好。SPI協(xié)議通訊示意圖如下所示,其中四個引腳分別為:
SO(MISO):主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入。
SI(MOSI):主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出。
SCK(CLK):時鐘信號,由主設(shè)備產(chǎn)生。
CS(CSN):從設(shè)備使能信號,由主設(shè)備控制。
圖5 SPI協(xié)議通訊示意圖
0x020101 連接邏輯分析儀
通過BK5811的datasheet,我們定位到了SPI通信的那幾個引腳(如圖6),通過萬用表確認(rèn)引腳連通性,然后在可以電焊的地方通過飛線連上邏輯分析儀的測試鉤,折騰了很久總算連上了(如圖7)。
圖6 BK5811中SPI引腳定義
圖7 通過電焊和飛線將BK5811的SPI引腳連上邏輯分析儀
隨后,從邏輯分析儀中,我們得到了作為安全人員來說最喜歡的二進(jìn)制數(shù)據(jù)流。
0x020102 射頻芯片控制命令解析
在BK5811的datasheet中,明確定義了它所支持的每一條SPI命令。通過連續(xù)的電位變化傳過來一個完整的SPI命令如下所示:
圖8 邏輯分析儀中的一個SPI命令
其中0x30是命令號,高3位代表操作是寫B(tài)K5811的寄存器,而寄存器id由這個字節(jié)中的低5位決定,是0x10,而0x10代表寫的內(nèi)容是ShockBurst的發(fā)送地址(類似以太網(wǎng)的mac地址)。而后面五字節(jié)(0x11 0x22 0x33 0x44 0x19)則是發(fā)送地址本身。
0x020103 跳頻邏輯總結(jié)
通過一段時間的觀察,我們發(fā)現(xiàn)SPI命令頗為簡單,為了方便觀察大量命令的序列,我們按照datasheet中的定義寫了一個解析腳本,在腳本的幫助下終于整理清楚了跳頻的流程。
圖9 SPI命令解析腳本
在大疆的定義下,完整的跳頻序列有16個頻點(diǎn),這些頻點(diǎn)在遙控器和無人機(jī)主機(jī)配對(一般發(fā)生在出廠前)時通過隨機(jī)產(chǎn)生,一旦確定后就存儲固定起來,除非手動重新配對。
遙控器打開后,會以7ms的周期,按照跳頻序列指定的順序來變化射頻發(fā)射的頻率,16次(112ms)一個循環(huán),而在每一個周期內(nèi),發(fā)射一次遙控的控制數(shù)據(jù)。一個典型的SPI命令序列如:<跳頻> 1ms <發(fā)包> 6ms
圖10 遙控器SPI命令數(shù)字邏輯示意圖
對于無人機(jī)主機(jī),則是以1ms的周期來變化接收信號的頻率,一旦收到來自遙控器的射頻信號(BK5811會使用上文所說的發(fā)送和接收地址來識別通過),則轉(zhuǎn)而進(jìn)入7ms的周期,和遙控器保持同步。一旦信號丟失,馬上又恢復(fù)1ms的跳頻周期。一個典型的SPI命令序列如:<跳頻> <查包> 1ms <查包> 1ms <查包> 1ms <查包> 1ms <查包> 1ms <查包> 1ms <查包>。
圖11 無人機(jī)主機(jī)SPI命令數(shù)字邏輯示意圖
從上面的分析我們能注意到,遙控器只負(fù)責(zé)發(fā)送數(shù)據(jù),無人機(jī)主機(jī)只負(fù)責(zé)接收數(shù)據(jù),兩者之間并無射頻上的交互。這為我們后面覆蓋遙控器的信號打好了基礎(chǔ)。
0x0202 模擬信號到數(shù)字信號的鴻溝
在搞清楚遙控的工作流程后,我們知道是可以對其進(jìn)行完全的模擬(先假設(shè)射頻序列已知),創(chuàng)造出一個以假亂真的遙控來。但在加工二進(jìn)制命令前,如何完成二進(jìn)制命令中數(shù)字化的數(shù)據(jù)和真實(shí)世界中連續(xù)的電磁波之間的轉(zhuǎn)換困擾了我們很久,筆者甚至很長一段時間都在想重回大學(xué)修滿通信專業(yè)的科目。
0x020200 電磁波和GFSK制式的基本原理
先補(bǔ)一點(diǎn)從學(xué)通信的同事那里偷師回來的基本常識。
電磁波在我們的世界中連續(xù)的傳播,通過特定的方式可以使其攜帶二進(jìn)制信息,這個方式稱為調(diào)制解調(diào)。發(fā)送數(shù)據(jù)時,一般是將的調(diào)制好的基帶信號(含二進(jìn)制信息)和載波信號疊加后進(jìn)行發(fā)送,通?;鶐盘柕念l率會比載波信號頻率低很多,如BK5811的載波信號頻率在5.8GHz左右,但基帶信號的頻率僅為2MHz。而接收方通過解調(diào)和濾波,將基帶信號從接收到的載波信號中分離出來,隨后進(jìn)行采樣和A/D轉(zhuǎn)換得到二進(jìn)制數(shù)據(jù)。
FSK(Frequency-shift keying)是一種經(jīng)典的基于頻率的調(diào)制解調(diào)方式,其傳遞數(shù)據(jù)的方式也很簡單。例如約定500KHz代表0,而1000KHz代表1,并且以1ms作為采樣周期,如果某1ms內(nèi)基帶信號的頻率是500KHz,這表明這是一個0,而如果下1ms內(nèi)基帶信號的頻率為1000KHz,那表明下一位二進(jìn)制比特是1。簡單來說,F(xiàn)SK制式就是通過這樣連續(xù)的電磁波來連續(xù)的傳遞二進(jìn)制數(shù)據(jù)。
圖12 FSK調(diào)制解調(diào)示意圖
而GFSK制式僅僅是在FSK制式的基礎(chǔ)上,在調(diào)制之前通過一個高斯低通濾波器來限制信號的頻譜寬度,以此來提升信號的傳播性能。
0x020201 GFSK解調(diào)和IQ解調(diào)
在理解了GFSK制式的原理后,接下來我們嘗試在HackRF的上寫出GFSK解調(diào)腳本,從一段遙控實(shí)際發(fā)出的電磁波中提取二進(jìn)制數(shù)據(jù)(如下圖13)。需要注意的是HackRF收發(fā)的射頻數(shù)據(jù)另外采用了IQ調(diào)制解調(diào),代碼上也需要簡單處理一下。
圖13 在空中傳播的GFSK電磁波(IQ制式)
由于沒有找到現(xiàn)成的解調(diào)代碼,只好在MATLAB上(如下圖14)摸爬滾打了許久,并惡補(bǔ)了許多通信基礎(chǔ)知識,折騰出(如下圖15)GFSK解調(diào)腳本,并成功模擬遙控器的跳頻邏輯,能夠像無人機(jī)那樣獲取每一次跳頻的數(shù)據(jù)。至此, 我們再次得到了作為安全人員來說最喜歡的二進(jìn)制數(shù)據(jù)流。
圖14 MATLAB中模擬GFSK解調(diào)
圖15 GFSK解調(diào)腳本工作圖
0x020202 遙控控制數(shù)據(jù)總結(jié)
經(jīng)過分析,一條典型的遙控控制數(shù)據(jù)如下(圖16)所示(最新版本固件和稍舊版本的固件協(xié)議,格式略有不同):
圖16 兩種類型的遙控控制數(shù)據(jù)
最開始的5個字節(jié)為發(fā)送方的ShockBurst地址,用于給無人機(jī)驗(yàn)證是不是配對的遙控器。
接下來的26字節(jié)為遙控?cái)?shù)據(jù)本身(上下,左右,油門,剎車等遙控器上的一切操作),我們詳細(xì)來講解下。
遙控器上的控制桿的一個方向(如上+下,左+右)由12bit來表示。如表示左右方向及力度的數(shù)值power_lr由上數(shù)據(jù)的第5個字節(jié)和第6個字節(jié)的低4位決定,控制桿居中時power_lr為0x400(1024),控制桿拉至最左時power_lr為0x16C(364),而拉至最右時power_lr為0x694(1684)。也就是說,遙控器可以將控制桿左和右,力度可分為660級,并在控制數(shù)據(jù)中占用12bit傳輸給無人機(jī)主機(jī),主機(jī)針對不同的力度執(zhí)行不同的飛行行為。
圖17 遙控控制數(shù)據(jù)解析代碼片段
其他遙控控制桿的數(shù)據(jù)也非常類似,故不再贅述。值得注意的是,所有26字節(jié)的遙控控制數(shù)據(jù)是一次性的發(fā)給無人機(jī)的,故上下,左右,前進(jìn)后退,油門剎車等所有行為都是并行無干擾的。這也是無人機(jī)遙控性能指標(biāo)中經(jīng)常說的支持6路信號,12路信號的含義。
控制數(shù)據(jù)中最后的1個字節(jié)位CRC8校驗(yàn)位(舊版是CRC16),是前面的31字節(jié)的CRC8/CRC16校驗(yàn)結(jié)果,校驗(yàn)錯誤的數(shù)據(jù)將被拋棄。
0x0203 遙控器和無人機(jī)通訊邏輯總結(jié)
通過以上漫長的分析過程,我們總算完全搞懂了在遙控器上撥動控制桿的行為,是如何一步步反饋到無人機(jī)的飛控程序來完成對應(yīng)的飛行行為。簡單整理下:
a) 遙控器和無人機(jī)開機(jī)后,遙控器負(fù)責(zé)發(fā)送數(shù)據(jù),無人機(jī)負(fù)責(zé)接收數(shù)據(jù)。它們通過共同的跳頻序列的高速跳頻來保持一個數(shù)據(jù)鏈路,鏈路故障有一定能力能迅速恢復(fù)。
b) 無人機(jī)每7ms就會收到一次遙控器發(fā)出的32字節(jié)控制數(shù)據(jù),控制數(shù)據(jù)只有一條命令一種格式,所有控制桿和開關(guān)的狀態(tài)會一次性發(fā)送到無人機(jī)。無人機(jī)收到數(shù)據(jù)后會進(jìn)行地址校驗(yàn)和CRC校驗(yàn),確保數(shù)據(jù)是正確無誤的。
c) 用戶在操縱遙控器的過程中,操控的行為和力度都會在7ms內(nèi)通過那32字節(jié)控制數(shù)據(jù)反饋至無人機(jī),接著由無人機(jī)的飛控程序來完成對應(yīng)的飛行行為。
0x03 各個擊破:完全控制無人機(jī)
從遙控器的通訊邏輯來看,想要通過HackRF這類SDR設(shè)備覆蓋遙控器發(fā)出的射頻數(shù)據(jù)來劫持無人機(jī)。必須解決以下幾個問題:
a) 雖然通過HackRF來收發(fā)GFSK數(shù)據(jù)已經(jīng)沒有問題,但不知道跳頻序列根本無法和無人機(jī)保持同步。
b) 如何打斷遙控器原本和無人機(jī)之間的穩(wěn)定射頻鏈路,并同時建立和無人機(jī)之間新的穩(wěn)定鏈路。
c) 大疆遙控器的射頻功率做了大量優(yōu)化,有效控制距離達(dá)一公里,HackRF的射頻頻率難以企及。
下面我們來看看如何逐個擊破這幾個問題。
0x0300 偽造遙控器:信道的信息泄漏漏洞
在通過腳本對遙控器信號進(jìn)行GFSK解調(diào)時,我們發(fā)現(xiàn)了BK5811芯片一個奇怪的現(xiàn)象:芯片在某個頻道發(fā)送數(shù)據(jù)時,會同時向臨近的特定頻道發(fā)送同樣內(nèi)容數(shù)據(jù)內(nèi)容。舉個例子來說,同在+7ms這一時刻,除了會向13號頻道發(fā)送屬于這個頻道的數(shù)據(jù)外,還會向其他一些特定的頻道發(fā)送原本屬于13號頻道的數(shù)據(jù)。
+ 7ms: Channel 13,
+ 7ms: Channel 09,
+ 7ms: Channel 21,
這個奇怪的現(xiàn)象雖然不會影響射頻的功能,只是多了一些冗余數(shù)據(jù),但卻成了我們得到遙控器跳頻序列的突破點(diǎn),實(shí)實(shí)在在的構(gòu)成了一個信息泄露漏洞。
我們可以通過腳本,從5725MHz到5850MHz進(jìn)行遍歷,每次隔1MHz,剛好覆蓋BK5811的每一個頻道。遍歷監(jiān)聽時,考慮單個頻點(diǎn)的情況,我們能得到冗余數(shù)據(jù)(假設(shè)監(jiān)聽61號頻道)如下:
+ 0ms: Channel 61,
+ 7ms: Channel 13,
+ 21ms: Channel 09,
+ 112ms: Channel 61,
因?yàn)槲覀円呀?jīng)明確112ms是一次跳頻序列的循環(huán),那么從冗余數(shù)據(jù)中我們可以推論:
ch61 + 1 Step(7ms) = ch13
ch13 + 3 Step(21ms) = ch09
ch09 + 12 Step(84ms) = ch61
換成文字結(jié)論即是:如果61號頻道是跳頻序列的第1個,那么13號頻道是第2個,9號頻道是第4個,一個一個頻道的去遍歷,就可以把這個序列補(bǔ)充完整。實(shí)際遍歷時我們發(fā)現(xiàn),HackRF腳本僅需要30到120秒,不需要遍歷全部127個頻道,即可推論和補(bǔ)齊完整的16個頻點(diǎn)及跳頻序列(如下圖所示)。
圖18 HackRF腳本遍歷后得到完整的跳頻序列
通過這個特殊的信息泄露漏洞,配合遙控器的調(diào)頻規(guī)律可快速得到跳頻序列,但我們也不清楚為什么BK5811芯片會存在這樣的信息泄露漏洞。隨后我們拿nRF24L01+也做了類似的測試,發(fā)現(xiàn)nRF24L01+也同樣會產(chǎn)生同樣的問題。
0x0301 劫持無人機(jī):信號覆蓋漏洞
下面來看看信號覆蓋的問題如何解決。有個關(guān)鍵的前提是遙控器只發(fā)數(shù)據(jù),無人機(jī)只收數(shù)據(jù),它們之間沒有交互。
在之前進(jìn)行邏輯分析的時候我們發(fā)現(xiàn),不管無人機(jī)是1ms跳頻一次還是7ms跳頻一次,它實(shí)際上只會接收跳頻完畢后最早發(fā)給它的合法數(shù)據(jù)包。正常情況下可能是跳頻完畢后的第5ms時,收到了遙控器發(fā)過來的數(shù)據(jù),再下一次跳頻后的5ms時,再收到遙控器發(fā)過來的下一次數(shù)據(jù)。
那如果我們能一直早于遙控器發(fā)出數(shù)據(jù),無人機(jī)豈不是就直接使用我們的數(shù)據(jù)了?確實(shí)是這樣的。假設(shè)我們的控制腳本中設(shè)置為6ms跳頻,我們很快能奪取無人機(jī)的控制權(quán)(7次跳頻內(nèi))。但遙控器也會奪回控制權(quán),最終就會出現(xiàn)無人機(jī)有1/7的數(shù)據(jù)來自遙控,6/7的來自黑客的局面。
這其實(shí)是一場信號爭奪戰(zhàn),那么有沒有辦法讓無人機(jī)更穩(wěn)定的更穩(wěn)定接收我們的信號呢?如果我們把跳頻時間設(shè)置為 6.9ms,跳頻后每隔0.4ms(Arduino UNO R3的速度極限)發(fā)送一次遙控控制數(shù)據(jù)的話,雖然奪取無人機(jī)控制權(quán)需要更長的時間(約10s),但一旦獲得控制權(quán),在0.4ms發(fā)送一次數(shù)據(jù)的高刷新率覆蓋之下,遙控器基本沒可能奪回控制權(quán)。
圖19 偽造遙控器的SPI命令數(shù)字邏輯
至此,劫持無人機(jī)的基本技術(shù)問題已經(jīng)通過一個信息泄漏漏洞和一個信號覆蓋漏洞解決了。
0x0302 穩(wěn)定性 & 可用性優(yōu)化
在實(shí)現(xiàn)控制腳本的過程中,HackRF存在的兩個嚴(yán)重限制:一方面HackRF使用USB通訊接口決定了它的通訊延遲巨大(指令延遲約為30ms),上文中動輒0.4ms的控制精度HackRF做不到;另外一方面,HackRF在5.8GHz頻段的信號衰減嚴(yán)重(信號強(qiáng)度僅為遙控器的1%,可能是通用天線在高頻段增益偏低),估計(jì)只有在貼著無人機(jī)射頻芯片的情況下才有作用。天線問題故無法使用HackRF劫持無人機(jī)。
靈機(jī)一動,我們想到了和遙控器類似的做法:通過Arduino UNO R3單片機(jī)平臺來操作BK5811芯片,直接在Arduino上實(shí)現(xiàn)我們的控制邏輯。當(dāng)然,再加一個某寶上淘的有源信號放大器,如下圖所示。根據(jù)測試,有效控制范圍為10米左右。
圖20 無人機(jī)劫持模塊全家福
最終,通過了漫長的分析和各種漏洞利用方法的嘗試后,我們完成了對大疆無人機(jī)的劫持。通過HackRF遍歷和監(jiān)聽,然后將序列輸入到Arduino中,在Arduino中完成對無人機(jī)信號的劫持,最后來通過Arduino上連接的簡易開關(guān)來控制無人機(jī)??刂菩Ч梢詤⒖催@個央視315中的視頻片段。
0x04 后記:攻是單點(diǎn)突破,防是系統(tǒng)工程
從漏洞分析和利用的過程來看,大疆在設(shè)計(jì)無人機(jī)和射頻協(xié)議時確實(shí)考慮了安全性的問題,其中跳頻機(jī)制雖然很大程度上提升了協(xié)議的破解難度,但卻被過度的依賴。筆者和團(tuán)隊(duì)長期從事騰訊產(chǎn)品的漏洞研究工作,深知如所有其他漏洞攻防場景一樣,分散而孤立的防御機(jī)制跟本無法抵御黑客的突破或繞過,指望一個完美的系統(tǒng)來抵御黑客,如同指望馬奇諾防線來抵御德國軍隊(duì)的入侵一樣不現(xiàn)實(shí)。而更現(xiàn)實(shí)情況是攻和守的不對稱,攻擊者利用單點(diǎn)的突破,逐層的推進(jìn),往往會領(lǐng)先防御者一大截。
防御者就無計(jì)可施了嗎?當(dāng)然不是。聰明的防御者一定懂得兩個系統(tǒng)性的思路:未知攻焉知防和借力。一方面防守者必須是優(yōu)秀的攻擊者,才有可能嗅得到真正攻擊者的蛛絲馬跡,才有可能在關(guān)鍵節(jié)點(diǎn)上部署符合實(shí)際情況;另外一方面防守者必須借助自己是在企業(yè)內(nèi)部這一優(yōu)勢和業(yè)務(wù)并肩作戰(zhàn),利用業(yè)務(wù)的資源和數(shù)據(jù)這些攻擊者拿不到的資源,配合對攻擊的理解,建立對攻擊者來說不對稱的防御系統(tǒng)。
另外一個層面,智能硬件行業(yè)各個廠商對安全的重視令人堪憂。作為無人機(jī)行業(yè)絕對第一的大疆,尚且存在嚴(yán)重的安全問題,更不要說其他公司——筆者和TSRC物聯(lián)網(wǎng)安全研究團(tuán)隊(duì)近兩年業(yè)余時間對智能硬件安全的研究也印證了這個結(jié)論。二進(jìn)制漏洞的復(fù)雜性和門檻決定了這種漏洞類型很少有機(jī)會出現(xiàn)在公眾的視野中,但在更隱晦的地下,二進(jìn)制漏洞攻擊者的力量正在以防御者無法企及的速度悄然成長。也許等到阿西莫夫筆下《機(jī)械公敵》中的機(jī)器人社會形態(tài)形成時,我們要面對的不是人工智能的進(jìn)化和變異,而是漏洞攻擊者這種新時代的恐怖分子。
最后,感謝我有一把刷子、zhuliang、泉哥、lake2在整個破解過程中的支持。