國家太空安全是國家安全在空間領域的表現。隨著太空技術在政治、經濟、軍事、文化等各個領域的應用不斷增加,太空已經成為國家賴以生存與發展的命脈之一,凝聚著巨大的國家利益,太空安全的重要性日益凸顯[1]。而在信息化時代,太空安全與信息安全緊密地結合在一起。2020年9月4日,美國白宮發布了首份針對太空網絡空間安全的指令——《航天政策第5號令》,其為美國首個關于衛星和相關系統網絡安全的綜合性政策,標志著美國對太空網絡安全的重視程度達到新的高度。在此背景下,美國自2020年起,連續三年舉辦太空信息安全大賽“黑掉衛星(Hack-A-Sat)”,雖然是公開的黑客奪旗賽,但由于美國天軍和空軍作為聯合主辦方,因此通過題目背景設置可以窺見美軍方對太空信息安全的關注點、對未來太空信息安全作戰樣式的想定,本文通過分析連續三年“黑掉衛星”挑戰賽的典型賽題,編輯成Hack-A-Sat太空信息安全挑戰賽深度解析》一書,從中提煉出美未來可能的太空安全攻擊手段,對加強我太空信息安全防御具有一定的啟示作用。

1 美“黑掉衛星”太空信息安全挑戰賽基本情況

DEFCON極客大會是全球頂級的安全會議,誕生于1993年,被稱為極客界的“奧斯卡”,每年7月在美國的拉斯維加斯舉行,近萬名參會者除來自世界各地的極客、安全領域研究者、愛好者,還有全球許多大公司的代表以及美國國防部、聯邦調查局、國家安全局等政府機構的官員。在2019年舉辦的DEFCON 27會議上,主辦方宣布要舉行太空信息安全挑戰賽,正式名稱是Hack-A-Sat(以下簡稱HAS)。比賽分為兩個階段,資格賽和決賽,采用積分制,資格賽中積分靠前的8支參賽隊將進入決賽。參賽團隊的規模可以不限,可以是獨立的團隊,也可以是由學術機構或公司贊助的,由來自不同公司或大學的人組成,只要其中包括一名美國公民,而且不在美國財政部的“特別指定國民”名單上。

在2020年5月22日至24日,舉行了Hack-A-Sat 2020(以下簡稱HAS2020)資格賽,共34道賽題,有6298人參賽,組成2213支隊伍。這次比賽引起美國空軍的注意,所以2020年8月7日至8日HAS2020的決賽由美國空軍組織。

第二屆太空信息安全挑戰賽,即Hack-A-Sat 2021(以下簡稱HAS2021),則由美國空軍與美國天軍聯合組織,于2021年6月26日至27日舉行了資格賽,共24道賽題,有2962人參賽,組成了1088支隊伍,決賽于2021年12月11日至12日舉行。

第三屆太空信息安全挑戰賽,即Hack-A-Sat 2022(以下簡稱HAS2022),繼續由美國空軍與美國天軍聯合組織,于2022年5月21日至22日舉行了資格賽,共27道賽題,有2528人參賽,組成了803支隊伍,決賽于2022年10月22日至23日舉行。

HAS是結合了航天與信息安全兩個領域的比賽,在其題目設置上也體現了這一點,有別于傳統的信息安全奪旗賽。一般的衛星運行都包括三部分:地面站、星地鏈路、衛星。HAS的挑戰題也是圍繞這幾個部分進行的。在題目中除了傳統的密碼破解、逆向工程、信號截獲分析等信息安全知識,還結合了天體物理學、天文學的相關知識,體現太空信息安全的特殊性。涉及的技術也是相當廣泛,既有嵌入式操作系統相關的,也有處理器相關的,還有信號處理相關的,對參賽者提出了極高的要求。本文也是區分衛星段、鏈路段、地面段三個方面,從“黑掉衛星”的賽題提煉美軍未來典型太空攻擊手段。

2 衛星段攻擊手段

2.1 平臺數據劫持

