Ettercap Konzepte

Aus xinux.net
Zur Navigation springen Zur Suche springen
================================================================
                              TECHNISCHES PAPIER
================================================================

DIE HOSTLISTE

Durch Senden einer ARP-ANFRAGE für jede IP im LAN (unter Berücksichtigung der aktuellen IP und Netzmaske) ist es möglich, die ARP-ANTWORTEN zu erhalten und dann die Liste der Hosts zu erstellen, die im LAN antworten. Mit dieser Methode antworten sogar Windows-Hosts auf den Aufruf zur Antwort (sie antworten nicht auf Broadcast-Pings). Seien Sie sehr vorsichtig, wenn die Netzmaske eine Klasse B (255.255.0.0) ist, da ettercap 255 * 255 = 65025 ARP-Anfragen senden wird (die standardmäßige Verzögerung zwischen zwei Anfragen beträgt 1 Millisekunde und kann in der etter.conf konfiguriert werden).

VEREINHEITLICHES SNIFFING

Ettercap NG verwendet die Methode des vereinheitlichten Sniffings, die die Grundlage für alle Angriffe bildet. Die Weiterleitung von IP-Paketen im Kernel ist immer deaktiviert, und diese Aufgabe wird von ettercap selbst erledigt. Pakete, die weitergeleitet werden müssen, sind Pakete mit einer Ziel-MAC-Adresse, die der des Angreifers entspricht, aber mit einer anderen IP-Adresse. Diese Pakete werden zurück an das Drahtnetz gesendet, zum eigentlichen Ziel. Auf diese Weise können Sie gleichzeitig verschiedene Man-in-the-Middle-Angriffe durchführen. Sie können sogar externe Angreifer/Vergifter verwenden, sie müssen nur Pakete an den Host von ettercap umleiten, und das Spiel ist vorbei ;) =BRIDGE-SNIFFING

Verwendet zwei Netzwerk-Schnittstellen und leitet den Datenverkehr zwischen ihnen weiter, während er Sniffing und Inhaltsfilterung durchführt. Diese Sniffing-Methode ist sehr unauffällig, da es keine Möglichkeit gibt, festzustellen, dass sich jemand in der Mitte befindet. Sie können dies als Angriff auf Layer 1 betrachten. Verwenden Sie es nicht auf Gateways, da es Ihr Gateway in eine Brücke verwandeln wird.

HINWEIS: Sie können den Inhaltsfilter-Engine verwenden, um Pakete zu verwerfen, die nicht passieren sollen. Auf diese Weise fungiert ettercap als Inline-IPS ;)

ARP-POISONING-ANGRIFF

Wenn Sie diese Methode auswählen, wird ettercap den ARP-Cache der beiden Hosts vergiften und sich selbst als den anderen Host identifizieren (siehe den nächsten Abschnitt dafür). Sobald die ARP-Caches vergiftet sind, starten die beiden Hosts die Verbindung, aber ihre Pakete werden an uns gesendet, und wir werden sie aufzeichnen und dann an die richtige Seite der Verbindung weiterleiten. Daher ist die Verbindung für die Opfer transparent, ohne dass sie geschnüffelt werden. Die einzige Methode, um herauszufinden, dass sich ein Man-in-the-Middle in Ihrer Verbindung befindet, besteht darin, den ARP-Cache zu überwachen und zu überprüfen, ob es zwei Hosts mit derselben MAC-Adresse gibt! So erfahren wir, ob andere den ARP-Cache in unserem LAN vergiften und sind gewarnt, dass unser Datenverkehr überwacht wird! =)

    HOST 1  - - - - - - - - - - - - - - - - - - - -> HOST 2
  (vergiftet)                                     (vergiftet)
      |                                               ^
      |                                               |
       ------------> ANGRIFFSHOST  ------------------
                     (ettercap)

Legende:

            - - - ->   die logische Verbindung
            ------->   die tatsächliche Verbindung

