Come si cattura TUTTO il traffico da un'app per Android?

12

Voglio catturare tutto il traffico da un'app Android per i suoi pen-test. Come faccio?

Ecco cosa ho già provato:

Ho installato l'app su un emulatore e ho avviato l'emulatore con http-proxy che punta a una porta locale. La porta locale aveva ZAP in esecuzione su di esso. Sono in grado di intercettare il traffico dal browser ma non dall'app.

Bene, potrebbe essere che la mia app utilizzi https e pensavo di avere qualche problema con i certificati. Così ho esportato il certificato ZAP di OWASP e push ed esso sull'emulatore Android. Ovviamente, le versioni di Android > = ICS hanno l'hash dei nomi cert tramite OpenSSL. Quindi ho seguito alcune istruzioni qui e Sono riuscito a ottenere il mio certificato ZAP sul mio dispositivo. Tuttavia, non sono in grado di intercettare il traffico.

La mia prossima linea di pensiero è stata: può essere che questa app sia danneggiata. Così ho installato le app di Facebook, Pocket e Guardian (notizie) dall'app store nell'emulatore e ho provato a intercettare il loro traffico. Posso intercettare il traffico da Guardian ma Pocket e Facebook non sono in grado di connettersi ad internet (così è la mia app). Tuttavia, posso navigare in Internet dal mio browser sull'emulatore.

Onestamente, sono alla mia fine. Non capisco perché questo sta accadendo. Non ho mai fatto un sacco di pen-test prima d'ora, immagino di non avere esperienza. Qualcuno potrebbe aiutare questa povera anima?

(Naturalmente, posso sempre usare Wireshark, ma non sarebbe in grado di inviare a MiTM le richieste e le risposte come fanno ZAP o Burp.)

Modifica

Dopo "Google-ing" come un pazzo, ho finalmente trovato che Android non ha un supporto per il proxy globale (che funziona per entrambe le applicazioni del browser E). Maggiori informazioni possono essere trovate qui .

    
posta Pervy Sage 10.06.2014 - 16:28
fonte

7 risposte

8

Non sei in grado di intercettare il traffico di Facebook perché utilizza il blocco SSL.

Sul test delle penne di un'applicazione Android potresti imbatterti in quattro diversi scenari. Li elenco in basso in modo conciso. Un articolo molto più dettagliato può essere trovato qui > > Il mio blog L'articolo contiene anche video a cui puoi fare riferimento.

  1. Applicazione non SSL

Questa è la più semplice applicazione Android che potresti incontrare. I giochi sono esempi. Gran parte del traffico va oltre http. Per intercettare il traffico devi solo indirizzare le impostazioni del proxy wifi del dispositivo / emulatore al laptop su cui è in esecuzione il proxy Burp / Zap.

  1. Applicazioni che utilizzano il traffico HTTPS e fanno affidamento sulle credenziali di fiducia del dispositivo

Applicazioni come Instagram utilizzano HTTPS per comunicare con il server, ma si basano sulle credenziali di fiducia del dispositivo. Per intercettare questo traffico puoi aggiungere il tuo certificato proxy alle credenziali di fiducia del tuo dispositivo aggiungendo l'apertura dello stesso da Settings > Security > Trusted credentials

  1. Applicazioni che utilizzano il blocco SSL

Alcune applicazioni potrebbero utilizzare il blocco SSL per garantire la sicurezza dell'applicazione anche nel caso in cui una credenziale affidabile venga compromessa. Modulo di supporto Cydia Android Trust Killer o Xposed Module JustTrustMe può essere utilizzato per aggirare il controllo di blocco SSL.

  1. Applicazioni che utilizzano il proprio archivio di credenziali

L'applicazione Android di Facebook utilizza il proprio archivio di credenziali pwn ed è per questo che non si è in grado di intercettare il traffico normalmente. Per bypassare questo devi smontare l'applicazione al codice smali. Aggiungi il certificato nel formato desiderato al codice, ricompilalo, firmalo e installalo di nuovo. Il processo è dettagliato qui > > Blog di DewHurst Security .

    
risposta data 10.11.2016 - 23:36
fonte
2

