AirHopper:使用無線電突破獨立網路和手機物理隔離(上)
摘要
信息是現代企業最重要的資產,備受競爭對手的覬覦。在涉及到高度敏感的數據時,一家企業可能會採用物理隔離方法,切斷內部網路與外部世界之間的網路連接。近年來,雖然實踐(例如Stuxnet)證明入侵採用物理隔離的網路是具有可行性的,但從一個物理隔離網路中攫取數據仍然被認為是高級網路攻擊中最具挑戰性的階段之一。
本文提出了一款分支型惡意軟體「AirHopper」,該軟體可以通過使用FM信號突破獨立網路和附近受感染手機之間的物理隔離。眾所周知,軟體可以在一個視頻顯示器中有意地創建無線電發射信號,這是手機首次在攻擊模式中被作為惡意無線電信號的預期接收器加以考慮。本文對網路的攻擊模型及其局限性進行了詳細分析,並討論了實踐過程中的相關注意事項(如隱身和調製方法)。最後,本文對AirHopper進行了評估,並展示了手機利用1360Bps(位元組/秒)的有效帶寬從距離1~7米處的物理隔離計算機上攫取文本和二進位數據的過程。
1. 前言
由於現代企業依賴於計算機網路傳送各種信息,因此這種網路是惡意競爭對手賺錢的目標。維護網路的安全是一項十分複雜的任務,涉及主機級防護、網路級防護、網關和路由器級防護等等。然而,只要區域網與外部世界(例如網際網路)相連接,則無論採用何種防護級別,不斷創新、堅持不懈的攻擊者最終將會找到一種攻破網路的方法,從而實現竊聽信息以及向外傳輸敏感數據的目的。
因此,當一個網路被用於提供高度敏感數據,或與存儲或處理此類數據的計算機相連時,人們經常會採用所謂的「物理隔離」方法。採用物理隔離的網路與外部世界之間不存在任何物理網路連接(有線或無線),也不會通過另一個安全性較低的網路直接或間接地與外部世界相連。但是,僱員卻可能會將他們的手機攜帶至企業的工作場所周圍,也許恰好位於某個物理隔離網路中一台機密計算機的附近。儘管企業擁有合理的安全管理程序,但這種情況還是有可能出現,且並不需要員工懷有惡意企圖。
由於現代手機安裝 FM 無線電接收器的比例越來越大,這種情況的出現就會變得越來越普遍[1][2][3]。只要擁有適當的軟體,一台受感染的計算機就能利用與視頻顯示適配器(視頻顯示卡)相關的電磁輻射生成兼容的無線電信號。這種由發射器與廣泛使用的移動式接收器構成的組合,可以創造一種無法被一般安全設備監控到的潛在隱蔽通道。
本文展示了如何使用配備FM接收器的手機從一台受感染的計算機中收集散發的、包含敏感信息的無線電信號。雖然攻擊模型有些複雜,但並沒有超出一個熟練且持久型攻擊者的能力。一旦攻擊成功,攻擊者則可能會從物理隔離網路中收集到有價值的信息。
1.1 手機中的FM接收器
FM無線電接收器於1998 年前後首次引入行動電話,並隨著現代智能手機的出現而變得越來越普遍。不同於早期的猶豫不決,現在的大多數主要運營商和製造商都在努力將FM 接收器整合進它們的產品中。微軟已表示支持 FM,並宣布將其應用到 Windows Phone 8 的一次更新升級中[4]。在諾基亞於2012 年和 2013 年出售的近7億部手機中,Lumia 520 和 Lumia 920這兩款暢銷型手機都已支持 FM 無線電功能。在 Android 市場上,超過 450 款手機支持 FM 收音機功能[1][2]。許多功能型手機(低端手機)和音樂播放器(例如iPod nano)中也集成了FM接收器。此外,美國通過制定相關法律強制要求在手機中集成FM接收器,以備緊急情況下使用[5]。
2. 攻擊模型
攻擊模型假定惡意代碼可以安裝並運行在:(a)包括一台或多台計算機的目標網路上;(b)可能位於目標系統附近的移動設備上。隨著當前「自帶移動設備」 (BYOD)的普及,手機經常會進出企業的物理設備周邊場所。
此類攻擊包含四個主要步驟:(1)將惡意代碼插入到目標系統中;(2)利用惡意代碼感染手機;(3)利用手機建立一個指揮控制(C&C)通道;(4)檢測所發出的信號並將其傳送給攻擊者(圖1)。
圖1:AirHopper演示。行動電話(B)接收了目標計算機(A)發射的無線電信號。在該演示中,(A)和(B)之間的距離為4米。
2.1 感染目標計算機
一旦物理隔離屏障被破壞,惡意代碼就能夠感染目標網路中的系統。正如Stuxnet[6][7]和Agent.btz[8]所展示的,這種破壞行為在某種程度上可以實現。因此,假設大多數類似的情況並未公開發布過是合理的。攻擊媒介可能是(a)可移動介質,或(b)外包的軟體或硬體組件。一旦惡意代碼在目標網路的一個節點上運行,它就可能會進一步傳播並感染其他節點。
2.2 感染手機
由於手機可以通過眾多介面(如蜂窩網路、藍牙、Wi-Fi以及與其他設備相連的物理連接)連接外部世界,因此針對手機的攻擊媒介範圍要比目標計算機廣泛得多。最可能發生的情況是,針對目標企業中那些最有可能工作在目標計算機附近的員工,攻擊者會試圖定位並感染他們的手機。類似於早期階段的高級持續性威脅(APT),這一步可以利用數據挖掘、社交網路、網路釣魚和類似的社會工程方法。手機的感染途徑可以是通過互聯網、訪問受感染的網址、攜帶惡意附件的電子郵件或安裝惡意的應用程序。其他的感染途徑包括物理訪問、SMS、漏洞和干擾信號介面[9][10]。
2.3 建立指揮控制通道
在感染手機後,攻擊者應該建立指揮控制通道。這一過程可以通過網際網路 (數據或Wi-Fi)或SMS,其中信息的發送和接收可以在不引起用戶警惕的情況下完成。如果攻擊者所用的合適連接受限或不連續,則在手機上運行的惡意程序可能會先存儲所積累的資料,並在所需的連接可用時再將其發送給攻擊者。
2.4 無線電監測
手機應監管無線電頻道,以檢測所發出的信息。當檢測到所發出的無線電廣播時,設備將對此加以解碼。監測可能是:(1)連續的,只要手機處於激活狀態;(2)暫時的,須基於使用者的工作時間表;(3)受空間條件限制的,須基於使用者的當前位置(如 GPS、無線網路基站或其它方式所指示的地點);或者(4)需要通過指揮控制通道接收遠程命令後啟動。
3. 背景
現已有幾份工程和技術文件[11][12][13][14]對從視頻卡中生成無線電信號進行過討論。信號發射計算所需的主要參數是像素時鐘。像素時鐘的單位是MHz,表示的是像素傳輸至屏幕的頻率,例如一個刷新周期內所容納的全幀像素。像素時鐘可以採用簡單的乘法加以計算:
其中,Hpixel 和 Vpixel 是垂直和水平解析度(即1024和768)設置值, Vsync、Hsync 是垂直和水平同步長度(以像素為單位), Rr是刷新率(例如60Hz),PC 是像素時鐘。這些參數是由顯示標準決定的。一般來說,在模擬標準和數字標準中,像素時鐘主要由顯示解析度和刷新頻率決定。
考慮到顯卡的標準,我們有可能可以構建如下一種圖像模式,即在將其發送至顯示器的同時生成一種基於數據信號調製的載波。第一種選擇是通過改變像素顏色來直接影響信號的電壓。對於這種類型的數據傳輸,振幅調製(AM)是顯而易見的選擇。針對某個固定的載波,通過逐漸改變像素的深淺,則可以改變載波信號的振幅。以前的研究[15][12][14]表明,使用顯示器和顯示適配器可以有意地生成調製的無線電信號。本研究的目的在於傳輸將被手機FM接收器接收並解譯的FM信號。通過構建一幅黑白像素交替排列的圖像,反映出所需的載波頻率調製,即可產生FM信號。在FM調製中,黑白像素用於生成固定的最大振幅,所產生的信號較強。
4. 實踐應用
為了測試並評估此類攻擊的現實適用性,我們開發了名為「AirHopper」的惡意軟體。在本節中,我們描述了該惡意軟體的兩個組件的實踐應用情況:針對個人電腦的發射器組件和針對手機的接收器組件。
在考慮使用手機的FM接收器接收生成的信號時,我們面臨著新的挑戰和機遇。所面臨的主要挑戰之一是:手機中的FM接收器晶元首先是採用DSP (數字信號處理)晶元解碼FM信號,然後再生成音頻信號,這一事實則導致手機的操作系統只能訪問生成的音頻輸出(圖2中的第2層),而不能訪問載波本身。因此,若要將數字信息發送給接收器,數據必須使用音頻音調進行調製圖 2中的第3層)。此外,如第4.2節中所述,在選擇調製中使用的音頻頻率時,應考慮FM 接收器的特點和局限性 。
圖2:Airhopper調製圖層
4.1 FM音頻信號的產生
本節描述了AirHopper 用於生成像素模式(圖像)的演算法,以發射特定的FM音頻信號。在音頻調製演算法中,我們採用 Fc 表示FM接收器為了接收所傳輸的信號必須調整到的載波頻率(例如 90 MHz)。此值限定為至多是像素時鐘的兩倍[15]。然而,由於顯示適配器所產生的信號近乎方塊形(「黑色」和「白色」像素之間交替排列),因此信號生成的強諧波可被用於忽略這一限制,並可以在損失一些信號質量的情況下採用高於兩倍像素時鐘數值的方式進行傳輸[15]。
Fd 表示的是載波調製的數據頻率(音調)。Pc 表示的是前面所述的像素時鐘值, HpVp 分別表示的是水平和垂直解析度參數,再加上前後的時鐘脈衝邊沿,這是一段沒有顯示像素數據發送的時間段。CRT顯示器可以利用這段時間來將其光束縮回至一幀圖像末尾的頂部和一行末尾的左側。這些都是標準中為了兼容CRT顯示技術而留下來的。
該調製過程以「Tempest for Eliza[14]」中的代碼為基礎,根據下面的演算法 (演算法 1)加以制定。為了提高所傳輸信號的質量,實踐中採用的是修改過的變體調製過程。
直觀地說,上述演算法可以通過模擬載波頻率的峰值決定對哪個像素加以染色。所產生的圖像由交替的橫向「條紋」組成,其中包括與載波頻率相匹配的黑白像素圖案或空的黑色條紋。內部循環可以計算出模擬載波頻率 Fc的模式。條紋的寬度以及條紋的數量取決於 Fd的值,應通過外部循環計算得出。簡單地說,條紋中的這種周期性變化調節的是音頻信號 Fd。
在給定像素圖的情況下,可以使用下面的近似計算公式來確定所生成的信號頻率。
演算法 1:用於信號音 (Fd) 調製的像素圖
Y0 和 Yx 是具有相同像素圖案的兩個連續像素行的垂直像素坐標。該公式通過使用顯卡定時參數可以近似計算出數據信號的周期時間。
4.2 AirHopper 發射器——有關音頻的數據調製
我們使用如下兩種技術來對音頻信號進行數字信息調製:音頻頻移鍵控(A-FSK) 和雙音多頻(DTMF) 。我們的評估顯示,A-FSK 對干擾的敏感度較低,相比DTMF技術的傳輸距離更遠。而另一方面,就帶寬和二進位數據傳輸而言,DTMF的效率更高。
在這兩種技術中,數據通過音頻頻率加以調製。我們的實驗結果表明,低於 600Hz的頻率將會遭遇極大的干擾;而大量的接收測試表明,若信號頻率大於 11 kHz,接收距離則開始大大減小。我們將在這兩種方法中相應地限制傳輸範圍。
4.2.1 A-FSK。
採用這種音頻數據調製方法,每個字母或字元都會使用不同的音頻頻率進行調製。從技術上講,這種方法實現的原理是:通過在整個屏幕區域上呈現一個單一而獨特的信號頻率,並且在短時間內保持圖像靜止。然後,由接收器負責從解調的音頻信號中抽樣,並對數據加以解碼。通過使用少於40種不同的音頻頻率,我們就能夠將簡單的文本數據(英文字母和數字)譯成電碼。這種方法對於傳輸短文本信息而言非常有效,比如標識符、 key-stroking、keep-alive消息和通知。在我們進行的廣泛測試過程中,這種方法被證明具備最強的抗干擾能力、最大的接收範圍和最精確的數據恢復率。在得到這些有效結果之後,我們試圖使用 256 種不同的音頻音調對任意二進位數據進行調製,從而產生了每字元11000/256≈40Hz的頻率間隔。我們的測試獲得結果是在解碼器端出現了更高的錯誤率和模稜兩可的解調情形。其主要原因是FM 接收器中數字信號處理 (DSP) 組件為了提高聽覺體驗使用的是自適應雜訊濾波、均衡以及其他技術。這些方法正在改變相鄰的音頻頻率,以對其加以統一或將其作為雜訊加以過濾。由上所述,我們採用DTMF調製完成了對二進位數據的編碼。
4.2.2 DTMF(16×16)。
在雙音多頻模式中,兩個音頻信號的組合表示為一個位元組的數據。這一點類似於使用兩個十六進位數字。從一個16 x 16 頻率對(包含 256 個不同組合)的表格中選擇音調。表中的列處於 600Hz-5000Hz頻率範圍內,表中的行處於6000Hz-10400Hz 頻率範圍內。例如,包含數據值為134的一個位元組由位於第8行 (?134/16?= 8)和第6列 (134 mod 16 = 6)的各一個音調同時呈現。兩個調製音頻信號的傳輸是通過在邏輯上將屏幕分成兩半,並在每一半上傳輸一幅不同的圖像實現的。雖然這導致傳輸範圍和接收質量出現些許損失,但獲得了更高的數據傳輸速率。
4.3 AirHopper接收器—音頻信號中的數據解調
行動電話上的惡意代碼的一個基本組成部分是FM音頻錄音、數據解碼或錄音轉發至攻擊者的能力。下面的章節中介紹了重要的實踐應用細節。
4.3.1 android FM音頻信號輸出重定向
為了處理FM音頻信號,應對其進行記錄或保存。 在Android API升級至API18(Android 4.3, Jelly Bean MR2)之前,FM 收音機無法記錄錄音輸出。從Android框架中反彙編MediaRecorder 類文件 (MediaRecorder$AudioSource.smali) ,我們發現了如何通過使用 AudioRecord 對象(audioSource=8 且sampleRateInHz = 44100)啟用FM無線電錄音的記錄功能[16]。
4.3.2 音頻採樣
現代手機支持的最大音頻捕獲採樣率為44.1KHz 。根據奈奎斯特-香農採樣定理,如果採樣頻率大於被採樣信號最高頻率的兩倍,則有可能實現信號的完美重建。因此,我們能夠以20KHz的最大頻率來完成採樣過程。20KHz是人類在一般情況下可聽見的最高頻率,因而對於大多數的音頻材料來說,44.1KHz只是一種邏輯意義上的選擇。使用Android系統的錄音 API可以將無線電信號記錄並保存在內存緩衝區中,每個樣本採用的是16 位的脈衝編碼調製(PCM)格式。
4.3.3 信號處理
快速傅里葉變換(FFT)可以將緩衝器從時域轉換至頻域。由於每個數據塊有1024個樣本,我們生成一個可以描繪記錄信號頻譜的離散函數,其中每個指數的幅值表示44100/1024~43Hz的頻率範圍。根據所採用的調製方法(A-FSK或DTMF),頻譜預計將包含一個或兩個不同的振幅。在DTMF調製過程中,應有一個頻率指數在每側頻譜範圍內(600Hz-5000Hz和 6000Hz-10400 Hz)具備明顯較高的振幅。然後將頻率指數與DTMF頻率表相對比,用以恢復所傳送的位元組。
4.3.4 不使用耳機情況下的要求
一些型號的手機需要用戶在連接耳機的情況下才能夠打開收音機。由於耳機線被用作FM接收器晶元的天線,因此耳機線必不可少。如果不使用天線,FM接收器的接收質量便會較差。雖然從技術上來說手機在沒有天線的情況下仍然有可能可以收到信號,但使用耳機線能夠確保獲得良好的用戶體驗。我們發現這種限制是由供應商在軟體層實現的,可以採用一定的方法將其繞過。我們使用baksmali反彙編程序對三星 Galaxy S3 框架文件 (/system/framework/framework2.odx)進行了反彙編[17] 。在服務文件(FMRadioService)中,mIsHeadsetPlugged 變數被初始化為「true」,耳機檢查方法 (」access$302)被修改返回為「true」。無論現實是否有耳機相連,這種做法可以在應用程序層通過手機的耳機檢查程序。
4.4 傳輸協議
AirHopper 採用兩種傳輸模式:原始模式和結構化模式。在原始模式傳輸中,數據流取自於位元組數組,並按順序加以傳輸。如果信號出現損失或中斷,接收器無法察覺到這一點。按順序傳輸原始數據適用於文本信息(如按鍵記錄和文本文件)或簡訊號和通知消息。即使缺失某些字元的情況下,這樣的信息依然有價值。在二進位數據傳輸中,當重點是要確定傳輸錯誤並知曉實際收到了哪部分文件或數據時,應採用結構化協議。傳輸標題包括(1)一個初始同步脈衝(2)數據包序列號(3)數據包大小(4)數據本身以及(5)一個校驗和。通過搜索同步脈衝,AirHopper 接收器可以很容易地檢測出使用的是哪種協議(原始還是結構化)。
登錄安全客 - 有思想的安全新媒體www.anquanke.com/,或下載安全客APP來獲取更多最新資訊吧~
推薦閱讀: