Salve a tutti cari amici di iProg, con quest’articolo vorrei iniziare una nuova serie di tutorial dedicati alla sicurezza mobile. Come ben sapete i dispositivi mobile sono molto utilizzati oggi giorono, inoltre in questi dispositivi custodiamo molti dei nostri dati più sensibili quindi è molto importante trattare quest’argomento seriamente. Le aree d’interesse in un mobile penetration testing sono diverse ma tra le principali abbiamo:
- Local data storage: Se un’app utilizza le API del sistema operativo come la memoria locale o la comunicazione tra processi (IPC) in modo errato, l’app potrebbe esporre dati sensibili ad altre app in esecuzione sullo stesso dispositivo e ciò può essere molto pericoloso.
- Comunicazione con altri dispositivi: I dispositivi mobili si connettono regolarmente a una varietà di reti, comprese le reti WiFi pubbliche condivise con altri client (potenzialmente dannosi). Ed è importante che il traffico trasmesso tramite questi canali sia rigorosamente cifrato (utilizzando il protocollo TLS)
- Autenticazione e Autorizzazione: A differenza delle Webapp, le app mobili spesso memorizzano token di sessione di lunga durata, sebbene ciò consenta un accesso più rapido e un’esperienza utente migliore, ciò introduce anche un ulteriore complessità e ciò significa che l’eventualità di bug (quindi di falle) è puù elevato e quindi un utente malevolo con i giusti tool potrebbe essere in grado di “rubarvi” la sessione (in pratica rubarvi la vostra identità digitale).
Tipologie di testing
Così come negli altri ambiti del penetration testing anche nell’ambito mobile un pentest può essere di tipo:
- Black-box: Il pentester non ha nessuna info sull’applicazione da tastera, ovvero non sa quale linguaggio usa l’app che tecnologie usa quali framework etc. Lo scopo principale di questo test è quello di consentire al pentestester di comportarsi come un vero criminale informatico e cercare di capire se è possibile violare l’applicazione anche senza nessuna informazione inziale.
- White-box: In questo caso il pentester conosce l’applicazione e probabilmente ha accesso al codice sorgente, alla documentazione etc. Quesa tipologia è utile per proteggere l’app da attacchi “interni”.
- Gray-box: È una via di mezzo tra le due tipologie infatti è anche quella più utilizzata, in questo casaa il pentest ha alcune info ma non tutte
Static e Dynamic Analysis
L’analisi statica implica l’esame dei componenti di un’applicazione ma senza eseguirli, spesso in questa fase si effettua l’analisi manuale o automatica (tramite l’ausilio di tool) del codice.
L’analisi dinamica comporta esaminare l’aplicazione durante l’esecuzione, anche in questo caso questo tipo di analisi può essere manuale o automatico (tramite l’ausilio di tool). Solitamente questo tipo di analisi fornisce elementi interessanti (risorse, punti di ingresso, ecc.)
Fasi di un Mobile Penetration testing
- Preparazione: In questa fase si prendono accordi con il cliente, si sottoscrive tutta la parte legale etc.
- Raccolta delle informazioni: In questa fase si studia l’app per comprendere il suo funzionamento
- Mapping dell’applicazione: la mappatura fornisce una conoscenza approfondita dell’app, dei suoi punti di ingresso, dei dati che contiene e delle potenziali vulnerabilità, potenziali. queste vulnerabilità possono essere classificate in base al danno che il loro sfruttamento causerebbe.
- Exploitation: In questa fase si tenta di penetrare nell’app utilizzando le vulnerabilità individuate nella fase precendente, questa fase è necessaria per determinare se le vulnerabilità sono reali.
- Report: Potremmo dire che questo è il prodotto vero e proprio ovvero ciò per cui il cliente paga e quindi deve essere il più accurato possibile, nel report vanno inserite e descritte tutte le tecniche utilizziate le vulnerabilità individuate e le possibili soluzioni.
Per questo primo tutorial è tutto, se vuoi sapere di più su quest’argomento faccelo sapere tramite la nostra pagina di facebook