Das ARP-Protokoll hat eine inhärente Unsicherheit. Um den Datenverkehr im Kabel zu reduzieren, fügt es einen Eintrag in den ARP-Cache ein, auch wenn er nicht angefordert wurde. Mit anderen Worten, JEDE ARP-Antwort, die auf dem Draht übertragen wird, wird in die ARP-Tabelle eingefügt. Daher machen wir uns diese "Funktion" zunutze und senden gefälschte ARP-Antworten an die beiden Hosts, die wir ausspionieren möchten. In dieser Antwort teilen wir mit, dass die MAC-Adresse des zweiten Hosts auf unserer Ethernet-Karte fest codiert ist. Dieser Host wird nun Pakete senden, die eigentlich zum ersten Host gehen sollten, an uns, weil er unsere MAC-Adresse trägt. Dasselbe Verfahren wird für den ersten Host in umgekehrter Weise durchgeführt, so dass wir eine perfekte Man-in-the-Middle-Verbindung zwischen den beiden Hosts haben, die ihre Pakete legal an uns senden. Beispiel: HOST 1: mac: 01:01:01:01:01:01 ATTACKER HOST: mac: 03:03:03:03:03:03 ip: 192.168.0.3 ip: 192.168.0.1 HOST 2: mac: 02:02:02:02:02:02 ip: 192.168.0.2

Wir senden ARP-Antworten an: HOST 1, wobei wir sagen, dass 192.168.0.2 auf 03:03:03:03:03:03 ist HOST 2, wobei wir sagen, dass 192.168.0.1 auf 03:03:03:03:03:03 ist Jetzt sind sie vergiftet!! Sie werden ihre Pakete an uns senden! Dann, wenn wir Pakete von HOST 1 empfangen, leiten wir sie an 02:02:02:02:02:02 weiter, und wenn wir Pakete von HOST 2 empfangen, leiten wir sie an 01:01:01:01:01:01 weiter. Einfach, oder?

      • LINUX KERNEL 2.4.x PROBLEM *** In der neuesten Version des Linux-Kernels finden wir in: /usr/src/linux/net/ipv4/arp.c

/* Unverlangte ARP wird standardmäßig nicht akzeptiert. Es ist möglich, dass diese Option für einige Geräte aktiviert werden sollte (strip ist ein Kandidat). */

Diese Kernel verwenden ein spezielles Nachbarsystem, um unverlangte ARP-Antworten (die ettercap an das Opfer sendet) zu verhindern. Ist ettercap mit diesem Kernel unbrauchbar? Die Antwort ist NEIN! Schauen wir uns das an... Im selben Quellcode finden wir:

/*

*  Prozesseintrag. Die Idee hierbei ist, dass wir eine Antwort senden wollen, wenn es sich um eine Anfrage für uns handelt oder wenn es sich um eine Anfrage für jemand anderen handelt, für den wir ein Proxy sind. Wir wollen einen Eintrag in unserem Cache hinzufügen, wenn es sich um eine Antwort an uns handelt oder wenn es sich um eine Anfrage für unsere Adresse handelt. (Die Annahme für diese letzte ist, dass jemand, der unsere Adresse anfordert, wahrscheinlich mit uns sprechen möchte, daher spart es Zeit, wenn wir ihre Adresse im Cache speichern. Ihre Adresse ist wahrscheinlich auch nicht in unserem Cache, da unsere nicht in ihrem Cache ist.) Mit anderen Worten, wir kümmern uns nur um Antworten, wenn sie an uns gerichtet sind, in diesem Fall fügen wir sie dem Cache hinzu. Für Anfragen interessieren wir uns sowohl für solche an uns als auch für solche an unsere Proxies. Wir antworten beiden, und im Fall von Anfragen an uns fügen wir den Anforderer dem ARP-Cache hinzu.
*/

