Fragen zum Mobile Security-Interview – Paketerfassung

Wie funktioniert justTrustMe?

justTrustMe ist ein Xposed-Modul zur Umgehung der SSL-Zertifikatsüberprüfung für Android-Apps. Sein Prinzip besteht darin, die Klasse javax.net.ssl.X509TrustManager des Systems einzubinden, sodass bei der Überprüfung des Serverzertifikats immer ein Erfolg zurückgegeben wird. Selbst wenn der Server ein selbstsigniertes Zertifikat oder das Zertifikat des Packet Grabbers verwendet, akzeptiert die App dies auf diese Weise.

Kennen Sie SSL-Pinning? Wie erhalte ich das SSL-Pinning-Zertifikat?

SSL-Pinning ist eine Sicherheitsrichtlinie, die von einer Anwendung verlangt, nur vordefinierten Zertifikaten oder öffentlichen Schlüsseln zu vertrauen, und nicht Zertifikaten im Systemzertifikatspeicher. Dies verhindert Man-in-the-Middle-Angriffe und SSL-Entschlüsselung durch Paketgrabber. Typischerweise werden SSL-Pinning-Zertifikate vom Server abgerufen und während der Anwendungsentwicklungsphase in die Anwendung eingebettet.

Wie kann man SSL-Pinning umgehen?

Es gibt mehrere Möglichkeiten, SSL-Pinning zu umgehen:

  • Mithilfe dynamischer Analysetools wie Xposed oder Frida werden Hook-bezogene Methoden zur Zertifikatsüberprüfung verwendet, um die Zertifikatsprüfung zu überspringen.
  • Verwenden Sie Reverse-Engineering-Mittel (z. B. Dekompilierung, Debugging usw.), suchen Sie die SSL-Pinning-Implementierung in der Anwendung und ändern Sie dann den Anwendungscode, um SSL-Pinning zu deaktivieren oder zu umgehen.
  • Ersetzen Sie das angeheftete Zertifikat oder den öffentlichen Schlüssel in der App durch das Zertifikat des Paketerfassungstools, damit die App dem Zertifikat des Paketerfassungstools vertraut.

Wie schützt man sich vor Socket-Kommunikation?

Zu den Schutzmethoden für die Socket-Kommunikation gehören hauptsächlich:

  • Verschlüsseln Sie Socket-Kommunikationsdaten, um zu verhindern, dass Paketerfassungstools Klartextdaten direkt anzeigen.
  • Verwenden Sie SSL/TLS, um Socket-Verbindungen zu verschlüsseln und so die Kommunikationssicherheit zu verbessern.
  • Verschleiern und härten Sie Anwendungscode und reduzieren Sie so die Schwierigkeit von Reverse Engineering und dynamischer Analyse.
  • Erkennen Sie Paketerfassungstools, Proxy-Einstellungen usw., während die Anwendung ausgeführt wird, und ergreifen Sie bei Feststellung von Anomalien entsprechende Schutzmaßnahmen (z. B. Beenden von Netzwerkanforderungen, Beenden von Anwendungen usw.).

Das Prinzip der Man-in-the-Middle-Paketerfassung auf Android? Wie schützen? Wie man kämpft?

Man-in-the-Middle-Paketerfassungsprinzip: Das Paketerfassungstool fungiert als Agent zwischen dem Client und dem Server, fängt die SSL/TLS-Kommunikation ab und entschlüsselt sie und zeigt Klartextdaten an. Der Schlüssel zur Implementierung der Man-in-the-Middle-Paketerfassung besteht darin, die Anwendung dem Zertifikat des Paketerfassungstools vertrauen zu lassen.
Zu den Verteidigungsmethoden gehören:

  • Verwenden Sie SSL-Pinning, um sicherzustellen, dass Anwendungen nur vordefinierten Zertifikaten oder öffentlichen Schlüsseln vertrauen.
  • Verschlüsseln Sie Netzwerkanfragen und -antworten, sodass Paketerfassungstools Klartextdaten nicht direkt anzeigen können.
  • Erkennen Sie Paketerfassungstools, Proxy-Einstellungen, installierte SSL-Zertifikate usw. und ergreifen Sie entsprechende Schutzmaßnahmen.

Zu den Gegenmaßnahmen gehören:

  • Umgehen Sie SSL-Pinning und Zertifikatsprüfungen mithilfe dynamischer Analysetools (z. B. Xposed, Frida).
  • Ändern Sie den Anwendungscode, um SSL-Pinning zu deaktivieren oder zu umgehen.
  • Ersetzen Sie das angeheftete Zertifikat oder den öffentlichen Schlüssel in der App durch das Zertifikat des Paketerfassungstools.

Welche anderen Möglichkeiten gibt es, Pakete zu erfassen? Kann eine Nicht-Root-Umgebung Pakete erfassen? Erzähl mir von dem Plan?

Zusätzlich zu den gängigen Paketerfassungsmethoden (wie Wireshark, Charles, Fiddler) gibt es die folgenden Methoden:

  • Verwenden Sie Packet Capture, ein Android-Paketerfassungsartefakt, um VPN-Dienste zum Erfassen des Netzwerkverkehrs ohne Root zu nutzen.
  • Erfassen Sie Pakete auf der Ebene des Anwendungscodes und erfassen Sie Netzwerkanforderungen und -antworten über Interceptoren oder benutzerdefinierte Netzwerkbibliotheken.

Was sind einige der schwierigsten Paketerfassungssituationen?

Zu den schwierigsten Paketerfassungssituationen können die folgenden gehören:

  • Die Anwendung implementiert starkes SSL-Pinning und verwendet Verschlüsselungs-, Verschleierungs- und Härtungstechniken, was es sehr schwierig macht, SSL-Pinning zu umgehen.
  • Die Anwendung verwendet einen benutzerdefinierten Verschlüsselungsalgorithmus oder ein benutzerdefiniertes Protokoll, sodass das Paketerfassungstool den Kommunikationsinhalt nicht direkt analysieren kann.
  • Die Anwendung verfügt über einen leistungsstarken Erkennungs- und Schutzmechanismus für die Paketerfassung, z. B. die Überprüfung von Proxy-Einstellungen, installierten SSL-Zertifikaten, Betriebsumgebung usw. Sobald Anomalien festgestellt werden, werden sofort entsprechende Schutzmaßnahmen ergriffen (z. B. Unterbrechen von Netzwerkanfragen, Beenden von Anwendungen usw.). .).

Guess you like

Origin blog.csdn.net/u010671061/article/details/132332859