數據劫持,指的是在訪問或者修改對象的某個屬性時,通過一段代碼攔截這個行為,進行額外的操作或者修改返回結果。在HAS2020中有一道名為filter的賽題,其中給出了一個在軌衛星姿態控制環路的仿真代碼,根據仿真代碼可以畫出姿態控制環路的運行控制流程,如圖1所示。姿態控制環路在衛星的X、Y、Z三個軸向上分別運行了一個卡爾曼濾波器,根據目標姿態值target.q_att和卡爾曼濾波器輸出的當前時刻最優估計姿態值q_est之間的誤差err,control模塊會產生一個控制量u來控制每個軸向的角加速度,進而控制角速度和姿態角的變化。陀螺儀gyro模塊將當前測得的角速度q_rate和角加速度q_acc輸出給卡爾曼濾波器Kalman_step,星跟蹤器把測得的姿態角輸出給卡爾曼濾波器,卡爾曼濾波器運行濾波算法計算得到下一時刻最優估計姿態值q_est。如此不斷循環往復,形成一個環路控制系統。攻擊者進入到了控制回路中,會得到每次迭代中星跟蹤器的實際姿態值,并可返回一個“假的”姿態值給星跟蹤器,從而導致卡爾曼濾波器產生一個不太準的估計值,進而增大err誤差值,并使控制器去調整實際姿態。經過上千次“數據劫持”“欺騙”,最后會使得目標姿態與實際姿態相差越來越遠,衛星姿態失控。

圖1 filter賽題的在軌衛星姿態控制環路的運行控制流程

2.2 惡意篡改代碼

通過非法渠道篡改衛星平臺代碼,一個很小的修改,往往會造成大的災難。在HAS2021中有一道名為mars的賽題,這道題來自1999年美國NASA的火星勘測98計劃的真實案例。按照計劃,1999年12月3日,火星極地著陸器到達火星附近,但在準備進入火星大氣前6min與地面失去聯系,隨后墜毀在火星表面。調查表明,著陸器在降落期間打開著陸架時發送了錯誤信號,導致著陸器下降速度過快而墜毀[2]。

本題目依據該計劃制作了火星極地著陸器的模擬器,要求參賽者找出控制程序中的問題,并進行緊急修復,以實現成功著陸。我們可以理解為著陸器被攻擊者惡意篡改了代碼,導致任務失敗。通過模擬器的反復模擬,可以發現還在下降過程中,著陸器的引擎提前關閉,因此著陸器最終撞向火星表面。對著陸器固件的二進制逆向分析,可以發現當前是通過A、B、C三個狀態判斷是否要關閉引擎,原代碼是只要有一個條件滿足,就會關閉引擎。

if (((prev_A && A) || (prev_B && B) || (prev_C && C)) && D) {
eject_engine = 1;
}

修改為只有三個條件都滿足,才關閉引擎,即可解決該問題,可見僅僅是一處簡單的代碼篡改,就會導致完全不一樣的結果。

if (prev_A && A && prev_B && B && prev_C && C && D) {
eject_engine = 1;
}

2.3 利用代碼編寫漏洞

各系統軟件編寫過程中,由于編寫者水平能力有差距、交付方軟件驗證不徹底,難免會產生設計缺陷,造成可以利用的漏洞。其中比較多的是緩沖區溢出漏洞。緩沖區溢出是一種常見的編程錯誤,也是一種牽扯到復雜因素的錯誤。開發人員經常預先分配一定量的臨時內存空間,稱為一個緩沖區,用以保存特殊信息。如果代碼沒有仔細地把要存放的數據大小同應該保存它的空間大小進行對照檢查,那么靠近該分配空間的內存就有被覆蓋的風險。熟練的攻擊者輸入仔細組織過的數據就能導致程序崩潰,更糟糕的話能執行代碼。在HAS2020中有一道名為rfmagic的賽題,提供了一個MIPS處理器的模擬器vmips,作為衛星載荷平臺處理器的模擬器,還提供了在模擬器上運行的二進制代碼challenge.rom,作為載荷程序。通過二進制逆向分析該載荷程序,發現該程序有一個典型的緩沖區溢出漏洞,就是內存復制函數memcpy沒有檢查目的地址、源地址的空間大小,容易導致復制到目的地址的數據過多,造成內存中有效數據被覆蓋,有可能執行任意指令,通過精心編寫shellcode、payload即可以完全控制該衛星載荷平臺。