Wenn der Kernel also eine ANFRAGE erhält, wird er den Host cachen... Was bedeutet das? Wenn ettercap anstelle von ANTWORTEN gefälschte ANFRAGEN sendet, wird der Kernel sie cachen? Die Antwort ist JA! Ettercap 0.6.0 und spätere Versionen haben diese neue Methode ARP-ANFRAGE-VERGIFTUNG. Sie wird zwischen Anfragen und Antworten wechseln, da andere Betriebssysteme diese "Funktion" nicht haben...

      • SOLARIS-PROBLEM *** Solaris wird keine Antwort cachen, wenn sie nicht bereits im Cache vorhanden ist. Der Trick ist einfach: Bevor ettercap vergiftet, sendet es eine gefälschte ICMP ECHO-ANFRAGE an den Host. Dieser muss darauf antworten und einen ARP-Eintrag für den gefälschten Host erstellen. Dann können wir wie gewohnt vergiften, der Eintrag befindet sich jetzt im Cache...

ICMP-UMLEITUNG

Dieser Angriff implementiert ICMP-Umleitung. Er sendet eine gefälschte ICMP-Umleitungsnachricht an die Hosts im LAN und gibt vor, die beste Route zum Internet zu sein. Alle Verbindungen zum Internet werden zum Angreifer umgeleitet, der sie wiederum an das eigentliche Gateway weiterleitet. Der resultierende Angriff ist ein HALB-DUPLEX-Mitm. Nur der Client wird umgeleitet, da das Gateway keine Umleitungsanforderungen für ein direkt verbundenes Netzwerk akzeptiert.

DHCP-VERGIFTUNG

Dieser Angriff implementiert DHCP-Verfälschung. Er gibt vor, ein DHCP-Server zu sein, und versucht, das Rennen mit dem echten Server zu gewinnen, um den Client dazu zu zwingen, Antworten von ihm zu akzeptieren. Auf diese Weise kann der Angreifer den GW-Parameter manipulieren und den gesamten ausgehenden Verkehr, der von den Clients generiert wird, übernehmen. Der resultierende Angriff ist ein HALB-DUPLEX-Mitm.

PORT-STEHLEN

Diese Technik ist nützlich, um in einer geschalteten Umgebung zu sniffen, wenn ARP-Vergiftung nicht wirksam ist (zum Beispiel, wenn statische ARP-Zuordnungen verwendet werden). Sie überschwemmt das LAN mit ARP-Paketen. Die Ziel-MAC-Adresse jedes "stehlenden" Pakets ist die gleiche wie die des Angreifers (andere Netzwerkschnittstellen sehen diese Pakete nicht), die Quell-MAC-Adresse wird eine der MAC-Adressen der Opfer sein. Dieser Vorgang "stiehlt" den Switch-Port jedes Opfers. Mit niedrigen Verzögerungen werden Pakete, die für "gestohlene" MAC-Adressen bestimmt sind, vom Angreifer empfangen und gewinnen das Rennen mit dem tatsächlichen Portinhaber. Wenn der Angreifer Pakete für "gestohlene" Hosts empfängt, stoppt er den Überschwemmungsprozess und führt eine ARP-Anfrage für das tatsächliche Ziel des Pakets durch. Sobald er die ARP-Antwort erhält, ist sicher, dass das Opfer seinen Port "zurückgenommen" hat, sodass ettercap das Paket an das Ziel weiterleiten kann, wie es ist. Jetzt können wir den Überschwemmungsprozess neu starten und auf neue Pakete warten.

ZEICHENINJEKTION

Wir haben gesagt, dass die Pakete für uns sind... Und die Pakete werden vom Ziel nicht empfangen, bis wir sie weiterleiten. Aber was passiert, wenn wir sie ändern? Ja, sie erreichen das Ziel mit unseren Änderungen. Wir können den Inhalt dieser Pakete ändern, hinzufügen, löschen, indem wir einfach die Prüfsumme neu berechnen und sie in den Datenverkehr einfügen. Aber wir können noch mehr tun: Wir können Pakete in die Verbindung einfügen. Wir fälschen unsere Pakete mit der richtigen Sequenz- und Bestätigungsnummer und senden sie an den gewünschten Host. Wenn die nächsten Pakete durch uns gehen, subtrahieren oder addieren wir einfach die Sequenznummer um die Menge der eingespritzten Daten, solange die Verbindung aktiv ist. Dies verhindert, dass die Verbindung abgelehnt wird (bis wir ettercap schließen, der die Sequenznummern nach dem Programmende korrekt hält, danach muss die Verbindung zurückgesetzt werden, da sonst zukünftiger Verkehr abgelehnt wird und das Quell-Workstation-Netzwerk blockiert wird).

