Un’applicazione mobile gira su un dispositivo che il suo sviluppatore non controlla. Tutto ciò che viene distribuito nel pacchetto può essere letto, ogni controllo eseguito sul dispositivo può essere aggirato, e ogni segreto incorporato nel codice è pubblico dal giorno in cui l’applicazione viene rilasciata.
Analizziamo l’applicazione staticamente e su dispositivi strumentati, ne intercettiamo il traffico e testiamo il backend con cui comunica. La domanda è sempre la stessa: che cosa può fare chi possiede il dispositivo, o chi condivide una rete con esso.
01Perimetro
Che cosa testiamo
Archiviazione locale: database, preferenze, keychain e keystore, log, backup
Crittografia: algoritmi, gestione delle chiavi, segreti incorporati
Rete: configurazione TLS, certificate pinning, traffico in chiaro
Autenticazione: biometria, token, gestione delle sessioni, associazione al dispositivo
Interazione con la piattaforma: deep link, intent, schemi URL, WebView, appunti
Qualità del codice e impostazioni di build: flag di debug, componenti esportati, permessi
Resilienza: rilevamento di root e jailbreak, anti-manomissione, offuscamento
API del backend usate dall’applicazione
02Approccio
Come si svolge il lavoro
01
Analisi statica
Il pacchetto viene estratto e decompilato. Leggiamo la configurazione, cerchiamo segreti e studiamo come l’applicazione archivia e protegge i dati.
02
Analisi dinamica
L’applicazione gira su dispositivi strumentati. Ci agganciamo alle sue funzioni, aggiriamo i suoi controlli e osserviamo che cosa scrive e che cosa invia.
03
Analisi del traffico
Il traffico viene intercettato con il pinning disattivato. Il backend viene poi testato direttamente, senza le restrizioni imposte dal client.
04
Abuso della piattaforma
Chiamiamo l’applicazione da altre applicazioni sul dispositivo attraverso i suoi link, i suoi intent e i suoi componenti esportati.
No. L’applicazione viene testata così come viene distribuita. Il codice sorgente rende il lavoro più rapido e i rilievi più precisi, e può essere aggiunto come revisione di sicurezza del codice.
Il backend è incluso?
Sì. Un test mobile senza il backend copre metà della superficie di attacco. L’API viene testata attraverso l’interfaccia usata dall’applicazione.
La nostra applicazione usa il certificate pinning e il rilevamento del root. Questo impedisce il test?
Rallenta un attaccante e rallenta noi. Aggiriamo le protezioni e riportiamo quanto impegno è servito: questo ti dice quanto valgono.