Gründe und Lösungen für einige APPs, die keine Proxy-Paketerfassung durchführen können (Flatter-Erfassung)

Inhaltsverzeichnis

 


zurück an die Spitze

Einführung

Die Paketerfassung auf der HTTP-Anwendungsebene ist zu einem wichtigen Bestandteil des täglichen Arbeitstests und Debuggens geworden. Als ich kürzlich ein neues Projekt kontaktierte, stellte ich plötzlich fest, dass die vorherigen Methoden zur Paketerfassung nicht gut funktionierten. Plötzlich zwischen Front-End und Der Dienst zwischen dem Modul und dem Modul. Alle Interaktionen wurden unsichtbar und die ganze Person schien die Augen verbunden zu haben.

Tatsächlich habe ich früh festgestellt, dass Apps wie Alipay, die ich normalerweise mit Proxy-Erfassungssoftware wie Fiddler oder Charles verwende, standardmäßig keine Anforderungen erfassen können, aber mit Netzwerkkarten-Erfassungssoftware wie Wireshark den Datenverkehr dieser Apps sehen können Der Datenverkehr zeigt auch an, dass das von diesen Apps verwendete Hauptprotokoll der Anwendungsschicht immer noch HTTP (https) ist, unser Tool zur Erfassung von Proxy-Paketen jedoch fehlgeschlagen ist. Jetzt bin ich endlich in der eigentlichen Arbeit darauf gestoßen und musste es lösen. Schließlich würde mich etwas, das mich blockiert, unwohl fühlen lassen.

 

 

zurück an die Spitze

Prinzip der Proxy-Erfassung

Um zu verstehen, warum Fiddler oder Charles für diese Apps ungültig sind, müssen wir zunächst das Prinzip der Proxy-Erfassung verstehen (natürlich möchten Sie nicht wissen, dass dies auch vollständig möglich ist. Schauen Sie sich einfach den tatsächlichen Vorgang dahinter an . und analysieren Sie das Prinzip jederzeit. Kommen Sie zurück)

 

Die von Fiddler oder Charles verwendete Proxy-Paketerfassungssoftware unterscheidet sich vollständig von Wireshark (die von Wireshark verwendeten Netzwerkkartendaten werden kopiert, solange sie die angegebene Netzwerkkarte passieren, werden sie erfasst) und können nur für wirksam werden Das Netzwerkprotokoll der Anwendungsschicht, das den Proxy verwendet, z. B. allgemeines HTTP (https), Websocket.

Hier ist eine kurze Erklärung am Beispiel von HTTP

 

Der Client muss eine HTTP-Anforderung abschließen und muss normalerweise zuerst den Server finden. Der Client stellt eine TCP-Verbindung mit dem Zielhost basierend auf dem Hostnamen der URL in der http-Anforderung her (verwenden Sie tatsächlich den Protagonistennamen im Host). Die HTTP-Nachricht wird an den Zielserver gesendet (weitere Informationen finden Sie unter https://tools.ietf.org/html/rfc7232 ).

 

Lassen Sie mich als Nächstes einen Blick auf die Funktionsweise des HTTP-Proxys werfen. Wenn wir Fiddler oder Charles starten, starten wir einen HTTP-Proxyserver. Diese Art von Tool benachrichtigt das Betriebssystem: "Jetzt habe ich einen HTTP-Proxy auf dem System erstellt." und die IP ist XXXXXX-Port. Es ist XX. Wenn Sie Linux verwenden, können Sie das Betriebssystem manuell benachrichtigen (Export http_proxy = ip: Port export https_proxy = $ http_proxy), wenn Sie ein mobiles Gerät wie ein Mobiltelefon verwenden können Sie dem System mitteilen, das Sie in den aktuellen WLAN-Einstellungen verwenden möchten. http-Proxy. Nachdem wir dem System mitgeteilt haben, dass wir einen Proxy verwenden möchten, wird der auf dem System ausgeführte http-Client keine Anforderung mehr ausführen DNS-Auflösung und Verbindung zum Zielserver herstellen, aber direkte Verbindung herstellen Das System teilt ihm die Adresse des Proxys (IP und Port des Proxys) mit. Beachten Sie, dass unabhängig davon, ob es sich um http oder https oder andere Protokolle handelt, die den Proxy unterstützen, eine Verbindung zum Proxy hergestellt wird gleichen Port). Dann stellt der Proxyserver eine Verbindung mit dem Client her, und dann fordert der Proxyserver die Informationen an. Stellen Sie dann eine Verbindung zum realen Server her.

 