HINWEIS: Der Injector unterstützt Escape-Sequenzen. Sie können mehrzeilige Injektionen erstellen, z.B.: "dies in Zeile eins \n dies in Zeile zwei \n und so weiter..." z.B.: "dies im Hex-Modus: \x65\x6c\x6c\x65" z.B.: "dies im Okt-Modus: \101\108\108\101"

HINWEIS: Vergessen Sie nicht, Ihre Injektion mit \r\n zu beenden, wenn Sie Befehle an den Server senden möchten.

SSH1-MITM

Wenn die Verbindung beginnt (denken Sie daran, dass wir der Herr der Pakete sind, alle Pakete gehen durch ettercap), ersetzen wir den öffentlichen Schlüssel des Servers durch einen dynamisch generierten und speichern ihn in einer Liste, damit wir uns daran erinnern können, dass dieser Server zuvor vergiftet wurde. Dann sendet der Client das Paket mit dem Sitzungsschlüssel, der mit unserem Schlüssel verschlüsselt ist, sodass wir ihn entschlüsseln und den echten 3DES-Sitzungsschlüssel abhören können. Jetzt verschlüsseln wir das Paket mit dem richtigen öffentlichen Schlüssel des Servers und leiten es an den SSH-Daemon weiter. Die Verbindung wird normal hergestellt, aber wir haben den Sitzungsschlüssel! Jetzt können wir den gesamten Datenverkehr entschlüsseln und zuschauen! Die Verbindung bleibt aktiv, auch wenn wir ettercap verlassen, weil ettercap sie nicht proxyt (wie dsniff). Nach dem Austausch der Schlüssel ist ettercap nur ein Zuschauer... ;)

PAKETFILTERUNG

Wie bei der Zeicheninjektion können wir den Payload der Pakete ändern und bei Bedarf die richtige Sequenz- und Bestätigungsnummer ersetzen. Mit der integrierten Filterengine können Sie Ihre eigenen Filter programmieren, um den besten Filter für Ihre Ziele zu erstellen. Eine Skriptsprache wird verwendet, um Filterquellen zu erstellen, die mit etterfilter(8) kompiliert werden müssen, um von ettercap verwendet zu werden.

PASSIVES SCANNEN DES LAN

Diese Funktion ist sehr nützlich, wenn Sie die Topologie des LANs kennen möchten, aber keine Pakete darauf senden möchten. Auf diese Weise erfolgt die Untersuchung ausschließlich durch das Sniffen von Paketen und das Extrahieren nützlicher Informationen aus ihnen. Diese Untersuchung zeigt Ihnen die Hosts im LAN (sie überwacht ARP-Anfragen), das Betriebssystem der Hosts (sie verwendet passive OS-Fingerabdrücke... siehe nächsten Abschnitt), die offenen Ports eines Hosts (anhand des SYN+ACK-Pakets), das Gateway, die Router oder Hosts, die als Router fungieren (sie überwacht ICMP-Nachrichten). Als passive Methode ist sie auf einem geschalteten LAN nutzlos (weil sie nur die Hosts erfassen kann, die sich mit Ihnen verbinden), aber wenn Sie sie auf einem Gateway platzieren und sie stunden- oder tagelang laufen lassen, wird sie einen vollständigen Bericht über die Hosts im LAN erstellen.

PASSIVE OS-FINGERABDRUCKERKENNUNG

