1808194

(Un-)sicher mit Linux: Das leisten Penetrationstests

08.08.2013 | 11:09 Uhr |

Ein Linux-System eignet sich mit seinen Tools vortrefflich als Werkzeug, das Schwachstellen auf Servern, in Netzwerken und auf Einzelsystemen ausfindig macht. Es ist ein zweischneidiges Schwert. Und es hat scharfe Klingen.

Den Gedanken, ein Linux-System sei inhärent sicherer als andere Systeme, sollten wir hier gleich verwerfen. Tatsächlich sind ungepflegte, ungenügend administrierte Linux-Server ein Graus und das Ende jeder Form von Sicherheit. Ein Server ist generell nur so sicher, wie es dessen Konfiguration zulässt. Die Serverkonfiguration spiegelt jeweils den Wissensstand des Administrators wider sowie den Aufwand, der in diese Aufgabe gegangen ist. Ein Linux-Server ist heute mit geringen Kosten angemietet und Bastelboards wie der Raspberry Pi bringen einen Linux-Server schnell und einfach ins LAN oder per Portweiterleitung am Router auch ins Internet.

Dem Autor dieser Zeilen sträuben sich bei dem Gedanken an diese meist unzureichend administrierten Linux-Maschinen die Nackenhaare. Denn der Irrglaube, ein Linux-System sei einfach schon deshalb sicher, weil es mit dem Linux-Kernel ausgestattet ist, hält sich hartnäckig. Natürlich: Die großen schlimmen Lücken stecken meist nicht in Linux selbst. Es sind stattdessen die vielen zusätzlich installierten Serverdienste, PHP-Projekte oder auch nur deren Plug-ins, die immer wieder Löcher reißen.

Die eigene Erfahrung nach unzähligen Sicherheits-Checks zeigt: Es ist im Fall von Linux nicht das Betriebssystem oder die Serversoftware, die Angriffe zulässt. Meist sind es Konfigurationsfehler, beispielsweise eine vergessene Datei im Webserver-Root oder unscheinbare Ergänzungen wie unsichere Wordpress-Plug-ins, die einen Server im Internet angreifbar machen. Kurz, es sind vermeintlichen Kleinigkeiten, die einem Pentester wie mir Zugang zu den getesteten Systemen verschaffen.

Schutz vor WLAN-Hackern: So sichern Sie Ihren Router ab

Die Suche nach Lücken

Mit vertretbarem Aufwand können wir Linux-Server absichern und mit größeren Anstrengungen sogar zu einer Festung ausbauen. Um die Sicherheit zu prüfen, sind selbst durchgeführte Einbruchsversuche („Pentests“) ein probates Mittel, unverschlossene Seiteneingänge, Lücken oder einfach auch nur zu gesprächige Serverprozesse zu finden.

Gelungene Einbruchsversuche sind selten das Ergebnis genialer Geistesblitze, sondern ergeben sich aus Hartnäckigkeit, Detailversessenheit und den richtigen Tools. Tatsächlich sind Pentests nicht immer so aufregend, wie sie in der durchaus gut recherchierten Serie „ Mr Robot “ dargestellt werden. Sie sind eine eher langwierige Sache, die unendlich lange Checklisten, viel Geduld und eine sehr hohe Frustrationstoleranz verlangt. Denn die meisten Angriffsversuche sind eben nicht erfolgreich und zufällige Funde sind gar selten.

Wer sich mit Sicherheit beschäftigt, benötigt die richtigen Werkzeuge, die eine effiziente Suche nach Sicherheitslücken unterstützen. Linux-Systeme sind dabei die idealen Begleiter, denn die meisten Werkzeuge werden für Linux entwickelt. In vielen Szenarien ist es außerdem wichtig, mit einem Betriebssystem zu arbeiten, dass dem angegriffenen Zielsystem ähnlich ist. Und im Internet dominiert nun mal Linux. Es ist deshalb kein Zufall, dass nahezu jeder Sicherheitsexperte oder anarchischer Hacker gleichzeitig ein versierter Linux-Anwender ist.

Einer der Gründe, warum Linux hier eine so prominente Rolle einnimmt, ist die Verfügbarkeit von Script-Interpretern und deren Bibliotheken: Perl und Python sind mächtige, netzwerkfähige Script-Sprachen und erlauben die Entwicklung giftiger oder hilfreicher Scripts mit verhältnismäßig wenig Aufwand.

