無線鍵鼠監聽與劫持

引言:鍵盤是生活中最常見的硬件之一,無線鍵鼠由於其方便美觀受到很多人的青睞,那麼它的安全性如何呢?面對攻擊我們又如何防護呢? 
本文選自《硬件安全攻防大揭祕》。

1.無線鍵鼠的興起

  鍵盤連接到計算機有多種方式,有線鍵盤鼠標在生活中最常見,適用範圍也很廣泛,但有線連接不僅對操作距離有限制,而且給攜帶造成了不便。不僅如此,繁雜的線纜還很容易把桌面弄得凌亂不堪。無線鍵鼠非常好地解決了上述問題。無線鍵鼠又分爲藍牙類型和2.4GHz 類型,文中所指的無線鼠標一般指2.4GHz 類型。值得注意的是,雖然藍牙鍵鼠的工作頻段也是2.4GHz 頻段,使用的卻是藍牙通信協議,符合藍牙標準。而2.4GHz 類型的鍵鼠主要指利用專屬無線協議開發的無線產品。2.4GHz 類型的無線鍵鼠,一般在計算機的USB 接口處插上一個適配器,鼠標和鍵盤通過電池供電。

2.無線鍵鼠的基本原理

  無線鍵鼠與有線鍵鼠的主要區別在於信號傳輸方式。有線鍵鼠利用導線傳輸信息,而無線鍵盤利用無線電傳輸信息。早期的無線鍵盤使用27MHz 的頻段,當時的無線接收器相對現在的集成芯片來說要大得多。目前大多數產品都工作在2.4GHz 的ISM(工業、科學、醫療)頻段。下面我們大致介紹無線鍵盤的工作原理。當按下鍵盤時,鍵盤內部的單片機利用矩陣掃描的原理檢測到是哪個按鍵按下了,相應按鍵有相應的編碼;單片機利用無線收發模塊把按鍵信息通過無線電傳播出去;電腦端插在USB 接口上的適配器收到相應的數據後會通過USB 向電腦操作系統傳輸按鍵的輸入信息。這樣就完成了一次按鍵信息的傳送,下面將詳細介紹無線通信的硬件部分和通信數據部分。

3.硬件部分

  如果想真正瞭解鍵盤的構造、基本原理等信息,拆解是非常直接有效的方法。 
圖片描述
  上圖爲某無線鍵盤的拆解圖。右下部分是一個電池槽,紅色的線是一根電源線,爲單片機和無線模塊供電。目前市場上最常見的就是這種薄膜式鍵盤。薄膜式鍵盤取代機械鍵盤的原因並非機械鍵盤的品質不夠好、手感不佳。機械鍵盤的手感、使用壽命都要優於薄膜鍵盤,只是因爲成本過高而逐漸退出市場。最近因更追求產品的品質,機械鍵盤又逐漸流行起來。 
  薄膜式鍵盤內部共分三層,實現了無機械磨損,其特點是低價格、低噪音和低成本,已佔領市場絕大部分份額。我們現在經常使用的就是薄膜鍵盤。薄膜式鍵盤架構很簡單,除了上下蓋、鍵帽之外,拆開鍵盤之後,還會看到橡膠帽(但事實上現在都是用硅膠製成)、三片薄膜、電路板,以及電路板上的IC。再檢視薄膜的話,還可以看到導電的印刷塗料。薄膜式鍵盤的原理相當簡單,三片薄膜中,最上方爲正極電路,最下方爲負極電路,中間爲不導電的塑料片。 
【圖4】
  接着,在上方放按壓模塊(通常包括鍵帽、鍵帽下方活動模塊,以及橡膠帽),當手指從鍵帽壓下時,上方與下方薄膜就會接觸通電,完成導通。 
  然而,我們更關注的是它的射頻部分。也就是它採用了哪款芯片,完成對數據的傳輸。這樣我們才能更方便地找對方向進行研究。 
