Quanto è difficile intercettare il corpo della risposta POST quando viene utilizzato SSL?

17

Per un'applicazione Android che esegue richieste POST (JSON) su SSL e riceve un oggetto JSON come risposta, quanto è difficile ottenere la risposta JSON?

È il modo più semplice per decompilare l'applicazione per ottenere la richiesta e inviarla e vedere quale è la risposta?

Qual è il modo più semplice e quali sono alcune tecniche che possono essere utilizzate per renderlo più difficile?

    
posta user181807 09.07.2018 - 14:28
fonte

1 risposta

22

Tutto dipende dall'applicazione stessa e dal tipo di misure di sicurezza implementate. Supponendo che le richieste vengano inviate su HTTP (s), il modo più semplice è utilizzare un proxy come Burp. Dovrai installare un certificato CA sul tuo dispositivo mobile. Sarai in grado di vedere richieste e amp; risposte nel software proxy (Burp).

APP <----> proxy <----> server

Se l'applicazione utilizza il pinning SSL / TLS, la soluzione sopra descritta non funzionerà immediatamente. Alcune funzioni eseguiranno controlli aggiuntivi sul certificato, sarà necessario manomettere tali funzioni per evitarle. Generalmente ci sono due modi:

  1. Patchare l'applicazione per rimuovere il blocco SSL / TLS. Questo di solito richiede il disimballaggio, la modifica, il repacking e la dimissione dell'app. Piuttosto stancante se me lo chiedi.
  2. Aggancia la logica di blocco SSL / TLS e disabilita tale logica. Frida è uno strumento molto interessante per questa (multi piattaforma), Substrate su iOS e xposed su Android.

Una seconda soluzione è di non usare affatto un proxy! Di solito viene utilizzata una libreria client HTTP per eseguire tali richieste. Puoi agganciare le funzioni di richiesta HTTP e stampare direttamente il contenuto.

APP <----> server
^-> hooked functions which prints the requests

La seconda soluzione può essere utile quando l'app non utilizza le richieste HTTP standard. Alcune app usano protocolli binari come un gRPC, sarebbe più facile agganciare la funzione myclient_post(jsonData) e stampare i parametri + risposta, piuttosto che eseguire il reverse engineer del protocollo binario, configurare un proxy ecc ...

Alcuni collegamenti che potrebbero essere utili:

  • Installa burp CA su Android: link
  • Installa burp CA su iOS: link
  • Modulo xposed Android che ignora alcune regole di blocco standard TLS / SSL: link
  • Come sopra ma per iOS che utilizza il substrato Cydia: link
  • Frida: link , snippet di codice: link , android ssl bypass: link , ios ssl bypass: link
  • Il pinning del certificato ha spiegato: link
  • Quando entri in scenari avanzati: link (un ponte tra Frida e Burp)
risposta data 09.07.2018 - 15:37
fonte

Leggi altre domande sui tag