Un RaspberryPI da battaglia

Un RaspberryPI da battaglia

Nato come computer per i meno abbienti è ben presto diventato un must have per modder e hacker vari. Gli usi di questo dispositivo sono veramente molteplici, viene addirittura usato sulla Stazione Spaziale Internazionale.

Uno degli usi è sicuramente quello del penetration testing, nello specifico viene usato dai vari red team sul campo come dispositivo spia o cavallo di troia. In Mr Robot viene attaccato ad una scatoletta che contiene delle terminazioni di rete dando così accesso remoto alla fsociety.

In questo articolo non illustrerò come portare gli attacchi, questo me lo tengo per i prossimi articoli (la crisi di idee colpisce un pò tutti), ma illustrerò solo come preparare un raspberrypi appena uscito dalla scatola per essere pronti ai vari test di sicurezza.

Per seguire questo articolo ci sarà bisogno di:

  • Raspberry Pi 4 (io sto usando il 3 B+ ma non cambia molto)
  • Scheda MicroSD (almeno 16gb)
  • Alimentazione (o alimentatore RaspberryPi originale o un cavo MicroUSB collegato ad una presa USB)
  • Balena Etcher installato sulla macchina
  • (Opzionale) Monitor HDMI (non servirà ma se qualcosa va storto è buono per il debug)

Il mouse e la tastiera non serviranno. Non siamo delle fighette, siamo degli hackers! (cit.)

Installare il sistema operativo

Come sistema operativo useremo Raspbian. Si lo so che c’è Kali però vorrei cogliere l’occasione per spiegare come abilitare la connessione SSH.

Andiamo sul sito https://www.raspberrypi.org/downloads/ e clicchiamo sull’icona Raspbian.
NOOBS è carino, permette di creare facilmente una scheda SD adatta per le nostre esigenze, ma come ho detto prima: siamo hackers, niente scorciatoie.

In questa pagina vediamo tre immagini (almeno), clicchiamo Raspbian Buster Lite. Questa immagine non include il desktop manager, questo ci farà risparmiare parecchio spazio e tanto sul campo non ci servirà.
Qui sta a voi scegliere se scaricare il torrent o scaricare direttamente l’immagine via HTTP.

Una volta scaricata l’immagine dobbiamo fare una piccola operazione, questo è il motivo per cui non ho scelto ne Kali ne un altra immagine come P4wnPI, perché volevo spiegarvi questo passaggio.

Dobbiamo ora editare l’immagine. Vi spiegherò come farlo su Windows perché è il sistema che uso e perché è il più ostico, aprire l’immagine su Linux e su MacOS è più semplice.

Il software che ho usato io per modificare l’immagine è OSFMount. Si può installare semplicemente andando sempre avanti e accettando tutte le opzioni standard.
Unzippiamo il file contenente l’immagine del sistema Raspbian.
Avviamo OSFMount, clicchiamo su “New Mount…” e andiamo a selezionare il file .img che abbiamo estratto dal file zip di Raspbian. Clicchiamo poi su Next.

Ora, come partizione da selezionare, selezioniamo la numero 0, ovvero quella di tipo LBA. E’ la partizione più piccola fra le due, sarebbe quella di boot.

Una volta cliccato su Next andremo a selezionare le opzioni di mount. Qui dovete togliere la spunta sull’opzione “Read-only drive” e fate attenzione a scegliere una lettera unità che non sia già occupata. Tenete presente che se non scegliete la lettera lui userà E: come lettera unità e potrebbe essere occupata.

Cliccando su Mount monterà l’immagine disco nella lettera selezionata. Nella lista dei device montati, cliccate con il tasto destro sul device e poi cliccate su Open, dovreste così avere davanti il contenuto della partizione.

P.S.: Potrebbe darvi un errore del tipo “OSFMount not enabled” ma basterà cliccare di nuovo su Mount e funzionerà tutto.

Una volta che avete accesso alla partizione, aprite il file config.txt per la modifica. Vi consiglio di usare un editor come notepad++, Sublime Text o similari, non usate il notepad.
Qui dovete aggiungere la seguente riga in fondo al file, come ultima proprio:

1
dtoverlay=dwc2

Salvate e chiudete il file. Ora, con la stessa modalità, apriamo il file cmdline.txt. Questo file è scritto tutto su una riga. Individuiamo la voce “rootwait” e dopo di essa (credo vada bene anche alla fine ma io l’ho sempre messo lì) scriviamo:

1
modules-load=dwc2,g_ether

E’ molto importante che sia tutto su una linea, non dividede questo file in più linee. Salvate il file e chiudete l’editor.

Nelle nuove versioni di Raspbian è stato rimosso il server SSH di default. Per abilitarlo è molto semplice. Nella partizione, nello stesso livello dove ci sono config.txt e cmdline.txt, create un nuovo file vuoto chiamato ssh. Mi raccomando, senza estensione e niente, solo ssh.

Ok ora tornate nella finestra di OSFMount e, nella lista dei device, cliccate con il tasto destro sul device che contiene l’immagine di Raspbian e poi cliccate su Dismount.

