SMAU MILANO 2023 | SMAU MILANO 2023 | Intelligenza Artificiale e chatbots
SMAU PADOVA 2019 Luca Bonadimani (AIPSI)
1. Cyber Security e mobile:
facciamo il punto
Strategie e contromisure per rendere sicure le
applicazioni per dispositivi mobili.
2. Hello!
Sono Luca Bonadimani, faccio parte del
consiglio direttivo AIPSI come
responsabile per l’area Nord-Est e sono
Amministratore Delegato di Fine Tuning
– Consulenza Integrata Srl con sedi
operative a Verona, Mestre e Tirana.
2
3. Chi è AIPSI
AIPSI, Associazione Italiana
Professionisti Sicurezza
Informatica, capitolo Italiano di
ISSA, Information Systems Security
Association, (www.issa.org) conta
>>10.000 Soci ed è la più grande
associazione non-profit di
professionisti della Sicurezza ICT
nel mondo.
3
AIPSI è il punto di aggregazione
sul territorio e di trasferimento di
know-how per i professionisti della
sicurezza digitale, sia dipendenti
sia liberi professionisti ed
imprenditori del settore.
4. Obiettivi primari AIPSI
Aiutare i propri Soci nella crescita
professionale e quindi nella
crescita del loro business;
4
Rapporti con altri soci a livello
nazionale (AIPSI) ed internazionale
(ISSA);
Contribuire alla diffusione della
cultura e alla sensibilizzazione per
la sicurezza digitale;
Collaborazione con numerosi Enti e
Associazioni per eventi ed iniziative
congiunte;
5. Obiettivi primari AIPSI
Offrire ai propri Soci servizi
qualificati per tale crescita, che
includono:
5
Rapporti annuali e specifici OAD,
Osservatorio Attacchi Digitali in
Italia: https://www.oadweb.it;
Convegni, workshop, webinar
sia a livello nazionale che
internazionale via ISSA;
Supporto, formazione specializzata
alle certificazioni, in particolare
eCF Plus (EN 16234 -1:2016, in
Italia UNI 11506).
Supporto nell’intero ciclo di vita
professionale;
6. Chi sono
Ho iniziato la mia carriera occupandomi di
ICT nel settore editoriale per diversi anni,
per poi gestire per un breve periodo
l’ufficio comunicazione di Gardaland S.p.A.
Nel 1996 ho fondato con un socio Fine
Tuning Consulenza Integrata, web solution
agency di Verona. Seguono altre iniziative
imprenditoriali quali BSZ Communication,
finetuning.it, Xtrategy, nonché l’ambizioso
progetto Talete per la vendita on line di libri
a tiratura limitata.
6
7. Chi sono
Nel 2000 avviene l’incontro con GEA
Consulenti Associati e la fondazione di Gea
Lab, società di consulenza e-business.
Nello stesso anno ricevo l’incarico di
dirigere come AD Adria Lab, web solution
company partecipata dalla Merloni
Elettrodomestici, Gea Lab e dall’Università
degli Studi di Ancona. Successivamente
dirigo e poi amministro Nesting Srl, società
di innovazione tecnologica con soci il Cefriel
e la Fondazione di Venezia.
7
9. Agenda dell’intervento
TEST PRACTICE OPEN DEVICE SICUREZZA
APPLICATIVA
9
OWASP Mobile Security
Analisi statica
Analisi dinamica
Android & iOS, test
Aggiornamenti OTA
Operazioni remote
Autenticazione
Pagamenti Mobile
Thetering
Tecnologia indossabile
Sicurezza applicativa
Monitoraggi
10. OWASP Mobile Security Project è un gruppo di
ricerca con un portale web di riferimento
(https://www.owasp.org) destinato a fornire agli
sviluppatori e ai team di sicurezza le risorse
necessarie per creare e mantenere applicazioni
mobile sicure.
L’obiettivo principale del progetto è
quello di classificare i rischi di sicurezza
mobile e fornire controlli di sviluppo per
ridurre il loro impatto o probabilità di
sfruttamento.
OWASP Mobile
Security
10
11. M1 - Utilizzo improprio della piattaforma
M2 - Insecure Data Storage
M3 - Comunicazione insicura
M4 - Autenticazione non sicura
M5 - Crittografia insufficiente
M6 - Autorizzazione non sicura
M7 - Qualità del codice cliente
M8 - Manomissione del codice
M9 - Reverse Engineering
M10 - Funzionalità estranee
11
Maggiori rischi
12. Il test applicativo per la sicurezza di una
applicazione è particolarmente importante nel
caso in cui l'applicazione possa influire sulla
sicurezza dei sistemi sensibili di backend
aziendale. È utile per il tester identificare e
comprendere l'intera serie di interfacce di rete
utilizzate dall'applicazione, attraverso i servizi di
comunicazione cellulare, WiFi, Bluetooth e Near
Field.
Sapere quali componenti, sul telefono
cellulare, con cui l'applicazione
interagisce, è un'altra area di interesse,
per il tester. Questi possono includere
GPS, fotocamere, USB, microfono e così
via. Un'altra area di rischio fondamentale
è la perdita di dati.
Analisi statica
delle applicazioni
12
13. Qualsiasi interazione con altre applicazioni sulla
piattaforma e, in particolare, quelle che si
collegano ai servizi cloud o ai gateway di
pagamento, dovrà essere rivista.
Un'altra area che è comunemente un problema, è
l'uso di segreti codificati, all'interno
dell'applicazione, come chiavi API, credenziali o
logica aziendale proprietaria.
Funzionalità come il blocco degli
account, il Single Sign-On e le password
una tantum avranno un impatto
significativo sui risultati del test. Le
autorizzazioni, inoltre, rappresentano
un'altra area di interesse, in particolare
le aree quali le autorizzazioni per i file
creati in fase di runtime, le funzionalità
specifiche dei ruoli e i contrassegni di
privilegi elevati o di valori.
Analisi statica
delle applicazioni
13
14. La seconda fase del test di sicurezza per i
dispositivi mobili si chiama analisi dinamica.
Questo è focalizzato sull'osservazione di cosa fa
l'applicazione mentre è in esecuzione e su cosa
accade alla memoria del dispositivo tra l'avvio
dell'applicazione e la chiusura dell'applicazione.
La comunicazione dell'applicazione deve
essere monitorata e controllata.
È necessario eseguire test Web relativi
alle funzionalità dell'applicazione.
Compreso test per determinare dove il
codice JavaScript lato client o HTML o
XML dannoso può essere iniettato
nell'applicazione.
Analisi dinamica
delle applicazioni
14
15. È necessario testare i casi limite in cui non sono
disponibili servizi esterni, come l'autenticazione, e
sono state introdotte interruzioni impreviste per
testare la capacità delle applicazioni di garantire
la sicurezza. Esistono numerosi controlli di
gestione delle sessioni che possono essere
eseguiti durante i test dinamici, incluse le
applicazioni suscettibili agli attacchi man in the
middle, intercettazione, risoluzione delle sessioni,
escalation dei privilegi e così via.
L'uso di sistemi che agganciano le
applicazioni e riportano la loro attività
interna può essere utile, così come i
disassemblatori possono decodificare il
codice sorgente. Daremo uno sguardo
introduttivo alle tecniche e agli strumenti
che potremmo utilizzare, ma non
approfondiremo l'argomento piuttosto
avanzato.
Analisi dinamica
delle applicazioni
15
16. Android è stato rilasciato per la prima volta da
Google nel 2008. È basato sul kernel Linux e
tipicamente funziona su un processore ARM.
Google fornisce una piattaforma open source,
ma i singoli produttori di telefoni incorporano
codice proprietario all'interno delle loro
implementazioni. Android non introduce un
modello di sicurezza completamente nuovo, ma
si basa sul modello di sicurezza di Linux con
miglioramenti appropriati per l'ambiente mobile.
Un dispositivo mobile Android è
costituito da una piattaforma hardware,
in cima alla quale è l'implementazione
Android del kernel Linux, e soprattutto,
l'ambiente runtime Android e le librerie.
Sistema operativo
Android
16
17. Applicazioni preinstallate e installate dall'utente in
genere in Java, quindi eseguite nell'ambiente di
runtime. E utilizzare il framework dell'applicazione
per accedere alle risorse di sistema a livello
utente. Il kernel Linux è la parte centrale del
sistema operativo che media l'accesso alle
risorse di sistema. È responsabile di consentire a
più applicazioni di condividere in modo efficace
l'hardware controllando l'accesso a CPU,
memoria, I / O disco e rete.
Un sistema Android, è basato sul kernel
di Linux, ma è diverso nella maggior
parte degli altri aspetti, per cui
un'applicazione Linux non può girare su
Android e un'applicazione Android non
funzionerà su Linux. Android utilizza la
Dalvik Virtual Machine per eseguire
applicazioni scritte in Java e compilare in
bytecode, fornendo chiamate di sistema
tramite le interfacce di programmazione
delle applicazioni Android.
Sistema operativo
Android
17
18. Un'applicazione Android viene fornita come
pacchetto con estensione .APK.
Nel file zip o nel file APK, possiamo vedere un
numero di cartelle e file. L'eseguibile principale si
chiama classes.dex. .dex è l'estensione utilizzata
per il formato di file eseguibile Dalvik, che include
il codice eseguibile e il codice sorgente. Abbiamo
anche un file classes2.dex. Vengono utilizzati più
file dex quando la dimensione di un singolo file
supera quella consentita nella specifica
eseguibile Dalvik.
Da Android 6 in poi, la casella degli
strumenti è stata sostituita da ToyBox.
Questo include comandi Linux
conosciuti, come cat, chmod, cp, grab,
ls, mkdir e molti altri. La pagina web di
landley qui mostrata fornisce uno stato e
una mappa stradale per ToyBox.
Sistema operativo
Android
18
19. Il pacchetto contiene anche un file chiamato
AndroidManifest.xml, che è una fonte di informazioni
utili riguardanti le caratteristiche dell'applicazione e
le interazioni pianificate. Contiene inoltre un numero
di sottodirectory, con risorse e librerie aggiuntive
necessarie per l'applicazione. Il codice viene eseguito
come un'applicazione, che ha un'interfaccia utente e
in genere interagisce con l'utente, o come servizio,
che non ha un'interfaccia utente grafica e viene in
genere utilizzata per attività in background di lunga
durata.
SQLite è un servizio di database
comune a cui si accede tramite il
provider di contenuti. Un altro concetto
chiave in Android è intenti. Si tratta di
oggetti utilizzati per gestire le richieste e
includono un'azione e i dati rilevanti per
la richiesta effettuata.
Sistema operativo
Android
19
20. 20
Modello di sicurezza Android
Linux
Il modello di sicurezza
Android prende una
prospettiva diversa da
Linux assumendo che il
limite di affidabilità sia
una singola applicazione
piuttosto che un singolo
utente.
Sandbox
Ambiente sandbox per le
applicazioni e mezzi
espliciti per consentire
interazioni tra l'hardware
mobile, l'utente e
l'applicazione.
Keystore
I keystore possono
essere utilizzati per
proteggere i dati
richiedendo una
password utente per
l'accesso.
20
21. Ci sono due ambienti che dobbiamo installare per
abilitare i test di Android.
Il primo di questi è Java SDK.
Il secondo ambiente che dobbiamo caricare è
l'SDK di Android. Questo può essere installato
come parte dello Studio Android completo dello
sviluppatore.
Estrazione e lettura del file manifest
Il file Androidmanifest.xml viene
utilizzato per descrivere la funzionalità e
i requisiti di un'applicazione Android e
viene generato come parte del processo
di compilazione per tale applicazione
Android.
Preparazione per i test
Android
21
22. Apktool elabora il file dell'applicazione e lo
disassembla in una directory chiamata vTXT.
Possiamo vedere che ci sono alcune
sottodirectory e due file, apktool.yml e
AndroidManifest.xml.
In questo file manifest, possiamo anche trovare, a
volte, delle API_KEY dichiarate.
I test richiedono esperienza, con il tempo si
acquisisce familiarità con i vari modi in cui le
applicazioni sono state create.
Ricreare il codice sorgente Java con
jad
Abbiamo visto come possiamo leggere il
codice sorgente tramite lo strumento JD-
GUI. Possiamo anche recuperare il
codice sorgente tramite la riga di
comando usando lo strumento JAD.
Ottenere l'accesso alla riga di
comando con Android Debug Bridge
(ADB)
Preparazione per i test
Android
22
23. L'SDK Android fornisce un mezzo per eseguire
un dispositivo Android emulato. La prima cosa
che dobbiamo fare è selezionare la variante di
Android che vogliamo nel gestore SDK e
caricarla. Per esempio Android 4.4.2, si seleziona
dopo l'immagine di sistema 7a di ARM EABI. Si
procede quindi all'installazione di un pacchetto e
si accetta la licenza.
Analisi dinamica delle applicazioni
Android
Si possono eseguire con l’applicazione
di collaborazione del team Slack.
Un comando utile per il test dinamico è
logcat, che mostra i registri creati dal
sistema e dalle applicazioni.
Emulatore Android
dell’SDK
23
24. Ci sono dozzine di strumenti per test di sicurezza
per Android. A partire da sistemi di livello
aziendale molto costosi, che dispongono di un
set completo di test automatizzati come fortifica,
a semplici strumenti gratuiti, per testare un
aspetto della sicurezza. L'elenco degli strumenti
sta cambiando ogni giorno, con molti che
diventano obsoleti con il passare del tempo e
molti nuovi appaiono.
Drozer è piuttosto utile, in quanto non ha
bisogno di percorso e può essere
eseguito come un'app normale
utilizzando il proprio bridge. Ho scaricato
e installato la versione di Windows.
KitKat
Ci sono versioni per una varietà di
piattaforme Android, tra cui KitKat,
Marshmallow e Nougat.
Drozer per analizzare
le applicazioni
24
25. Un'applicazione iOS interagisce solo con le
directory all'interno della propria sandbox.
Durante l'installazione, iOS genera un UUID e
crea un numero di directory del contenitore per
l'applicazione all'interno della directory sandbox.
Il contenitore del pacchetto contiene ciò
che è noto come il pacchetto di
applicazioni e il contenitore di dati
contiene i dati di runtime sia per
l'applicazione che per l'utente.
Applicazioni e
vulnerabilità iOS
25
26. A partire da iOS 8, Apple ha introdotto una
modifica alla struttura del file dell'applicazione e
suddivide i dati di un'applicazione dal pacchetto
di applicazioni. Di conseguenza, sono necessarie
alcune indagini per comprendere appieno la
gestione di file e applicazioni. E questo sarebbe
sia la versione del sistema operativo che
l'applicazione specifica.
Info.plist
E’ un file XML di testo semplice che
contiene informazioni di configurazione
essenziali per un file eseguibile in
bundle. E così fornisce una prima
visione delle caratteristiche
dell'applicazione.
Applicazioni e
vulnerabilità iOS
26
27. Tutti possono utilizzare la gamma di protezione
predefinita fornita da iOS, ma richiedono alle
applicazioni di specificare la forma di protezione.
Sebbene i file non siano normalmente accessibili,
il test dovrebbe tenere conto del fatto che un
utente malintenzionato con accesso fisico al
dispositivo potrebbe essere in grado di ottenere il
jailbreak e, quindi, essere in grado di accedere
più facilmente a questi file.
L'hardware Boot ROM contiene il codice di
sola lettura per avviare il sistema e la chiave
pubblica di Apple.
La chiave pubblica viene utilizzata per
verificare l'integrità del codice di avvio di
secondo livello a basso livello.
Applicazioni e
vulnerabilità iOS
27
28. Il sistema operativo iOS è progettato per essere
sicuro. E il modo in cui Apple gestisce le
applicazioni fornisce ulteriore sicurezza sulla loro
fornitura. La sicurezza in iOS inizia quando
l'utente accende il dispositivo. L'hardware Boot
ROM contiene il codice di sola lettura per avviare
il sistema e la chiave pubblica di Apple.
iBoot verifica l'integrità del kernel prima
di caricarlo. Ciò fornisce un avvio
completamente sicuro attraverso il
kernel, e il resto del sistema operativo
può quindi essere caricato. Il sistema
operativo offre una serie di funzionalità
che possono essere utilizzate dagli
sviluppatori di applicazioni per
proteggere il loro codice.
Protezione applicazioni iOS
in base alla progettazione
28
29. Le applicazioni funzionano all'interno della loro
sandbox. Sono directory di applicazioni, il che
significa che non solo un'applicazione non può
interagire in modo ad hoc al di fuori della sua
sandbox, ma anche che è protetta da qualsiasi
altra applicazione che interferisca con essa.
Esistono metodi espliciti per l'interazione, come la
richiesta di autorizzazioni per l'accesso a cose
come i media, la fotocamera, il microfono e così
via.
iOS utilizza tre tipi di file di dati.
Database SQLite, elenchi di proprietà e
la catena di chiavi. Per impostazione
predefinita, tutti i dati vengono
crittografati a riposo utilizzando una
chiave del file system, in modo che se i
supporti vengano rubati, le informazioni
non vengono compromesse.
Protezione applicazioni iOS
in base alla progettazione
29
30. Quando eseguiamo un jailbreak per aprire il
nostro dispositivo di test, non è consigliabile che
il cellulare ritorni al normale utilizzo quotidiano
dopo questo. Naturalmente, una volta che un
dispositivo è in grado di eseguire applicazioni non
firmate da Apple, può eseguire non solo software
per scopi speciali, come ad esempio in fase di
test, ma anche software di cracking, copie illegali
che vengono distribuite attraverso il mercato
nero.
Il test delle applicazioni iPhone richiede
l'accesso come root ad un iPhone;
questo significa rompere il blocco della
sicurezza Apple, un processo chiamato
Jailbreaking.
Estrazione di proprietà e intestazioni di
classe
Esistono due forme di applicazioni iOS:
app crittografate e app non crittografate.
Protezione applicazioni iOS
in base alla progettazione
30
31. Gli aggiornamenti Over-the-air, o OTA, possono
essere utilizzati per inviare aggiornamenti e patch
per software, firmware e sistema operativo in
modalità wireless. Questa tecnologia garantirà
che i tuoi dispositivi mobili siano sempre
aggiornati e al sicuro da vulnerabilità note.
Configurando ciascun dispositivo in
specifici gruppi di programmazione via
etere, gli amministratori di sistema
possono utilizzare la loro soluzione di
gestione dei dispositivi mobili per
distribuire tutti gli aggiornamenti e le
modifiche di configurazione a grandi
porzioni dell'inventario dei dispositivi
mobili contemporaneamente.
Aggiornamenti
over-the-air
31
32. Molte soluzioni di gestione dei dispositivi mobili
offrono ai dipendenti del servizio assistenza
metodi per accedere da remoto a uno
smartphone o un tablet. Ad esempio, se un
venditore è nel campo che ha problemi ad
accedere a una particolare applicazione sul
proprio dispositivo, allora un dipendente del
service desk potrebbe essere in grado di
accedere in remoto al dispositivo e controllarlo
dalla workstation del tecnico.
Accesso remoto
Analogamente ai desktop e laptop
tradizionali, i dispositivi mobili devono
fare affidamento su reti private virtuali o
VPN per accedere alle risorse di rete
dell'organizzazione quando non sono
collegate direttamente alla rete
organizzativa.
Assistenza
e accesso remoto
32
33. I dispositivi mobili offrono numerosi modi per
eseguire l'autenticazione oltre a un nome utente
e una password standard. Questo può essere
fatto attraverso uno schema di scorrimento, un
particolare gesto, un PIN univoco, o anche una
biometria come riconoscimento facciale,
scansioni di impronte digitali o scansioni dell'iride.
Un PIN è una semplice forma di
autenticazione che si basa sul principio
di qualcosa che conosci. Questo fattore
di conoscenza è un codice creato
selezionando una sequenza di numeri
da un tastierino numerico sullo schermo.
Autenticazione
33
34. Ai vecchi tempi, ritiravamo la nostra carta di
credito, la nostra carta di debito, o anche i
contanti vecchio stile per pagare il nostro caffè
mattutino. Ma ora possiamo semplicemente tirare
fuori il nostro smartphone. Sia che si utilizzi Apple
Pay, Samsung Pay o Google Pay, un utente di un
dispositivo mobile può estrarre il proprio telefono
e toccarlo su un sensore per fare addebitare
automaticamente sul proprio conto bancario il
prezzo di acquisto.
NFC utilizza una frequenza radio per
condurre la transazione inviando una
carica elettromagnetica che contiene i
dati della transazione su una breve
distanza, di solito solo pochi pollici.
Questa tecnologia è generalmente
abbinata a un portafoglio mobile che
contiene una versione digitale della carta
di debito o di credito.
Pagamento mobile
34
35. La maggior parte degli smartphone ora consente
il tethering a uno o più dispositivi. Tethering è la
possibilità di condividere la connessione Internet
dati cellulare dallo smartphone a più altri
dispositivi, in genere creando un hotspot WiFi,
una connessione Bluetooth tra il telefono e il
laptop o anche tramite una connessione USB
diretta tra i due dispositivi.
Hotspot WiFi tramite il telefono, è
necessario assicurarsi di abilitare la
crittografia WPA2 con una password
complessa. Altrimenti altri viaggiatori
potrebbero vedere il tuo hotspot aperto e
abbinarlo.
Tethering
35
36. La tecnologia indossabile è qualsiasi tipo di
dispositivo intelligente che viene impiantato o
indossato sul tuo corpo. Questi dispositivi
accettano tutte le forme, inclusi smartwatch,
fotocamere, dispositivi fitness, occhiali, cuffie e
sensori medici.
I dispositivi di fitness sono utilizzati per
tracciare le metriche di idoneità fisica di
una persona, come la velocità con cui
camminano, il numero di passi che
hanno fatto in un giorno, quanto
velocemente il loro battito cardiaco è, e
molto altro ancora.
Tecnologia indossabile
36
37. Quando progettiamo applicazioni web, le
possiamo proteggere in tre modi.
● Protetto dal design,
● sicuro per impostazione predefinita
● protetto dalla distribuzione
In termini di sicurezza, l'applicazione è stata
progettata pensando alla sicurezza per
cominciare.
Problemi specifici dell'applicazione
La protezione delle nostre reti è inutile
se non consideriamo l'insicurezza nelle
stesse applicazioni che vengono
eseguite su tali reti. Ogni applicazione
presenta problemi specifici che devono
essere considerati con diverse
attenuazioni per ogni tipo di vulnerabilità
posta.
Progettazione della
sicurezza delle applicazioni
37
38. Per aggiungere ulteriore sicurezza alle nostre
applicazioni Web e ai database, possiamo
installare il monitoraggio dell'attività del
database o un firewall per applicazioni Web.
Queste soluzioni aiutano a fornire ulteriore
responsabilità e sicurezza contribuendo a
registrare e prevenire attacchi comuni. Il
monitoraggio delle attività del database fornisce
la registrazione delle transazioni e la contabilità
dei server di database e dei relativi servizi.
REST, o Represented State Transfer
è un modello client / server per
l'interazione con il contenuto su sistemi
remoti tramite una connessione HTTP.
Un servizio web RESTful sceglie il
formato da utilizzare durante questo
scambio e REST supporta i formati
XML, JavaScript e JSON.
Monitoraggio delle
attività del database
38