Sniff https and http traffic on Android

Come avrete capito dal titolo, oggi parliamo di come sniffare, ossia intercettare silenziosamente, il traffico sia http, che https, su un dispositivo Android. Questo articolo prende spunto da questa guida in inglese, ormai vecchia (datata fine 2012) e quasi impossibile da seguire passo passo a parer mio, dal momento che gli strumenti e la tecnologia cambiano.

Scopo

Perché dovrebbe servirci? Il caso più banale è quello di fare il debug, e scoprire come funziona un’applicazione che dialoga con server esterni, che tipo di informazioni chiede, a chi le chiede, a chi manda i nostri dati, sensibili o meno, e così via.

Attenzione però: sniffare il traffico di un’app non nostra potrebbe essere contro i Termini di Servizio dell’app stessa. Assicurarsi quindi di avere i diritti per fare queste operazioni.

Prerequisiti

I prerequisiti per intercettare il traffico, come verrà spiegato in quest’articolo, sono semplicemente i seguenti:

  • Poter accedere ad un dispositivo Android 4.0 o maggiore (anche senza permessi di root)
  • Avere un PC connesso alla stessa rete Wi-Fi del dispositivo Android, con Java installato. Sia Linux, sia Mac, che Windows vanno bene.
  • Connessione Internet (Non si sa mai che a qualcuno manchi!)

Come funziona

Sfrutteremo un programma che farà da Proxy, ossia si metterà tra il dispositivo Android e il server, e trasmetterà le informazioni tra i due in modo silenzioso.

ProxyIn questo modo potremo intercettare tutto ciò che che il cellulare comunicherà al server, e viceversa.

1. Impostazioni Proxy su PC

Scarichiamo da Internet il programma Burp. Esistono due versioni: free, e pro (a pagamento). In questa guida userò la versione free v.1.6.25, ma ovviamente non cambierà nulla, se volete investire in quella Pro.

Avviate il programma Burp, recatevi nella scheda Proxy, e selezionate la sottoscheda Intercept, e cliccate sul pulsante “Intercept is on”, per disabilitare la modifica al volo dei pacchetti. Se il pulsante fosse già off, lasciate così com’è e andiamo oltre.

Burp Proxy 4

Quindi andate nella scheda Proxy, sottoscheda Options.

Qui troveremo una lista di impostazioni infinita, che potrebbe deconcentrarci: niente panico, andiamo passo-passo.

Prima di tutto assicuriamoci che le impostazioni di base del Proxy siano corrette, ossia l’indirizzo di ascolto e la porta.

Clicchiamo sull’unico elemento della lista “Proxy Listener”:

Burp Proxy 1

e clicchiamo a sinistra su “Edit”. Si aprirà una finestra d’impostazioni. Selezionate, se non fosse di default, “All interfaces”, in modo che il proxy sia in ascolto su tutte le interfacce.

Burp Proxy 2

Diamo “OK”, e facciamolo partire, mettendo un tick su “Running”:

Burp Proxy 3

A questo punto abbiamo impostato il Proxy sul PC, e ci rimane impostarlo su Android, in modo tale che il nostro dispositivo vada a chiedere i dati al Proxy, invece che al server.

2.1 Impostazione Proxy su Android

Andiamo in impostazioni, Wi-Fi, e teniamo premuto sulla rete a cui il dispositivo è connesso, finché non apparirà il menu “Elimina Rete”, “Modifica Rete”. Selezioniamo il secondo, e mettiamo un tick su “Opzioni Avanzate” nel nuovo menu che ci viene proposto.

A questo punto settiamo Proxy su “Manuale” e mettiamo la porta 8080, e l’hostname proxy, ossia l’indirizzo ip del nostro pc. Se lo conoscete, saltate il prossimo capitolo. Premiamo su Salva.

2.2 Trovare l’indirizzo IP del proprio PC

Windows

Seguite questi passi, o andare nel terminale e scrivere “ipconfig”, e cercare qualcosa di simile a 192.168.x.x

Mac Os X

Seguite questi passi fino al punto 4.

Linux

Date da terminale il comando:

ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'

3. Sniffiamo l’HTTP

A questo punto siamo in grado di intercettare tutto il traffico non cifrato (http) che parte/arriva dal/al dispositivo Android. Per vederlo possiamo andare su Burp, scheda Proxy, sottoscheda “HTTP History”.

Qui dovremo vedere una lista di richieste riempirsi non appena generiamo traffico http sul dispositivo Android, ad esempio recandoci presso insidevcode.eu tramite browser. Se così non fosse, o abbiamo sbagliato qualcosa e dobbiamo rivederci i passaggi prima, oppure c’è qualche anomalia. Se non riuscite a vedere il traffico dati, scrivetelo qui nei commenti, vedrò di aiutarvi dove posso.

Ma lo sniff HTTPS? Per quello c’è un piccolo passo in più, ora vediamo come fare.

4. Impostazioni per HTTPS

4.1 Il problema https

Qual è il problema dello sniff https? Il problema sta nei certificati. Il client, attendendo dati dal server, si aspetta che questi vengano cifrati con un certificato “attendibile”. Se però in mezzo al client e al server ci siamo noi, il certificato che utilizziamo con Burp, essendo diverso da quello del server, sarà dichiarato come “non attendibile”. Come facciamo a forzare Android a pensare che il certificato di Burp sia attendibile?

4.2 La soluzione https

Innanzitutto rechiamoci da PC presso l’indirizzo http://127.0.0.1:8080/ mentre è in funzione il Proxy Burp.

Selezioniamo CA Certificate:Burp Proxy 5

In questo modo scaricheremo il famoso certificato con cui Burp firma ogni richiesta https. Rinominiamolo in “cacert.crt”, modificando l’estensione, in modo che venga riconosciuto da Android.

Ora inviamolo in qualche modo al dispositivo Android, via bluetooth, via email, via cloud (dropbox, drive) o altri metodi. Una volta scaricato sull’Android, andiamo nelle Impostazioni, Sicurezza, e cerchiamo nella sezione “Archivio Credenziali” l’impostazione “Installa da Archivio”. Se non abbiamo ancora nessun PIN/Sequenza di blocco, ci verrà chiesto di impostarlo. Abbastanza noioso, ma necessario. Dopodiché ci si aprirà il file manager per selezionare il CA Certificate che avevamo precedentemente scaricato.

Diamogli un nome che vogliamo, ad esempio “burp”, e selezioniamo Wi-Fi.

5. Finalmente lo sniff HTTPS

Finalmente ora, recandoci su Burp nella scheda Proxy, sottoscheda HTTP History, potremo vedere il traffico HTTPS generato da Android.

Se avete una delle più recenti versioni di Android, sul vostro dispositivo apparirà anche una notifica persistente che vi avviserà che il traffico potrebbe essere monitorato. You don’t say? Purtroppo questa notifica non si può rimuovere finchè non elimineremo il certificato installato dalle Impostazioni, Sicurezza, ma poco male.

Burp Proxy 6 - sniff https

Seguiteci anche su Facebook, Google Plus, Tumblr e Twitter, per restare sempre in contatto con noi e con le nostre guide.



Cerca

Seguici

Live da Facebook
Live da Twitter
Seguici su Telegram
Canale InsiDevCode Telegram