După ce, în 2009, viermele Conficker a infectat milioane de computere în întreaga lume, propagându-se prin medii de stocare USB, iar în 2010, creatorii viermelui Stuxnet au folosit dispozitive USB pentru a infecta computerele din interiorul centralei nucleare de la Natanz, încrederea în mediile de stocare USB, folosite la scală largă în întreaga lume, a suferit o lovitură devastatoare.
În vara anului 2014, Karsten Nohl şi Jakob Lell au anunţat că au descoperit o breşă critică de securitate în standardul USB pe care au denumit-o BadUSB. Chiar dacă ei au decis să nu publice cercetarea făcută, câteva luni mai târziu, Adam Caudill şi Brandon Wilson au anunţat că au făcut o descoperire asemănătoare și au făcut-o publică pentru a-i presa pe producătorii de dispozitive USB să vină cu o soluție. Această vurnerabilitate le permitea hackerilor să introducă cod malițios în controller-ul Phison 2251-03, folosit, la acea vreme, de mulți producători de medii de stocare USB, printre care Kingston, Toshiba, Patriot, Silicon Power și Verbatim. În ultima vreme, plecând de la cercetările anterioare, hackerii au conceput o nouă formă de atac – un exploit care transformă tastaturile, camerele Web și alte tipuri de dispozitive conectate prin USB în platforme de atac programabile, care nu pot fi detectate de măsurile de securitate existente.
BadUSB, aproape imposibil de detectat
În multe privințe, BadUSB este mult mai periculos decât pur și simplu copierea pe un stick USB a unui fișier malițios care se propagă automat, așa cum a fost cel utilizat în atacul cu viermele Conficker. Cu toate acestea, chiar dacă în demonstrațiile lui Nohl si Lell se foloseau numai medii de stocare USB 2 sau USB 3, BadUSB funcționează teoretic pe orice tip de dispozitiv USB. BadUSB este mult mai periculos decât precedentele atacuri prin dispozitive USB, deoarce este aproape imposibil să detectezi un dispozitiv USB care are firmware-ul modificat fără a folosi metode criminalistice moderne, cum ar fi dezasamblarea fizică sau tehnica de reverse engineering (reproducere) a dispozitivului. De asemenea, scanările antivirus nu vor detecta nicio vulnerabilitate, iar majoritatea analizelor, fără tehnici sofisticate, se bazează pe firmware-ul în sine și, în cazul BadUSB, sunt inutile.
Cel mai deranjant aspect este acela că dispozitivele corupte sunt mult mai greu de dezinfectat. Formatarea unui stick USB infectat, de exemplu, nu va elimina vulnerabilitatea existentă în controller-ul dispozitivului. Deoarece modificarea are loc la nivel de firmware, malware-ul poate fi eliminat numai prin înlocuirea firmware-ului existent cu cel al producătorului. Având în vedere posibilitatea ca malware-ul tradițional să poată fi programat să utilizeze tehnici BadUSB pentru a infecta orice dispozitiv atașat, atacul ar putea schimba întregul regim utilizat în prezent pentru conectarea dispozitivelor USB la computer.
În ultimul timp au apărut variante similare pentru utilizarea dispozitivelor HID (dispozitiv de interfaţă umană) în scopuri dăunătoare. Una dintre ele o reprezintă introducerea în controller-ul unui dispozitiv Arduino, cum ar fi Teensy sau Leonardo, a unui cod malițios, transformând respectivul dispozitiv într-o tastatură virtuală care poate scrie până la 1000 de cuvinte pe minut. Astfel, dacă se încarcă un payload pe respectivul dispozitiv în care se folosesec comenzi ale tastaturii (folosind „limbajul“ Rubber Ducky), respectivul dispozitiv poate executa o gamă largă de comenzi, care pot duce, de exemplu, la escaladarea privilegiilor de administrator pe computer, la salvarea parolelor stocate la nivelul browserului Chrome sau chiar la schimbarea setărilor DNS.
Soluţii împotriva BadUSB
Problema este că dispozitivele USB nu au fost niciodată concepute pentru a preveni o exploatare de tipul BadUSB. Prin contrast, perifericele bazate pe standardul Bluetooth conțin elemente criptografice care pot fi decriptate numai printr-un proces de împerechere. Tehnicile de apărare folosite împotriva introducerii de cod malițios în firmware-ul dispozitivelor USB includ crearea unei „whitelist“ pentru asigurarea că doar dispozitivele permise pot fi conectate la computer sau folosirea unui program care verifică dacă sunt conectate mai multe tipuri de dispozitive, de același fel, în același timp, de exemplu două tastaturi sau două plăci de rețea. Folosite împreună, aceste contramăsuri pot atenua amenințările atacurilor de tip BadUSB.
O altă slăbiciune care face ca atacurile BadUSB să fie posibile este lipsa unei semnături criptografice atunci când se înlocuiește firmware-ul dispozitivului. Majoritatea dispozitivelor USB va accepta orice actualizare de firmware. Programarea acestora din fabrică pentru a accepta numai acele actualizări autorizate de producător ar duce la prevenirea atacurilor de acest tip.
Deși nu este posibilă combaterea completă a atacurilor BadUSB fără o soluție criptografică, prin instruirea şi conștientizarea persoanelor cu privire la riscurile la care se expun atunci când folosesc dispozitive USB, precum și prin concentrarea pe securizarea tehnologiei și a proceselor care folosesc echipamente USB, s-ar putea reduce riscul global asociat.
Abstract
USB attacks are becoming more sophisticated, affecting all classes of USB device, instead of just storage. USB devices are delivery mechanism for host-side exploits.
Attackers are targeting the USB stack itself, embedding malicious code in device firmware to covertly request additional USB interfaces, providing unacknowledged and malicious functionality that lies outside the apparent purpose of the device.
This allows for attacks such as BadUSB, where a USB storage device with malicious firmware is capable of covertly act as a keyboard as well, allowing it to inject malicious scripts into the host machine. To date, there has been no practical defensive solution against BadUSB attacks, which expose the fundamental vulnerabilities of unconstrained privileges in USB devices.
Autor: Pardos Claudiu