Sicurezza Informatica 1.0
La Sicurezza Informatica Di cosa NON parleremo: - Policy e procedure - Come eseguire attacchi informatici - Dettagli molto tecnici - Come difendersi dalla NSA Di cosa parleremo: - La falsa sicurezza - Come limitare i danni - Informazioni generali sulla sicurezza IT - Esempio di navigazione sicura
«La sicurezza è un processo non un prodotto» (Bruce Schneier) Come pensa chi attacca? Questa cosa come funziona? Cosa succede se faccio qualcosa di diverso? Dove risiede la nostra sicurezza in genere? Le Password! La lunghezza è tutto? La complessità è la soluzione? Cambiare algoritmo risolve? http://en.wikipedia.org/wiki/password_cracking Tempo + risorse password trovata!
Esempio pratico su come le cose non sono quello che sembrano: Password maggiori di 8 caratteri con algoritmo DES, sono sicure? DIPENDE! LM Hash di Windows L'LM hash funziona nel seguente modo: - La password dell'utente viene convertita da stringa OEM a tutto maiuscolo. - La password viene anche troncata dopo 14 byte. - La password viene a sua volta divisa in due metà da 7 byte. - Questi valori sono usati per creare due chiavi DES, una per ogni blocco da 7 byte, convertendo i sette byte a un flusso di bit e aggiungendo un bit zero alla fine di ogni sette bit. Questo genera i 64 bit necessari per ogni chiave DES. - Ognuna di queste di chiavi è usata per cifrare con il DES la stringa costante in ASCII KGS!@#$%, trasformandola in due valori da 8 byte. - Questi due valori sono concatenati per formare un valore da 16 byte, il quale è l'lm hash.
Sebbene sia basato sul DES, un cifrario a blocchi ben noto e studiato, l'lm hash può essere violato molto facilmente a causa di due debolezze nella sua implementazione. La prima è che le password più lunghe di 7 caratteri sono divise in due ed ogni metà è trattata separatamente. La seconda è che tutte le lettere minuscole della password sono convertite in maiuscolo prima del calcolo dell'hash. Con un attacco a forza bruta condotto sulle due singole metà, un moderno computer può violare un LM hash in poche ore. Microsoft passa da LM Hash a NTLM e poi a NTLM 2, non avendo però rilasciato le specifiche per molti anni è stato usato per retro compatibilità. La comunità open source ha dovuto fare reverse engineering per supportarlo, Samba ha aggiunto il supporto NTLMv2 dopo 5 anni
Ma come si attacca una password? - Attacco a dizionario - Attacco brute-force - Rainbow tables «Ordinary desktop computers can test over a hundred million passwords per second using password cracking tools that run on a general purpose CPU and billions of passwords per second using GPU-based password cracking tools. John the ripper - http://www.openwall.com/john/ Xkcd e the batteryhorsestaple Combinator Attack Passphrase e abbassamento della sicurezza Morale: le password non sono sicure... Soluzione? Sistemi a doppia autenticazione, qualcosa che hai E qualcosa che sai: Google password + sms Banche password + pin Biometria ecc
Un esempio pratico: Nel nostro test abbiamo deciso in primo luogo di utilizzare un attacco a dizionario sugli hash delle password. Abbiamo quindi scaricato su di un file di testo, utilizzando i diritti di amministratore del sistema, le stringhe codificate di tutti gli utenti con accesso alla Intranos. In particolare abbiamo ottenuto 2726 hash corrispondenti ad altrettanti utenti. Abbiamo quindi scaricato un software di libero accesso che permette questo tipo di attacchi e un dizionario Italiano contenente 367486 parole. Infine abbiamo lanciato l'attacco utilizzando il dizionario Italiano trovato e le regole standard di combinazione previste dal programma sui 2726 hash, in pochi minuti sono state trovate 1313 password delle 2726 presenti. Il risultato ci ha mostrato come, con un software e un dizionario liberamente accessibili da tutti, è stato possibile ottenere l'accesso a quasi il 50% delle utenze in un tempo brevissimo. L'attacco sperimentato però prevede di avere accesso alle password codificate. Tale accesso è protetto a livello di applicazione e non è permesso a meno di utilizzare le credenziali di amministrazione dell'applicazione o di violare in qualche modo la sicurezza dell'applicazione stessa.
Sicurezza dei supporti fisici (portatili, hard disk, cellulari, tablet ) Quanto è sicuro l hash della mia password? Non devo necessariamente trovare la password Sicurezza fisica cosa posso fare con un semplice Live CD Recupero dati da hard disk danneggiati Il trucco del frigo e della memoria Soluzione (parziale)? Crittografia!
Brevi cenni sulla Crittografia La Crittografia metodi per rendere un messaggio offuscato Messaggi segreti Ebrei, spartani, cifrario di Cesare Crittografia asimmetrica chiavi diverse per cifrare e decifrare il messaggio. Il funzionamento di questo sistema è basato sul fatto che è matematicamente e computazionalmente molto facile moltiplicare due numeri primi (che singolarmente rappresentano la chiave privata, quella che solo A conosce per decifrare), ma è invece molto difficile il problema inverso ovvero risalire ai fattori primi del numero ottenuto dal precedente prodotto (che invece rappresenta la chiave pubblica che chiunque può vedere e che si usa per crittografare). Siccome la crittografia asimmetrica è molto lenta se si devono spedire grandi quantità di dati, spesso si usa questo tipo di crittografia per scambiarsi una chiave con cui iniziare una comunicazione in crittografia simmetrica, molto più semplice, veloce e sicura.
L'idea base della crittografia con coppia di chiavi diviene più chiara se si usa un'analogia postale, in cui il mittente è Alice ed il destinatario Bob, i lucchetti fanno le veci delle chiavi pubbliche e le chiavi recitano la parte delle chiavi private: Alice chiede a Bob di spedirle il suo lucchetto, già aperto. La chiave dello stesso verrà però gelosamente conservata da Bob. Alice riceve il lucchetto e, con esso, chiude il pacco e lo spedisce a Bob. Bob riceve il pacco e può aprirlo con la chiave di cui è l'unico proprietario. Se adesso Bob volesse mandare un altro pacco ad Alice, dovrebbe farlo chiudendolo con il lucchetto di Alice (che lei dovrebbe aver preventivamente dato a Bob) che solo lei potrebbe aprire. Esempio pratico: Autenticazione SSH tramite chiave - Chiave privata - Chiave pubblica - Passphrase
Sicurezza nelle comunicazioni Il cambio del mezzo di trasporto I problemi del passaggio da Ethernet a Wireless, la perdita del link fisico e i problemi con WEP, WPA, WPA2, filtro MAC address... Sicurezza sui servizi: - HTTP -> HTTPS - FTP -> SFTP - Telnet -> SSH - email -> PGP -... A proposito di NSA, backdoor e debolezze nell implementazione degli algoritmi Software Open Source e The Internet Engineering Task Force (RFC 3935)
Parliamo di attacchi Le fasi di un attacco: 1 - Network enumeration: Discovering information about the intended target. (nmap, whois, dns, ecc..) 2 - Vulnerability analysis: Identifying potential ways of attack. (Vulnerability scanner) 3 - Exploitation: Attempting to compromise the system by employing the vulnerabilities found through the vulnerability analysis
Qualche esempio di attacchi comuni: - SQL injection http://en.wikipedia.org/wiki/sql_injection - Cross Site Scripting http://en.wikipedia.org/wiki/cross_site_scripting (website -> user) - Cross Site Request Forgery http://en.wikipedia.org/wiki/cross_site_request_forgery (user -> website) - Spoofing attack (Man in the middle) http://en.wikipedia.org/wiki/spoofing_attack - DOS e DDOS (blocco del servizio) - Social Engineering ecc...
Dunque come facciamo ad aumentare la sicurezza? - Astuzia - Consapevolezza - Accortezza - (paranoia) Adottare le precauzioni possibili, essere consapevoli di cosa si rischia e di quando stiamo rischiando, evitare di rischi inutili e comportamenti a rischio. Esempio: Dati sensibili via wireless su un sito web non su HTTPS... Sicuri?
SSH Tunneling Costruire un canale criptato via SSH per proteggere le nostre comunicazioni. Cosa ci serve? - Un sistema con un servizio SSH (Linux ma anche embedded) - Un client SSH (putty per Windows) - Incanalare la comunicazione via proxy SOCKS - (Un DNS dinamico )
Un demone SSH -> un qualche sistema unix-like (Linksys + DD-WRT) Un modo per raggiungerlo (DDNS + client) Un client SSH (Putty + Pageant) Un browser con un plugin per i proxy socks e per reindirizzare le richieste DNS (Firefox + FoxyProxy / Chrome + Proxy Helper)
Esempio pratico: Configurare un DDNS (noip.com, dyndns.com, ecc ), client su Linux o su router. Configurare il servizio SSH (porta di ascolto 22 o 443? Autenticazione via password o chiave?) Configurare il router (port mapping e port forwarding) Test di collegamento via ssh client e controllo peoxy socks ssh -i /Users/dragolar/Private.pem root@eleusi.no-ip.org -p 443 -D 1978 Pronti, partenza via! http://whatismyipaddress.com/