Hier gibt es auch ein Detail. Normalerweise enthält die vom Client ohne Proxy an den Server gesendete Anforderungszeile nur einen Teil des URI (tatsächlich gibt es kein Schema, keinen Hostnamen und keinen Port).

 

Wie in der obigen Abbildung gezeigt, lautet die Anforderungszeile der Anforderung an www.baidu.com/index.html, wenn kein Proxy vorhanden ist, tatsächlich GET /index.html HTTP / 1.1, was nicht unsere übliche vollständige URL ist. Da der Zwischenserver (dh der Proxy) im ursprünglichen HTTP-Design nicht berücksichtigt wird, kennt der Client bereits die Adresse des Servers und stellt vor dem Senden der Nachricht eine Verbindung zu ihm her. Das Schema, der Hostname und der Port müssen nicht gesendet werden . Dieser Ansatz ist jedoch problematisch, nachdem der Proxy angezeigt wurde. Der Client stellt eine Verbindung zum Proxyserver her, der Proxyserver kann jedoch keine Verbindung zum richtigen Server herstellen. Daher unterscheidet sich die vom Client an den Proxy gesendete Anforderung geringfügig. Der Client verwendet die vollständige URL in der Anforderungszeile, damit der Proxyserver die tatsächliche Serveradresse auflösen kann.

Jetzt werden unsere Anfragen tatsächlich über einen Proxyserver (Fiddler oder Charles) gesendet, sodass die Proxy-Erfassungssoftware nicht nur alle Pakete der http-Anfrage und -Antwort kennt, sondern die Anfrage und Antwort auch jederzeit ändern kann.

 

zurück an die Spitze

Gründe, warum einige Apps keine Pakete erfassen können

Es ist ersichtlich, dass der Schlüssel zur Proxy-Erfassung darin besteht, dass der HTTP-Client nach Bedarf eine Verbindung zum Proxy-Server herstellen muss. Unter normalen Umständen haben wir einen Proxy auf Systemebene eingerichtet. In der Regel werden http-Clients vor dem Erstellen nach Bedarf implementiert eine http-Anfrage Der System-Proxy wird zuerst überprüft. Wenn ein Proxy festgelegt ist, verwendet der Client direkt die vollständige URL, um eine Verbindung zum Proxy-Server herzustellen. Verschiedene Plattformen implementieren normalerweise ihre eigenen http-Clients. Obwohl alle die Proxy-Funktion gemäß den Protokollanforderungen implementieren, verwenden sie den System-Proxy nicht unbedingt standardmäßig direkt.

In der Realität gibt es in dieser Situation einige Fälle. Dies ist bei Flutter der Fall, das im aktuellen Projekt des Autors verwendet wird. Standardmäßig verwendet Flutter den Systemproxy nicht aktiv und muss separat festgelegt werden. (Natürlich denke ich, dass diese Strategie auch vernünftig ist, obwohl sie das Testen und Debuggen unangenehm macht, aber bis zu einem gewissen Grad auch die Datensicherheit ein wenig verbessert.)

Gerade weil der HTTP-Client den von uns eingerichteten System-Proxy nicht verwendet, stellt er natürlich keine Verbindung zu dem von Fiddler oder Charles erstellten Proxy-Server her, was letztendlich verhindert, dass wir Anforderungen erhalten.

 

zurück an die Spitze

Lösung