Heimvorteil für den Pinguin

Linux ist Open Source und damit enorm anpassungsfähig. Einer der Vorzüge ist, dass Linux so Aufgaben ausführen kann, die ein traditionelleres Betriebssystem nicht stemmt.

Ein Beispiel dafür ist der TCP/IP-Protokollstack. Der Protokollstack definiert, wie ein Betriebssystem am Netzwerk teilnimmt, wie einzelne Pakete erstellt und empfangen werden und wie die unteren Ebenen eines Netzwerks auf Hardwareebene mit den höheren Ebenen wie Anwendungen zusammenarbeiten.

Ein Betriebssystem wie Windows arbeitet mit einem Protokollstack, dessen Funktionen von seinen Entwicklern fest vorgegeben sind und Microsoft erlaubt hier weder Modifikationen noch sind alle Funktionen offen dokumentiert. Klar gibt es Tools wie Nmap und Metasploit, die auf Windows portiert wurden. Meistens verlieren diese Tools dort aber einen Teil ihrer Fähigkeiten, da der Protokollstack nicht flexibel genug ist. Für Linux-Systeme gibt es deshalb einfach mehr Werkzeuge dieser Art und daran wird sich in absehbarer Zeit nichts ändern.

Im Folgenden wird es praktisch, denn es geht um Open-Source-Tools aus dem Werkzeugkasten von Pentestern. Um den Aspekt der Legalität beim Einsatz dieser Tools machen wir hier uns keinerlei Gedanken. Denn Checks gegen den eigenen Server oder im Auftrag des Serverbetreibers sind völlig legitim und nötig, den echten Angreifern zuvorzukommen.

Tipp: So surfen Sie absolut anonym im Internet

Nmap: Offene Ports finden

Eine einfachere Übung: Nmap ermittelt einen ersten Fingerabdruck des Zielsystems und offene Ports. Nmap kann auch die Art des Systems anhand von Netzwerkpaketen erraten.
Vergrößern Eine einfachere Übung: Nmap ermittelt einen ersten Fingerabdruck des Zielsystems und offene Ports. Nmap kann auch die Art des Systems anhand von Netzwerkpaketen erraten.

Welche Dienste ein Zielsystem anbietet, findet ein Portscanner heraus. Das mit Abstand bekannteste Programm für diesen Zweck ist der Portscanner Network Mapper (kurz Nmap) des prominenten Hackers Gordon „Fyodor“ Lyoy. Es ist in allen Linux-Distributionen verfügbar und über die jeweiligen Paketmanager schnell installiert. Um einen hartnäckigen Scan gegen Server zu starten, dient der Befehl

sudo nmap -P0 [Addresse]

Der Parameter „-P0“ weist Nmap an, nicht auf eine Antwort des Servers zu warten. Dies verhindert einen Abbruch des Scans, falls der Router ICMP-Anfragen (Pings) verwerfen sollte. In der darauf folgenden Ausgabe auf der Kommandozeile sehen Sie dann die Ergebnisse des Scans mitsamt den eventuell geöffneten Ports des entfernten Systems.

Nikto: Webserver überprüfen

Klopf, klopf: Der Scanner Nikto überprüft einen Webserver auf Fehler und Nachlässigkeiten. In den richtigen Händen ist das Tool Gold wert, denn es zeigt typische Konfigurationsfehler.
Vergrößern Klopf, klopf: Der Scanner Nikto überprüft einen Webserver auf Fehler und Nachlässigkeiten. In den richtigen Händen ist das Tool Gold wert, denn es zeigt typische Konfigurationsfehler.

Ein Webserver soll zwar Inhalte servieren, darf dabei aber nicht zu viele Informationen über sich selbst, die verwendete Software preisgeben oder gar Dateien anbieten, die im Dokumentroot nichts verloren haben. Ein Tool, das systematisch einen Webserver auf die typischen Konfigurationsfehler abklopft, ist das Programm Nikto . Es ist ein Sicherheitstool für die Linux-Kommandozeile und überprüft einen Webserver auf 6700 häufige Probleme, die ein potenzielles Risiko darstellen. Installiert ist Nikto in den verbreiteten Linux-Distributionen schnell über den jeweiligen Paketmanager. Um einen Webserver zu untersuchen, dient der Aufruf

nikto -h [Hostname oder IP-Adresse]