Ora inserite nel computer la scheda SD ed aprite Balena Etcher. Selezionate l’immagine di Raspbian che abbiamo appena modificato nella prima sezione, nella seconda sezione fate molta attenzione che sia selezionata la vostra scheda SD e nient’altro e cliccate su Flash.

Ora il disco del nostro Raspberry è pronto. Basterà inserire la scheda SD nello slot del Raspberry ed accenderlo, dopo qualche secondo sarà up and running.
Se avete un monitor HDMI potete collegarlo e seguire il boot.

Bonjour tout le monde!

In francese avevo 2 perciò spero di aver azzeccato come si scrive. Non sono impazzito, è che in qualche modo dovremo connetterci al raspberry, non ci avevate pensato eh? Beh neanche io la prima volta. Sono rimasto come un cretino a fissare il Raspberry con la stessa faccia di chi chiude la porta di casa e si accorge di aver lasciato la chiave dentro.
Non possiamo usare una rete WiFi ad-hoc perché l’antenna wifi ci servirà per sniffare il traffico di rete (a dire la verità ci servirà anche un altra antenna esterna il più delle volte), per il bluetooth idem.
Ci connetteremo usando la rete ethernet. Da qualche versione a questa parte, Raspbian ha una specie di “autosense”, riesce a capire se è connessa ad un router o ad un altro computer e può settare una rete in base alla modalità con cui è connesso.
Perciò quello che faremo sarà connettere semplicemente un cavo ethernet dal nostro computer al Rasbperry Pi, solo che individuarlo potrebbe essere complicato, dovremmo lanciare uno scanning nmap, ma c’è una soluzione più comoda.
Useremo il protocollo bonjour di Apple (usato anche dal Raspberry Pi) che è un protocollo di annunciazione. Praticamente questi protocolli lanciano dei messaggi di broadcast in rete annunciando qual’è il loro nome e il loro indirizzo ip, così tutti i dispositivi che supportano tale protocollo possono comunicare con loro usando semplicemente il nome.
Rasbperry Pi supporta tale protocollo e si annuncia con il nome raspberrypi.local perciò, una volta installato il software bonjour sulla nostra macchina potremo richiamarlo con tale nome.
Per windows potete scaricare il Bonjour print services da questo indirizzo: https://support.apple.com/kb/dl999. Se questo link per qualche motivo dovesse non essere più valido potete cercare “bonjour print services” su un motore di ricerca e probabilmente sarà tra i primi link.
Per Mac non c’è bisogno che vi dica come si fa perché lo supporta nativamente. Per Linux non ve lo dico perché non ci sono riuscito; si tratta di installare avahi daemon ma comunque non riusciva a raggiungere il raspberry.

Se tutto è andato bene, potrete connettervi al Raspberry semplicemente collegando il cavo ethernet (aspettare qualche secondo) e poi digitare:

1
ssh pi@raspberry.local

La password è: rasbperry

Ho fatto tutto ma con raspberrypi.local non me lo vede

Tutto regolare, non vi preoccupate. A me ha funzionato una volta e tutte le altre no.
Allora bisogna un attimino ingegnarci.
Una volta collegato il Raspberry Pi alla nostra porta ethernet (e aspettati i canonici 20 secondi) andiamo a vedere le nostre schede di rete. Apriamo il prompt dei comandi di windows e digitiamo:

1
ipconfig

Questo ci elencherà tutte le nostre schede di rete e il relativo ip che queste hanno ottenuto.

Come vedete nella foto, la scheda Ethernet 2, che è quella connessa al Raspberry Pi, ha preso l’indirizzo 169.254.14.61 con una netmask di 16.
Per capire qual’è l’indirizzo del Raspberry potremmo lanciare un nmap ma ho notato che ci mette tantissimo, useremo invece la tabella arp.
Lanciamo il seguente comando:

1
arp -a

Il risultato sarà una cosa del genere:

Come vedete, per l’interfaccia con indirizzo 169.254.14.61 (che è quella connessa al Raspberry) c’è un solo indirizzo nella tabella ARP, che non può che essere il nostro Raspberry.
Perciò l’indirizzo del Raspberry sarà 169.254.90.198.
Quindi per connetterci in ssh al Raspberry basterà digitare il comando:

1
ssh pi@169.254.90.198

UPDATE: Se non avete mai contattato il Raspberry, esso non apparirà nella vostra tabella ARP. Per ovviare a ciò, potete scaricare Nmap, lanciare un prompt dei comandi e digitare il seguente comando:

1
nmap -T4 -F 169.254.0.0/16

Armatevi di pazienza e di generi alimentari di conforto e, dopo un po’, vedrete apparire l’indirizzo IP del vostro Raspberry nella tabella ARP. Magari, mentre Nmap è in scansione, lanciate ogni tanto il comando arp -a, così appena vedrete apparire il Raspberry Pi potrete fermare la scansione.

Connettere la Raspberry Pi alla rete WiFi di casa per la configurazione