Die Hauptidee besteht darin, die passiven Informationen zu analysieren, die von einem Host stammen, wenn er Verbindungen mit anderen Hosts herstellt oder empfängt. Diese Informationen reichen aus, um das Betriebssystem und die ausgeführten Dienste des Hosts zu erkennen. In diesem Szenario betrachten wir SYN- und SYN+ACK-Pakete und sammeln einige interessante Informationen aus ihnen: Fenstergröße: das TCP-Header-Feld MSS: die TCP-Option Maximale Segmentgröße (kann vorhanden sein oder nicht) TTL: das IP-Header-Feld Time To Live (gerundet auf die nächste Zweierpotenz) Fensterskalierung: die TCP-Option zur Skalierung SACK: die TCP-Option für Selective ACK NOP: wenn die TCP-Optionen ein NOP enthalten DF: das IP-Header-Feld Don't Fragment TIMESTAMP: wenn die TCP-Zeitstempeloption aktiviert ist und natürlich der Typ des Pakets (SYN oder SYN+ACK)

Die Datenbank enthält verschiedene Fingerabdrücke für jeden Pakettyp, da einige Betriebssysteme unterschiedliche Fingerabdrücke von SYN bis SYN+ACK haben. Natürlich ist der SYN-Fingerabdruck zuverlässiger, da der SYN+ACK durch den SYN beeinflusst wird (wenn ein SYN keine SACK enthält, wird das SYN+ACK keine SACK-Option haben, selbst wenn der Host diese unterstützt). Während der Sammlung von Informationen aus dem LAN markieren wir, wenn wir ein SYN+ACK erhalten, das OS dieses Hosts vorübergehend, und wenn wir ein SYN erhalten, bestätigen wir es. Fingerabdrücke, die mit ":A" enden, sind weniger zuverlässig... das liegt daran, dass sich die Identifikation einiger Betriebssysteme während des Sammelprozesses ändern kann.

Die SYN+ACK-Pakete werden auch verwendet, um die offenen Ports eines Hosts zu entdecken. (siehe nächsten Abschnitt)

Das Interessante daran ist, dass Firewalls, Gateways und NAT für die passive OS-Erkennung transparent sind. Daher ermöglicht das Sammeln von Informationen für das LAN Ihnen Informationen selbst für entfernte Hosts. Nur Proxys sind nicht transparent, weil sie eine neue Verbindung zum Ziel herstellen.

Unsere Fingerabdruckdatenbank muss erweitert werden. Wenn Sie einen Host mit einem unbekannten Fingerabdruck finden und das Betriebssystem dieses Hosts sicher kennen, senden Sie uns bitte den Fingerabdruck und das Betriebssystem an <alor@users.sourceforge.net>, und wir werden ihn in die Datenbank aufnehmen.

OFFENE PORTS

Offene Ports werden identifiziert, indem nach SYN+ACK-Paketen gesucht wird. Wenn ein SYN+ACK von einem Port kommt, ist er sicher offen, außer für den Kanalbefehl des FTP-Protokolls, aus diesem Grund werden SYN+ACKs, die an Port 20 gehen, nicht verwendet, um einen offenen Port anzuzeigen. Für die UDP-Ports ist die Frage etwas schwieriger, da im UDP-Protokoll keine SYN- oder ACK-Pakete vorhanden sind. Daher geht ettercap davon aus, dass ein UDP-Port < 1024, der Pakete sendet, geöffnet ist. Wir wissen, dass wir auf diese Weise offene Ports > 1024 nicht entdecken können, aber sie können als geöffnet übersehen werden, wenn ein Client Pakete an einen Server sendet.

GATEWAY UND ROUTER

Das Gateway wird einfach erkannt, indem nach IP-Paketen mit einer nicht lokalen IP (überprüfen Sie die Netzmaske) gesucht wird. Wenn eine nicht lokale IP gefunden wird, schaut ettercap auf die Ethernet-Adresse (MAC) und speichert sie als die MAC-Adresse des Gateways. Dann wird nach ihr in der Liste gesucht und die entsprechende IP als Gateway markiert. Wenn wir uns die ICMP-Nachrichten ansehen, können wir davon ausgehen, dass ein Host TTL-überschrittene oder Umleitungs-Nachrichten sendet, es sich also um einen Router oder einen Host handelt, der als solcher fungiert.

Quelle