Evil maid attack
Come promesso sono qui per illustrare la guida che ci permetterà di stare tranquilli contro l’attacco della cameriera malvagia (evil maid attack).
Per prima cosa vediamo cos’è un evil maid attack, mi rifaccio ad un vecchio articolo comparso su oltrelinux, ecco il link http://www.oltrelinux.com/2009/10/26/lattacco-della-cameriera-malvagia/.
Tradotto in soldoni, l’attacco consiste nel estrarre la passphrase necessaria per decifrare il disco criptato.
La tecnica del evil maid attack si svolge in due tempi diversi.
Per prima cosa bisogna infettare la partizione in chiaro che contiene il kernel di boot, con un tool adatto (ecco il link per il tool http://theinvisiblethings.blogspot.it/2009/10/evil-maid-goes-after-truecrypt.html), successivamente bisogna riprendere possesso del computer virato ed estrarre la magica frase necessaria a decifrare il disco.
Nel caso si fosse protetto il bios con una password che non consente l’accesso per modificare l’ordine di boot, è sufficiente smontare il disco rigido, montarlo su un’altro computer, iniettarvi il codice maligno e rimettere tutto in ordine. Al primo avvio, l’ignaro UTONTO digiterà la frasetta ed il kernel maligno la scriverà in un file accessibile.
Vediamo nel dettaglio come proteggerci.
Abbiamo la nostra distribuzione installata e funzionante, per prima cosa ci procuriamo un bracciale usb, meglio se impermeabile, da questo non ci separeremo mai, neppure un secondo, per intenderci, mentre facciamo la doccia lo indossiamo, un evil maid attack non è uno scherzo, non è da sottovalutare, è un metodo preciso, efficace ed immediato per decifrare tutto l’intero disco, pertanto il boot deve rimanere al sicuro.
Visto che le mutande usb non esistono ancora, dobbiamo usare il bracciale.
Sul nostro bracciale facciamo una partizione EXT2 molto piccola, 250 Mb sono più che sufficienti (io ho una partizione da 100 Mb).
Istalliamo il solito software necessario a cifrare il disco.
# apt-get install cryptsetup initramfs-tools -y
Ed un pò di software di contorno.
apt-get install vim gzip mc arj catdvi texlive-binaries dbview djvulibre-bin gv imagemagick links w3m -y
Istruiamo il kernel
#echo aes-i586 >>/etc/initramfs-tools/modules
#echo dm-crypt >>/etc/initramfs-tools/modules
#echo dm-mod >>/etc/initramfs-tools/modules
Copiamo l’intero contenuto di /boot sulla partizione appena creata, quindi:
1) inseriamo la chiavetta nella porta usb
2) montiamo il device
# mount /dev/sdXXX /mnt
3) copiamo il boot
# cp /boot/* /mnt -R
# sync
4) smontiamo il bracciale usb (e ce lo rimettiamo al braccio)
a questo punto dobbiamo cancellare la directory di /boot presente sul computer.
# cd /boot
# rm -rf *
Controlliamo che sia vuota
# ls -la
drwxrwxr-x 2 root root 48 set 9 01:08 .
drwxr-xr-x 75 root root 3632 set 9 01:08 ..
#
Perfetto, ripartiamo con un disco di boot, visto che ora il nostro os non riparte sicuramente.
Montiamo il disco in una posizione di comodo
# mount -t (tipodi filesystem) /dev/sda1 /mnt
Creiamo un’altra directory di comodo per montare un device usb (diverso dal nostro inseparabile bracciale) o un’altro hard disk.
# mkdir /disk
Montiamo il device
# mount /dev/sdb1 /disk
facciamo un backup del sistema operativo funzionante sul device di comodo montato su /disk
# tar cvfzp /disk/backup.tgz /mnt/* && sync
Al termine smontiamo il device di comodo ed il disco.
# umount /dev/sdb1
# umount /dev/sda1
A questo punto, dobbiamo incasinare il disco che conterrà il sistema operativo cifrato a prova di evil maid attack.
Poichè per usare dati davvero random ci vorrebbero mesi, usiamo dei dati pseudo randomici, l’ideale sarebbe utilizzare il computer normalmente mentre riempiamo il disco di immondizia, siccome usare internet senza avere nulla da fare è palloso, faremo più passaggi per stare più tranquilli.
Primo passaggio:
# shared -v -n 3 /dev/sda (notare che non ho specificato la partizione, il nostro disco non deve contenere una tavola delle partizioni), ricordo che se siamo a rischio di evil maid attack il nostro nemico è particolarmente agguarrito.
Secondo passaggio:
# dd if=/dev/urandom of=/dev/sda
Io ho ripetuto questo passaggio 10 volte, nel frattempo ascoltavo musica, navigavo su internet, mandavo messaggi di posta elettronica e chattavo con gli amici.
Fra un passaggio e l’altro, si può anche spegnere il computer, riavviarlo, riaccenderlo dopo qualche ora etc etc.
In questo momento non bisogna avere fretta, ma io mi chiedo, come mai vogliamo criptare il disco in questo modo paranoico?
AAAAAA, dobbiamo fare un viaggetto in certi paesi e non vogliamo che i ficcanaso di turno vedano le fotografie di quella famosa festicciolaaaa…
Ma che feste frequentiamo?
Vabbè. il tempo passa, ma noi non abbiamo fretta, siamo consapevoli che un evil maid attack è un attacco efficace pertanto staimo attenti.
Dopo aver fatto enne mila passaggi ed aver rincitrullito perbene il disco, è giunto il momento di formattare, quindi:
#cryptsetup -h sha256 -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/sda
Rispondiamo YES tutto maiuscolo (come ci informa il comando), poi inseriamo la nostra passphrase; ROBUSTA, MI RACCOMANDO, non è che facciamo tutto questo per evitare un evil maid attack per poi farci fregare da un brute force?
La chiave potrebbe essere il pezzo di una canzone inframezzato da segni tipo !ӣ$%&/()=?^#@.,;: ogni tre lettere e scritta senza spazi o ancora meglio degli spazi posizionati in punti che non spezzano la parola esatta; tipo:
frase originale <<Il mio cane si chiama Ugo>>
frase inframezzata << ilmi ocan esi chia maUgo >>
meglio ancora se <<Ilmi&0 ocan$3, nesi12345chia===?^ maUgo(/%&/>>
Benissimo a questo punto è ora di aprire e mappare il device cifrato, quindi:
#cryptsetup -h sha256 -c aes-cbc-essiv:sha256 -s 256 luksOpen /dev/sda root
Ci chiederà la nostra frasetta, la inseriamo ed otteniamo il device cifrato mappato su /dev/mapper/root
A questo punto possiamo formattare l’intero disco o crearci dentro delle partizioni, ma visto che è tutto cifrato, creare delle partizioni complicherebbe soltanto le cose senza fornire di fatto nessun giovamento, quindi decidiamo di non creare partizioni ma di formattare direttamente, pertanto creiamoci una struttura adeguata, una ext4 va più che bene (ricordiamoci che in caso di guasto del disco non c’è verso di ripristinare i dati).
# mkfs.ext4 /dev/mapper/root
Adesso rimettiamo le cose in ordine, rimontiamo il disco di comodo e montiamo la /dev/mapper/root per poter ripristinare il sistema operativo.
# mount -t ext4 /dev/mapper/root /mnt
mettiamo anche il nostro braccialetto nella porta usb
e montiamo il disco di comodo
# mount /dev/sdDISCODICOMODO /disk
esplodiamo il tar precedentemente creato
# cd /mnt
# tar xvfpz /disk/backup.tgz
# sync
controlliamo che i percorsi siano esatti.
……e a questo punto……
# mount –bind /dev /mnt/dev
# mount –bind /proc /mnt/proc
# mount –bind /sys /mnt/sys
dopo ogni mount ci vanno 2 segni –
# umount /disk (se il sistema operativo era già popolato è necessario piallare la chiavetta, diversamente possiamo pulirla con un semplice rm).
scopriamo l’UUID del bracciale, ci servirà successivamente
# blkid /dev/sdb1
/dev/sdb1: UUID=”c26aaca6-c6d8-46a6-12d1-5cf0076f53c0″ TYPE=”ext2″
Adesso chroottiamo (ricordiamoci che ci stiamo proteggendo da un evil maid attack, la paura è un ottimo strumento per fare le cose ben fatte).
# chroot /mnt
montiamo il chiavino di boot nella sua posizione corretta
# mount /dev/sdb1 /boot
prepariamo la fstab
# vi /etc/fstab
proc /proc proc defaults 0 0
UUID=c26aaca6-c6d8-46a6-12d1-5cf0076f53c0 /boot ext2 defaults 0 0 # periferica usb di boot
/dev/mapper/root / ext4 defaults 1 1
salviamo e usciamo (ESC : wq)
Adesso andiamo a sistemare il crypttab, ma prima dobbiamo sapere l’UUID del disco cifrato a prova di evil maid attack.
# blkid /dev/sda
/dev/sda: UUID=”4ee8be6d-998f-473e-6697-a5d55644addd” TYPE=”crypto_LUKS”
# vi /etc/crypttab
#
root UUID=4ee8be6d-998f-473e-6697-a5d55644addd none luks,cipher=aes-cbc-essiv:sha256,size=256
salviamo e usciamo (ESC : wq)
Adesso istruiamo grub:
# grub-install /dev/sdb (il nostro inseparabile bracciale)
# update-grub2
# update-initramfs -k all -u
# grub-install /dev/sdb
# update-grub2
benissimo, cominciamo a smontare i vari device per prepararci al nostro primo boot cifrato a prova di Evil maid attack.
# umount /boot
# exit
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /dev/mapper/root
# cryptsetup luksClose /dev/mapper/root
# shutdown -r now
sistemiamo il bios perché questo possa fare il boot da usb
Se tutto è andato per il meglio, dovremmo vedere la schermata che ci chiede la passphrase, la inseriamo ed il primo boot dovrebbe avvenire con successo.
A questo punto, però, chiunque entri in possesso del bracciale potrebbe inocularlo di porcheria.
Creiamoci una directory all’interno del disco cifrato
# mkdir /rewriteboot
smontiamo la periferica di boot
# umount /dev/sdb1
creiamo l’immagine della chiavetta di boot e la infiliamo nel disco cifrato
# dd if=/dev/sdb1 of=/rewriteboot/boot.img
adesso editiamo il file /etc/rc.local per riscrivere, ad ogni avvio del sistema, l’intera partizione di boot
# vi /etc/rc.local
prima della riga exit0 inseriamo:
umount /dev/sdb1
dd if=/rewriteboot/boot.img of=/dev/sdb1
sync
salviamo e usciamo (ESC :wq)
A questo punto vediamo cosa accade, premesso che la chiave di boot NON DEVE MAI ESSERE LASCIATA INCUSTODITA.
Il sistema fa il boot dalla periferica USB, per mezzo della passphrase si apre il disco cifrato, al termine dello start del sistema, la partizione di boot viene smontata e sovrascritta completamente da un’immagine sicuramente pulita perché contenuta all’interno del disco cifrato.
Qualora la usb di boot fosse caduta in mani sbagliate a nostra insaputa, l’Evil maid attack viene reso vano dalla sovrascrittura del boot che, nel momento in cui è virato scrive la passphrase sulla chiave usb, questa viene ripulita ed al prossimo riavvio torna ad essere un kernel vergine.
Se riuscissimo a trovare una vecchia pendrive usb da pochi Mb potremmo addirittura sovrascriverla tutta.
Abbiamo optato per una piccola partizione per avere la possibilità di sovrascrivere i dati in maniera veloce.
Questo è il mio metodo per evitare un Evil maid attack.
Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack Evil maid attack
non dormo più la notte, Evil maid attack mina il mio sonno 🙂
Pingback: FIREWALL PORTATILE protegge da proxy e da sniffer maligni.
Pingback: Rinforzare la cifratura, adesso prima che sia troppo tardi..
Pingback: NAS - Il pensiero di un uomo libero NAS