2.4 篡改運行配置文件

衛星載荷任務調度就是將有限的資源按時間分配給不同活動的過程。根據衛星任務調度的不同,有多種約束條件,包括時間窗口約束、存儲約束、電量約束等等。攻擊者可以非法篡改任務調度配置文件,從而打亂衛星載荷任務調度規劃,甚至執行計劃外任務。在HAS2020中有一道名為monroe的賽題,就是要攻擊者控制衛星載荷任務調度。攻擊者被告知衛星上應用到了OpenSatKit(簡稱OSK)。OSK提供了一個程序KIT_SCH。通過對KIT_SCH源代碼分析可以發現這是一個任務調度程序,這個程序一旦啟動就會不斷循環,每次循環都會調用配置文件中規定的任務。攻擊者需要做的就是將希望執行的任務插入到這個配置文件中,偽裝成合法任務,就會被衛星調度執行。

2.5 狼群戰術

狼群戰術是第二次世界大戰中德軍對大西洋上的盟軍商船和美國對太平洋上的日本運輸船所使用的潛艇戰術,戰術是以多艘潛艇集結攻擊,使得通商破壞戰的成果大幅提升。在HAS2021中有一道名為trash的賽題,題目背景是一團太空垃圾在你的星座軌道面上,需要用你衛星上的太空激光消滅它,需要銷毀至少51件太空垃圾才能保證衛星的安全,此外,還提供了激光的射程為100公里。這里不僅有攻還有防。攻就是狼群戰術,利用大堆的太空垃圾。現實中,這些太空垃圾可以是地面反衛武器攻擊產生的,也可以是預置衛星受控解體產生的,還可以是大量微納衛星,甚至是多顆星鏈衛星臨時變軌,自殺攻擊。防就是激光武器,可見美軍已經有將激光武器用作太空平臺的計劃了。在HAS2022中也有一道名為Red Alert的題目,與trash的背景很像,但是在Red Alert中,武器升級了,trash的激光武器發射前需要根據目標調整姿態、瞄準,而Red Alert中的激光武器是雷達驅動的,雷達發現并定位目標,自動引導激光武器瞄準攻擊。

2.6 輻射攻擊

2011年,俄羅斯的“福布斯——土壤”號火星探測器在升空數小時后入軌失敗,最終和搭乘的中國首個火星探測器“螢火一號”一起墜毀,經查,事故有可能是星載計算機受宇宙輻射干擾失靈所致。充斥外太空的宇宙射線會引起航天器的計算機芯片發生位翻轉現象(bit-flipping),造成內存丟失,代碼混亂和存儲器報錯[3]。在HAS2021中有一道名為bitflipper的賽題,背景是攻擊者擁有一項能力,就是可以通過電磁輻射修改衛星內存區域。現在有一顆衛星是攻擊者的攻擊目標,這顆衛星的熱防護系統在檢測到溫度低于15度的時候,會打開加熱器,溫度大于35度的時候,會關閉加熱器,以保持衛星溫度在合適的區間。現在要求攻擊者通過電磁輻射翻轉熱防護系統內存的3bit,使得熱防護系統工作紊亂,最終使衛星溫度超出0-70度這個范圍。當然,航天器上內存一般都是有校驗保護的,這里也一樣,為更加真實的模擬實際環境,題目中給內存設計了SECDED校驗,此處SECDED指的是單bit錯誤糾正(SEC:Single Error Correction)、雙bit錯誤發現(DED:Double Error Detect)。因此,攻擊者既要使用電磁輻射翻轉3bit內存,還要通過SECDED校驗。