【圖5】
  上圖爲無線鍵盤的射頻部分,用的是Nordic 公司設計的nRF24L01 芯片。黑色方塊即爲該芯片,周圍是該芯片正常工作所需的外圍器件,例如電容、電阻等器件。左邊黃色蛇形的圖案是PCB 天線。它是利用印製電路板上的導線作爲天線的一種方式。這種天線的好處是相對於外置天線體積更小,而且更廉價,但缺點是距離較短,適用於對距離沒有嚴格要求的地方。這款無線收發芯片是瞭解無線鍵鼠通信基本原理的關鍵部分,有助於我們對無線鍵盤的研究,下面將介紹該芯片的一些基本情況。 
  nRF24L01 是Nordic 公司設計的一個具備協議解析功能的單芯片無線收發器,適合低功耗的無線應用場景。nRF24L01 工作在全球開放ISM 頻段(工業、科學和醫用頻段),頻率範圍內2.400GHz~2.4835GHz。因爲nRF24L01 僅僅是一個無線收發器,沒有集成單片機,所以在使用時需要配合單片機和少量的外圍器件工作。我們可以通過SPI 接口對nRF24L01 進行操作和配置。通過SPI 接口可以讀寫nRF24L01 內部的寄存器,完成對其的配置和其他所有的操作。 
  該無線設備採用GFSK 調製方式。用戶可以修改無線設備的信道、輸出功率和數據速率。nRF24L01 支持三種速率250kbit/s、1Mbit/s 和2Mbit/s。目前應用廣泛的是2Mbit/s 的數據傳輸速率。 
  下圖所示爲Nordic 公司官方給出的電路參考設計原理圖。大多數公司都是據此進行開發的,除非一些公司對某些方面有特殊的需求才會對該原理圖調整。許多廠家會據此進行二次開發,生產出該芯片的模塊。 
【圖6】
  下圖爲該芯片的成品模塊 
【圖7】
  該模塊只引出了必要的電源及控制接口,其他外圍電路都已經集成在模塊上。這樣的好處是使用更方便,不需要關心芯片的外圍電路和天線部分。天線的設計是電路設計上的難點,細小的失誤都可能對通信距離產生較大的影響。所以很多廠商都採用設計成熟的模塊,而不是自己重新設計這一部分。 
【圖8】
  上圖爲該模塊的引腳順序圖,可以與單片機進行連接。相應的引腳功能如下。 
【圖9】
  模塊保留了用戶需要用到的8 個接口。其中1 號和2 號引腳爲電源接口,爲該模塊供電。3 號引腳爲芯片使能接口,用於設置芯片是工作在接收模式還是發送模式。4 號至7 號引腳是用於SPI 通信的四條連線。CSN 用於片選芯片,也就是芯片的SPI 通信使能。SCK 是單片機爲SPI 通信提供的通信時鐘。MOSI 是單片機向模塊發送數據的數據接口,MISO 是模塊向單片機發送數據的數據接口。8 號引腳IRQ 在接收到數據時通過電平跳變來通知單片機模塊已經收到了數據。這種方式的好處在於單片機在沒有收到數據時可以完成其他任務,不需要一直查詢該模塊是否收到數據。當然,這個接口也可以不用,不過如上所述,需要一直查詢是否收到了數據,這種方式是非常低效的。採用這種方式帶來的另外一個缺點是一直使單片機處於工作狀態,不利於休眠,會造成功耗大幅度提高。 
  通過上述物理接口就可以達到配置和操作nRF24L01 的目的。瞭解硬件是不夠的,對通信的數據的學習仍然是一門必修課。

4.通信數據部分

  nRF24L01 支持數據包的自動裝配,自動發送確認包和重發數據包。它支持1 至32 字節的負載長度。能把收到的包自動分解,得到需要的負載部分。nRF24L01 擁有6 個通信信道,最多支持1 對6 的星形網絡。 
【圖10】
  上圖爲nRF24L01 的數據包格式,其中包括了1 個字節的前導碼、3 至5 字節的地址、9 個比特的包控制段、0 至32 字節的負載段及CRC 校驗碼。數據包內各個部分在整個通信中扮演着不同的角色,有着不同的作用,下面將對它們做詳細介紹。 
  前導碼用於讓接收端的解調器和輸入的比特流同步。這裏的前導碼的長度是一個字節,序列是01010101 或者10101010。至於具體是哪種前導碼,與緊接在前導碼後面地址的第一個比特有關。如果地址的第一個比特是1,則前導碼被自動設置爲10101010。如果地址的第一個比特是0,則前導碼被自動設置爲01010101。這些措施用於保證有足夠的過度時間來穩定接收器。簡單地說,前導碼的存在主要是爲了讓後續的數據流接收更加穩定。 
  這裏的地址是發射器發送給接收器的。地址用於該數據包被正確的接收器偵測和接收,而不是被其他設備錯誤地接收到。當我們在接收器中寫入地址後,可以方便地過濾掉不是發送給自己的數據包,保證接收到的數據包至少地址是正確的。我們可以通過設置名爲AW 的寄存器,調整地址的寬度到3 個、4 個或者5 個字節。 
