Cosa posso fare per proteggere il mio laptop Linux dagli attacchi BadUSB come descritto di ArsTechnica qui ?
Forse scrivere un profilo appropriato AppArmor sarebbe d'aiuto?
Cosa posso fare per proteggere il mio laptop Linux dagli attacchi BadUSB come descritto di ArsTechnica qui ?
Forse scrivere un profilo appropriato AppArmor sarebbe d'aiuto?
L'attacco BadUSB si basa sul fatto che i computer consentono e abilitano i dispositivi HID su tutte le porte USB. Gli adattatori di rete faked non rappresentano un pericolo reale. La mia risposta cerca di descrivere come usare udev per disattivare temporaneamente l'aggiunta di nuovi dispositivi HID. Non sono esperto di udev, ma ho testato il mio approccio e funziona per me.
Per la preparazione , crea un file /etc/udev/rules.d/10-usbblock.rules
con il contenuto:
#ACTION=="add", ATTR{bInterfaceClass}=="03" RUN+="/bin/sh -c 'echo 0 >/sys$DEVPATH/../authorized'"
Se vuoi bloccare anche altre classi, allora cerca il numero della classe e copia la linea, e cambia la classe.
Ora puoi bloccare tutti i nuovi dispositivi HID usando il comando
sed -i 's/#//' /etc/udev/rules.d/10-usbblock.rules; udevadm control --reload-rules
e sblocca con:
sed -i 's/^/#/' /etc/udev/rules.d/10-usbblock.rules; udevadm control --reload-rules
Prima di spegnerti, sblocca sempre , poiché l'impostazione è persistente e i tuoi dispositivi "buoni" HID verrebbero rifiutati al riavvio.
Non so se è possibile modificare la directory delle regole temporanee, ma se le modifiche apportate influenzano il comportamento, è necessario modificarlo, in quanto non è necessario sbloccarlo prima dell'arresto.
L'idea alla base di BadUSB è che un agente malintenzionato re-lampeggia il chip del controller USB di un dispositivo per fare qualcosa di brutto. Questa è un'opportunità interessante, ma qui ci sono alcuni presupposti che le persone tendono a sorvolare:
Questa è una vulnerabilità della sicurezza di sicuro se è possibile. Se ciò è consentito, qualsiasi host a cui è collegato il dispositivo può modificare in modo permanente le caratteristiche del dispositivo. Generalmente ciò richiede attrezzature speciali e accesso diretto ai pin fisici del chip, ma se un produttore ha deciso di esporre la funzionalità tramite il protocollo USB, allora questo è motivo di allarme in sé e dovrebbe essere segnalato come vulnerabilità in quel prodotto. È non , tuttavia, un difetto nel protocollo stesso.
Il fatto che 3 delle 4 dimostrazioni programmate coinvolgano chip di Phison Electronics suggeriscono che il ricercatore abbia scoperto solo una tale vulnerabilità in un prodotto specifico.
Facendo lampeggiare il firmware del dispositivo, è possibile ottenere una chiavetta per segnalare se stessa come una scheda di rete. Ma questo non rende effettivamente un adattatore di rete, significa solo che il computer parlerà come se fosse uno. Così ora il tuo computer inizia a parlare con Verbatim Store-n-Go usando il driver per D-Link DUB-E100 . Ma a meno che Store-n-Go non abbia l'interfaccia hardware corrispondente nel D-Link, tutto ciò che hai è una chiavetta USB rotta.
Se la chiavetta USB ha un microcontroller relativamente potente, potresti essere in grado di riprogrammarla. Ma "potente" e "periferica USB" di solito non vanno insieme.
Uno degli esempi citati è quello di insegnare a un dispositivo a comportarsi come un adattatore di rete, e quindi a supporre che tutto il traffico verrà fatto scorrere su di esso su qualsiasi computer in cui lo si collega. Questo è ... un allungamento. A tal fine, il computer deve essere già configurato per impostare qualsiasi nuovo adattatore di rete come nuovo gateway predefinito. Non sono sicuro che Windows sia così desideroso di cambiamenti, ma se hai mai configurato la rete su un computer Linux, sai che non è mai così semplice.
Questo intero concetto non è tutto a castello. Se un dispositivo consente il re-flashing da qualsiasi host collegato, questo è un problema. Posso tranquillamente affermare con certezza al 100% che non porterà alle calamità spinte dai relativi articoli di notizie senza fiato. Ma vale la pena prestare attenzione.
E ancora più importante, l'USB è potente e potente significa potenzialmente pericoloso. Connettere un dispositivo tramite USB significa necessariamente alterare il modo in cui si comporta il tuo computer, e cose molto, molto pericolose sono possibili. Lo sappiamo dagli anni '90. Usare tutte le dovute cautele quando si collegano oggetti al computer. Ma questa nuova scoperta cambia molto poco; i nuovi attacchi possibili qui non sono così potenti come quello che già esiste, il nuovo pericolo è che offusca la linea tra i dispositivi "fidati" e "non attendibili".
BadUSB non è un attacco. È uno strumento utilizzato durante la progettazione degli attacchi.
Quando si collega un dispositivo USB a un computer, il dispositivo comunica al computer che tipo di cosa è, in modo che il computer possa selezionare il driver appropriato. Ad esempio, una pen drive si dichiara come un dispositivo "USB Mass Storage", mentre una tastiera è un "Human Interface Device".
BadUSB è una tecnica per riscrivere il firmware di un dispositivo USB inserito dal computer. Ad esempio, potrebbe fare in modo che una pen drive si identifichi come un mouse e induca il puntatore a saltare a caso. Oppure potrebbe rendere la chiavetta identificativa come un hub USB con tastiera e memoria di massa collegate, che quando collegate inserisce una sequenza di sequenze di tasti che provoca l'esecuzione di un programma sulla chiavetta.
Il romanzo qui non sta rendendo i dispositivi USB che non sono come sembrano: agenzie di intelligence, criminali informatici e altri lo fanno da anni. La cosa nuova è che questo può essere fatto all'hardware di base tramite la connessione USB, aprendo la porta a sistemi auto-propaganti, come un virus che si scrive su qualsiasi chiavetta che è stata inserita nella macchina, quindi modifica il firmware dell'unità in prova a eseguire il virus ogni volta che l'unità viene collegata.
Questa è una cosa difficile da difendere, dal momento che opera a un livello così basso ed è così flessibile in ciò che un attaccante può fare con esso. Su un sistema Linux, una cosa che puoi fare è assicurarsi che tutti i supporti rimovibili siano montati come "noexec" - questo impedisce ai programmi su di essi di essere eseguiti, e rende gli attacchi più difficili. Puoi anche controllare l'albero dei dispositivi USB ogni volta che colleghi qualcosa, per vedere se qualcosa di inaspettato è apparso.
A livello non tecnico, evita di utilizzare qualsiasi dispositivo USB inserito in un sistema potenzialmente infetto,
Recentemente ho iniziato a lavorare su USBGuard che implementa una lista bianca / lista nera del dispositivo USB con l'aiuto di UDev e di Linux funzionalità di autorizzazione USB del kernel. È un demone dello spazio utente che ascolta gli eventi UDev e autorizza o rimuove le autorizzazioni dalle periferiche USB in base a un insieme di regole scritte in un lingua delle regole .
Penso che sia molto più difficile per un utente malintenzionato riprogrammare un dispositivo in modo tale da aggirare una buona lista bianca (vale a dire specifica come si ottiene). Ovviamente, USBGuard non può proteggerti da ogni attacco e se un utente malintenzionato ha accesso fisico ai tuoi dispositivi USB, allora ha accesso a tutti i valori necessari per creare una copia di tale dispositivo, ad esempio una tastiera. Le tastiere sono casi particolarmente brutti in quanto di solito non esportano alcun valore iSerial che distingua due tastiere dello stesso tipo.
Tuttavia, l'uso di una whitelist di dispositivi noti è buono contro le interfacce nascoste / inaspettate su un dispositivo USB. Il famoso esempio è una tastiera o una scheda di rete aggiunte (riprogrammando su una macchina infetta diversa da malware). Se sai che il tuo disco flash USB dovrebbe avere solo un'interfaccia di archiviazione di massa e all'improvviso ha qualcosa in più, allora sai che non dovresti lasciarlo interagire con il tuo sistema - e questo è il caso d'uso principale di USBGuard.
Lo stesso livello può essere implementato usando solo le regole UDev e alcuni helper per analizzare i descrittori USB, ma USBGuard lo rende più conveniente.
Accetta la prima tastiera / mouse USB HID, sullo schermo viene richiesto di accettare più tastiere / mouse USB HID. Probabilmente il modo più semplice, non conosco alcun sistema operativo o software che abbia già implementato qualcosa del genere.
In alternativa, mostra qualcosa sullo schermo che l'utente deve inserire dalla tastiera in modo da sapere che non è un dispositivo canaglia. Tipo, una breve sequenza di numeri o lettere. (Perché in che modo un dispositivo canaglia sa cosa c'è sullo schermo?)
Il modo più semplice è probabilmente usare un kernel sicuro , intendo il kernel con patch grsecurity :
Grsec fornisce 2 opzioni per disabilitare usb dopo l'avvio:
quello soft:
L'utente può ancora sbloccare usb usando sysctl (kernel.grsecurity.deny_new_usb)
quello rigido:
Niente USB dopo l'avvio
Grsec è un set di patch sorgente che migliora il livello di sicurezza del kernel linux e ti proteggerà da molti altri problemi di sicurezza (buffer overflow, stack exec e molti altri), vedi link
Puoi costruire il tuo kernel Linux con patch di grsecurity su qualsiasi distribuzione Linux, ma le distro che lo supportano sono: