class: center, middle # SECURING SYSTEMS --- # Encryption -- - è la soluzione che usiamo per mettere in sicurezza i sistemi informatici -- - Esempio WIFI... --- - Tutti i dispositivi connessi al wifi possono vedere il traffico di tutti gli altri -- - senza conoscerne l'indirizzo ip -- - senza che facciano parte della stessa rete. --- - ma fortunatamente il WIFI è criptato: pc <- wifi -> router -- - la tecnologia si chiama WPA: Wifi Protected Access -- - cripta i dati e funziona dal device al router wi-fi -- - Questo è importante perchè non è detto che i dati che passano dal wifi siano gia' criptati. -- - E' anche vero che applicazioni che non usano protocolli sicuri di default stanno diminuendo progressivamente --- - HTTP non è criptato -- - questo consente un attacco "man in the middle" -- - Alice <-> Eva <-> Bob -- - Eva in questo caso potrebbe modificare l'html ritornato dal server Bob ad Alice -- - Potrebbe aggiungere uno script js malevolo. --- - Questo succede già ad esempio in wifi pubblico in hotel o internet cafè -- - vengono aggiunti degli script che presentano pubblicità -- - anche se quella pubblicità NON è presente sul sito originale! -- - Puoi anche non accorgertene di questa intrusione... puoi solo evitarla. --- - Il "packet sniffing" può fare mille cose -- - può leggere i pacchetti che transitano tra Alice e Bob -- - può modificare i pacchetti che transitano tra Alice e Bob --- - Esempio puo' cambiare i parametri di ricerca di una richiesta GET da un sito: ``` GET /search?q=gatti HTTP/3 Host: fotodianimali.com ``` -- - Potrebbe diventare: ``` GET /search?q=cani HTTP/3 Host: fotodianimali.com ``` --- - il packet sniffing puo' intercettare una richiesta vedere cosa viene ricercato -- - ad esempio in un pagamento usando una richiesta di tipo POST ``` POST /checkout HTTP/3 cc_number: 5203123443211234 HOST: banca.it ``` --- # COOKIES -- - il server puo' rispondere ad una richiesta con un messaggio che chiede di impostare un cookie: ``` HTTP/3 200 Set-Cookie: session=1234abcd ``` --- - Il cookie consiste in una coppia (nome,valore) che viene memorizzata sul browser su richiesta del server -- - il browser poi la invia -sempre- quando fa una richiesta a quel server -- - il cookie ha una scadenza impostata dal server. -- - Hanno una data in cui scadono dopo la quale vengono cancellati: 1 ora, 1 giorno, 1 anno .... -- - è una maniera per ricordare chi siamo al server --- - Le successive richieste al server potrebbero avere la forma: ``` GET /search?q=gatti HTTP/3 Host: fotodianimali.com Cookie: session:1234abcd ``` --- # SESSION HIJACKING -- - un attacker sniffa i pacchetti e include i cookie intercettati nelle proprie richieste. -- - copiando i cookie che identificano la sessione della vittima, potrebbe impossessarsi della sua sessione su piattaforme commerciali, finanziarie, statali -- - per evitare questo problema si usa... --- # HTTPS ! -- - TLS: Transport Layer Security (prima era SSL) -- - TLS è il contenitore, al cui interno si usa il meccanismo DH per scambiarsi una chiave simmetrica condivisa -- - TLS è un meccanismo complicato, la parte DH è la piu' elegante --- - Se in futuro le chiavi private del server vengono sottratte, i vecchi dati restano al sicuro -- - Ovvero i vecchi log di trasmissioni fatte non possono essere piu' decriptate perchè la chiave usata non esiste piu' -- - La chiave s viene rigenerata ogni volta, ovvero il punto sulla curva ellittica ECDH cambia ad ogni connessione --- - il sito web ha un certificato (X.509) che contiene la chiave pubblica, il periodo di validita, il nome del sito ecc.. -- - viene garantito da aziende terze "Certificate Authority" o CA -- - Queste hanno il compito di firmare digitalmente questi certificati assicurando che quel server abbia una precisa identità --- - I Browser di google, apple, mozilla, microsoft includono una lista di queste autorità -- - Il browser scarica il certificato dal sito. -- - Dal certificato prende i campi firmati (TBSCertificate) e calcola l’hash. -- - Prende la firma del certificato e la verifica con la chiave pubblica del CA -- - Se l’hash ottenuto dalla firma coincide con quello calcolato vuol dire che il certificato non è stato alterato ed è stato firmato da quel CA. --- ``` certificato -> hash chiave pubblica del CA, firma -> hash ``` -- - questo ci dice che il certificato del sito è valido ed e' stato firmato dal CA per cui se ci fidiamo di google, apple, microsoft allora possiamo fidarci di questi CA. -- - Il certificato viene rifiutato se è scaduto -- - se è stato revocato, -- - se il dominio non è uguale a quello del sito -- - se l'algorimo è debole. -- - è un sistema centralizzato e fragile. Se un CA commette errori mezzo web è a rischio. --- - anche con https ci possono essere degli attacchi, come funzionano ? -- - SSL stripping ! -- - uno scrive esempio.com ma NON scrive tutto l'indirizzo https://www.esempio.com (il browser aggiunge le parti mancanti) ``` GET / HTTP/3 Host esempio.com ``` -- - ma se uno inizia la propria connessione con un server con http, questa puo' essere intercettata da un man in the middle -- - può rispondere con un pacchetto che fa credere al browser di avere una connessione criptata con il server giusto -- - in realta' puo' essere un sito totalmente differente --- - Il server risponde con 307 - Temporary Redirect ``` HTTP/3 307 Location: https://esemp1o.com/ ``` -- - il browser allora stabilisce una connessione sicura con un sito che non e' quello che volevamo ma che sembra che sia quello. -- - il sito non è quello di Bob ma è quello di Eva --- - Alcuni CA controllano questi tipi di dominio che hanno nomi simili ad altri molto usati -- - Non sempre succede o non succede subito, per cui la possibilità c'e'. -- - Alcuni CA sono migliori di altri, nel farlo -- - soluzione piu' paranoica e' quella di digitare sempre https:// -- - il server per prevenire questo tipo di attacchi puo' usare l'HSTS (HTTP Strict Transport Security) --- - HSTS (HTTP Strict Transport Security) -- - il server example.com puo' rispondere con: ``` Strict-Transport-Security: max-age=31526000; includeSubDomains; preload ``` -- - Questo assicura che quando scriviamo l'url nel browser, dalla la seconda volta in poi, questo poi automaticamente chieda l'https per quel sito. -- - Questo per il periodo indicato nel max-age in secondi. in questo caso per un Anno. -- - includeSubDomains indica che funziona anche per www.esempio.com o italia.esempio.com ecc... -- - preload: significa che questo sito chiede di essere inserito nella lista HSTS preload mantenuta da chrome ed usata da altri browser in maniera che venga usato https gia' dalla prima visita --- # VPN -- - rispetto ad https che cripta la connessione con un singolo sito web, la vpn cripta tutto il traffico internet del dispositivo -- - usato spesso in ambito aziendale -- - copre il tuo indirizzo ip reale -- - serve un software installato sul pc, per il quale serve un nome e una password, oppure 2FA , oppure una chiavetta usb --- - tutto il traffico è criptato, non solo http, ma anche mail, chiamate video, ed altri protocolli -- - Al momendo della connessione viene assegnato un nuovo ip ad alice. Se alice fa una richiesta di un sito web, la fa usando l'ip assegnato da bob. -- - Se netflix non permette la visualizzazione di contenuti in italia, è possibile connettersi con una vpn ad esempio negli usa e netflix vedrà che la connessione viene dagli usa e permetterà la visualizzazione di quei contenuti --- # SSH -- - sistema per connettersi ad un server remoto via terminale, usato dagli amministratori di sistema o da chi sviluppa software per gestire i file di un server da remoto. -- - il traffico è criptato con l'algoritmo Diffie-Hellman --- # PORTE TCP -- - 65536 porte possibili, ovvero 2^16 -- - ogni tipo di servizio si collega ad una porta specifica. -- - http si collega alla porta 80 -- - https porta 443 -- - ssh porta 22 --- - il server quindi deve avere porte aperte per accettare connessioni in ingresso, e i numeri di queste porte sono conosciute da tutti -- - usare porte non standard non ha nessun vantaggio, perchè esiste il port scan -- - un hacker puo' semplicemente fare un port scan su un indirizzo ip per vedere le porte aperte che ci sono -- - il port scan è un ciclo in cui vengono testate tutte le porte di un server da 0 a 65535 --- - si usa il comando nmap ``` nmap 192.168.1.10 ``` -- - Scansione completa ``` nmap -p- 192.168.1.10 ``` -- - Rilevamento servizi/versioni ``` nmap -sV 192.168.1.10 ``` --- - Scansione stealth (SYN) ``` sudo nmap -sS 192.168.1.10 ``` -- - richiede permessi di root per i pacchetti raw -- - manda solo l'ack, il server risponde con syn/ack ma il client chiude la connessione -- - Molti log non vengono toccati, piu' discreta perche' la connessione realmente non si apre mai -- - Non è illegale, ma non è totalmente invisibile --- - il port scan inizia il "penetration test" -- - chi fa il penetration test viene pagato da un'azienda per testarne la sicurezza, tentando di accedere ai server. -- - Questo è un caso di "ethical hacking" -- - Nelle aziende c'è il concetto di red team che tenta di hackerare e di forzare i sistemi -- - ed il blue team che si occupa di difendere e sistemare eventuali buchi. --- # FIREWALL -- - il nome di quella barriera nelle attivita' che non permette al fuoco degli incendi di propagarsi. -- - un firewall regola il traffico tcp. Quali ip possono accedere al server in ascolto. -- - esempio: un'università ha una chat interna, un firewall puo' bloccare la porta del server di chat in maniera che nessuna connessione possa accedere da indirizzi ip esterni alla rete locale 192.168 .... analogamente è possibile bloccare le connessioni in uscita in maniera da evitare che uno studente possa connettersi a servizi di chat irc esterni sulla porta 6667 --- - come si configura? -- - blocca ip es. in una rete casalinga è possibile prevenire l'accesso delle app a server di social media -- - oltre che ip è possibile bloccare anche determinate porte -- - inoltre i firewall piu' sofisticati possono anche effettuare un deep packet inspection, -- - ovvero possono entrare dentro ai pacchetti per vedere cosa contengono e scegliere se lasciarli passare o meno (non https) --- # PROXY -- - In azienda ci sono i Proxy. -- - I proxy implementano praticamente quello che abbiamo visto nel man in the middle attack -- - Alice <-> Eva <-> Bob -- - In questo caso il proxy è Eva! --- - Ovviamente non e' un attacco, è fatto apposta da aziende per centralizzare il flusso dei dati e poterli controllare. -- - Esempio la posta aziendale passa da un proxy che puo' decidere tramite deep packet inspection, se vengono inviati messaggi non consentiti o se vengono ricevuti messaggi potenzialmente pericolosi. -- - Le aziende o università possono fornire pc, laptop, o cellulari in cui sono stati preconfigurati per poter lavorare solo con il proxy aziendale -- - Possono anche pre installare un certificato (agendo in questa maniera effettivamente da CA ) in maniera da farti credere di accedere a gmail.com ma in realta' ci si connette ad un server interno di posta. -- - Questo risolve problemi di sicurezza dell'azienda ma pone un problema di privacy per l'utente. -- - Usare solo device propri per le comunicazioni personali ! --- - Un'altra cosa che un'azienda puo' fare è URL rewrite -- - esempio: i link che arrivano per mail possono essere nella forma https://azienda.com/?url=.... -- - dove al posto dei puntini c'e' il link vero e proprio. -- - si fa per evitare il malware --- # TOR -- - è un sistema che previene il rintracciamento dei pacchetti -- - i pacchetti rimbalzano tra tanti nodi e diventa molto difficile risalire al mittente, "by design" -- - Riprenderemo l'argomento in futuro --- # VPN rispetto a TOR -- - VPN è un collegamento tra A e B criptato, quindi i dati sono protetti ma si vede che A si connette a B -- - VPN: devi fidarti del provider (vede tutto). TOR: nessuno vede tutto, fiducia distribuita -- - VPN: nasconde l’IP, ma sei tracciabile dal provider. TOR: progettato per anonimato forte, multi-hop + cifratura a strati -- - VPN: veloce, quasi come linea normale. TOR: lento, per design. -- - VPN: protegge da Wi-Fi pubblico e ISP curiosi. TOR: protegge anche da sorveglianza seria. è proprio un altro sport --- # MALWARE -- - importante evitarlo, quando lo si incontra spesso è troppo tardi -- - vediamo un po' di casistiche --- # VIRUS -- - ci si infetta eseguendo del codice progettato da un attacker -- - cliccando un allegato, lanciando un eseguibile. Errore umano. --- - Che differenza c'e' tra un programma normale, tipo word o spotify ed un virus ? -- - Word di microsoft lo consideriamo sicuro, ma ci dobbiamo fidare, perche' essenzialmente se un software viene eseguito su un pc, puo' fare di tutto. -- - Dobbiamo pensare che un'azienda non lo faccia, questo sia per motivi puramente commerciali che di immagine -- - Ma un software puo' anche avere errori, e ci sono casi in cui applicazioni hanno cancellato file per errore, -- - Altri hanno esposto involontariamente il device ad attacchi esterni --- - I sistemi operativi stanno diventando sempre migliori dal lato sicurezza -- - IOS è particolarmente buono in questo. crea un ambiente di sandbox in cui le applicazioni non possono prendere pieno possesso del device -- - l'utente puo' decidere cosa puo' e non puo' fare un'applicazione. --- # WORM -- - si propagano senza l'intervento umano. -- - sfruttano errori nel software e si propagano facendo scan della rete locale e port scan sui device che incontrano. -- - Anche senza payload “cattivo”, consumano banda e risorse. E' già un disastro così -- - Non si attacca a programmi esistenti: gira come processo autonomo e parte spesso via rete -- - Morris Worm (1988). sfruttava dei bug in comandi di sistema dell'epoca (sendmail e finger) ed ha buttato giù il 10% di internet di allora --- # BOTNET -- - worm che si tengono attivi e sono silenziosi -- - non fanno nulla di male al pc in cui sono installati ma girano sempre in background -- - possono essere pilotati all'unisono da un server esterno per coordinare attacchi DoS (DDoS), cripto mining o inviare mail. -- - non solo pc ma anche dispositivi IOT: router, stampanti, tostapane ecc... -- - Un'azienda puo' bloccare un ip ma in caso di DDoS l'attacco proviene da tanti IP e diventa difficile arginarli -- - Cloudflare ? --- # ANTIVIRUS -- - cerca software maligni noti. -- - Deve essere sempre aggiornato. con cautela... -- - alcuni aggiornamenti in passato hanno bloccato intere aziende, -- - meglio provare ogni update prima su un ristretto numero di pc, -- - una volta che si e' sicuri si possono aggiornare gli antivirus in tutta l'azienda. -- - I migliori ? Non lo so. Occorre sempre monitorare le news e capire quale sia il prodotto migliore -- - no Norton ! --- # ZERO DAYS ATTACK -- - gli antivirus non lo conoscono. -- - Per cui occorronno livelli diversi della sicurezza -- - non c'e' nulla di totalmente sicuro, ma è importante seguire le best practice, in maniera da avere piu' strati di protezioni sui propri device. -- - Importante la velocità di reazione. Logging, monitoring ed alert sono le attività chiave per prevenire questo tipo di attacchi -- - Riduzione dei privilegi: se qualcosa entra, almeno non deve poter fare tutto.