A regime poi useremo la scheda WiFi per le scansioni e per lo sniffing ma per ora ci serve la connessione internet per la configurazione e l’installazione dei software.
Raspbian offre un ottima utility chiamata raspi-config. Lanciamo il seguente comando:

1
sudo raspi-config

Vedremo una schermata abbastanza intuitiva. Selezioniamo “Network Options” e poi l’opzione Wi-fi.
Da qui avremo la possibilità di selezionare la rete e di inserire la password.

Abilitare il monitoring della scheda WiFi

Putroppo la scheda WiFi del RaspberryPI non supporta il monitoring mode di default, che è quello che ci permetterà di sniffare il traffico WiFi. Niente di preoccupante però perché scaricheremo una patch al kernel per fare in modo che lo supporti.
Ci sono vari progetti per fare questo, io ho usato Re4son.
Essendo sulla Raspberry Pi e non avendo un interfaccia grafica, andiamo a scaricarlo usando wget con il seguente comando:

1
wget  -O re4son-kernel_current.tar.xz https://re4son-kernel.com/download/re4son-kernel-current/

Per installarlo sarà sufficiente scompattarlo, entrare nella directory e lanciare il file di installazione.

1
2
3
tar -xJf re4son-kernel_current.tar.xz
cd re4son-kernel_4*
./install.sh

Installiamo il software per il pentesting

Questa parte sta molto a voi, relativamente a quello che volete fare con il Pi, io vi indicherò quanche software generico che di solito si usa.

aircrack-ng

E’ la suite più famosa per quanto riguarda il test della sicurezza delle reti WiFi. Ha vari software al suo interno, i più usati sono i seguenti:

airmon-ng

Si occupa di mettere in stato di monitoring la scheda di rete con il seguente comando:

1
airmon-ng start wlan0

Questo creerà una scheda chiamata wlan0mon che sarà in grado di catturare il traffico WiFi. Per rimettere la scheda di rete in stato di managed si può lanciare il comando:

1
airmon-ng stop wlan0

airodump-ng

Una volta che abbiamo la scheda di rete in stato di monitoring, possiamo usare airodump-ng per monitorare le reti WiFi vicine a noi lanciando il comando:

1
airodump-ng wlan0mon

aireplay-ng

Questo comando si occupa di iniettare pacchetti ARP nella rete WiFi, di solito si usa per attuare la tecnica di deautenticazione. Può essere lanciato con un comando simile a questo (preso dalla documentazione ufficiale):

1
aireplay-ng --arpreplay -b 00:01:02:03:04:05 -h 00:04:05:06:07:08 wlan0mon

Comunque potete installare aircrack-ng direttamente dai repository Raspbian:

1
2
sudo apt update
sudo apt install aircrack-ng

dnschef

Questo software si occupa di ridirezionare le chiamate DNS fatte dalla nostra macchina alla nostra macchina. Bell’affare del c***o direte voi. Eh no perché in caso di attacco di tipo evil twin o nel caso facessimo un rogue ap e ci trovassimo degli utenti connessi alla nostra macchina sarebbe possibile ridirezionare l’utente a dei siti finti ospitati sulla nostra macchina e spiare il loro traffico. Ad esempio invece che far andare l’utente sul Facebook vero, possiamo farlo atterrare su una finta pagina di login di Facebook ospitata sul nostro computer e, all’inserimento della password, potremmo salvare le credenziali su un file. Per installare dnschef basta fare:

1
2
sudo apt update
sudo apt install dnschef

Per l’utilizzo vi rimando alla documentazione ufficiale ma basta semplicemente fare un file, mettiamo chiamato hostsinfame.txt di questo tipo:

1
2
3
facebook=127.0.0.1
twitter=127.0.0.1
instagram=127.0.0.1

e lanciare il comando:

1
dnschef --file hostsinfame.txt

e lui ridirigerà le query DNS alla nostra macchina. Ovviamente dovremo installare un server DNS sulla nostra macchina.

hostapd

Nel kit dell’hacker figliodibuonadonna questo software non può mancare. Questo fa si che il nostro Raspberry si trasformi in un access point.
Per installarlo possiamo lanciare il seguente comando:

1
2
sudo apt update
sudo apt install hostapd

Questo, combinato con il precendentemente citato dnschef e dnsmasq (preinstallato su raspbian) viene fuori un evil twin con i controcavoli.

Kismet

Non è un caso che l’abbia lasciato per ultimo. Kismet è il re del network monitoring orientato al penetration testing ma l’ho lasciato per ultimo perché l’installazione supera facilmente le due ore dai sorgenti.
C’è anche una versione pacchettizzata ma io ho avuto problemi di dipendenze perciò alla fine l’ho compilato. Le istruzioni sono un po’ complesse e vi rimando alla documentazione ufficiale a questo indirizzo: https://www.kismetwireless.net/docs/readme/packages/.

Author

Daniele Argento

Posted on

2019-09-11

Updated on

2023-04-19

Licensed under

Comments