Implementieren eines "Man-in-the-Middle"-Angriffs (CNG-Beispiel)

Das Beispiel für sichere CNG (Cryptography Next Generation)-Kommunikation veranschaulicht einen Man-in-the-middle-Angriff, bei dem sich eine dritte Partei (Mallory) zwischen zwei Kommunikationsendpunkte (Alice und Bob) schaltet.

Im CNG-Beispiel werden Named Pipes verwendet, um prozessübergreifende Kommunikation bereitzustellen.Alice fungiert immer als Named Pipe-Server, und Bob fungiert immer als Named Pipe-Client.Mallory nimmt gegenüber Alice eine Clientrolle (d. h., er nimmt die Identität von Bob an) und gegenüber Bob eine Serverrolle (d. h., er nimmt die Identität von Alice an) ein.Dies wird als "Substitution" bezeichnet, die einen klassischen Man-in-the-middle-Angriff darstellt.

Ausführliche Informationen zu diesem Szenario finden Sie in Schrittweiser Austausch von Schlüsseln und Nachrichten (CNG-Beispiel).

Im CNG-Beispiel wird der Begriff "Identitätswechsel" verwendet, um auf die Substitution von Mallory für Bob bzw. Mallory für Alice zu verweisen.Identitätswechsel hat jedoch auch im Zusammenhang mit Named Pipes eine spezifische Bedeutung, die in der Dokumentation zu der NamedPipeServerStream.RunAsClient(PipeStreamImpersonationWorker)-Methode erläutert wird.

Digitale Signaturen

Häufig werden digitale Signaturen verwendet, um Man-in-the-middle-Angriffe zu verhindern.Normalerweise werden Signaturschlüssel von einer Public Key-Infrastruktur (PKI) bereitgestellt und verwaltet.Die PKI ist selten lokal auf dem Computer vorhanden.Typischerweise wird sie von einer Sicherheits- oder Administrationsgruppe oder einer Zertifizierungsstelle unterstützt.Der Einsatz einer solchen Infrastruktur geht über den Rahmen dieses Beispiels hinaus.Stattdessen wird in dem Beispiel gezeigt, wie die CNG-Klassen verwendet werden, um lokale digitale Signaturschlüssel zu erstellen.

Einsprungspunkt

Für einen Man-in-the-middle-Angriff ist ein Einsprungspunkt in der Signalkette erforderlich.Dieser kann entstehen, wenn physische Hardwaregeräte, die das Messaging übernehmen, kompromittiert wurden.Beispielsweise können Leitungen ersetzt oder umgeleitet und in Telekommunikationsserver "eingebrochen" werden, die dann möglicherweise elektrisch neu konfiguriert werden.Eine wahrscheinlichere Technik besteht jedoch darin, die Software für die Netzwerkverwaltung neu zu konfigurieren.Beispielsweise können Ports neu zugewiesen oder umgeleitet sowie Softwareeinsprungspunkte in der Kommunikationsanwendung eingerichtet werden.

Eine kleine Lücke

Wenn eine Datei im Schreibmodus geöffnet wird, wird sie gegen die Verwendung durch andere Anwendungen gesperrt.Wenn ein Pipe-Client eine Verbindung mit einem Pipe-Server herstellt, wird die Pipe ebenso für die exklusive Verwendung durch den Client gesperrt. Die Pipe bleibt gesperrt, bis der Client die Verbindung beendet hat.

In einen eingerichteten Client/Server-Channel kann nur sehr schwer eingebrochen werden.Im CNG-Beispiel kann Mallory die Nachrichten zwischen Alice und Bob jedoch leicht abfangen und ändern.In der Tat bricht Mallory nicht in einen eingerichteten Pipe-Channel ein.Stattdessen nutzt Mallory eine kleine Lücke, die von den Kommunikationsprotokollen des Unternehmens übersehen wurde.

Alice und Bob erhielten die Anweisung, die PublicChannel-Pipe zur Weitergabe des Namens des privaten Channels zu verwenden und dann den privaten Channel für Vertriebskontakte einzusetzen.Aufgrund dieser Anweisungen ist Mallory in der Lage, den Namen des privaten Channels abzurufen und sich zwischen Alice und Bob einzuschalten.Die nächsten beiden Abschnitte erklären die Vorgehensweise.

Zeitliche Steuerung

Oft hängt der Erfolg eines Man-in-the-middle-Angriffs von einer Raffinesse ab, wie beispielsweise der zeitlichen Steuerung.Im CNG-Beispiel wird dieses Konzept veranschaulicht.