Ecco i passaggi che consiglierei di adottare. Il passaggio 6 è la risposta più diretta, ma raccomanderei di seguire gli altri passaggi. Nota che questa risposta è simile ad altre risposte, ma più semplice in molti passaggi.

1) Configura proxy - Configura Burp Suite in modalità trasparente, ascoltando su tutte le interfacce tutte le porte utilizzate dall'applicazione, come 443.

2) Installa Autorità di certificazione - Esporta certificato sul desktop e poi fai adb push file.der /sdcard/<file>.cer (nota che abbiamo rinominato .der in .cer) quindi vai a Settings -> Security -> Install from Device Storage e installa il tuo certificato.

3) Proxy di sistema : prova a inoltrare il traffico modificando le impostazioni del proxy Android (nella configurazione Wi-Fi). Accendere e spegnere l'adattatore (attivando la modalità aereo per un secondo) può aiutare a volte se non funziona.

4) Problemi di debug del certificato : osserva la scheda Avvisi in Burp Suite per eventuali problemi SSL / TLS. È possibile che l'applicazione utilizzi un certificato, un blocco di certificati o un blocco di chiave pubblica per impedire all'utente di utilizzare la CA. Puoi provare a abilitare il passthrough SSL nella scheda delle opzioni del proxy per vedere se questo è un problema per alcuni o tutti i domini scelti come target. Se il blocco dei certificati è un problema, dovrai ignorare le protezioni sui pin per i certificati.

5) Spoof DNS - Imposta /etc/dnsspoof.conf per contenere una voce per il tuo dominio e / o una voce jolly (esempi sotto):

192.168.1.101 example.com
192.168.1.101 *.com

Imposta il tuo server DNS su un host che controlli ed esegui il seguente comando (dnsspoof è già installato su Kali):

dnsspoof -i eth0 -f /etc/dnsspoof.conf host 192.168.1.201

Se la tua applicazione non obbedisce alle impostazioni del proxy di sistema o al DNS, ti consiglio di utilizzare Wireshark per osservare il comportamento di Insight prima di continuare. È possibile che la tua applicazione stia utilizzando un protocollo non HTTP.

6) Debug traffico di rete - Esegui la tua applicazione in un emulatore come Genymotion, preferibilmente in modalità bridge, quindi ascolta l'interfaccia principale e usa un filtro di visualizzazione sul tuo dispositivo solo ip.addr eq 192.168.1.201 .

7) Decompila l'applicazione - Utilizza dex2jar per decompilare l'applicazione e revisionare il codice che genera traffico di rete per ottenere informazioni.

d2j-dex2jar.bat "/path/to/the.apk" -o "/path/to/the/new.jar"

Apri il file jar con JD-GUI.