und Nikto wird im Terminal nach seinen Checks ein ausführliches Protokoll mit weiterführenden Infos ausgeben.

Sqlmap: In Datenbanken bohren

Kleinteilig: Nach eigener Erfahrung ist die Arbeit mit Sqlmap eine langwierige Angelegenheit, denn es gilt, Stück für Stück Angriffe gegen Eingabefelder auf Webseiten zu bauen.
Vergrößern Kleinteilig: Nach eigener Erfahrung ist die Arbeit mit Sqlmap eine langwierige Angelegenheit, denn es gilt, Stück für Stück Angriffe gegen Eingabefelder auf Webseiten zu bauen.

Kaum ein Blog, CMS oder Shop kommt ohne SQL-Datenbank im Hintergrund aus. Ungenügend gefilterte Benutzereingaben auf Webseiten erlauben hin und wieder SQL-Injections. Diese SQL-Abfragen bieten einen tieferen Blick in die Datenbank, auf Benutzerkonten und Kundendaten, die Außenstehende eigentlich nichts angehen. Sie gewähren im besten (also schlimmsten) Fall sogar Schreibaktionen. Das Datenbank-Back-End kann dazu dienen, eine Webseite zu manipulieren oder ganz zu übernehmen. SQL-Injections nicht leicht zu finden, da hier lange Testreihen gegen Eingabefelder auf Webseiten nötig sind. Das Programm Sqlmap, das auch im Beitrag „Datenbankserver absichern“ in dieser Ausgabe auf Seite 90 zur Sprache kommt, ist das wichtigste Tool für diese Aufgabe. Es ist für Linux-Systeme in Perl geschrieben und steht unter http://sqlmap.org zum Download bereit. Eine Testreihe des Parameters „id“ im PHP-Script „sections.php“ einer Webseite namens „example.com“ startet dieser Beispielbefehl:

python sqlmap.py -u "http://www.site.com/section.php?id=51"

Eine nähere Beschäftigung mit Sqlmap lohnt sich, da nach persönlicher Erfahrung ein wachsendes PHP-Projekt mit zahlreichen Plug-ins, etwa eine wuchernde Wordpress-Installation oder ein hochgezüchtetes Shopmonster wie Magento, gerne mal SQL-Injektionen durchlässt.

Offene Ports an einer öffentlichen IP-Adresse sind mit Nmap zu ermitteln ? hier SSH an Port 22. Danach können Angreifer als root und mit Zufallskennwörtern ihr Glück versuchen.
Vergrößern Offene Ports an einer öffentlichen IP-Adresse sind mit Nmap zu ermitteln ? hier SSH an Port 22. Danach können Angreifer als root und mit Zufallskennwörtern ihr Glück versuchen.

Sicherheit ist ein Thema für Fortgeschrittene, Forscher und IT-Paranoiker – leider. Denn mit der weiteren Verbreitung von Linux auf Servern im „Internet of Things“ wird es trotz den oft vernünftigen Standardeinstellungen der Linux-Distributionen auch eine Menge mehr fehlerhaft konfigurierter Server geben. Linux und seine Tools sind hier Teil eines Problems, da eine ausreichende Administration aufwendig ist; aber zugleich Teil der Lösung, da es eine stattliche Anzahl von Tools speziell für dieses Betriebssystem gibt, die jetzt Lücken finden, bevor es andere in böser Absicht tun.

Spezialisierte Linux-Distributionen

Für die Suche nach Sicherheitslücken im Netzwerk und auf Servern gibt es für Linux unzählige Programme und Scripts. Die meisten dieser Helferlein entstehen zunächst für den Eigenbedarf von Hackern und Sicherheitsexperten. Die Codequalität ist nicht immer gut und selten liegen diese (Un-)Sicherheitstools in fertigen, leicht zu installierenden Paketen vor. Linux-Livesysteme, die auf diese Art von Tools spezialisiert sind, bieten etliche Werkzeuge für Pentests – ohne Kompilieren. Auch das ist ein Vorteil von Linux beim Thema Sicherheit. Unter den zahlreichen Linux-DVDs für diesen Zweck ist Kali Linux bemerkenswert. Denn neben einem gut ausgestatteten Werkzeugkasten mit vorkompilierten Tools sind die Fähigkeiten des installierbaren Livesystems unter http://docs.kali.org auch noch sehr umfangreich dokumentiert.

0 Kommentare zu diesem Artikel
1808194