Security Auditing mit Metasploit

Einbruchwerkzeug

Die Veröffentlichung von Sicherheitslücken samt passendem Exploit.Code ist heute üblich. Das hat gleichzeitig gute und schlechte Seiten.

Als ich neulich mit einem Freund über das Thema DNS-Sicherheit diskutierte, überlegten wir, wie man das aktuelle DNS-Problem [1] exploiten könnte. Ich meinte, es wäre ziemlich leicht, während ich er eher für schwierig hielt. So ging es eine Zeit lang, bis er meinte "Wenn du meinst, dass es so einfach ist, dann schreib doch einen Exploit!". Meine Antwort war "Warum sollte ich? Irgendjemand wird sowieso ziemlich schnell ein Metasploit-Modul dafür schreiben", was schließlich auch passierte.

Das ist eine ziemlich interessante Entwicklung. Vor einigen Jahren hätte ich mich noch selbst hingesetzt, um einen Exploit zu programmieren. Oder ich hätte jemanden einen Gefallen getan, der jemand kennt, der wiederum jemand kennt, der einen Exploit hat. Heute warte ich gerne ein paar Tage oder Wochen, bis ein Exploit veröffentlich wird, meistens sogar noch in leicht handhabbarer Form, wie zum Beispiel einem Modul für das Metasploit Exploit-Framework, um das es in diesem Artikel geht [2]. Obwohl die Black Hats natürlich immer noch im Verborgenen ihre Exploits entwickeln und anwenden, geht der Trend eindeutig Richtung Offenlegung von Sicherheitslücke und Exploit, was seine guten und schlechten Seiten besitzt.

Exploit Code

Exploit Code ähnelt in mancher Hinsicht einem Brecheisen: Es eignet sich gut dazu, mal eine Wand aufzureißen, um an die dahinter verborgenen Leitungen zu gelangen. Es eignet sich aber auch dafür, in ein Haus einzubrechen, um es auszurauben. Exploit Code, insbesondere so schön verpackt wie in in Metasploit, ist ein unersetzliches Tools für Security-Professionals. Sie verwenden ihn, um die Sicherheit der überprüften Systeme zu testen oder Signaturen für Angriffe anzufertigen (natürlich kann man eine solche Signatur auch ohne Netzwerkmitschnitt erzeugen, aber das ist um einiges kniffliger). Ohne offenen Exploit Code wäre die Arbeit der Experten um einiges schwieriger, wenn nicht völlig unmöglich. Angreifer benutzen Exploits praktisch auf die gleiche Art, aber mit dem Ziel, in Systeme einzubrechen und sie für ihre Zwecke zu nutzen, zum Beispiel für Botnetze.

Anatomie eines Exploits

Üblicherweise besteht ein Exploit aus zwei Komponenten: dem Angriffscode zum Ausnutzen der Lücke und dem Shellcode. Der Angriffscode kann sich auf verschiedene Typen von Lücken beziehen: ein Integer Underflow, ein Buffer Overflow und so weiter. Letzten Endes geht es meistens darum, dass der Angreifer eine Möglichkeit erhält, den Speicherinhalt und den Programmablauf zu manipulieren, und damit beliebigen Code auszuführen. Das nennt man meistens Shell Code, denn am Ende soll dabei eine Shell- oder Remote-Zugang herauskommen, der Zugang zum manipulierten System erlaubt. Shell-Code ist üblicherweise spezifisch für ein Betriebssystem und eine Rechnerarchitektur und zusätzlich darin beschränkt, welche Zeichen und Maschineninstruktionen er enthalten darf.

Zusätzlich zur leichteren Verfügbarkein von Exploits, hat sich im allgemeinen auch die Qualität des Codes verbessert. Die Zeiten der architekturspezifischen oder Proof-of-Concept-Exploits, die oft schon kurz nach ihrem Erscheinen nicht mehr kompilieren ließen. Auch der oft fehlerhafte Shellcode hat sich heutzutage stark verbessert. Frameworks – von denen Metasploit nur das bekanntest ist – haben die Arbeit der Exploit-Programmierer um einiges vereinfacht, natürlich auch die von Sicherheitsexperten und Crackern.

Metasploit besitzt Command Line und Web Interfaces sowie eine GUI. Dahinter verbergen sich über 300 Exploit-Module für eine Vielzal von Programmen, Diensten und Betriebssystemen. Metasploit vereinfacht den ganzen Prozess des Exploits und macht Angriffe viel systematischer und reproduzierbarer – ein weiterer Vorteil sowohl für Security-Consultants wie Cracker.

Installation

Es gibt zwei Wege, Metasploit zu installieren: den Tarball herunterladen oder die neueste Version aus dem Subversion-Repository laden. Ich bin für die letztere Option, weil sie einfach aktueller ist. Die Tar-Pakete sind meist mindestens einige Wochen hintendran. Ist der Subversion-Client installiert, wechseln Sie einfach in ein Verzeichnis, in dem Sie Metasploit installieren möchten und geben Sie das Folgende ein:

svn checkout http://metasploit.com/↩
svn/framework3/trunk/ metasploit

Dieser Befehl lädt sich das Framework und Exploits herunter und speicher sie im Verzeichnis »metasploit« . Zusätzlich erfordert Metasploit die Skriptsprache Ruby und – je nachdem welche Frontends Sie haben möchten – verschiedene Ruby-Pakete wie »ruby-irb« , »ruby-libs« , »ruby-rdoc« , »ruby-devel« , »readline« , »ruby-gtk2« , »ruby-libglade2« und »rubygems« . Sind Ruby und seine Abhängigkeiten sicher auf der Festplatte gelandet, fehlt noch Ruby on Rails, das sie über den Ruby-Paketmanager Rubygems installieren:

gem install -v=1.2.2 rails

Wenn Sie dann in das Metasploit-Verzeichnis wechseln, können Sie die textbasierte Konsole (»msfconsole« ), das Web-Interface (»msfweb« ) oder das grafische Frontend (»msfgui« ) starten. Wählen Sie als nächstes einfach einen Exploit, zum Beispiel den Remote-Exploit für AWStats 6.1 und 6.2, geben Sie die IP-Adresse oder einen ganzen Bereich ein und schließlich das auszuführende Programm. Wie die Screenshots in den Abbildungen 1 und 2 zeigen, ist die GUI sehr intuitiv bedienbar und die Ergebnisse sind leicht zu verstehen.

Abbildung 1: Die Metasploit-GUI ist einfach zu bedienen ..
Abbildung 2: … die Ergebnisse sind leicht zu interpretieren.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2018