2.7 勒索軟件

勒索軟件是一種流行的木馬,通過騷擾、恐嚇甚至采用綁架用戶文件等方式,使用戶數據資產或計算資源無法正常使用,并以此為條件向用戶勒索錢財。在HAS2021中有兩道分別名為king、king2的賽題,就與勒索軟件有關。題目背景都是衛星系統感染了勒索病毒,導致其中的敏感信息被加密了,要求恢復出敏感信息。

3 鏈路段攻擊手段

3.1 信號截獲分析

衛星與地面之間的通信鏈路是無線的,容易被截獲,進而分析破解,在“黑掉衛星”挑戰賽中,每一屆都有與此相關的賽題。在HAS2020中有一道名為phasor的賽題,給攻擊者一段截獲的通信信號記錄文件,要求從中恢復出有用信息。這道題涉及到通信信號的調制調解。可以通過GNU Radio構造不同的解調電路,解調出有用的信號,也可以采用特殊軟件,比如Universal Radio Hacker(URH)直接分析,圖2是采用URH分析的結果。在HAS2021中有名為noise、errcorr的賽題,此時截獲的信號中有噪聲、誤碼。在HAS2022中有名為Doppler的賽題,此時又要考慮多普勒頻移,難度進一步增加。

圖2 URH分析phasor賽題截獲的信號文件

3.2 密碼攻擊

關鍵信息通常都是加密的,解密的密鑰只有必要人員才知道。密碼攻擊是在不知道密鑰的情況下,恢復出明文。這也是在“黑掉衛星”挑戰賽中很常見的類型。在HAS2020中有一道名為leaky的賽題,就涉及到了對AES(Advanced Encryption Standard;高級加密標準)的攻擊破解。有一顆衛星在通信過程中,會對每個消息使用AES算法進行加密。攻擊者由于不知道密鑰,無法正常加密,那么當攻擊者向衛星發送消息后,衛星就會發現消息不對,從而丟棄該偽造消息。攻擊者已經截獲了一段密文,需要破解出對應的明文,并且已知如下一些信息:

(1)知道密鑰的前6個字節。

