PMG1617/Einführung/Tam

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
Ein '''"Man-in-the-Middle-Angriff"''' ''(MITM-Angriff)'' ist ein Lauschangriff, bei welchem der Angreifer ('''''"Dritter"''''') die vollständige Kontrolle über den Datenverkehr der Kommunikationspartner erlangt. Ein MITM-Angriff nutzt die Echtzeit-Bearbeitung von Transaktionen, Konversationen oder Übertragungen von anderen Daten. Man-in-the-Middle-Attacken erlauben Angreifern Daten abzufangen, zu senden und zu empfangen, die niemals für sie gedacht sind.
Dabei bemerken die Parteien den Angriff erst, nachdem es zu spät ist. Der '''''"Dritte"''''' steht entweder physisch oder logisch zwischen Netzwerkteilnehmern und gibt dabei vor der jeweilige Gegenüber zu sein.

Obwohl beide Kommunikationspartner ihre Daten verschlüsseln, kann der Angreifer sie entschlüsseln, und wie einen Proxy weiterleiten. Eine Voraussetzung dafür ist, dass er die Anfrage auf sich umleiten kann und die Kommunizierenden die Identität des jeweiligen nicht überprüfen.
Beispielsweise lassen sich durch '''"MITM-Angriffe"''' gesicherte SSL-Verbindungen zum Online-Banking belauschen.

==Beispiel==
[[Bild:Tammy_Mitm-flow_0.gif]]

Nehmen wir an, Alice möchte mit Bob kommunizieren. Währenddessen möchte Mallory die Konversation abfangen, um diese abzuhören und optional eine falsche Nachricht an Bob zu senden. 

Zuerst bittet Alice Bob um seinen ''Public Key''. Sobald Bob seinen ''Public Key'' an Alice schickt und Mallory in der Lage ist diesen abzufangen,  kann ihr '''MitM-Angriff''' beginnen. Mallory kreiert eine falsche Nachricht, welche von Bob kommen soll, stattdessen aber ihren ''Public Key'' beinhaltet. 

Alice, im  Glauben der ''Public Key'' sei von Bob, verschlüsselt ihre Nachricht und sendet diese an Bob zurück. Mallory fängt diese Nachricht erneut ab und entschlüsselt sie mit ihrem ''Public Key''. Sie verändert die Nachricht und verschlüsselt diese nun mit dem ''Public Key'' den Bob ursprünglich versendete. Als Bob die neu verschlüsselte Botschaft empfängt, glaubt er, dass sie von Alice kommt.

     1. Alice sendet eine Nachricht, welche von Mallory abgefangen wird:
                                  <font color=blue>'''Alice'''</font> ''"Hi Bob! Ich bin es Alice. Gib mir deinen Schlüssel."''  -> <font color=red>'''Mallory'''</font> - <font color=green>'''Bob'''</font> -
     2. Mallory vermittelt diese Botschaft an Bob. Bob kann nicht sagen,dass es nicht wirklich von Alice ist:
                                 -<font color=blue>'''Alice'''</font> -   <font color=red>'''Mallory'''</font> ''"Hi Bob! Ich bin es Alice. Gib mir deinen Schlüssel."''  -> <font color=green>'''Bob'''</font>
     3. Bob antwortet:  
                                - <font color=blue>'''Alice'''</font> -  <font color=red>'''Mallory'''</font> <- ('''''Bobs Key''''') <font color=green>'''Bob'''</font>
     4. Mallory ersetzt Bobs Schlüssel mit ihren eigenen und leitet dies an Alice weiter und behauptet, dass es Bobs Schlüssel ist:
                                  <font color=blue>'''Alice'''</font> <- ('''''Mallorys Key''''')  <font color=red>'''Mallory'''</font> - <font color=green>'''Bob'''</font>
     5. Alice verschlüsselt die Botschaft nun mit Mallorys Schlüssel, obwohl sie glaubt es sei Bobs
                                  <font color=blue>'''Alice'''</font> ''" Treff mich am Café "''(''verschlüsselt mit Mallorys Key'') -> <font color=red>'''Mallory'''</font> - <font color=green>'''Bob'''</font> - 
     6. Da es aber nun tatsächlich mit Mallorys Key verschlüsselt wurde, kann sie die Nachricht lesen und (nach Wunsch) verändern und sie dann mit
        Bobs Schlüssel neu weiterleiten.
                                - <font color=blue>'''Alice'''</font>-    <font color=red>'''Mallory'''</font> ''"Treff mich am Wagen neben dem Park"'' (''verschlüsselt mit Bobs Key'') -> <font color=green>'''Bob'''</font>
     7. Bob glaubt, dass die Nachricht sicher von Alice kam
     8. Bob geht zum Treffpunkt und wird von Mallory ausgeraubt.

Dies zeigt, dass es notwendig für Alice und Bob ist, vorerst sicherzustellen, dass sie den individuellen Private Key nutzen, anstatt eines Public Key. Andernfalls sind solche Angriffe gegen jede mit Public-Key- oder Private-Key-Technologie gesendete Nachricht möglich.  Eine Vielzahl von Techniken können helfen, sich gegen Angriffe zu verteidigen.

==Gegenmaßnahmen==

===Sicherung vor Mitlesen===
Am sichersten gegen die Angriffe ist die Verschlüsselung der Datenpakete, der Schlüssel muss hierbei über ein sicheres Medium verifiziert werden. Das heißt beide Seiten müssen sich authentifizieren. Dies gelingt indem sie auf anderem Wege ihre [http://programmingwiki.de/PMG1617/Einf%C3%BChrung/Fee digitalen Zertifikate] oder gemeinsamen Schlüssel austauschen. Denn sonst bekommt der Angreifer wieder die Gelegenheit die Opfer zu täuschen. 
*Einzelne Protokolle, die bei der Verschlüsselung genutzt werden:
**[https://de.wikipedia.org/wiki/Secure_Shell SSH]
**[http://programmingwiki.de/PMG1617/Einf%C3%BChrung/Paul TLS]

===Sicherung vor Manipulation===
Es gibt auch andere Techniken, sie helfen zwar nicht vor dem Mitlesen eines Angreifers, jedoch machen sie Veränderungen der Daten sichtbar oder verhindern sogar den Angriff.
*Dazu zählen:
**[https://en.wikipedia.org/wiki/System_Integrity_Protection Integrity Protection]
**[http://programmingwiki.de/PMG1617/Einf%C3%BChrung/Milad ARP Spoofing]

==Quellen==

Man-in-the-Middle Attack (Englisch) - Wikipedia[https://en.wikipedia.org/wiki/Man-in-the-middle_attack]

Man-in-the-Middle Angriff (Deutsch) - Wikipedia[https://de.wikipedia.org/wiki/Man-in-the-Middle-Angriff]

Man-in-the-Middle Attack - Veracode[http://www.veracode.com/security/man-middle-attack]

Man-in-the-Middle Angriff - heise online[https://www.heise.de/glossar/entry/Man-in-the-Middle-Angriff-399039.html]