Spørgsmål:
Hvor svært er det at opfange POST-responsorganet, når SSL bruges?
user181807
2018-07-09 17:28:36 UTC
view on stackexchange narkive permalink

For en Android-applikation, der udfører POST-anmodninger (JSON) over SSL og modtager et JSON-objekt som svar, hvor vanskeligt er det at få JSON-svaret?

Er den nemmeste måde at dekompilere ansøgning for at få anmodningen og sende den og se, hvad svaret er?

Hvad er den nemmeste måde, og hvad er nogle teknikker, der kan bruges til at gøre det vanskeligere?

"få svaret" - mener du "læse JSON-data på uautoriserede måder"?
SSL skal ikke beskytte mod et ikke-betroet slutpunkt, kun mod et ikke-tillid til netværk.
Hvad mener du med "at få anmodningen og sende den og se, hvad svaret er"?Alle kan rode med dit slutpunkt uden at dekompilere din app.Alt, hvad de behøver at vide, er slutpunktets URL.De bliver bare nødt til at se på netværkstrafik, mens de bruger din app til at få den.De kunne også finde POST-anmodningsinfo ret nemt.Ingen dekompilering nødvendig.
En svar:
HamZa
2018-07-09 18:37:40 UTC
view on stackexchange narkive permalink

Det hele afhænger af selve applikationen, og hvilken slags sikkerhedsforanstaltninger der implementeres. Forudsat at anmodninger sendes via HTTP (er), er den nemmeste måde at bruge en proxy som Burp. Du skal installere et CA-certifikat på din mobile enhed. Du kan se anmodninger om &-svar i proxy-softwaren (Burp).

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

Hvis applikationen bruger SSL / TLS-fastgørelse, fungerer ovenstående løsning ikke ud af boksen. Nogle funktioner vil udføre yderligere kontrol af certifikatet, du skal manipulere sådanne funktioner for at omgå det. Generelt er der to måder:

  1. Patch applikationen for at fjerne SSL / TLS-pinning. Dette kræver normalt udpakning, redigering, ompakning og fratræden af ​​appen. Helt trættende, hvis du spørger mig.
  2. Tilslut SSL / TLS-fastgørelseslogikken og deaktiver sådan logik. Frida er et ret cool værktøj til dette (multi platform), Substrate på iOS og xposed på Android.

En anden løsning er slet ikke at bruge en proxy! Normalt bruges et HTTP-klientbibliotek til at udføre sådanne anmodninger. Du kan tilslutte HTTP-anmodningsfunktioner og udskrive indholdet direkte.

  APP < ---- >-server ^ -> hooked-funktioner, der udskriver anmodningerne  

Den anden løsning kan være nyttig, når appen ikke bruger standard HTTP-anmodninger. Nogle apps bruger binære protokoller, sådan en gRPC, det ville være lettere at tilslutte myclient_post (jsonData) -funktionen og udskrive parametrene + respons end reverse engineering af den binære protokol, opsætte en proxy osv ...

Nogle links, der kan være nyttige:

Et mindre tillæg - Android selv kommer med et HTTP-bibliotek, så det er sandsynligvis, hvad der vil blive brugt, hvilket gør det noget lettere.Eller i det mindste når du har patchet det efter din smag for en app, vil det sandsynligvis være mere anvendeligt.


Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 4.0-licens, den distribueres under.
Loading...