(2)知道截獲密文對應明文的前幾個字節是“flag{ksjkglhwsjd”。

(3)提供了100000行歷史加密情況,每行包括兩部分:明文、加密該明文花費的時間。

從上述可知,這是已知加解密算法、部分明文、全部密文,并且有大量明文及其加密時間的數據,要求得出加密密鑰的問題。攻擊者可以運用AES緩存碰撞時間攻擊法破解得到秘鑰,最終解密得到明文。

4 地面段攻擊手段

4.1 電磁嗅探

在太空攻擊研究與戰術分析模型(SPARTA:Space Attack Research & Tactic Analysis)中,將太空攻擊分為9步,分別是:偵察(Reconnaissance)、資源開發(Resource Development)、初始訪問(Initial Access)、執行(Execution)、持久化(Persistence)、防御規避(Defense Evasion)、橫向運動(Lateral Movement)、滲出(Exfiltration)、影響(Impact)[4]。其中第一步偵查,要獲取多方面的信息,包括:飛行器設計信息、飛行控制軟件信息、供應鏈信息、通信鏈路信息、發射信息等等。在HAS2020中有一道名為rbs_m2的賽題,就是偵查階段要做的事情。在rbs_m2中,攻擊者已經通過電磁嗅探等技術截獲了對方3座衛星地面站控制天線舵機的電纜發出的無線電信號記錄。每座地面站的天線的方位角和仰角舵機的控制方式是使用占空比在5%~35%變化的PWM(Pulse Width Modulation:脈沖寬度調制)信號將方位角或仰角從0°移動到180°。參賽者需要使用截獲的這3個無線電信號記錄文件來確定每座天線指向的位置,從而推斷其跟蹤的衛星。

4.2 利用協議設計漏洞

由于一些協議在設計的時候沒有考慮安全問題,或者設計的時候考慮不周,會暴露出一些可以被惡意攻擊者利用的漏洞,比如WinNuke攻擊、Smurf攻擊、Land攻擊、SYN Flood攻擊、Fraggle攻擊等。在HAS2020中有一道名為modem的賽題,就是需要攻擊者利用modem的協議設計漏洞。這道題背景是攻擊者已經成功地切斷了對方地面站的互聯網連接。不幸的是,在這種情況下,對方地面站仍然將撥號上網作為最后手段進行互聯網訪問。要求參賽者使用舊式撥號上網用的調制解調器,撥入地面站的網絡使其不能進行互聯網訪問。此處應用到了海斯命令集,也稱為AT命令,原本是為了海斯調制解調器所開發的一種命令語言。該命令集是由許多短的字串組成的長的命令,用于代表撥號、掛號及改變通信參數的動作。大部分的調制解調器都遵循海斯命令集所制定的規則。海斯命令集有兩個特殊的命令:

+++:從數據模式切換到命令模式
ATH0:掛機

調制解調器有數據模式、命令模式,從數據模式切換到命令模式,需要發出3個加號的轉義序列字符串(“+++”)并跟隨1s的暫停。轉義序列結束后的1s時間間隔保護是必須的,如果3個加號接收后的1s內接收到任何其他數據,調制解調器就不認為是從數據模式切換到命令模式,而保持數據模式。

然而為了避開海斯的專利授權,一些廠商生產的調制解調器中,轉義序列沒有時間間隔保護。這樣就帶來了一個安全問題,它會導致計算機在數據模式中發送字節序列“+++ATH0”時,使調制解調器掛斷連接。“+++ATH0”其實是“+++”和“ATH0”兩個命令的組合,“+++”是將調制解調器從數據模式切換到命令模式命令,“ATH0”是掛機命令。當主機A在收到遠端主機B發來的攜帶“+++ATH0”序列的ping包時,調制解調器會將其攜帶的“+++ATH0”序列解釋為海斯命令而立即斷開連接。因此,攻擊者需要使用攜帶“+++ATH0”序列的“死亡之ping”攻擊,即可實現目的。


4.3 惡意數據擦除

同前文已述的對衛星平臺的惡意篡改代碼一樣,惡意數據擦除后果也是很嚴重的。2022年2月24日俄烏沖突爆發時,覆蓋烏克蘭地區的美國衛星運營商Viasat遭遇網絡攻擊,導致數千烏克蘭用戶、數萬名歐洲其他地區用戶斷網,事后調查,發現攻擊者利用錯誤配置的VPN設備入侵衛星網管理后臺,向數萬用戶側Modem下發管理指令覆蓋掉了設備閃存,由此關閉客戶家中的調制解調器并導致其無法接入網絡,造成斷網。這就是惡意數據擦除的典型事件。在HAS2022中有一道名為djikstar的賽題,就是以惡意數據擦除為背景的。在該題中,用戶乘坐的船在太平洋中部拋錨,幸好用戶可以連接全球Starlunk網絡(虛構的一個衛星網絡)進行對外聯系,用戶有一個Starlunk終端,這個終端可以根據所在坐標,計算如何通過最短路徑(也就是經過最少的Starlunk網絡中的衛星中轉)到達最近的地面網關站。不幸的是,攻擊者已經破壞擦除了用戶Starlunk終端中計算最短路徑的代碼,要求用戶自行計算到達最近的地面網關站的最短路徑。

5 結語

美軍方舉辦的“黑掉衛星”太空信息安全挑戰賽,從另一個角度展示了美軍方當前的能力、未來的能力、設想的戰法,對我們加強太空信息安全建設具有十分有益的促進作用。我們務必保持太空大安全觀,從供應鏈開始,到設計、研發、組裝集成、運輸、發射、運營、終端開發等各個環節都要有安全意識,做實安全工作,同時,保留必要手段,以備極端情況下能應急處置,恢復最低限度功能。