Mallory weiß, dass die neue, vom Unternehmen entwickelte Instant Messaging (IM)-Software auf Named Pipes beruht.Er weiß, dass Alice und Bob eine Pipe mit dem Namen PublicChannel öffnen werden.Er weiß auch, dass Alice den Namen einer zweiten Pipe an Bob senden wird.Alice und Bob werden die PublicChannel-Pipe schließen und anschließend die zweite Pipe zum Informationsaustausch über Vertriebskontakte öffnen und verwenden.

Um die Vertriebskontaktinformationen zu stehlen, muss Mallory den Namen der zweiten Pipe von Alice abrufen und Bob daran hindern, diesen abzurufen.Dazu muss er lediglich das Clientende der PublicChannel-Pipe vor Bob öffnen.

Im Quellcode wird eine 200-Millisekunden-Wartezeit in der System.Threading.Thread.Sleep(200)-Anweisung in der Run-Methode von Bob verwendet, um das Abfangen zu ermöglichen.Die wait-Anweisung ist absichtlich gut zu erkennen, da der Zweck dieses Beispiels darin besteht, einen Man-in-the-middle-Angriff zu veranschaulichen.In der Praxis sind Sicherheitsszenarios viel schwieriger zu analysieren.Sie verwenden eine Mischung aus Softwareanwendungen, Übertragungsprotokollen, Netzwerkauthentifizierung, Benutzerkonten, Protokollierung, Berechtigungen, Benutzerschulungen, Datenverkehrsüberwachung und anderen Analysetechniken.

Trotz dieser ausgeklügelten Methoden kann eine einfache Weiterleitungsverzögerung von 200 Millisekunden in einem Netzwerkserver für Monate unbemerkt bleiben.Aus diesem Grund wurden fünf getrennte Versionen des CNG-Beispiels erstellt, bevor die Abfangaktionen schließlich verhindert werden konnten.

Substitution

Durch das Abfangen des Namens der zweiten Pipe (AliceAndBobChannel) ist Mallory in der Lage, die Kommunikation von Alice und Bob zu belauschen sowie die Nachrichten zu ändern, die sie sich senden.Im Folgenden wird gezeigt, wie er diese Substitution durchführt:

  1. Alice öffnet die PublicChannel-Pipe im Servermodus und wartet, bis Bob eine Verbindung herstellt.

  2. Mallory stellt eine Verbindung mit der PublicChannel-Pipe im Clientmodus her und empfängt den Namen der zweiten Pipe (AliceAndBobChannel) von Alice.

  3. Alice und Mallory schließen die PublicChannel-Pipe.

  4. Alice öffnet die AliceAndBobChannel-Pipe im Servermodus, und Mallory stellt eine Verbindung im Clientmodus damit her.

  5. Mallory stellt als Server eine Verbindung mit Bob über die PublicChannel-Pipe her, und Bob stellt eine Verbindung als Client her.

  6. Mallory sendet Bob den Pipenamen AliceAndBobChannel1 (das heißt, er ändert den Namen etwas).Bob glaubt, dass er diese Informationen von Alice empfängt.

  7. Mallory und Bob trennen die Verbindung mit der PublicChannel-Pipe.

  8. Mallory öffnet die AliceAndBobChannel1-Pipe als Server, und Bob stellt eine Verbindung damit als Client her.

Mallory hat sich jetzt erfolgreich zwischen Alice und Bob eingefügt.

Mallory fungiert weiterhin als Client gegenüber Alice (über die AliceAndBobChannel-Pipe) und als Server gegenüber Bob (über die AliceAndBobChannel1-Pipe).Er kann jetzt nach Belieben Nachrichten lesen, ändern und erneut senden.Weder Alice noch Bob realisiert, dass jemand ihre Nachrichten abfängt und ändert.

Ein erfolgreicher Man-in-the-middle-Angriff ist oft raffiniert.Um nicht entdeckt zu werden, hält Mallory sich zurück und ändert die Vertriebskontakte nur leicht.Er möchte nicht, dass seine Änderungen bemerkt werden können.

Schlussfolgerung

Die Entdeckung eines Man-in-the-middle erfordert Zeit, Geduld und große Sorgfalt.In diesem Beispiel geht es um eine Verzögerung von 200 Millisekunden.Ein Fünftel einer Sekunde genügt, um die gesamte Vertriebsabteilung zu kompromittieren.

Siehe auch

Konzepte

Kryptografische Dienste

Das Kryptografiemodell in .NET Framework

Kryptografische Dienste

Weitere Ressourcen

Kryptografische Aufgaben