2 parole sulla sicurezza…


La sicurezza informatica è una materia nuovissima, tanto nuova che diverse
multinazionali non la conoscono ancora…
almeno così sembrebbe leggendo il codice rimasto fino ad oggi in produzione. 😀

In realtà loro conoscono benissimo la sicurezza ma spesso non vogliono
affrontare analisi, fuzzing, pentest e altro per paura di dover rivoluzionare
progetti interi che risalgono anche a piu’ di 10anni fa!!

Non faccio nomi, ma la situazione, anche per noi “clienti” che ci fidiamo
non è per niente sicura e non certo io ma la cronaca parla abbastanza
chiara: ogni anno milioni di normali utenti vengono inculati per colpa di
qualche azienda che non li tutela come dovrebbe..

vorrei pero’ abbandonare, almeno per il momento, quello che avviene negli
ambiti enterprise e parlare piu da vicino al privato: cosa deve fare un
normale utente per avere un minimo di sicurezza?

L’argomento è davvero grande già solo per questo ambito “casalingo” non
basterà sicuramente un post, ma cominciamo qui dalle basi, questo primo
appunto sarà di facile fruizione e dedicato a utenti alle prime armi, diciamo,
per intenderci meglio, un post aranzulliano :p

Una delle prime cose che dobbiamo analizzare per capire quanto il nostro
pc è sicuro è il “giro” che i pacchetti in uscita fanno verso internet e
sopratutto se tali pacchetti vengono trasmessi in chiaro..
un altra cosa poi, che riguarda forse più i portatili e i device destinati
ad “uscire da casa” è analizzare anche quanto sono fruibili i dati nostri
sul filesystem e quindi in primis se il nostro profilo è coperto da una
password robusta e consistente e in secundis se il nostro filesystem è
cifrato o meno..l’idea è quella di astrarre il piu possibile, di allontanare
le nostre informazioni da tutti tranne che da noi in maniera decisa e radicale..
più ci riusciamo, più diventa difficile raggiungere i nostri dati personali.

In questo post vi daro’ qualche idea, più avanti, appena trovero’ il tempo
giusto, scrivero’ anche qualche breve tutorial per spiegare come “tirarla su”
(l’idea) senza troppi problemi.

Cominciamo dal/i nostro/i hard-disk, prima di formattarli, se sono stati usati,
andrebbero sempre skretchati con dati randomici, per esempio con un bel:
dd if=/dev/urandom of=/dev/ bs=1M (/dev/drive è il device da sovrascrivere ovviamente)

..ci starà tanto quanto è grande il nostro device..se vogliamo una stima
possiamo dare un:
kill -USR1 $(pidof dd) durante l’operazione..

fatto questo possiamo decidere in base al tipo di partizione (bootabile o meno)
se utilizzare LUKS, truecrypt o altro.. piu avanti, in un altro post, entreremo
nel dettaglio su questo.

Avendo dei device crittati saremo sicuri che se dovessimo perdere il nostro
laptop piangeremo solo (con un occhio?) per lui e non per i nostri dati…
ovviamente questo vale anche per un hd esterno, una usbkey etc etc.

Passiamo adesso al network, come renderci davvero anonimi in rete?

Dicevo che innanzitutto bisogna analizzare quale sarà il giro che i pacchetti
faranno prima di raggiungere internet: il giro in parole povere è
NostroPC—->ROUTER—->In(f)ernet
e scrivo Infernet non a caso… già perchè è proprio cosi’ che dobbiamo
concepirlo per difenderci e renderci invisibili quanto piu’ possibile… 😀

Nella rete oltre i piu’ comuni virus e worm girano tanti spider, parecchi robot
in grado di reperire informazioni dai più ingenui utenti..e non parlo delle
pratiche più stupide e facilmente sgamabili tipo il Phishing ma parlo di tanto
altro, di sniffer, trojan, massbots, rootkit etc etc tutte robe che giornalmente
vengono piazzate e utilizzate facilmente su milioni di pc a insaputa di utenti e
(pseudo)sistemisti…l’approccio è sempre lo stesso, il robot dapprima individua
un servizio buggato tramite uno scanport, successivamente sfrutta la vulne
per bindare un proprio socket o cmq avere accesso al target..

