Category Archives: TCP/IP

OS Command Injection am Beispiel Inter-Tech RPD-150

(Inter-Tech RPD-150 - Quelle: Inter-Tech Bilderpaket)

( RPD-150 )

Im Bereich eingebetteter Systeme ticken die Uhren langsamer, als im Desktop- und Server-Bereich. Hier lassen sich noch leicht klassische Schwachstellen wie Directory Traversal oder OS Command Injection finden. Letztere Variante findet sich auch im WLAN-Router RPD-150 der Firma PC-Professional, der durch Inter-Tech vertrieben wird. Das Gerät wird für circa 11 Euro angeboten und wird mit überragender Sicherheit beworben.

Bildschirmfoto - 17.04.2014 - 00:09:20

RPD-150: Mit überragender Sicherheit.

OS Command Injection Angriffe (nach OWASP) bezwecken es, Befehle die durch den Angreifer festgelegt werden, in eine anfällige Anwendung einzuschleusen. Dabei verhält sich die verwundbare Anwendung wie eine Pseudo-Shell, die es erlaubt, mit den Rechten und in der Umgebung in der sie ausgeführt wird, Befehle auf dem System auszuführen.

Erste Stelle, die oft für Command Injection Angriffe besonders interessant ist, ist die Ausführung von Diagnosebefehlen in der administrativen Oberfläche eines Routers. Hier werden teilweise Eingaben ungefiltert an die entsprechenden Systembefehle wie ping oder traceroute weitergegeben. So auch beim RPD-150. Das folgende Bildschirmfoto zeigt, wie mit Hilfe der PING Funktion und Einbettung von Shellbefehlen ein Telnet-Server gestartet werden kann.

command_injection

Ein kurzer Test bestätigt den Start des Telnet-Servers, wie auf folgendem Bildschirmfoto zu sehen.

Bildschirmfoto - 20.04.2014 - 14:06:47

Ein laufender Telnet-Server ist aber nicht gleichbedeutung mit vollem Superuser-Zugriff auf den Router. Dafür muss ein Kennwort gebrochen werden. Da das Webinterface mit Root-Rechten ausgeführt wird (eine Eingabe von 127.0.0.1; echo $USER bestätigt das), ist die Gewinnung der Datei /etc/passwd kein Problem.

Sie enthält bei eingebetteten Systemen nicht nur die bekannten Informationen zu Benutzernamen und User-IDs, sondern darüber hinaus auch das gehashte Kennwort. Auf Desktop-Systemen wird es sonst in der Datei /etc/shadow/ gespeichert. Durch Ausnutzung der Schwachstelle mit dem Befehl 127.0.0.1; cat /etc/passwd kann der Inhalt der Datei gewonnen werden: root:C75rzlQ3E2Dkc:0:0:root:/:/bin/sh.

Das Kennwort des Superusers kann darauf folgend mit John the Ripper in kurzer Zeit gebrochen werden. Es lautet admin.

Mit dem Kennwort kann jetzt eine Verbindung als Superuser zum vorher gestarteten Telnet-Server hergestellt werden, wie das folgende Bildschirmfoto zeigt.

Bildschirmfoto - 17.04.2014 - 00:10:06

Die Schwachstelle ist natürlich nur geringfügig, da eine Anmeldung im Webinterface erforderlich ist.

Besonderer Dank an Inter-Tech, die sehr schnell reagierten und der Veröffentlichung des Artikels zugestimmt haben. Quelle des Produktfotos: Inter-Tech RPD-150 Bilderpaket.

WPA2 Enterprise mit FreeRADIUS und DD-Wrt in 5 Minuten

freeradius
Wenn WPA2-PSK mit einem einzigen Kennwort nicht mehr für die WLAN-Sicherheit genügt, bietet sich der Einsatz von WPA2 Enterprise, also der Authentifikation mittels EAP und TLS an. Wie das auch im Heimnetzwerk mit einem DD-Wrt Router und einem RADIUS-Server geht, erklärt der folgende Artikel.