Aber jetzt, da wir bereits die spezifischen Gründe kennen, warum Fiddler und Charles keine Pakete erfassen können und das Prinzip der Proxy-Erfassung bereits erwähnt wurde, haben wir eine Lösung.

Wie bereits erwähnt, ist der von unserer APP verwendete HTTP-Client nicht mit dem Proxyserver verbunden, was dazu führt, dass unsere Proxy-Erfassungssoftware Pakete nicht normal erfasst. Dann müssen wir nur noch einen Weg finden, um den Client wieder mit dem Proxyserver zu verbinden ( All dies geschieht natürlich unter der Voraussetzung, dass die Client-Software-APP nicht geändert wird.

Methode 1: Steuern Sie die DNS-Auflösung und lassen Sie den Client glauben, dass unser Proxyserver der Zielserver ist, indem Sie DNS ändern.

            Vorteile: Einfach zu bedienen, es ist sehr bequem, die Hosts des Geräts zu ändern.

            Nachteile: Für jeden zu betreibenden Domainnamen muss im Voraus ein Host hinzugefügt werden

                      Es ist schwierig, Hosts auf Handheld-Geräten wie Mobiltelefonen zu ändern (dh es ist schwierig, Anwendungen wie mobile APPs zu implementieren).

 

Methode 2: Direkte Weiterleitung des Datenverkehrs auf dem Netzwerkgerät und Weiterleiten der an Port 80 und 443 auf dem angegebenen Endgerät gesendeten Daten direkt an den Zielport des Proxyservers

           Vorteile: Es kann separat für Endgeräte konfiguriert werden, die an Netzwerkgeräte angeschlossen sind, und Endgeräte wie Mobiltelefone benötigen keine Geräte

           Nachteil: erfordert separate Hardware-Ausrüstung

 

Methode 3: Verwenden Sie VPN, um den Datenverkehr des Endgeräts an den Proxyserver weiterzuleiten

           Vorteil: Verwenden Sie VPN-Software, ohne weitere Tests hinzuzufügen.

           Nachteile: Das VPN auf dem Terminal leitet standardmäßig den gesamten Datenverkehr direkt weiter, und eine angemessene Konfiguration kann zusätzliche Lernkosten erfordern

 

zurück an die Spitze

Aktuelle Betriebsschritte (Android)

Der Autor verwendet direkt die oben erwähnte dritte Methode (Methode 1 ist für mobile Apps schwierig zu bedienen, Methode 2 erfordert möglicherweise andere Geräte, daher verwenden wir sie hier nicht), da unser Testobjekt eine mobile mobile APP ist, also müssen wir zuerst Verwenden des Mobiltelefons Installieren Sie ein VPN auf Ihrem Mobiltelefon und verwenden Sie eine sehr praktische VPN-Software (hier eingeführt https://github.com/SuppSandroB/sandrop/wiki/Drony-FAQ ). drony erstellt ein VPN auf Ihrem Mobiltelefon Telefon und verbinden Sie es mit Der gesamte Datenverkehr auf dem Telefon wird auf drony selbst umgeleitet (nicht auf den VPN-Server), sodass drony den Netzwerkverkehr auf allen Telefonen verwalten und sogar den Verkehr verschiedener Apps auf dem Telefon einzeln konfigurieren kann.

1: Installieren Sie drony (das vom Telefon hier verwendete Android-Gerät)

     Sie können im Internet nach drony suchen und die Version auswählen, die Sie installieren möchten, oder sie hier herunterladen ( https://files.cnblogs.com/files/lulianqi/Drony_102.apk ). Öffnen Sie nach Abschluss der Installation die Software Wie nachfolgend dargestellt

   

 

 

 

2: Öffnen Sie die Proxy-Erfassungssoftware (hier verwendet die Proxy-Erfassungssoftware Fiddler).

  Die Verwendung von Fiddler wird hier nicht vorgestellt. Sie müssen den Remote-Proxy öffnen und das Fiddler-Stammzertifikat im Telefon installieren.

  Die Adresse des vom Autor hier geöffneten Remote-Agenten lautet 192.168.2.244:8888

  Es gibt einige Details zur Zertifikatsinstallation. Das Standardstammzertifikat von Fiddler ist im Cer-Format, und einige Mobiltelefone erkennen möglicherweise nur Zertifikate im PEM-Format.

  Verwenden Sie einfach openssl, um es umzudrehen (openssl x509 -inform der -in FiddlerRoot.cer -out FiddlerRoot.pem)

  Openssl wird im Allgemeinen in Windows / Mac installiert, und der Befehl kann direkt verwendet werden. Verwenden Sie einfach die generierte Datei FiddlerRoot.pem, um es auf dem Telefon zu installieren (Charles verwendet standardmäßig das PEM-Zertifikat).

 

3: Konfigurieren Sie die Weiterleitung von Drohnen

 

Öffnen Sie Drony (im Status OFF), wechseln Sie zur Seite SETING und wählen Sie Networks Wi-Fi aus, um die Konfiguration aufzurufen

 

 

Wählen Sie in der Netzwerkliste das aktuelle WLAN-Verbindungsnetzwerk für Mobiltelefone aus und klicken Sie darauf (Sie müssen sicherstellen, dass das Netzwerk mit dem Fiddler-Proxyservernetzwerk verbunden ist).

 

 

Konfigurieren Sie den Proxy-Eintrag für das aktuelle Netzwerk (hier können Sie die Fiddler-Proxy-Adresse direkt eingeben) und wählen Sie den Proxy-Modus als Manuell (Manuell).

 

Beachten Sie, dass die Proxy-Typ-Proxy-Methode "Einfacher http-Proxy" auswählen sollte

 

Standardwert filtern, wählen Sie Alle leiten und klicken Sie unten auf Regel, um die Anwendungsregeln festzulegen

 

Standardmäßig sollte Ihre Regel leer sein. Klicken Sie oben auf das Pluszeichen, um eine Regel hinzuzufügen (nur diejenigen, die die Anforderungen der Regel erfüllen, werden weitergeleitet).

Erklären Sie, dass bei den folgenden Vorgängen gesalzener Fisch oder Alipay als Demonstration verwendet werden. Der aktuelle Testgegenstand des Autors ist jedoch weder gesalzener Fisch oder Alipay noch ein Mitarbeiter seines Unternehmens. Ich habe diese beiden Apps zur Demonstration ausgewählt, da diese Apps werden häufiger verwendet und können nicht Der Grund für das Erfassen von Paketen ähnelt der aktuellen Projekt-APP des Autors.

 

 

Wählen Sie die SSID des aktuellen WLAN unter Netzwerk-ID

Aktion Wählen Sie Lokale Proxy-Kette

Anwendung Wählen Sie die APP aus, die zum Proxy gezwungen werden muss

Wenn Hostname und Port nicht ausgefüllt sind, bedeutet dies, dass alle zum Proxy gezwungen werden, da APP möglicherweise andere Netzwerkprotokolle verwendet, nicht unbedingt http, und Sie möglicherweise nicht den gesamten Datenverkehr zum http-Proxyserver umleiten möchten, diesmal Sie verwendet diese Konfiguration, um die IP- und Portweiterleitung anzugeben

Speichern Sie es, wenn Sie fertig sind, und kehren Sie dann zur SETTING-Homepage zurück. Wechseln Sie zur LOG-Seite und klicken Sie auf die Schaltfläche unten, um es in den EIN-Zustand zu versetzen (Anzeige der Aktivierung).

 

 

 

Starten Sie zu diesem Zeitpunkt Alipay oder Xianyu, und wir können normalen Verkehr auf Fiddler sehen. Wenn Sie jedoch genauso viel Glück haben wie der Autor, sehen Sie möglicherweise nur diese Tunnel zu (TLS-Pipeline-Einrichtung). Wenn Sie Charles verwenden, werden in der Liste möglicherweise rote Kreuze angezeigt.

 

 

 

Natürlich wurde das Fiddler-Stammzertifikat des Autors erfolgreich installiert und die Fiddler-Konfiguration ist korrekt (Chrome https Capture auf dem Telefon ist normal).

Nachdem der Datenverkehr Fiddler erreicht hat, ist Drony's Arbeit perfekt abgeschlossen und einige der Apps können die https-Nachricht nicht entschlüsseln, was immer noch ein Problem mit unserem eigenen Zertifikat darstellt. Beschreiben Sie zunächst kurz den Prozess der Zertifikatsüberprüfung (wenn Sie diese Prozesse nicht sehen möchten, können Sie die folgenden Schritte direkt anzeigen ).

 

 

zurück an die Spitze

Prinzip der Zertifikatsüberprüfung

Sowohl Fiddler als auch Charles verwenden Man-in-the-Middle-Angriffe, um das TLS-Link-Zertifikat zu ersetzen, die Nachricht zu entschlüsseln, sie dann zu verschlüsseln und an den realen Server zu senden.

Einzelheiten zum Man-in-the-Middle-Angriff finden Sie in der  HTTPS-Man-in-the-Middle-Angriffspraxis (Prinzip · Übung)

 

 

Bei Vorhandensein eines Proxys stellt der Client zunächst eine Verbindung zum Proxyserver her (dh zum Angreifer in der Abbildung). Der eigentliche Client ist ein TLS-Kanal, der direkt mit dem Proxy eingerichtet wurde, sodass der Proxy natürlich den Übertragungsschlüssel von verwendet den TLS-Kanal und entschlüsseln Sie dann die Nachricht.

 

Aufgrund des Vorhandenseins des Zertifikats überprüft der Client jedoch die Gültigkeit des Zertifikats und entscheidet dann, ob eine Verbindung zum Server hergestellt werden soll. Wir verwenden Fiddler oder Charles, um das Stammzertifikat auf dem Gerät zu installieren, bevor wir https abrufen, um die Zertifikatüberprüfung des Clients zu bestehen.

 

 

Suchen Sie eine beliebige https-Webseite im Browser und zeigen Sie deren Zertifikatinformationen an.

 

Von hier aus können wir sehen, dass das Zertifikat Folgendes enthält:

(1) Gültigkeit ist auch die Gültigkeitsdauer. Die Gültigkeitsdauer umfasst die effektive Zeit und die Ablaufzeit, die ein Zeitintervall ist;

(2) Betreff Informationen zum öffentlichen Schlüssel, einschließlich Verschlüsselungsalgorithmus für öffentliche Schlüssel und Inhalt des öffentlichen Schlüssels;

(3) Fingerabdruckinformationen. Fingerabdrücke werden zur Überprüfung der Integrität des Zertifikats verwendet und sind auch der Schlüssel zur Überprüfung des Zertifikats. Seine Garantie wurde nicht geändert. Das Prinzip ist, dass der Aussteller bei der Ausstellung eines Zertifikats den Hash-Fingerabdruck des gesamten Zertifikats gemäß dem Fingerabdruck-Algorithmus berechnet (hier verwendet das Zertifikat die Algorithmen SHA-1 und SHA-256 mit mehreren Fingerabdrücken, um mit alten Clients kompatibel zu sein) [Zertifikat Inhalts-Hash-Wert Die Verwendung der CA-Verschlüsselung mit privatem Schlüssel ist der Fingerabdruck] und wird zusammen mit dem Zertifikat hinzugefügt. Wenn der Client das Zertifikat öffnet, berechnet er auch den Hash-Wert des Zertifikats gemäß dem Fingerabdruck-Algorithmus und verwendet den öffentlichen Schlüssel des Vertrauenswürdigen Stammzertifikat zum Entschlüsseln des Hash-Fingerabdrucks zum Berechnen des ursprünglichen Hash. Wenn der Hash-Wert inkonsistent ist, zeigt dies an, dass der Zertifikatinhalt manipuliert wurde.

(4) Zertifikatsignaturwert und Zertifikatsignaturalgorithmus, der Hash-Algorithmus und der Hash-Wert, die zum Signieren des Zertifikats verwendet werden;

(5) Emittent der CA-Institution, die das Zertifikat ausgestellt hat;

(6) Für welche Organisation / Unternehmensinformation ist das Zertifikat ausgestellt?

(7) Zertifikatsversion Version, Zertifikatseriennummer Seriennummer und Erweiterungserweiterungsinformationen usw.

 

 

 

 

Die obige Abbildung zeigt den Prozess der Überprüfung des Zertifikat-Fingerabdrucks. Möglicherweise ist der Kern des Client-Überprüfungszertifikats der öffentliche CA-Schlüssel zum Entschlüsseln des ursprünglichen Fingerabdrucks. Woher stammt der öffentliche CA-Schlüssel? Um die Sicherheit zu gewährleisten Das Gerätesystem verfügt über einen Stapel öffentlicher CA-Schlüssel, denen es List (Stammzertifikat) vertraut. Diese öffentlichen CA-Schlüssel entsprechen im Allgemeinen Behörden oder Organisationen, und diese Behörden verwenden ihre eigenen privaten Schlüssel, um bei der Ausstellung von Zertifikaten zu signieren (Fingerabdrücke für Zertifikate zu generieren). Dies stellt sicher, dass nur die von der Behörde für jede Website ausgestellten Zertifikate vom Kunden überprüft werden.

 

Filddler verfügt in diesen Zertifikaten nicht über den privaten Schlüssel, der dem öffentlichen Schlüssel entspricht (die Zertifizierungsstelle gibt nur den privaten Schlüssel, der dem vollständigen Zertifikat entspricht, an den Eigentümer der Website weiter), sodass der TLS-Handshake mit dem Client nicht abgeschlossen werden kann . Um den Handshake abzuschließen, kann Filddler nur Zertifikate für verschiedene Sites generieren.

Das von Ihnen selbst generierte Zertifikat muss jedoch mit Ihrem eigenen privaten Schlüssel signiert sein. Der Client kann das entsprechende Stammzertifikat nicht in der Liste der öffentlichen Schlüssel der von ihm vertrauenswürdigen Zertifizierungsstelle finden und darf die Zertifikatsüberprüfung nicht bestehen. Daher verlangt Filddler, dass wir sein Stammzertifikat auf dem Gerät installieren, damit das von ihm selbst ausgestellte Zertifikat die Zertifikatüberprüfung bestehen und die https-Nachricht selbst entschlüsseln kann.

 

zurück an die Spitze

Gründe, die nicht entschlüsselt werden können

Aus der obigen Beschreibung geht auch hervor, dass der Grund, warum die Verbindung zum Entschlüsseln der https-Nachricht nicht normal hergestellt werden kann, darin besteht, dass die Zertifikatsüberprüfung fehlgeschlagen ist und unsere Installation des Stammzertifikats nicht abgeschlossen ist.

Seit Android7.0 ermöglicht das System jeder Anwendung, ihre eigenen vertrauenswürdigen Zertifizierungsstellen zu definieren . Einige Anwendungen vertrauen nur dem vom System standardmäßig vorinstallierten CA-Zertifikat, jedoch nicht dem vom Benutzer installierten CA-Zertifikat (oder dem von der Anwendung verwendeten Entwicklungsframework nur standardmäßig dem Systemzertifikat, da Entwickler dies normalerweise nicht tun kümmern sich um diese Konfigurationen, noch ändern sie ihn). In Android sind die von Benutzern installierten Zertifikate alle Benutzerzertifikate. Unabhängig davon, ob es sich um Filddler oder Charles handelt, haben wir nur ihre Stammzertifikate auf den Benutzerzertifikaten installiert. Diese Anwendungen verwenden sie nicht, sodass unsere installierten Zertifikate ungültig sind.

 

 

zurück an die Spitze

Lösung und Betriebsmethode

Jetzt, da der Grund bekannt ist, gibt es immer einen Weg, ihn zu lösen. Wir müssen nur das Stammzertifikat der Agentensoftware als Systemzertifikat installieren.

Tatsächlich ist es relativ einfach, das Zertifikat im Systembereich zu installieren. Platzieren Sie das Zertifikat einfach am angegebenen Speicherort (/ system / etc / security / cacerts /) mit dem angegebenen Namen

Ändern Sie zuerst den Namen unseres Stammzertifikats in <Certificate_Hash>. <Number>

Certificate_Hash stellt den Hashwert der Zertifikatdatei dar, und Number ist das hinzugefügte Suffix, um zu verhindern, dass der Hashwert der Zertifikatdatei konsistent ist (verwenden Sie 0 in der Zeile).

Laden Sie Ihr eigenes Stammzertifikat FiddlerRoot.cer herunter, verwenden Sie openssl x509 -subject_hash_old -in <Certificate_File>, um den Zertifikat-Hash zu berechnen, und benennen Sie das Zertifikat basierend auf dem Hash in 269953fb.0 um (269953fb ist der Hash des Zertifikats des Autors, jeder ist definitiv anders )

Kopieren Sie dann die Datei 269953fb.0 nach / system / etc / security / cacerts /

((

Die Methode des Bloggers ist zwar sehr praktisch, aber der letzte Befehl zur Berechnung des Zertifikat-Hashs enthält einige Details.
Wenn ich auf dem Win 10-System berechnet habe, verwenden Sie den Befehl
openssl x509 -subject_hash_old -in FiddlerRoot.cer
wird sich beschweren, nachdem das Internet später festgestellt hat , dass Sie den Befehl wie folgt ändern müssen:
OpenSSL X509 -inform der -subject_hash_old -IN FiddlerRoot.cer - kein
Grund für die Berechnung Bei der Berechnung müssen Sie ausdrücklich darauf hinweisen, dass das Format des aufgerufenen Zertifikats cer ist. Andernfalls wird ein Fehler gemeldet und kann nicht berechnet werden.

 

Nach Abschluss sehen wir, dass das Zertifikat der Agentensoftware im Systembereich angezeigt wird.

 

Es gibt noch einen weiteren Punkt, der separat erläutert werden muss: Die Schreibberechtigung des Verzeichnisses / system / etc / security / cacerts / erfordert die Root-Berechtigung des Telefons.

Mit anderen Worten, um das Zertifikat in dieses Verzeichnis zu kopieren, müssen Sie Ihr eigenes Gerät rooten.

In Bezug auf das Rooten von Android-Handys verfügen die Hersteller von Mobiltelefonen normalerweise über eigene offizielle Tutorials. Es wird empfohlen, die offiziellen Vorgänge zum Rooten zu befolgen

Nehmen Sie als Beispiel das Xiaomi-Mobiltelefon ( http://www.miui.com/thread-12281379-1-1.html ).

Das Stammverzeichnis des aktuellen Xiaomi-Mobiltelefons muss länger als 7 Tage an das Xiaomi-Konto gebunden sein, um es zu entsperren. Wischen Sie nach dem Entsperren über die Entwicklungsversion, um das Stammverzeichnis zu vervollständigen

Es ist zu beachten, dass nicht alle Xiaomi-Mobiltelefone über entsprechende Entwicklungsversionen verfügen. Achten Sie daher beim Kauf von Testgeräten darauf. ( Http://www.miui.com/download.html  Hier können Sie sehen, ob eine Entwicklungsversion für Ihr Mobiltelefon verfügbar ist.)

 

bewirken

Jetzt wird das Zertifikat im Systembereich installiert und Sie kehren zu Fiddler zurück, um den Effekt zu sehen

 

Öffnen Sie Xianyu erneut und wir können bereits die vollständige https-Anfrage sehen.

 

Lassen Sie uns eine Anforderung zum Ändern der Anforderung zum Zurückgeben der Daten finden, um den Effekt zu sehen

 

Verwenden Sie das Fiddler-Plug-In FreeHttp, um die Rückgabedaten dieser Anfrage zu ändern, das gebrauchte Mobiltelefon in ein gebrauchtes Pferd umzuwandeln und das Bild zu ersetzen

Konfiguration wie unten gezeigt

 

 

(Informationen zur spezifischen Verwendung von FreeHttp finden Sie unter FreeHttp, um http-Nachrichten willkürlich zu manipulieren (Verwendung · Implementierung). )

 

 Wenn Sie Xianyu erneut öffnen, können Sie sehen, dass die Proxy-Daten manipuliert wurden (beachten Sie, dass der Cache und die Anwendungsdaten von Xianyu während des Tests gelöscht werden, um sicherzustellen, dass bei jedem Öffnen der APP erste Daten angefordert werden).

 

Nach der obigen Konfiguration kann der HTTP-Verkehr dieser APPs über die Proxy-Paketerfassungssoftware abgerufen werden, und der https-Verkehr kann auch normal decodiert werden.

 

zurück an die Spitze

IOS-Gerätebetriebsschritte (IOS)

ios (iphone) verwendet auch die oben erwähnte dritte Methode (das Prinzip ist dasselbe wie bei Android) und muss auch VPN verwenden. Es gibt auch viele Software mit ähnlichen Funktionen wie drony in ios. Sie können die auswählen, die Sie mögen. Hier ist der Autor, der Shadowrocket verwendet

 

Wie in der Abbildung oben gezeigt, finden Sie diese Software direkt im App Store (vorbehaltlich der einschlägigen Bestimmungen des Festlandes). Wenn der Bereich Ihres App Store möglicherweise nicht in der Lage ist, in China nach dieser Software zu suchen, benötigen Sie diese um das Konto in den USA zu nutzen)

Um die Verkehrsumleitung abzuschließen, erstellt Shadowrocket wie drony zuerst einen lokalen VPN-Dienst auf dem Gerät und verwendet dann die Regeln, die Sie für die Verarbeitung des Verkehrs festgelegt haben.

Die Verwendung von Shadowrocket ist jedoch bequemer. Öffnen Sie einfach die Software und konfigurieren Sie sie wie unten gezeigt

 

  1. Wählen Sie die globale Route als "Proxy"
  2. Fügen Sie einen Dienstknoten hinzu (wählen Sie HTTP- und HTTPS-Typen aus. Die Serveradresse und der Port sind die Adresse und der Port Ihres Proxy-Erfassungstools.)
  3. Legen Sie den zu aktivierenden Status fest (IOS erstellt gleichzeitig automatisch ein VPN).

Öffnen Sie jetzt direkt eine APP auf dem iPhone (Sie müssen den Proxy nicht wiederholt über das WLAN einstellen). Sie können den Datenverkehr auf dem Proxy-Erfassungstool sehen und den HTTPS-Datenverkehr nicht analysieren, aber IOS macht ihn nicht so Neue Version von Android. Die APP lehnt das vom Benutzer manuell vertrauenswürdige Benutzer-Stammzertifikat ab, sodass das IOS-Zertifikat mehr IOS als Android installiert und es nicht so viele zusätzliche Vorgänge gibt. Befolgen Sie einfach den normalen Installationsprozess für Zertifikate. Nach der Installation des Zertifikats können Sie den HTTPS-Verkehr anzeigen

 

 

 

 

 

 

Damit Android die oben genannten Vorgänge ausführen kann, können Sie die Plugins im xposed-Framework mithilfe des Android-Emulator-Stammverzeichnisses installieren

Selbstsigniertes Zertifikat + In-App-Überprüfung, kann immer noch nicht bestanden werden. APP erkennt nur seine eigene Zertifizierungsstelle.

Ich denke du magst

Origin blog.csdn.net/Vdieoo/article/details/112608912
Empfohlen
Rangfolge