【圖11】
  上圖爲數據包中的包控制字段(Packet Control Field),它涉及對數據包的控制工作,主要包括負載長度字段(Payload Length)、包識別字段(PID)和自動應答的非確認標誌(NO_ACK)。包控制字段包含6 比特的負載長度字段。當該器件作爲接收端設定爲動態負載長度時,該負載長度字段用於指示負載有多長,以便於快速讀取負載。當設定爲靜態負載長度時,就用不到該字段了,因爲每次的負載長度都是固定的。 
  兩個比特的包識別字段用於檢測接收到的包是新的還是重傳的。包識別字段是爲了防止同樣的負載被多次送到單片機中重複處理。當發送端每次發送新的數據包的時候,包識別字段的值都會增長。在接收端的器件會根據包識別字段和循環校驗碼(CRC)決定該數據包是重傳的還是新的。當多個數據包丟失後,這次的包識別碼就可能和上次的一樣,如果這樣的話,nRF24L01 會比較兩次的循環校驗碼。如果兩次的循環校驗碼相同,最新接收的數據包就會被認爲是上次接收數據包的備份而被丟棄。 
  可選的自動應答特性控制着非確認標誌(NO_ACK)。當自動應答這個特性被利用時,這個標誌纔有效。設置這個標誌爲1,告訴接收器這個包是不需要被自動應答的。 
  負載(Payload)是用戶定義的數據內容。它的長度可以是0 至32 字節。用戶可以把需要傳輸的數據放在負載字段裏傳輸。循環冗餘校驗碼用於數據包的錯誤檢測。在數據發送前,發射器會根據發送的數據產生循環冗餘校驗碼。當接收器接收到數據時,也會根據接收到的數據產生循環冗餘校驗碼。最後,接收器會計算接收到的數據校驗碼,並和直接接收到的校驗碼進行比對,如果相同則認爲數據在傳輸過程中沒有出錯,如果不相同就認爲出錯了,需要採取重傳或者其他措施。該字段可以被設定爲1 個或者2 個字節,並且從地址開始計算,也包括了包控制字段和負載。

5 如何防禦

  有線鍵盤記錄器在有些單位或者某些場景,作爲按鍵日誌記錄設備是必須使用的。請不要隨意取下,以免引起不必要的誤會。 
  對於個人而言,有線鍵盤記錄器這種攻擊手段要防禦說容易不容易,說難也不難。說容易是因爲這種外接設備肉眼可見,說難是因爲要用軟件檢測非常難,幾個簡單的防禦方法如下。 
  首先,提高防範意識。使用臺式機前檢查一下,看看後面是不是被裝了“小尾巴”。當然,每次都看太麻煩,可以選擇將機箱放在肉眼可見的桌上,沒事瞅一眼。使用筆記本電腦的話,隨時看下就好。 
其次,不熟悉的人送的鍵盤,不要隨意接受!或者發現自己的鍵盤有被拆卸過的痕跡,也需要注意!也許,鍵盤裏面,就藏着一塊電路板,在你不經意時,竊取了你的賬號和密碼,繼而以此爲突破口竊取更多的機密。當然,還是自己去市面上買的鍵盤相對放心。 
  再就是,輸入關鍵信息時,用軟鍵盤輸入比較好,前提是電腦本身的軟件安全要做好,如果中了木馬被錄屏就沒辦法了。 
對於無線鍵盤監聽的防禦,很簡單,不使用無線鍵鼠就行!特別是在辦公室用臺式機或者筆記本電腦時,完全沒必要使用無線鍵盤,手機和iPad 用屏幕鍵盤就可以。如果必須要用無線鍵盤,可以考慮自己做一個轉換的硬件,將USB 有線鍵盤轉換成藍牙或者無線鍵盤,至於方法,與無線鍵盤記錄器是一個原理。 
  最後,安全沒有絕對,但也不要被謠言所恐嚇,保持良好心態,小心謹慎,定期更換強密碼很重要。 
  特別是對於掌握公司或者機關單位重要賬號密碼的工作人員,請提高自我安全防範意識。

警告:非法竊取他人信息是違法行爲,本節內容僅供學習參考!切勿犯錯!

  我們將在明天的推送中向您介紹一個無線鍵鼠的監聽與劫持的經典案例《MouseJack》:MouseJack能利用無線鼠標和鍵盤存在的一些問題,達到僞裝成鍵盤並實現任意按鍵的效果。 
  本文選自《硬件安全攻防大揭祕》,點此鏈接可在博文視點官網查看。 

圖片描述

 

  想及時獲得更多精彩文章,可在微信中搜索“博文視點”或者掃描下方二維碼並關注。
                         圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章