今年2月份媒體報道,硬盤閃燈會泄露數據。如今,以色列班古里昂大學的邊信道專家們,將類似的方法應用到了路由器上。
路由器信號獲取的吸引力在于:如果能讓路由器泄露管理員憑證,那就不僅僅能突破一臺主機,而是整個網絡。
不過,相對的,搞定路由器也比針對單臺主機下手要更難一些:你需要一個與目標路由器之間無阻隔的傳感器,而且,必須拿到路由器的控制權。
如果你已經控制了路由器,該大學研究團隊開發的“xLED”可以幫你往路由器操作上添加LED控制。或者,如該團隊在論文中寫的一樣,有足夠權限的攻擊者可以跳過固件,直接讓路由器執行惡意腳本。
下面的代碼片段,就是Linux系路由器操作系統上所謂“最簡”調制方法。
算法 1. ModulateOOK
1: procedure ModulateOOK(nLED, data, T)
2: openLED(nLED); // 以寫模式打開 LED 文件
3: while(data[i] !=0)
4: if(data[i] == ‘0’) // 通過關閉 LED 調制 0
5: setLEDOff(nLED);
6: if(data[i] == ‘1’) // 通過打開 LED 調制 1
7: setLEDOn(nLED);
8: i++;
9: sleep(T); // 睡眠 T 毫秒
10: closeLED(nLED); // 關閉 LED 文件描述符
如果沒觸到操作系統,下面的shell腳本也相當簡單:
// 方法 #1
// 開啟 LED
1: echo 0 > /sys/class/leds/led_name/brightness
// 關閉 LED
2: echo 255 > /sys/class/leds/led_name/brightness
// 方法 #2
3: echo 1 > /proc/gpio/X_out // 開啟 LED
4: echo 0 > /proc/gpio/X_out // 關閉 LED
有時間的話,可以看看下面的概念驗證視頻,里面有個代碼可以試試看能滲漏出什么來:
如果用攝像機來窺探LED,滲漏速率不會超過 1 Kbps:GoPro Hero5 運動相機能以 960比特/秒的速率錄下LED閃動,但大多數攝像機僅能達到 120比特/秒。
如能物理接觸到目標設施,事情就好做得多了:一個光學傳感器(該團隊用了 Thorlabs PDA100A )能以高達 3.5 Kbps 的速度運作。
或許最佳應對措施只剩下用膠帶蒙上LED了,即便這么做會造成一些不便。另外,多注意一下你路由器上的固件。