Installation

Zuerst wird FreeRADIUS-Server installiert. Dabei wird automatisch ein selbst-signiertes Zertifikat erzeugt, dass den Hostnamen des Servers enthält.

apt-get install freeradius 

Wird der RADIUS-Server auf der Firewall installiert, muss er an die interne Netzwerkschnittstelle gebunden werden. Aber auch wenn das nicht der Fall ist, lohnt sich diese Sicherungsmaßnahme. Dafür werden in der Datei /etc/freeradius/radiusd.conf die zwei mit listen { beginnenden Blöcke bearbeitet und die beiden folgenden Konfigurationsanweisungen einkommentiert und mit den entsprechenden Werten gefüllt.

ipaddr = IPv4Intern
interface = ethIntern

Die Angabe zur IP-Adresse befindet sich für den auth Block um Zeile 273, für den acct Block um Zeile 316. Die Angabe zur Netzwerkschnittstelle befindet sich um Zeile 293 und Zeile 320.

Benutzernamenfilter

Folgend wird in der Datei /etc/freeradius/sites-enabled/default ein Sicherheitsfilter für Benutzernamen aktiviert, der dazu führt, dass Benutzernamen die mit Leerzeichen beginnen oder nicht von FreeRADIUS unterstützte Zeichenketten enthalten, nicht an den Authentifikationsmechanismus weitergegeben werden.

Um Zeile 79 Policy-Statement filter_username einkommentieren.

Client einrichten

Im nächsten Schritt wird die Zugriffsberechtigung und Authentifikation für den DD-Wrt Router eingerichtet. Der DD-Wrt Router wird als Client eingerichtet. Ein Client besteht aus einer Quell-IP, einem Gerätetyp und einem gemeinsamen secret. Bevor dies geschieht, sollte in der Datei /etc/freeradius/clients.conf um Zeile 101 das Kennwort für den lokalen Testzugriff auf den RADIUS-Server von testing123 auf einen geheimen Wert abgeändert werden.

Ist dies geschehen, kann die Konfiguration für den DD-Wrt Router an das Ende der Datei angefügt werden. Die IP-Adresse des DD-Wrt Routers ist in der Weboberfläche im Menü Status - LAN ablesbar. Das Format lautet wie folgt:

client dd-wrt {
        ipaddr = 192.168.XXX.XXX
        netmask = 32
        secret = meinGeheimesKennwort
        require_message_authenticator = no
        nastype     = other
}

Benutzer hinzufügen

Jetzt können die Benutzer an das Ende der Datei /etc/freeradius/users hinzugefügt werden. Das Format lautet wie folgt.

# Lokale User
user1    Password = "meinGeheimesKennwort"

DD-Wrt konfigurieren

Nach Neustart des FreeRADIUS-Servers mit dem Befehl /etc/init.d/freeradius restart kann der DD-Wrt Router konfiguriert werden. Im Menü WLAN – WLAN-Sicherheit kann der Radius gemeinsam mit dem secret eingetragen werden.
Bildschirmfoto - 13.03.2014 - 17:06:04

Proxyserver über SSH-Tunnel mit MyEnTunnel verwenden

Wer Zugriff auf einen anonymisierenden Proxyserver (Elite-Proxy) hat, kann diesen mit einem SSH-Tunnel zum Ziel-Netzwerk sicherer benutzen, als durch direkte Verwendung des Proxys. Diese Zugangsart eignet sich zum Beispiel um auf die Proxyserver von Perfect-Privacy oder OVPN.to zuzugreifen. Aber auch an meiner Universität wird ein solcher Privatsphären Proxy betrieben. Um diesen sicher zu verwenden, bietet sich ein SSH-Tunnel an. Wie dieser unter Windows eingerichtet wird, erklärt der folgende Artikel.

Unter Windows eignet sich für die Herstellung des SSH-Tunnels besonders das Programm MyEnTunnel. MyEnTunnel ist eine einfache Systemtray-Anwendung, die mit Hilfe des mitgelieferten Programms PuTTY Link (plink.exe) einen SSH-Tunnel aufbaut und aufrecht erhält.

Bildschirmfoto - 08.03.2014 - 17:14:55

MyEnTunnel im Windows-Systemtray

Die Software kann über die Herstellerseite N2 (Download befindet sich auf der Mitte der Seite) bezogen werden. Es ist empfehlenswert, die Entwicklungsversion 3.6.1 herunterzuladen, da diese trotz dem Status sehr stabil läuft und bei komplexen Passwörtern keine Fehler hat.

Nach der Installation kann der Tunnel zum Fakultätsproxy eingerichtet werden. Der Tunnel wird in der aus ssh bekannten Notation (Lokaler-Port:Zielhostname/IP:Ziel-Port) eingegeben.

Bildschirmfoto - 08.03.2014 - 17:13:43

Eingabe der SSH-Tunnel Konfiguration

Im letzten Schritt, wird der Zielserver im Fakultätsnetzwerk eingegeben. Geeignet ist zwar jeder Server, der per SSH mit einem Fakultäts-Account erreichbar ist. Um den Maximaldurchsatz der eigenen Internetanbindung zu erreichen sollte aber einer der Compute-Server der IRB verwendet werden. Der Hostname ergibt sich, indem .cs.tu-dortmund.de an den Hostnamen angehängt wird.

Bildschirmfoto - 08.03.2014 - 17:12:43

Eingabe der SSH-Server Konfiguration

Die Konfiguration aus obiger Abbildung kann 1:1 übernommen werden. Sollen statt dem Surfen im Web regelmäßig große Daten übertragen werden, sollte die Kompression deaktiviert werden.

Proxmox VE 3.2 Beta-Version – Was gibts neues?

Wie im Forum angekündigt, ist Proxmox VE 3.2 als Beta-Version verfügbar. Was gibt es neues?

logo_prox

Neuer Kernel

Die größte Änderung besteht im Angebot des RHEL7 basierenden Kernels in Version 3.10, allerdings bisher nur mit Unterstützung von KVM-Virtualisierung und ohne OpenVZ. OpenVZ ist die in Proxmox eingesetzte Paravirtualisierungslösung. Ein Parallels-Entwickler (der Hersteller von OpenVZ) kündigt in seinem Blog die Portierung von OpenVZ für den RHEL7-Kernel an. Der neue Kernel wird darüber hinaus langfristig unterstützt werden. Zuständig für die Unterstützung ist die LTSI, oder kurz Greg Kroah-Hartman.

Die Proxmox-Entwickler haben dem Kernel für die Beta-Version einige Treiber für RAID- und Netzwerkkarten hinzugefügt.

Und natürlich enthält der neue Kernel auch deutliche Verbesserungen der Verschlüsselungs-Infrastruktur; falls der eigene Proxmox-Server verschlüsselt ist.

Neues Dateisystem

Eine weitere interessante Entwicklung ist die Einbindung von Ceph, einem verteilten Dateisystem. Die Vorteile für den Einsatz mit Proxmox finden sich hier.

Weiteres

featured-image

(Quelle: openvswitch.org)

Darüber hinaus bringt die Beta-Version von Proxmox VE 3.2 einen Ersatz für die auf Java basierende Web-Konsole: Spiceterm. Spiceterm wird seit August 2013 von Dietmar Maurer entwickelt. Die README-Datei des Entwicklungs-Repositories enthält weitere Informationen.

Auch Open vSwitch ist in der Beta enthalten, soweit ersichtlich ohne Änderungen gegenüber der Version in Debian wheezy. vSwitch könnte in Zukunft aufgrund des Funktionsumfangs und dem scheinbar besseren Maximaldurchsatz gegenüber den Linux bridge-utils interessant werden.

Danke an Tim R. für den Hinweis zur neuen Beta.

Hardware für Proxmox VE Virtualisierungsserver

Ein Server für mein privates Pentest-Labor zur Virtualisierung der Opfersysteme musste her. Auf Bitte eines Lesers folgt eine kurze Dokumentation der getroffenen Hardware- und Software-Entscheidungen.
fantec_front

Kurz vorweg:
Es ist erstaunlich, wie viel Rechenleistung für moderaten Geldeinsatz kaufbar ist.

Mit einer geschickten Kombination aus Desktop- und Server-Hardware ist es möglich, einen nicht für den produktiven sondern für den experimentellen Betrieb geeigneten Virtualisierungsserver zusammenzustellen, der sich nicht verstecken muss.

Da der Server in einem bewohnten Bereich betrieben wird, musste das Gehäuse mit Schalldämmung versehen werden. Schalldämmung ist bei Server-Gehäusen noch weniger üblich, als im Desktop-Bereich und erschwert die Hardwareauswahl.

Hardware

IMG_20140102_145901

  • Intel Xeon E3-1245 v3, 4x 3.40GHz, Sockel-1150, boxed (BX80646E31245V3)

Statt dem i7-4770, zum Zeitpunkt des Kaufs signifikanter Kostenvorteil. Verlust von 100Mhz Turbo. Vergleich beider CPUs hier.

Bietet Intel I217-LM Gigabit-LAN, vPro (statt IPMI bei einem Server-Mainboard) und kostet unter 100 Euro.

Passform sehr gut für 4HE Server-Gehäuse mit Schalldämmung und Montage mit Backplate (im Preissegment um 20 Euro nicht selbstverständlich).

  • Fantec NNC-4550X, 4HE (1489)

Sehr günstiges und stabiles 4HE Server-Gehäuse. Lässt sich Zwecks Schalldämmung komplett demontieren. Nachteil: Keine Rackschienen vom Hersteller.

Erfahrungsgemäß gut verarbeitbare Schalldämmmatten. Leider werden zwei Pakete benötigt.

Die Liste mit Tagespreisen ist hier abrufbar.

Zusammenbau

Der Zusammenbau gestaltet sich sehr einfach. Die Montageanleitung des CPU-Kühlers ist umfangreich.

Problematisch war die Anbringung der Schalldämmmatten. Das Fantec-Gehäuse erlaubt im Gegensatz zu einigen anderen günstigen Server-Gehäusen die Demontage des Mainboard-Trays, sodass auch unter dem Mainboard Bitumenpappe angebracht werden kann. Der Schnitt der Cooltek-Dämmmatten ermöglicht die Anbringung am kompletten Gehäusedeckel, den Seiten des Gehäuses und der Front ohne Zuschnitt.

IMG_20131230_185240

IMG_20131230_185311

IMG_20131230_190156

IMG_20131231_212829

IMG_20140101_210409

Wer viele kleine Schrauben nicht scheut, kann mit zwei Sätzen Cooltek Dämmmatten und dem Fantec NNC-4550X Gehäuse einen schallgedämmten Server bauen. Einziger Wermutstropfen des Gehäuses ist das sehr günstig gewählte Schloss, dass weder dem Einbruchsschutz dient, noch die Frontplatte bei regelmäßiger Benutzung besonders gut hält.

Software

Wenn Virtualisierungslösungen in Unternehmen eingesetzt werden sollen, wird oft VMWare ESXi eingesetzt. Leider wird entweder ein NAS oder SAN benötigt, oder ein Hardware-RAID Controller. Beides kam für mich nicht in Frage. Ein eigenes SAN/NAS ist für unwichtige Entwicklungssysteme im privaten Bereich überdimensioniert und Hardware-RAID meiner Ansicht nach nicht ökonomisch sinnvoll, wie ich vor drei Jahren erklärt habe.

Um die Zeit zu verringern, die für Einrichtung und Verwaltung nötig wird, habe ich mich für Proxmox VE entschieden. Proxmox VE basiert auf Debian und kann verschlüsselt und mit Software-RAID installiert werden. Die Installation des Servers ist in folgenden Artikeln dokumentiert.

Die anfänglichen Bedenken, dass eine so weit entfernt von den Projektvorgaben installierte Virtualisierungslösung nicht zuverlässig funktionieren kann, haben sich nicht bestätigt. Der Virtualisierungsserver läuft seit Inbetriebnahme so zuverlässig, wie man es von einem Debian erwarten darf. Ergänzend besteht die Möglichkeit bekannte Verwaltungswerkzeuge und Helferlein wie apticron einzusetzen.

Ausnahmen für OpenVPN Verbindung mit iptables, ipset und Policy-based Routing

Wer auf eine permanent bestehende VPN-Verbindung angewiesen ist, oder einfach etwas paranoid, möchte einige Ziel-IPs oder Hostnamen im Internet trotzdem gern direkt ansprechen. Dazu zählt zum Beispiel der Speedtest des eigenen Internetanbieters oder Distributions-Spiegelserver. Ohne den Umweg über die VPN-Verbindung wird der Maximaldurchsatz der eigenen Internetanbindung erreicht, was bei vielen Diensten von Vorteil ist. Darüber hinaus lässt sich so zum Beispiel eine Trennung zwischen anonymisiert besuchten Webseiten und nicht anonymisiert besuchten Webseiten herstellen. Wie das geht? Mit iproute2, ipset und einer iptables-Regel.

Zwei Routing-Wege zu unterschiedlichen Zielen

Zwei Routing-Wege zu unterschiedlichen Zielen

Um das Ziel zu erreichen, wird eine zweite Routing-Tabelle angelegt, die den zur Vorgabe (default route) unterschiedlichen Router enthält. Basierend auf der Ziel-IP oder dem Ziel-Hostnamen der Ausnahme-Ziele wird der Kernel die Routing-Entscheidung abweichend treffen. Dafür wird jedes Paket zu oder von den Ausnahme-Zielen mit einer Markierung versehen.

1. Neue Routing-Tabelle in /etc/iproute2/rt_tables

Zuerst wird durch folgenden Eintrag die neue Routing-Tabelle definiert.

1       novpn

2. Regeln zu /etc/network/interfaces hinzufügen

Folgend werden zwei Regeln für die neue Routing-Tabelle novpn angelegt. Dies muss nicht in der Datei interfaces geschehen, sondern könnte auch auf die Datei /etc/rc.local angewendet werden. Die interfaces Datei bietet sich aber aufgrund des Sachzusammenhangs an. Die beiden Regeln lauten wie folgt.

ip rule add fwmark 1 table novpn
ip route add default via 192.168.178.1 dev eth0 table novpn

Die erste Regel führt dazu, dass die Routing-Entscheidung für durch die Firewall mit dem Marker 1 markierte Pakete von der Vorgabe abweicht. Es wird statt der voreingestellten Routing-Tabelle die Tabelle novpn für die Routing-Entscheidung herangezogen. Die zweite Regel fügt der Tabelle novpn ein default gateway hinzu, dass von der Vorgabe abweicht.

Werden die Regeln in der Datei interfaces ergänzt (für das externe Interface der Firewall), könnte das Ergebnis wie folgt aussehen.

# The external (DMZ) network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.178.254
        netmask 255.255.255.0
        network 192.168.178.0
        gateway 192.168.178.1
        dns-nameservers 192.168.178.1
        # check with ip route show table novpn && ip rule
        post-up ip rule add fwmark 1 table novpn
        post-up ip route add default via 192.168.178.1 dev eth0 table novpn

iptables und ipset

Es bleibt die Erstellung einer adequaten iptables Regel. Diese lautet wie folgt.

# Setup ipset
if [ -x /etc/rc.firewall.ipset ]; then
       /etc/rc.firewall.ipset || echo "problem loading ipsets"
fi
iptables -A PREROUTING -i $LAN -t mangle -m set --match-set Direct_Hosts dst  -j MARK --set-mark 1

Die Regel muss an den PREROUTING-Chain angehängt werden, um die Routing-Entscheidung beeinflussen zu können (siehe hier). Umgangssprachlich ausgedrückt wird der Marker jedes Pakets, dessen Ziel in der Tabelle Direct_Hosts vorkommt, auf 1 gesetzt. Dieser Marker führt dazu, dass die so gekennzeichneten Pakete die alternative Routing-Tabelle verwenden.

Bleibt die Einrichtung des ipsets Direct_Hosts. Fehlt das Programm ipset, kann es mit dem Befehl apt-get install ipset installiert werden. Um einzelne Ziele in einem ipset zu verwalten, bietet sich die Datenstruktur hash:ip an, die das geforderte leistet. Abkürzend folgt das fertige Beispiel.

#!/bin/bash
#
# Direct_Hosts - Hosts to connect directly to (no VPN)
#
ipset destroy Direct_Hosts
ipset create Direct_Hosts hash:ip hashsize 4096
# Hosts 
ipset add Direct_Hosts -! '[speedtest-1.unitymedia.de]'
ipset add Direct_Hosts -! '[speedtest-2.unitymedia.de]'
ipset add Direct_Hosts -! web.de
ipset add Direct_Hosts -! 8.8.8.8

Zu beachten ist bei ipset-Einträge, dass Hostnamen bei der Erstellung des Sets aufgelöst werden und nur die IP-Adresse gespeichert werden. Hostnamen, die Bindestriche enthalten, müssen in eckige Klammern gesetzt werden. Um die Auswertung der eckigen Klammern in der Laufzeitumgebung (bash) zu verhindern, werden einfache Anführungszeichen verwendet.

Wer liest meinen Blog?

Manchmal möchte man als Blogger erfahren, welche Art von Leser man anzieht und ob die Ausrichtung des Blogs stimmt. Selbstzweifel nagen am Autor, der die meiste Zeit allein mit dem Texteditor und dem Blog verbringt. Wie gut, dass es Statistik-Plugins wie StatComm gibt. Dieses Plugin verrät für diesen Blog, welches Betriebssystem und Browser besonders beliebt ist.

Bildschirmfoto - 06.01.2014 - 11:19:19

Beliebtester Browser: Unbekannt.

Für diesen Blog verwenden 33% der Besucher einen unbekannten Browser auf einem unbekannten Betriebssystem. Auch IP-Adressen aus Deutschland sind weit abgeschlagen hinter der Schweiz und den Niederlanden. Besonders beliebt sind Computer in Rechenzentren mit Windows und Firefox oder Windows und unbekannten Browsern. Dabei handelt es sich höchstwahrscheinlich um Proxys.

Für mich steht damit fest, dass ich die Zielgruppe erreiche.

Und natürlich Dankeschön, dass Ihr meinen Blog lest und Anonymisierung einsetzt.

Über Fragen, Kommentare oder Themenwünsche würde ich mich trotz eurer Anonymität um so mehr freuen. Hinterlasst doch einen Kommentar!

Intel I217-LM Treiber für Proxmox VE 3.1

293px-Intel-logo.svg

Treiber installieren liegt nicht nahe, wenn ein Linux-Server betrieben wird. Meist werden alle nötigen Treiber mitgeliefert. Nicht so bei Proxmox VE 3.1 und dem Netzwerkchip I217-LM von Intel. Proxmox verwendet noch den angestaubten Kernel 2.6.32, Unterstützung für den Netzwerkchip der Haswell-Generation bietet aber erst Kernel 3.5.

Mit einfachen Befehlen kann der Treiber, wie folgt, nachinstalliert werden.

apt-get install pve-headers-`uname -r` build-essential
cd /usr/local/src
wget http://downloadmirror.intel.com/15817/eng/e1000e-2.5.4.tar.gz
tar xzf e1000e-2.5.4.tar.gz
cd e1000e-2.5.4
make install
modprobe e1000e