
Opensvp ist ein Sicherheitstool, das „Angriffe“ implementiert, um die Widerstandsfähigkeit von Firewalls gegen Angriffe auf Protokollebene zu testen.
Opensvp ist ein Sicherheitswerkzeug, das „Angriffe“ implementiert, um die Widerstandsfähigkeit von Firewalls gegen Angriffe auf Protokollebene zu testen. Es implementiert klassische Angriffe sowie einige neue Arten von Angriffen gegen Application-Layer-Gateways (in der Netfilter-Welt als Helper bezeichnet).
Beispielsweise kann opensvp unter bestimmten Bedingungen (siehe Erklärung unten für Details) ein Pin-Hole in einer Firewall öffnen, die einen FTP-Server schützt: Selbst wenn die Filterrichtlinie garantiert, dass nur Port 21 zum Server geöffnet ist, kann man mit opensvp einen „beliebigen“ Port auf dem Server öffnen.
Nehmen wir an, 192.168.2.3 sei ein Server, der FTP ausführt und hinter einer Firewall steht. Wenn der Benutzer als Root ausführt::
opensvp --attacker -t 192.168.2.3 --helper ftp --port 23 -v -i eth0
Dann hat er vorübergehend Zugriff auf Port 23 des Servers, unabhängig von den Firewall-Regeln.
Das Dokument „Secure use of iptables and connection tracking helpers“ https://home.regit.org/netfilter-en/secure-use-of-helpers/ beschreibt die Schutzmethode gegen diese Art von Angriff.
Siehe das folgende Kapitel für eine genaue Beschreibung des implementierten Angriffs.
Befindet sich der Angreifer in einem Netzwerk, das über die Schnittstelle eth0 direkt mit der Firewall verbunden ist, kann er den folgenden Befehl ausführen::
opensvp --attacker -t 192.168.2.3 --helper ftp --port 23 -v -i eth0
192.168.2.3 ist die Adresse des FTP-Servers und 23 der Port, den wir auf dem Server öffnen möchten.
Nach einem erfolgreichen Angriff ist es dann möglich, sich über Port 23 mit 192.168.2.3 zu verbinden.
Es ist möglich, dass ein Client eine gefälschte Befehlsnachricht sendet, die von den Firewalls als mögliche dynamische Verbindungsöffnung interpretiert wird.
Es ist möglich, einen Standard-Server zu verwenden, um den Angriff zu senden, aber mit einem eigenen Server erfährt man die Transformation, die ein mögliches NAT-Gateway vornimmt.
Eine typische Sitzung sieht wie folgt aus. Auf dem Server mit der IP-Adresse 1.2.3.4 kann man ausführen::
$ opensvp --server --helper irc -v
Auf dem Client kann man dann ausführen::
$ opensvp --client -t 1.2.3.4 --helper irc --port 23 -v 2.3.4.5:23 should be opened from outside
Auf dem Server wird die folgende Meldung angezeigt::
You should be able to connect to 2.3.4.5:23
Hierbei ist 2.3.4.5 die öffentliche Adresse des Clients.
Auf dem Angreifer muss man opensvp starten und angeben, welche Netfilter-Queue verwendet wird und welche Ausgabeschnittstelle genutzt wird::
Danach muss man iptables verwenden, um den Datenverkehr, den man vor dem Protokoll-Erkennungsmechanismus verbergen möchte, in den Userspace umzuleiten::
iptables -I INPUT -p tcp --sport 443 -j NFQUEUE iptables -I OUTPUT -p tcp --dport 443 -j NFQUEUE
Wenn Sie fertig sind, drücken Sie STRG+C, um den Angriffsprozess zu unterbrechen.
Einige Netzwerkprotokolle verwenden mehrere Verbindungen für den Austausch zwischen Client und Server. Das bekannteste Beispiel ist FTP, bei dem Befehle über eine Verbindung auf Port 21 laufen und der Datenaustausch in zwei verschiedenen Modi erfolgt (Verbindung von Port 20 oder dynamische Verbindung).
Einige Firewall-Implementierungen setzen Application-Layer-Gateways (ALG) ein, um diese parallelen Verbindungen zu erkennen und dynamisch zu autorisieren. Andere Lösungen bestehen darin, Anwendungs-Relays (transparenter Proxy) zu verwenden oder alle möglichen Datenströme zu öffnen (also fast alles durchzulassen).
Das ALG analysiert den Datenverkehr, erkennt und parst die zwischen den Kommunikationspartnern gesendeten Befehle, um die Parameter der parallelen Verbindungen festzulegen. Anschließend öffnen sie temporäre Pin-Holes in der Firewall, um den wahrscheinlichen Datenverkehr durchzulassen.
Die Idee dieses Angriffs ist es, diese Art von Nachrichten zu fälschen, um Pin-Holes in der Firewall zu öffnen, die eigentlich nicht hätten geöffnet werden dürfen.
Bedingungen:
Der Ablauf ist der folgende:
Ein Sniffer im Netzwerk des Angreifers erfasst ein Paket aus dem Protokollfluss
Das gefälschte Paket wird auf der mit der Firewall verbundenen Schnittstelle gesendet
Die Firewall übermittelt das Paket zurück an den Client und erwartet nun ein Paket mit Merkmalen, die auf der Eingabe des Angreifers basieren.
Dieser Angriff ist eine direkte Anwendung des beschriebenen Prinzips. Sobald ein Datenpaket empfangen wird, sendet der Angreifer einen gefälschten DCC-Befehl.
Bei diesem Angriff wird die Client-Verbindung vom Angreifer geöffnet. Er verbindet sich mit dem FTP-Server hinter einer Firewall und initiiert eine echte Verbindung. Sobald die Sitzung aufgebaut ist, startet er den Angriff, indem er einen gefälschten 227-Befehl sendet.
Wenn IPv6 verwendet wird, wird derselbe Angriff mit einem gefälschten 229-Befehl durchgeführt.
Mögliche Ziele
Die Haupteinschränkung dieser Angriffe besteht darin, dass sich der Angreifer in einem Netzwerk befinden muss, das direkt mit der Firewall verbunden ist.
Die Hauptmöglichkeiten sind also:
* Angriff aus einem Benutzer-LAN
* Angriff in einer Hosting-Umgebung
Beide Fälle können zu einer schwerwiegenden Offenlegung von Informationen führen, da der Angreifer Zugriff auf ungeschützte Dienste erhält.
Linux
~~~~~
Es ist bekannt, dass dieser Angriff auf IPv4-Netfilter-Firewalls funktioniert, wenn rp_filter auf 0 gesetzt ist (was hoffentlich nicht der Standardwert ist).
Derzeit gibt es keine Reverse-Path-Filtering-Implementierung für IPv6; die Firewall ist daher nicht geschützt, und der Schutz muss in den Firewall-Regeln eingerichtet werden (siehe nächstes Kapitel).
Einige Firewall-Softwarelösungen sind bekanntermaßen verwundbar:
* fwbuilder: Es muss eine spezifische Richtlinie eingerichtet werden
* shorewall: Neuere Versionen beheben das Problem
* edenwall: verwundbar
Der Angriff funktioniert sowohl bei Gateway- als auch bei lokalen Firewalls. Bei einer lokalen Firewall muss die FORWARD-Filterung aktiviert und eine ESTABLISHED-ACCEPT-Regel in dieser Kette eingerichtet werden. Dies könnte bei Systemen der Fall sein, die virtuelle Maschinen ausführen.
Verteidigung gegen den Angriff
==========================
Linux
-----
Siehe das folgende Dokument, das diesem Thema gewidmet ist: https://home.regit.org/netfilter-en/secure-use-of-helpers/
Andere Betriebssysteme und Geräte
--------------------
Die grundlegende Anforderung besteht darin, striktes Anti-Spoofing zu aktivieren und das Laden von ALG nach Möglichkeit zu kontrollieren.