8) MITM - L'uomo nel mezzo del traffico utilizza uno strumento come ettercap. Prendi in considerazione l'utilizzo del link o di altri generici proxy TCP (qui ce n'è uno che mi piace: dummyproxy.py ) a man-in-the-middle del traffico, anche se questo non aggirerà alcuna crittografia come TLS.

    
risposta data 23.06.2017 - 16:23
fonte
1

Prova a utilizzare mitmproxy . Ti consente di tracciare il traffico sia HTTP che HTTPS. Puoi visualizzare richieste e risposte e acquisirle / modificarle.

    
risposta data 10.06.2014 - 16:58
fonte
1

Ci sono alcuni modi per intercettare le app Android in modo affidabile, escludendo l'uso delle direttive della riga di comando --tcpdump e --http-proxy dell'emulatore di Android SDK (accessibili anche nelle impostazioni dell'emulatore di Eclipse).

Il mio preferito per tutte le app mobili è di utilizzare un blackhole DNS , che può essere ulteriormente automatizzato con Android Emulatore SDK:

emulator -dns-server 192.168.0.2 -avd <avdname>

Il traffico come HTTP / TLS potrebbe essere facilmente intercettato eseguendo Burp (forse come root) sull'host dei caratteri jolly DNS, anche se Burp avrebbe bisogno di essere configurato per l'ascolto sulle porte appropriate (in genere 80 e 443) in modalità invisibile- modalità. Inoltre, alcuni controlli di blocco dei certificati potrebbero essere ignorati da configurazione di Burp da fare per -hostname Certificati con firma CA con un carattere jolly per il dominio di primo livello (ad esempio, * .google.com).

Burp può anche essere configurato per acquisire le risposte del server , che può essere molto utile durante la risoluzione dei problemi.

Se vuoi vedere i gestori di file insieme ai gestori del protocollo di rete, ti suggerisco di utilizzare lo strumento strace tramite ADB. strace è incluso nell'emulatore di Android SDK e può essere copiato su dispositivi che utilizzano ADB o altro.

    
risposta data 10.06.2014 - 17:23
fonte
1

Recentemente ho ripetuto un'applicazione che non aveva il supporto proxy nativo. Lo sviluppatore non l'aveva fatto intenzionalmente, quindi l'ha riparato in seguito.

La tua configurazione è leggermente diversa, in quanto ho usato un telefono fisico. Dovrebbe essere abbastanza facile per te fare qualcosa di simile nel tuo laboratorio - ma potresti richiedere un VM-guest in più che esegue Linux, se non lo usi come sistema operativo host.

QuellochehofattoperintercettareiltrafficoèstatoilNATdidestinazionetuttoiltrafficosullaporta80e443almioproxydiattacco.Nellamiaconfigurazione,utilizzounpuntodiaccessowirelessalqualeiltelefonosiconnette.

Questaconfigurazionedovrebbefunzionareindipendentementedalfattocheleimpostazionidelproxysianostateconfigurateomeno.

  • GeneraeinstallailcertificatoCAperilproxydiattaccosultelefono.
  • SullamacchinaLinux/macchinaiptables,impostal'inoltrotrasparente(destinazioneNAT'ing):

    iptables-tnat-APREROUTING-iwlan0-ptcp-mmultiport--dports80,443-jDNAT--toattack-proxy-ip:8080

  • InstallaunpuntodiaccessoWi-Fieimpostailgatewaypredefinitocomeiptables-machine(KaliLinux/192.168.0.100nell'esempio)

Ora,quandocolleghiiltelefonoalpuntodiaccessowireless,tuttoiltrafficowebdovrebbeesserereindirizzatoaltuoproxydiattacco.

Note:

HousatoBurp,quindihodovutoabilitareilsupportoproxytrasparente.Sichiama"Supporto proxy invisibile" in Burp.

    
risposta data 13.10.2016 - 10:03
fonte
0

Collega il tuo dispositivo Android e la tua piattaforma di test di penetrazione a una LAN. Conduci un attacco ARP spoof / veleno contro il dispositivo Android usando ettercap (o il tuo strumento di spoofing arp preferito). Questo farà sì che tutti i pacchetti da e verso il dispositivo Android passino per primi attraverso la tua piattaforma di test di penetrazione.

ettercap -T -w dump -M ARP /xx.xx.xx.xx/ // output:

Questo verrà scaricato sullo schermo ma è possibile configurarlo per eseguire il dump su un file e quindi analizzare i pacchetti utilizzando Wireshark.

Ettercap

Cain

    
risposta data 12.07.2014 - 01:36
fonte
0

Ecco come catturo tutto il traffico del mio telefono Android.

1) Ho un telefono Android con root.
2) Installare FS Cert Installer e quindi ho importato il certificato di burp nel mio telefono.
3) Connetti il mio telefono e portatile nella stessa rete WiFi.
4) Configura il proxy nel telefono in modo tale che la burpsuite presente nel mio laptop ascolti tutto il traffico che passa attraverso il mio telefono Android.

    
risposta data 13.10.2016 - 09:33
fonte

Leggi altre domande sui tag