Dobbiamo allora rendere invisibili i nostri servizi, o cmq renderli almeno più
sicuri: per far cio’ mi viene in mente iptables, ipfw o anche il nostro router
casalingo, router che nel migliore dei casi è anche un firewall, in questa
maniera sapremo cosa rendere accessibile all’esterno e cosa no e sopratutto
sapremo che tutto cio’ che è accessibile deve essere prima ancora PATCHATO..

io spesso vado anche a cambiare il version sui sorgenti dei servizi prima di
compilarli, e cambio anche le porte di default..questa pratica è inutile se il
servizio è buggato ma è cmq un livello piccolo in piu’ di astrazione, diciamo che
è quel poco che basta per non rendere il servizio localizzabile almeno ai bot
piu’ stupidi che basano le proprie scansioni sulle porte in ascolto e il version
(la rete ne è satura!)..

Se patchati i nostri servizi sono più sicuri di prima (salvo 0day ovviamente).

Vediamo di analizzare adesso quello che “trasmettiamo” su internet:
i nostri pacchetti in uscita, le nostre navigazioni sul web per esempio..

Le pagine web navigate e altro (anche le password!) sappiamo che vengono
raccolte, quando abilitata, nell’history del browser…possiamo stare
sicuri almeno adesso sul fatto che queste siano più sicure visto che
prima abbiamo cifrato il nostro disco.. se volessimo astrarre ancora di
piu’ potremmo usare per le navigazioni più a rischio una macchina
virtuale opportunamente configurata, magari una VM che risieda su un
virtualdisk cifrato con truecrypt e che bootiamo solo all’occorrenza
(per esempio quando dobbiamo utilizzare carte di credito o accedere al
sito della nostra banca).. in questa maniera il file contenente la vm
(vmdk, vdi etc.) viene crittato e a sua volta risiede su un filesystem
crittato: livello di astrazione = +2

..il giro dei dati sarà pero’ sempre lo stesso: anche usando una VM i dati
verranno trasmessi in chiaro dal nostro gateway a Infernet..(e lo stesso
vale per le chiamate al DNS) l’idea sarebbe quella di trovare un nodo, un
relay al quale trasmettere i dati (magari crittati) e che provveda lui
stesso a girare tali dati cifrati in rete: per far cio’ potremmo utilizzare
una VPN in UDP utilizzando una nostra macchina in rete (io uso una vps per
esempio) oppure un qualche servizio su internet (cercate VPN services la
rete è piena, solitamente i migliori sono a pagamento ma assicurano la
cancellazione addirittura dei logs di accesso!).
Esiste anche l’opzione TOR, io la uso sempre come secondaria, nel senso che
arrivo a tor sempre dopo una vpn esterna perchè non mi fido al 100%..

I maniaci come me, inoltre, creano proprio delle sottoreti virtuali sul quale
girare i pacchetti, in particolare io potrei tirare su due o piu macchine
virtuali impostandole una come gw dell’altra e facendole viaggiare su vpn
diverse:

VM1—(vpn udp)—> 1GW/Relay VM2—-(vpn2 udp)—>2GW VM3

I miei dati praticamente “escono” dalla prima macchina virtuale incapsulati e
cifrati tramite la prima vpn instaurata con la seconda VM che a sua volta li
cifra nuovamente e li gira su internet sfruttando un’altra vpn e cosi via…

(PS: è indubbio che più è il numero delle vpn pubbliche più sarà lenta la
navigazione)

in questa maniera siamo sicuri che anche i nostri pacchetti
diventano per lo meno inleggibili (o quasi) 🙂 per provarlo si puo’ utilizzare
un qualsiasi sniffer (tcpdump, ethereal, ettercap) e mettersi ai bordi e
catturare il traffico. 😉
Infine dicevamo delle interrogazioni ai DNS, solitamente queste vengono fatte
dirette dal host (cosa che in molti dimenticano) quindi per completare il nostro
giro dovremmo provvedere a crittarle, un consiglio è quello di cominciare
usando unbound+dnscrypt-proxy oppure nameserver pubblici con zerolog
garantiti…
ma per oggi mi fermo qui.
Amen!

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.