Unternehmensbezogenes Google Hacking

Transcription

Unternehmensbezogenes Google Hacking
Rheinisch-Westfälische Technische Hochschule Aachen
Universität Mannheim
Lehrstuhl Praktische Informatik I
Prof. Dr.-Ing. Felix Freiling
Diplomarbeit
Unternehmensbezogenes Google
Hacking
von
Klaus Kröner
RWTH Aachen
29. August 2007
Gutachter:
Prof. Dr.-Ing. Felix Freiling, Universität Mannheim
Prof. Christian H. Bischof, Ph.D., RWTH Aachen
Betreuer:
Dipl.-Ing. Matthias Humbert, T-Mobile Deutschland GmbH
Prof. Dr.-Ing. Felix Freiling, Universität Mannheim
II
Hiermit versichere ich, dass ich die Arbeit selbständig verfasst und keine anderen als
die angegebenen Quellen und Hilfsmittel benutzt, sowie Zitate kenntlich gemacht
habe.
Bonn, den 29. August 2007
_____________________________
(Klaus Kröner)
III
IV
Inhaltsverzeichnis
1
2
3
Einführung
1.1 Motivation . . . . . . . . . . . . . . . . .
1.2 Suchmaschinen . . . . . . . . . . . . . .
1.3 Google Hacking . . . . . . . . . . . . . .
1.4 Ziele und Strukturierung der Diplomarbeit
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
3
4
5
Grundlagen
2.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Einführung in Google Hacking . . . . . . . . . . . . . . . . . . . . .
2.2.1 Die Google-Syntax . . . . . . . . . . . . . . . . . . . . . . .
2.2.2 Klassifizierung von Suchmustern . . . . . . . . . . . . . . .
2.2.3 Erweiterung der Google-Hacking-Datenbank / Suche nach neuen Suchmustern . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.4 Exkurs: Die Verwendung von Google als Proxy-Server . . . .
2.2.5 Die Suche nach E-Mail-Adressen mittels Google . . . . . . .
2.3 Weitere Suchmaschinen . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Windows Live Search . . . . . . . . . . . . . . . . . . . . .
2.3.2 Yahoo Search . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Vergleich verschiedener Suchmaschinen bezüglich ihrer Eignung für
Suchmaschinen-Hacking . . . . . . . . . . . . . . . . . . . . . . . .
2.5 Die Reichweite von Webcrawlern der Suchmaschinen . . . . . . . . .
2.6 Suchmaschinen-Caches und ein Internet-Archiv . . . . . . . . . . . .
2.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
15
16
17
Google Scanning
3.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Vulnerability Scanning . . . . . . . . . . . . . . . . . . . . . .
3.3 Anwendung von Google Hacking . . . . . . . . . . . . . . . .
3.3.1 Voraussetzungen . . . . . . . . . . . . . . . . . . . . .
3.3.2 Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 Ablauf des Google-Scans . . . . . . . . . . . . . . . . . . . . .
3.4.1 Probleme / Einschränkungen des Google Hackings . . .
3.4.2 Finden aller relevanter Domains bzw. Webapplikationen
3.4.3 Finden sinnvoller Suchmuster . . . . . . . . . . . . . .
3.4.4 Langfristiger Ablaufplan . . . . . . . . . . . . . . . . .
3.4.5 Tiefe der Suche . . . . . . . . . . . . . . . . . . . . . .
3.4.6 Analyse der Ergebnisse . . . . . . . . . . . . . . . . . .
3.4.7 Kurzfristige Maßnahmen nach einem Fund . . . . . . .
18
18
18
19
19
19
20
21
22
22
24
25
27
29
V
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
6
6
7
8
11
12
12
13
13
14
3.5
4
5
6
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entwicklung des Google-Hacking-Tools „GooScanner“
4.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Arbeitsweise des Programms . . . . . . . . . . . . . . . . .
4.3 Aufwandsabschätzung . . . . . . . . . . . . . . . . . . . .
4.4 Schema für die Anwendung von GooScanner . . . . . . . .
4.5 Andere Vulnerability-Scanner, die Google Hacking einsetzen
4.5.1 Sitedigger . . . . . . . . . . . . . . . . . . . . . . .
4.5.2 gooscan . . . . . . . . . . . . . . . . . . . . . . . .
4.5.3 Acunetix . . . . . . . . . . . . . . . . . . . . . . .
4.5.4 Athena . . . . . . . . . . . . . . . . . . . . . . . .
4.5.5 Wikto . . . . . . . . . . . . . . . . . . . . . . . . .
4.6 Google Web Services . . . . . . . . . . . . . . . . . . . . .
4.7 Google Alerts . . . . . . . . . . . . . . . . . . . . . . . . .
4.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Vergleich mit anderen Scanning-Methoden
5.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Scanning-Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1 Nessus . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.2 QualysGuard . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.3 WebInspect . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.4 Parallelen bzw. Unterschiede zum Google Hacking . . . . . .
5.3 Maximierung des Sicherheitsgewinns durch Google Scanning . . . .
5.3.1 Die Effektivität des Google Scannings . . . . . . . . . . . . .
5.3.2 Auswirkung der Aktualität des Suchindex auf die Abwehrrate
5.3.3 Auswirkung der Aktualität bzw. des Inhalts der SuchmusterDatenbasis auf die Abwehrrate . . . . . . . . . . . . . . . . .
5.4 Kurze Einführung in Penetration Testing . . . . . . . . . . . . . . . .
5.4.1 Resultate durch etablierte Penetration-Testing-Verfahren . . .
5.5 Der betriebliche Mehrwert durch Google Hacking . . . . . . . . . . .
5.5.1 Ungeschützte Systeme . . . . . . . . . . . . . . . . . . . . .
5.5.2 Durch Vulnerability Scanning geschützte Systeme . . . . . .
5.5.3 Durch Penetration Testing geschützte Systeme . . . . . . . .
5.5.4 Durch Vulnerability Scanning und Penetration Testing geschützte Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5.5 Kosten-/Nutzen-Verhältnisse auf Basis des messbaren Anteils
am Sicherheitsgewinn . . . . . . . . . . . . . . . . . . . . .
5.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . .
Präventive Abwehr
6.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Alarmsysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Server-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4 Google Hacking Honeypots / Verbreitung von Falschinformationen . .
6.5 Blockieren des Zugriffs für offensichtliche
Google-Hacker . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6 Betrachtung des Inhalts von Websites unter Verwendung eines Webcrawlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VI
33
34
34
34
37
41
42
42
42
43
43
43
43
44
44
46
46
46
46
49
50
50
53
53
54
56
56
57
57
58
59
59
60
62
63
65
65
65
66
68
70
70
6.7
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
Zusammenfassung
7.1 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
73
A Quellcode
A.1 Das Scheduling-Modul von GooScanner . . . . . . . . . . . . . . . .
A.2 Das Google-Scan-Modul von GooScanner . . . . . . . . . . . . . . .
74
74
77
B Fallbeispiele
B.1 Einleitung . . . . .
B.2 Firma 1 . . . . . .
B.3 Firma 2 . . . . . .
B.4 Firma 3 . . . . . .
B.5 Zusammenfassung
82
82
83
87
89
93
7
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
VII
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Abbildungsverzeichnis
1.1
1.2
Ergebnis der Anwendung eines einfachen Suchmusters . . . . . . . .
Die Google-Startseite . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1
2.2
2.3
2.4
2.5
Ergebnis der Suche nach einer Drucker-Schnittstelle . . . . .
Ergebnisse der Suche nach Index of: inurl:private
Ergebnis der Suche nach inurl:passwd . . . . . . . . . . .
Ergebnis der Suche nach filetype:pwd inurl:service .
Ergebnis der Suche nach @gmail.com -www.gmail.com .
.
.
.
.
.
8
9
9
9
13
3.1
Ablaufplan Google Scanning in Pseudocode . . . . . . . . . . . . . .
26
4.1
4.2
4.3
4.4
Datenmodell von GooScanner . . . . . . . . . . . . .
Konfiguration eines Jobs in GooScanner . . . . . . . .
Bewertung eines Fundes in GooScanner . . . . . . . .
Bewertung mehrerer Funde gleichzeitig in GooScanner
.
.
.
.
35
38
38
39
5.1
Quellcode eines Nessus-Plugins . . . . . . . . . . . . . . . . . . . .
48
6.1
6.2
Beispiel einer sitemap.xml . . . . . . . . . . . . . . . . . . . . . . .
Honeypot-Funktion zum Sammeln von Informationen über Angreifer
68
69
VIII
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
4
Tabellenverzeichnis
2.1
Zeit zwischen Besuch durch Webcrawler und Aktualisierung des Cache
17
3.1
3.2
3.3
Limitierung der Anzahl gelieferter Ergebnisse . . . . . . . . . . . . .
Funde und Gegenmaßnahmen . . . . . . . . . . . . . . . . . . . . .
Vergleich von Entfernungszeiten . . . . . . . . . . . . . . . . . . . .
27
30
32
4.1
4.2
4.3
Zeitbedarf von Google Scanning . . . . . . . . . . . . . . . . . . . .
Grundlagen der Statistik in Tabelle 4.1 . . . . . . . . . . . . . . . . .
Verlauf der Anzahl neuer Treffer bei Scans von t-mobile.de . . . . . .
37
37
40
5.1
5.2
5.3
Vergleich von Google Hacking und Vulnerability Scanning . . . . . .
Die UserAgents der Suchmaschinen . . . . . . . . . . . . . . . . . .
Vergleich von Google Hacking und Vulnerability Scanning bzgl. Mehrwerts durch Google Hacking . . . . . . . . . . . . . . . . . . . . . .
Vergleich von Google Hacking und Penetration Testing bzgl. Mehrwerts durch Google Hacking . . . . . . . . . . . . . . . . . . . . . .
Vergleich von Google Hacking und Penetration Testing zusammen mit
Vulnerability Scanning bzgl. Mehrwerts durch Google Hacking . . . .
52
55
Konfiguration der Scan-Jobs für Firma 1 . . . . . . . . . . . . . . . .
Der erste Scan für Firma 1 . . . . . . . . . . . . . . . . . . . . . . .
Verlauf der Anzahl neuer Treffer bei Scans der Domains von Firma 1 .
Falschtreffer bei Scans der Domains von Firma 1 . . . . . . . . . . .
Dauer eines Scans der Domains von Firma 1 . . . . . . . . . . . . . .
Konfiguration der Scan-Jobs für Firma 2 . . . . . . . . . . . . . . . .
Der erste Scan für Firma 2 . . . . . . . . . . . . . . . . . . . . . . .
Verlauf der Anzahl neuer Treffer bei Scans der Domains von Firma 2 .
Falschtreffer bei Scans der Domains von Firma 2 . . . . . . . . . . .
Dauer eines Scans der Domains von Firma 2 . . . . . . . . . . . . . .
Konfiguration der Scan-Jobs für Firma 3 . . . . . . . . . . . . . . . .
Der erste Scan für Firma 3 . . . . . . . . . . . . . . . . . . . . . . .
Verlauf der Anzahl neuer Treffer bei Scans der Domains von Firma 3 .
Beispielhafte Falschtreffer bei Scans der Domains von Firma 3 . . . .
Dauer eines Scans der Domains von Firma 3 . . . . . . . . . . . . . .
83
83
84
85
86
87
87
88
88
88
89
89
90
91
92
5.4
5.5
B.1
B.2
B.3
B.4
B.5
B.6
B.7
B.8
B.9
B.10
B.11
B.12
B.13
B.14
B.15
IX
59
60
61
Zusammenfassung
„Google Hacking“ ist eine Methode, mit welcher Suchmaschinen als Hacker-Werkzeuge verwendet werden. Mittels Google Hacking kann man beispielsweise die Angreifbarkeit von Webservern erforschen, Zugangsdaten aufspüren und Informationen sammeln, die den Angriff auf ein Netzwerk mittels anderer Methoden erleichtern. Hierzu
werden keine geheimen Funktionen der Suchmaschinen verwendet, sondern hochspezialisierte Suchmuster als Anfragen an die Suchmaschinen gesendet.
Diese Diplomarbeit bietet einen Überblick über die beim Google Hacking verwendeten Techniken. Zudem werden verschiedene Möglichkeiten der Abwehr untersucht. Der Schwerpunkt liegt hierbei auf der Untersuchung und Entdeckung möglicher
Schwachstellen der Web-Applikationen und Netze eines Unternehmens mittels regelmäßig durchgeführter Überprüfung von Suchergebnissen. Hierzu wird eine Strategie
erarbeitet sowie ein Programm entwickelt, welches in festgelegten Intervallen große
Mengen von Anfragen an Suchmaschinen schickt und bei auffälligen Funden Alarm
auslöst. Anhand einer exemplarischen Anwendung wird untersucht, wie erfolgsversprechend der Einsatz der Methoden des Google Hackings für eine unternehmensinterne Systemüberwachung sind. Ferner werden Vulnerability-Scanner vorgestellt, die
bereits von der Technik des Google Hacking Gebrauch machen. Diese, sowie Google
Hacking im Allgemeinen, werden mit den Möglichkeiten, die etablierte VulnerabilityScanning-Werkzeuge bieten, verglichen.
1
Kapitel 1
Einführung
Um die Fülle von Informationen im Internet für den Menschen sinnvoll nutzbar zu
machen, gibt es Suchmaschinen. Sie sind die erste Anlaufadresse, wenn es im Allgemeinen um die Suche nach Informationen im World Wide Web geht. Für die Suchmaschinen ist es daher wichtig, die charakteristischen Merkmale von möglichst vielen
Seiten im Web zu erfassen, also den in Form von Text erfassbaren Inhalt. Die „Bots“
oder „Webcrawler“ der Suchmaschinen suchen daher unablässig nach Daten und sind
bei deren Aufnahme in ihren Index relativ unkritisch, wobei es für die Eigner der Daten
Methoden gibt, diese Aufnahme von Informationen zu beeinflussen oder zu verhindern.
Wenn diese Methoden allerdings nicht angewendet werden, können Webcrawler auch
Informationen speichern, welche evtl. überhaupt nicht für die Öffentlichkeit gedacht
sind, aber trotzdem – meist unbeabsichtigt – in einem öffentlich zugänglichen Bereich
eines Web-Servers zu finden sind. Dabei kann es sich um Passwörter, Konten-Daten,
oder auch andere Informationen handeln, die auf den ersten Blick gar kein Gefahrenpotential für ihren Eigner mit sich bringen – aber indirekt Angriffsmöglichkeiten eröffnen. Genau diese Informationen kann man mit Hilfe von Google und weiteren großen
Suchmaschinen dank ihrer genauen Suchmöglichkeiten gezielt suchen und finden. Dies
bezeichnet man als „Google Hacking“.
Wie man an der Anzahl von Ergebnissen in Abbildung 1.1 erahnt, können bereits mit Hilfe einfacher Suchmuster wie etwa „intitle:index of parent directory inurl:private“ interessante Funde gemacht werden. Hier wurde zwar
nur relativ ungezielt nach allgemeinen, privaten Daten gesucht, jedoch wird daran deutlich, dass private Daten wohl nicht immer ausreichend geschützt sind.
1.1
Motivation
Google Hacking stellt eine Gefahr für jedes Netzwerk dar, in welchem es Informationen gibt, die nicht für jedermann zugänglich sein sollen - falls dieses Netzwerk an das
Internet angebunden ist. Mit Hilfe von Google Hacking lässt sich zwar nur in Spezialfällen ein direkter Angriff auf ein Netz durchführen, welcher dem klassischen Verständnis des Begriffs „Hacking“ entsprechen würde. Doch manchmal macht ein Fund
im Speicher einer Suchmaschine den eigentlichen Angriff auch überflüssig, da man
die gewünschte Information schon durch den Zwischenspeicher („Cache“) der Suchmaschine erhält. Je nach Fund kann ein Stück Information den eigentlichen Angriff
manchmal nur ein bisschen, gelegentlich aber auch erheblich erleichtern. Somit stellen
2
Abbildung 1.1: Ergebnis der Anwendung eines einfachen Suchmusters
sich die folgenden Fragen:
• Wie funktioniert Google Hacking?
• Wie findet man systematisch heraus, ob ein Netz für Google Hacking anfällig
ist?
• Kann man Google Hacking dafür einsetzen, um mögliche Schwachstellen und
Sicherheitsmängel (frühzeitig) auf systematische Weise zu entdecken?
• Wie kann man ein IT-System vor Google Hacking schützen?
1.2
Suchmaschinen
Bisher wurde als Suchmaschine für das Internet nur Google erwähnt, da gerade unter
ihrer Verwendung das „Google Hacking“ entstand. Als wichtige Ergänzungen zu Google sollten noch „Yahoo! Search“ [yahb] (im Folgenden „Yahoo Search“ genannt) und
„Windows Live Search“ [livb] (vormals „MSN“, im Folgenden kurz „Live Search“ genannt) erwähnt werden, da sie eine ähnlich mächtige Anfragesyntax und vergleichbar
große Suchindizes haben.
Anfragen an diese Suchmaschinen geschehen in Form so genannter Suchmuster.
Ein Suchmuster ist ein Ausdruck, welcher einer Suchmaschine als Parameter übergeben wird. Es definiert, welchen Inhalt bzw. welche Eigenschaften ein gesuchtes Dokument haben soll.
Im Laufe dieser Arbeit wird sich zeigen, dass für systematisches Google Hacking
oft große Mengen an Anfragen an Suchmaschinen gestellt werden müssen. Dies kann
über die wohlbekannten Web-Schnittstellen kaum in zufriedenstellender Geschwindigkeit bewerkstelligt werden. Zudem würden Anfragen, die automatisiert und in hoher
3
Abbildung 1.2: Die Google-Startseite
Frequenz an diese Schnittstellen gestellt würden, in den meisten Fällen zu einer Sperrung des Zugriffs auf die jeweilige Suchmaschine für die IP des anfragenden Rechners
zur Folge haben. Für große Mengen von Anfragen stellen die drei genannten Suchmaschinen allerdings spezielle Schnittstellen zur Verfügung. Diese sind bei Google und
Live Search jeweils eine SOAP1 -API. Yahoo Search ermöglicht Anfragen über das
REST2 -Protokoll.
1.3
Google Hacking
Zum Google Hacking gibt es mindestens eine Community, die sich ausschließlich mit
diesem Thema beschäftigt. Eine große Sammlung von interessanten Suchmustern für
Google, die „Google-Hacking-Database“ (GHDB) befindet sich auf der Homepage des
Begründers dieser Community und Ikone des Google Hacking, Johnny Long [ghd07].
Diese Datenbank wird durch die Community stetig ergänzt und beinhaltet teilweise
auch Suchmuster, die zu weniger interessanten Ergebnissen führen – ist aber dafür sehr
umfangreich. Mehrere Penetration-Testing- bzw. Vulnerability-Scan-Tools, die entweder auf das Google Hacking spezialisiert sind oder es als Zusatz-Feature anbieten, greifen für ihren Test auf die GHDB zurück.
Für die Suche nach Schwachstellen im Quelltext von Programmen, welche in C,
PHP, Java oder einigen anderen Sprachen programmiert sind, gibt es die spezielle
Code-Suchmaschine „Google Codesearch“ [gcs07]. Auf die Suche nach Sicherheitslücken mit Hilfe dieser Suchmaschine soll innerhalb dieser Arbeit allerdings nicht weiter eingegangen werden. Diese Art von Suche ist sicherlich sinnvoll, doch würde sie
einen Schritt weiter als das hier betrachtete Google Hacking führen, denn zunächst
müsste der Quellcode eines Programms gefunden werden.
1 Simple
Object Access Protocol
State Transfer
2 Representational
4
1.4
Ziele und Strukturierung der Diplomarbeit
Innerhalb dieser Diplomarbeit soll insbesondere auf die folgenden Punkte eingegangen
werden:
1. Übersicht über Google Hacking und die verwendeten Techniken
2. Untersuchung und Bewertung: Eignung der Techniken des Google Hackings für
die Überprüfung und Überwachung von Web-Applikationen und Netzen hinsichtlich möglicher Sicherheitsschwächen
3. Entwicklung einer automatisierten Schnittstelle, über welche täglich neu hinzugekommene Webseiten klassifiziert und überprüft werden
4. Ist eine Anbindung von „Google Webservices“ bzw. „Google Alerts“ sinnvoll
möglich?
5. Gibt es einen betrieblichen Mehrwert beim Einsatz solcher Techniken gegenüber
den etablierten Vulnerability Scannern (z.B. Qualys)?
6. Exemplarische Anwendung der Google-Hacking-Techniken auf die Webseiten
einiger Unternehmen: Welche Erkenntnisse konnten gewonnen werden? Scheint
„Google Hacking“ ein vielversprechender Ansatz?
Zu Punkt 1 wird in Kapitel 2 das Google Hacking vorgestellt, indem zunächst auf
die Syntax der Suchmaschine, und danach – unter Verwendung von Beispielen – auf
speziell für das Google Hacking formulierte Suchmuster eingegangen wird.
Die Punkte 2 bis 4 werden in Kapitel 3 und 4 behandelt. Es wird zunächst auf
die Funktionsweise und Entwicklung einer automatisierten Schnittstelle eingegangen,
welche danach in der praktischen Anwendung zum Einsatz kommt. Bei der Entwicklung der Schnittstelle wird sich Näheres über die Relevanz von Google Web Services
und Google Alerts für das Google Hacking herausstellen. Punkt 5 wird in Kapitel 5
auf Basis der Erkenntnisse durch die vorherigen Kapitel behandelt. In Kapitel 6 werden zudem Ideen und Erfahrungen zur Abwehr gegen Google Hacking vorgestellt. In
Kapitel 7 werden die Erkenntnisse aller Kapitel zusammengefasst.
In Anhang B werden zudem einige Fallstudien beschrieben, in welchen die WebApplikationen und Netze von IT-Firmen mit Hilfe des entwickelten Werkzeugs auf
Anfälligkeit gegenüber Google Hacking untersucht werden. Hierdurch wird die Eignung der Techniken des Google Hackings für die Überprüfung und Überwachung von
Applikationen und Netzen hinsichtlich möglicher Schwachstellen in der Praxis erprobt.
5
Kapitel 2
Grundlagen
2.1
Einleitung
In diesem Kapitel soll zunächst ein grundlegender Überblick über das Google Hacking
gegeben werden. Hierzu werden die Möglichkeiten, die sich einem Hacker aufgrund
der Syntax für Anfragen an Google bieten, anhand von Beispielen erläutert. Ähnliche
Möglichkeiten bieten sich auch bei weiteren Suchmaschinen außer Google. Hier sind
besonders Yahoo Search und Live Search hervorzuheben, welche in einem weiteren
Abschnitt hinsichtlich ihrer Syntax betrachtet werden. Die Art und Weise, auf welche
Informationen in die Indizes und Zwischenspeicher der Suchmaschinen gelangen, wird
durch eine Betrachtung der Webcrawler der Suchmaschinen verdeutlicht.
Viele Möglichkeiten und Gefahren hinsichtlich längerfristiger Offenlegung von
sensiblen Informationen gehen vom „Google Cache“ und dem „Internet Archive“ aus.
Diese werden im letzten Abschnitt dieses Kapitels betrachtet.
2.2
Einführung in Google Hacking
Google Hacking ist die Kunst, mit Hilfe von Suchmaschinen und geschickt formulierten Suchmustern sensible Informationen im World Wide Web zu finden. Zu diesen
sensiblen Informationen können u.a. solche der folgenden Arten gehören:
• Zugangsdaten / Passwort-Dateien
• persönliche Daten / vertrauliche Informationen
• Versionsnummern von - oder genauere Infos über Webapplikationen
• Fehlermeldungen von Webapplikationen
• Genaue Verzeichnisinhalte
• Administrationsschnittstellen (z.B. von Druckern)
• Intranet-Seiten
• Authentifikation-voraussetzende Seiten
Voraussetzung für die Formulierung von möglichst erfolgreichen Suchmustern ist
die genaue Kenntnis der Syntax der Anfragen an Suchmaschinen.
6
2.2.1
Die Google-Syntax
Die Parameter, welche Google bei der Suche zulässt, sind (abgesehen von einigen weiteren, hier aber nicht relevanten) die folgenden [ses07]:
• site: Einschränkung der Suche auf Seiten, die sich unterhalb der als Argument
eingesetzten Domäne befinden.
• inurl: Das Argument muss sich irgendwo in der URL befinden.
• allinurl: Alle hierauf folgenden Worte müssen sich in der URL befinden.
• link: Auf der gesuchten Seite muss sich ein Link auf das hier eingesetzte Argument befinden.
• related: Findet Seiten mit ähnlichem Themenkontext, wie die Seite, deren
URL als Parameter angegeben wird.
• intitle: Das Argument muss sich im Titel der Seite befinden (also innerhalb
des Title-Tags des Headers der HTML-Datei).
• allintitle: Alle folgenden Worte müssen sich im Titel der Seite befinden.
• intext: Das Argument muss sich im Text, also nicht etwa im Titel oder der
URL befinden.
• allintext: Alle folgenden Worte müssen sich im Text befinden.
• filetype: Das gesuchte Dokument hat diese Dateiendung. Wenn nur dieser
Parameter ein Argument erhält, wird von Google kein Ergebnis geliefert.
• ext: Selbe Funktion wie filetype.
• cache: Als Argument wird eine URL eingesetzt. Das Suchergebnis liefert dann
bei Vorhandensein die in den Google-Cache aufgenommene Version der Seite.
• define: Sucht in Online-Nachschlagewerken wie Wikipedia Definitionen des
Begriffs, der als Argument angegeben wurde.
• numrange:x − y Es werden Zahlen z im Bereich x ≤ z ≤ y gesucht.
Operatoren für die einzelnen Parameter:
• + bzw. AND: Logisches „und“; hiermit werden Suchbegriffe standardmäßig verknüpft.
• - : Negation
• | bzw. OR: Logisches „Oder“
• ...: Exakter Match des Ausdrucks zwischen den Anführungszeichen
• [#] . . . [#]: Suche nach Zahlen zwischen einer Unter- und einer Obergrenze
Joker-Symbole:
• *: Beliebiges Wort von beliebiger Länge
7
Abbildung 2.1: Ergebnis der Suche nach einer Drucker-Schnittstelle
• .: Beliebiges Zeichen
In Abbildung 2.1 ist das Ergebnis der Suche nach einer Web-Schnittstelle einer bestimmten Art von Drucker zu sehen. Diese Schnittstelle wurde im vorliegenden Fall
offensichtlich nur unzureichend geschützt. Die Suche wurde mit Hilfe des „site:“Parameters auf eine bestimmte Domain eingeschränkt. Hier hat das Suchmuster „Xerox Phaser 6250“ ausgereicht, um zu dem Fund zu gelangen. Noch effektiver für das
Finden von sensiblen Bereichen dieser speziellen Art von Schnittstellen wäre etwa das
Suchmuster „Delete Secure Jobs“.
2.2.2
Klassifizierung von Suchmustern
Es gibt typische Arten von Informationen, die man mittels Google Hacking finden
möchte. Die zugehörigen Suchmuster lassen sich aufgrund ihrer ähnlichen Ziele zu
Gruppen zusammenfassen. Im Folgenden werden diese Gruppen kurz vorgestellt. Zu
jeder Gruppe wird ein Beispiel eines Suchmusters angegeben.
2.2.2.1
Suche nach Verzeichnissen
In den meisten Fällen von Webserver-Verzeichnissen, die per HTTP zugänglich sind,
wird für jedes Verzeichnis eine Oberfläche in HTML gestaltet. Ausnahmen sind beispielsweise Verzeichnisse, in denen Software zum Download angeboten wird, deren
Versionsnummer und – damit zusammenhängend – deren Dateiname sich so oft ändert, dass die Pflege der HTML-Oberfläche zu aufwendig wäre.
Ein Verzeichnis ohne eigene HTML-Oberfläche kann allerdings auch unbeabsichtigt der Öffentlichkeit zugänglich gemacht sein. Dies kann etwa bei unzureichender
Konfiguration eines Webservers passieren. Solche Verzeichnisse findet man beispielsweise durch:
Beispiel 1 Suche nach Verzeichnissen ohne Index-Datei
intitle:Index of:
Dieses Suchmuster in Verbindung mit Stichworten wie „private“, „backup“ etc. führt
schnell zu interessanten Ergebnissen.
2.2.2.2
Login-Daten
Zugangsdaten können in verschiedenen Formen zu finden sein. Ein User kann zum Beispiel seine Login-Daten als URL hinterlegt haben, falls das zugehörige Login-Portal
8
Abbildung 2.2: Ergebnisse der Suche nach Index of: inurl:private
Abbildung 2.3: Ergebnis der Suche nach inurl:passwd
die Annahme von GET-Parametern unterstützt. Ein passendes Suchmuster könnte so
oder ähnlich aussehen:
Beispiel 2 Suche nach Zugangsdaten in URLs
inurl:passwd
Bei der Suche nach Zugangsdaten für bestimmte Portale kann der Name des relevanten
Parameters noch angepasst werden. Die Daten können allerdings auch in Form von
Listen vorliegen, welche je nach Server-Software bestimmte Namen und Speicherorte
haben. Ein einfaches Beispiel (Ergebnis der Suche in Abb. 2.4):
Beispiel 3 Suche nach User-Datenbanken
inurl:admin inurl:userlist
oder
filetype:pwd inurl:service
Abbildung 2.4: Ergebnis der Suche nach filetype:pwd inurl:service
9
2.2.2.3
Login-Portale
Login-Portale für Administratoren können Ausgangspunkte der Suche nach Schwachstellen sein. Der Fund eines Login-Portals eines Intranets ist noch weitaus schwerwiegender, da der Zugriff auf dieses (in den meisten Fällen) nicht vom Internet aus
möglich sein sollte. Die gezielte Suche nach Formularen für Login-Vorgänge ist allerdings nicht auf Basis von charakteristischen HTML-Elementen möglich. Allerdings
gibt es charakteristische Formulierungen im Text mancher Login-Seiten, anhand derer
sich diese finden lassen. Ein allgemeines Beispiel:
Beispiel 4 Suche nach Login-Portalen von Intranets
intitle:Employee Intranet Login
2.2.2.4
Persönliche Daten / Kreditkartennummern
Diese Daten sollten natürlich in keinem Falle an die Öffentlichkeit gelangen und somit
auch nicht im Index einer Suchmaschine auftauchen. Beispiel:
Beispiel 5 Suche nach Kundendaten
Comersus.mdb inurl:database
Hiermit wird die Kunden-Datenbank der e-Shopping-Anwendung Comersus gesucht.
2.2.2.5
Fehlermeldungen
Fehlermeldungen geben oft zu viele Informationen über einen Server preis, wie etwa seine interne Verzeichnis- oder Datenbankstruktur, Software-Versionsnummern und
Teile von Code. Fehlermeldungen enthalten oft signifikante Phrasen, also kann beispielweise das folgende Suchmuster zum Erfolg führen:
Beispiel 6 Suche nach SQL-Fehlermeldungen
SQL syntax error
2.2.2.6
Logdateien
In Logdateien könnten evtl. Usernamen oder Passwörter oder zumindest Daten, die
einen Angriff erleichtern würden, enthalten sein, wie Versionsnummern von Software.
Die Suche nach solchen Dateien ist denkbar einfach:
Beispiel 7 Suche nach Logdateien
ext:log
2.2.2.7
Web-Schnittstellen von Hardware
Eine oft unterschätzte Art von Sicherheitslücke kann ein Gerät wie beispielsweise ein
Drucker, eine WebCam, ein Scanner o.Ä. darstellen. Viele Druckermodelle bieten beispielsweise eine Konfigurationsseite über das HTTP-Protokoll an. Neben der Konfiguration kann auf solchen Seiten oft auch eine Liste der zuletzt gedruckten Dokumente –
zusammen mit einer ID des Users, der den Druck in Auftrag gegeben hat – aufgerufen
10
werden. Mit etwas Geschick und Kenntnis über die Funktionsweise des Geräts kann
möglicherweise auch der Inhalt dieser Dokumente gefunden und heruntergeladen werden. Wenn diese Geräte nicht vom Internet abgeschnitten werden, kann beispielsweise
das folgende Suchmuster Ergebnisse bringen:
Beispiel 8 Suche nach Epson-Druckerschnittstellen
intitle:EpsonNet WebAssist Rev
Hiermit wird die Administrations-Schnittstelle von Epson-Druckern gesucht.
2.2.2.8
Angreifbare Server
Webserver wie Apache oder der Microsoft Internet Information Server sind häufige
Ziele von Angriffen. Daher ist es nicht schwierig, zu einem Webserver mit bestimmter
Versionsnummer einen funktionierenden Exploit1 zu finden. Das Herausfinden der Versionsnummer eines Servers kann somit schon einen wesentlichen Schritt eines Angriffs
darstellen. Man kann also nach den typischen Formulierungen suchen, die Webserver
verwenden, um ihre Version zu verraten. Beispiel:
Beispiel 9 Suche nach IIS-Servern
Microsoft-IIS/5.0 server at
oder allgemeiner
Beispiel 10 Suche nach Webserver-Informationen
intitle:index.of server at
2.2.2.9
Vertrauliche Daten
Diese Art von Suche bezieht sich nicht auf Informationen, die dabei helfen sollen, vertrauliche Daten aufzuspüren, sondern auf die vertraulichen Daten selbst. Dokumente,
die diese enthalten, haben oft das Format „doc“ (welches von Google, Live Search
und Yahoo Search indiziert und gecacht wird) und beinhalten oft typische Phrasen wie eben „vertraulich“. Daher kann eine Suche nach solchen Dokumenten sehr simpel
funktionieren, wie im folgenden Beispiel:
Beispiel 11 Suche nach vertraulichen Dokumenten
filetype:doc intitle:vertraulich
Auf weitere, auf speziellere Ziele ausgerichtete Suchmuster soll hier zunächst nicht
eingegangen werden.
2.2.3
Erweiterung der Google-Hacking-Datenbank / Suche nach
neuen Suchmustern
Die Technik des Google Hackings ist beliebt genug, um eine ganze Community mit
dem Finden von neuen, erfolgreichen Suchmustern zu beschäftigen. Grenzen liegen
1 Programm,
das eine Sicherheitslücke für einen Angriff ausnutzt
11
hier nur in der Kreativität des Einzelnen. Zudem gibt es zu jeder neuen Web-Anwendungs-Version auch neue Muster von Fehlermeldungen, bestimmte Namen von Konfigurationsdateien etc.. Für einen guten Schutz ist es somit wichtig, über alle gängigen
Suchmuster auf dem Laufenden zu sein. Hierzu sollte man sich die Kreativität der
Gemeinschaft zunutze machen und die eigene Datenbank an Suchmustern regelmäßig
aktualisieren und erweitern. Ein Beispiel für die Datenbank einer Google-HackingCommunity findet man unter [ghd07].
Ein sinnvoller Weg, nach neuen Suchmustern zu forschen, ist, mit dem Betrachten einer bekannten Sicherheitsschwäche zu beginnen, zum Beispiel einer bestimmten Webserver-Version. Ein einfaches Beispiel: Angenommen, es ist bekannt, dass die
Datei passwords.pwd des Webservers xy v1.0 nicht ordentlich von der Öffentlichkeit
abgesichert ist. Dann lautet ein passendes Suchmuster: „inurl:passwords.pwd“.
Das systematische Finden sinnvoller Suchmuster wird in Abschnitt 3.4.3 genauer
behandelt.
2.2.4
Exkurs: Die Verwendung von Google als Proxy-Server
Über den Übersetzungs-Dienst von Google kann man sich den Inhalt von Webseiten
anzeigen lassen, ohne sie direkt aufzurufen. Auf der Seite [goob] befindet sich ein Eingabefeld für URLs. Nach Eingabe einer Adresse und Klick auf „Übersetzen“ befindet
sich in der resultierenden URL unter Anderem der Parameter „langpair“. Das Argument lautet an dieser Stelle beispielsweise „en|de“ für eine Übersetzung von Englisch
nach Deutsch. Wenn man dieses in „en|en“ oder „de|de“ ändert, findet keine Übersetzung statt, und der User sieht die Webseite, wie sie im Original aussieht. Unabhängig
von diesem inhaltlichen Aspekt, kann man durch den Übersetzerdienst URLs aufrufen,
ohne von dem zugehörigen Server als Aufrufer registriert zu werden. Als aufrufender
Client wird vom jeweiligen Server ein Google-Server registriert.
2.2.5
Die Suche nach E-Mail-Adressen mittels Google
Das Ziel, E-Mail-Adressen zu finden, kann unterschiedliche Motivationen haben. Für
Versender von E-Mail-Werbung („Spammer“) ist die Motivation offensichtlich. Für
Angreifer eines Firmen-Netzwerkes können Mailadressen wertvoll für Social-Engineering-Attacken oder Ziel für Spionage-Code als Mailanhang sein. Aus diesem Grunde
machen es Google, Yahoo Search und Live Search ihren Usern nicht leicht, Mailadressen zu finden. Die Suche nach dem „@“-Zeichen bzw. Zeichenketten, die dieses beinhalten, bringt auf diese direkte Art und Weise kein Ergebnis. Es existiert allerdings
ein Weg, diese Einschränkung zu umgehen. Johnny Long demonstriert dies durch ein
Perl-Script (siehe [Lon05], S.128-134), welches auf das Sammeln von Mail-Adressen
aus dem World Wide Web und den „Google Groups“ spezialisiert ist. Der Trick besteht
hier darin, die Suche folgendermaßen zu formulieren:
Beispiel 12 Suche nach Mail-Adressen
@domain.com -www.domain.com
Hierdurch werden bei Google Mail-Adressen mit der Endung „@domain.com“ gefunden – allerdings nicht ausschließlich, sondern auch jede beliebige Formulierung, die
mit „@domain.com“ endet. Auch bei Yahoo Search führt diese Art von Suche zu dem
gewünschten Ergebnis, bei Live Search allerdings nicht.
12
Abbildung 2.5: Ergebnis der Suche nach @gmail.com -www.gmail.com
2.3
Weitere Suchmaschinen
Als Alternativen zu Google im Zusammenhang mit Suchmaschinen-Hacking sollten
vor Allem Live Search und Yahoo Search beachtet werden, denn ein wichtiges Kriterium für die Verwendbarkeit stellen Größe und Aktualität der Suchindizes von Suchmaschinen dar. Darüber verlässliche und glaubwürdige Aussagen zu machen ist natürlich
denkbar schwierig. Zudem haben die Marktführer zuletzt damit aufgehört, genaue Informationen darüber zu veröffentlichen. Ergänzend wären noch „Ask“ [ask] und „Exalead“ [exa] zu erwähnen. Ein Aspekt, der insbesondere für eine Automatisierung der
Abfrage eine tragende Rolle spielt, ist das Vorhandensein einer API2 . Auch hier kommen einem die führenden Suchmaschinen entgegen: Google und Live Search mit einer
SOAP3 -API, Yahoo Search mit dem REST4 -Protokoll.
2.3.1
Windows Live Search
Die folgenden Parameter können bei einer Abfrage von Live Search benutzt werden
[ses07]:
• contains: Das Suchergebnis wird auf Seiten eingegrenzt, die auf Dateien verlinken, die den Dateityp haben, der als Parameter angegeben wird.
• filetype: Grenzt das Suchergebnis auf einen bestimmten Dateityp ein.
• inanchor: Der angegebene Suchbegriff muss als Bezeichner einer HTML-AnkerTags in der Seite vorkommen.
• inbody: Der angegebene Suchbegriff muss zwischen dem öffnenden und schließenden HTML-Body-Tag der Seite vorkommen.
• intitle: Der angegebene Suchbegriff muss im HTML-Titel der Seite vorkommen.
• inurl: Der angegebene Suchbegriff muss in der URL der Seite vorkommen.
• ip: Der Host der gefundenen Seite(n) muss die angegebene IP-Adresse haben.
• language: Die Ergebnisseite muss in der Sprache verfasst sein, die durch einen
zwei-Buchstaben-Code als Parameter angegeben wird (Bsp.: de = Deutsch, en =
Englisch)
2 Application
Programming Interface
Object Access Protocol
4 Representational State Transfer
3 Simple
13
• link: Es muss sich auf der Seite ein Link auf die als Parameter angegebene
URL befinden.
• linkdomain: Ein Link auf der Seite muss irgendwo unterhalb der angegebenen
Domain liegen.
• linkfromdomain: Gibt alle Links an, die von Seiten auf der angegebenen Domain auf Seiten außerhalb dieser Domain verweisen.
• loc:, location: Hier kann in Form eines zwei-Buchstaben-Codes angegeben
werden, aus welchem Land die Ergebnisseiten stammen müssen.
• prefer: Verändert die Reihenfolge der Suchergebnisse. Bsp.: „prefer:review“
• site: Die Ergebnisseiten liegen alle unterhalb dieser Domain.
• feed: Es werden Newsfeeds gesucht, die den hier als Parameter angegebenen
Begriff beinhalten.
• hasfeed: Findet Webseiten, die auf Feeds verweisen, die den hier angegebenen
Begriff beinhalten.
• url: Das Ergebnis dieser Anfrage informiert, ob der Inhalt der angegebenen
URL im Index der Suchmaschine gespeichert ist.
Ein sehr nützlicher Parameter, der in dieser Funktionalität bei keiner der anderen
Suchmaschinen vorhanden ist, ist die „ip:“-Suche. Hiermit ist es unter Umständen
möglich, mehrere Domains in einer Suche abzudecken.
2.3.2
Yahoo Search
Die Syntax der Yahoo-Suche ist derjenigen von Live Search und Google sehr ähnlich
[ses07].
• intitle: Wie Live Search.
• site:, domain: Wie „domain:“ bei Live Search.
• link: Wie Live Search.
• linkdomain: Wie Live Search.
• url: Gibt als Suchergebnis den Eintrag genau dieser URL aus der Suchmaschinen-Datenbank wieder – falls vorhanden.
• inurl: Wie Live Search.
• originurlextension: Begrenzt die Ergebnisse auf den angegebenen Dateityp.
• feature: acrobat, applet, activex, audio, flash, form, frame,
homepage, image, index, javascript, meta, script, shockwave,
table, video, vrml – Durch den jeweiligen Parameter wird angegeben, welche Art von Elementen auf der Seite vorhanden sein soll.
14
2.4
Vergleich verschiedener Suchmaschinen bezüglich
ihrer Eignung für Suchmaschinen-Hacking
Grundsätzlich eignen sich die drei Suchmaschinen Google, Yahoo Search und Live
Search ähnlich gut für das Google Hacking. Größe, Verfügbarkeit und Geschwindigkeit sind erfahrungsgemäß ähnlich (wobei die Ähnlichkeit der Größe der Indizes nur
ein Schätzwert sein kann). Zudem stellen alle drei eine API und einen Cache zur Verfügung.
Die Ähnlichkeit der drei Suchmaschinen zeigt sich wohl am deutlichsten in der
Syntax der Anfragen. Die Auswertung der bei der Suche angegebenen Parameter (siehe Abschnitte 2.2.1, 2.3.1 und 2.3.2) hat bei den verschiedenen Suchmaschinen allerdings minimale Unterschiede. So werden von Google bestimmte Parameter, die keinen
inhaltlichen Bezug zu den anderen – in derselben Anfrage angegebenen – Parameter
haben, aber verhindern, dass die Suche Treffer ergibt, missachtet. Die Anfrage nach
„inurl:(queen AND co.uk AND bundeskanzler)“ ergibt bei Google einen Treffer, wobei nur das Wort „queen“ wirklich in der URL auftritt. Entfernt man den Begriff „bundeskanzler“ aus der Anfrage, liefert Google hingegen die erwarteten Treffer
– nämlich Seiten, deren URLs die Zeichenfolgen „queen“ und „co.uk“ enthalten.
Ein (bereits erwähnter) Unterschied der Suchmaschine, welcher relevant für automatisiertes Google Hacking ist, besteht in der Anzahl von Anfragen, die mittels der
jeweiligen API pro Tag möglich sind. Über bestimmte Umwege wie Wechsel der anfragenden IP oder Beschaffung weiterer Lizenzschlüssel lässt sich dies aber ggf. umgehen.
Es stellt sich noch die Frage, ob eine Suchmaschine erfahrungsgemäß mehr Treffer,
die für das Google Hacking relevant sind, liefert als andere Suchmaschinen. Unabhängig davon, dass sich dies im Laufe der Verwendung der drei Suchmaschinen nicht abgezeichnet hat, ist die Frage irrelevant – denn da die Suchmaschinen unterschiedliche
Webcrawler verwenden und unterschiedliche Inhalte in ihren Indizes speichern, ist es
nicht vorhersehbar, ob ein Fund im Index der einen Suchmaschine auftaucht, im Index
der anderen Suchmaschine aber nicht.
Insgesamt hat die Erfahrung gezeigt, dass ein einzelnes Suchmuster aus den verschiedenen Suchmaschinen oft verschiedene, aber gleichermaßen wertvolle (im Sinne
der Erkennung von Sicherheitsschwächen) Ergebnisse zutage fördert. Somit sind die
drei Suchmaschinen im Google Hacking eine sinnvolle Ergänzung füreinander.
2.5
Die Reichweite von Webcrawlern der Suchmaschinen
Das Crawling von Webseiten erfolgt bei Google, Live Search und Yahoo Search nur,
soweit es durch die Konfiguration einer evtl. vorhandenen robots.txt – bzw. im Falle
von Google zusätzlich in einer sitemap.xml (siehe Abschnitt 6.3– erlaubt ist. Google’s
Webcrawler („Googlebot“) ruft – soweit erlaubt – alle URLs oder relativen Links auf,
welche mittels eines HREF- oder SRC-Tags in einer bereits indizierten HTML-Datei
vermerkt sind [gooe]. Zudem werden Links in Shockwave-Flash-Objekten erkannt. Die
Erfahrung zeigt zudem, dass absolute URLs innerhalb von Javascript ebenfalls erkannt
werden. Der Webcrawler von Live Search („Msnbot“) verarbeitet ebenfalls alle wohlgeformten HTML-Link-Tags [livc]. Der Crawler von Yahoo Search („Slurp“) ruft im
15
Gegensatz zu den beiden anderen Suchmaschinen nur Links auf, die in einem HREFTag genannt sind, und beachtet Links in SRC-Tags nicht [yahc].
2.6
Suchmaschinen-Caches und ein Internet-Archiv
Eins der interessantesten – und im Bezug auf Google Hacking auch gefährlichsten –
Features von Google ist der so genannte „Google-Cache“. Dieser Zwischenspeicher
enthält so genannte „Schnappschüsse“ von Seiten, deren Inhalt sich im Google-Index
befindet. Das heißt: Die Grundzüge des Seitenaufbaus und sein gesamter textueller Inhalt werden zum Zeitpunkt des Fundes auf einem Google-Server abgespeichert. Mit
Hilfe des „Cache:“-Operators und einer URL als Parameter kann der Schnappschuss
dann vom Google-User betrachtet werden. Hierbei werden Grafiken, die auf der Seite vorhanden sind, normalerweise vom Original-Server nachgeladen. Der Aufrufer der
Grafiken ist hierbei der User, der den Google-Cache betrachtet. Seine Anonymität ist
somit also nicht geschützt. Das Nachladen der Grafiken kann allerdings durch Anhängen des Parameter „&strip=1“ an die URL des Google-Cache verhindert werden.
Somit erhält der Betreiber der betrachteten Seite keinen Hinweis darauf, dass jemand
die Grafiken evtl. im Zusammenhang mit dem Google-Cache und einer älteren Version seiner Seite betrachtet. Wenn nun ein Google-Hacker durch die Suchmaschine die
URL einer Seite gefunden hat, welche vertrauliche Informationen beinhaltet, kann es
sein, dass der Eigentümer der vertraulichen Informationen das Dokument schon aus
dem Internet entfernt hat, und dieses somit nicht mehr zugänglich ist. Allerdings sind
die vertraulichen Informationen ggf. immer noch im Google-Cache zu finden.
Das gleiche Angebot existiert auch jeweils bei Yahoo Search und Live Search. Die
„Caches“ dieser Anbieter bieten allerdings nicht die Möglichkeit, Grafiken nicht vom
Server des Urhebers des Inhalts nachzuladen. Allerdings bieten die meisten InternetBrowser die Möglichkeit, das Laden von Grafiken komplett abzuschalten. Zudem existiert ein Online-Archiv, welches sich auf das Festhalten von Schnappschüssen beliebiger Webseiten konzentriert hat: Das so genannte „Internet Archive“ [arc] mit seiner
so genannten „Wayback Machine“. Hier finden sich sogar Schnappschüsse zu mehreren Zeitpunkten von zahlreichen Internet-Seiten. Je „populärer“ eine Webseite, desto
mehr verschiedene Zeitpunkte wurden zur Aufnahme eines Schnappschusses gewählt.
Nach eigenen Angaben hat das Internet Archive derzeit etwa 55 Billionen verschiedene
Seiten mit jeweils mehr oder weniger Versionen in seinem Schnappschuss-Archiv. Die
eigene Suchmaschine von Internet Archive, durch welche dieses Archiv durchsucht
werden kann, liefert eher unzuverlässige Ergebnisse – das heißt, dass trotz vorhandenem Schnappschuss einer Seite diese durch die Eingabe eines Stichwortes, welches auf
dieser Seite auftritt, nicht unbedingt gefunden wird. Zum Suchmaschinen-Hacking ist
die Seite daher nur bedingt geeignet. Sollte man allerdings durch Hacking über eine
andere Suchmaschine kritische bzw. vertrauliche Daten gefunden haben, sollte überprüft werden, ob diese Informationen im Internet Archive ebenfalls zu finden sind.
Im Laufe der Arbeit mit den Suchmaschinen entstand die Frage, wie aktuell der
Inhalt der Suchmaschinen-Caches ist. Das heißt: Wie lange dauert es, nachdem ein
Webcrawler einer Suchmaschine eine Webseite gelesen hat, bis der gelesene Inhalt dieser Webseite im jeweiligen Suchmaschinen-Cache erscheint? Hierfür wurde über einen
Zeitraum von 7 Tagen das Abbild der Homepage der Firma T-Mobile in den Caches
der Suchmaschinen betrachtet. Im Quelltext dieser Homepage befindet sich eine Zeitangabe, die anzeigt, zu welchem Zeitpunkt die Seite gelesen wurde. Zu dem Zeitpunkt,
16
zu welchem sich diese Angabe im Cache einer Suchmaschine ändert, weiß man, dass
die Differenz zwischen dem aktuellen Zeitpunkt und dem im Quelltext angegebenen
Zeitpunkt die Dauer ist, die das Suchmaschinen-System benötigt hat, um die eingelesene Information an den Cache zu übermitteln. Die Erfahrungswerte dafür konnten für
Google und Yahoo Search ermittelt werden und sind in Tabelle 2.1 aufgeführt.
Zeit bis zur Aktualisierung
Google
Yahoo Search
Ø
Min.
Max.
45,2h
15,6h
18,8h
2,5h
65,5h
61,5h
Anz. Messungen
4
26
Tabelle 2.1: Zeit zwischen Besuch durch Webcrawler und Aktualisierung des Cache
2.7
Zusammenfassung
In diesem Abschnitt wurde ein grundlegender Überblick über die Techniken des Google Hackings gegeben. Es wurde deutlich gemacht, dass sich nicht nur Google für die
Suche nach sensiblen Informationen eignet, sondern auch einige andere Suchmaschinen, die aufgrund der Syntax der an sie zu sendenden Anfragen ähnliche Möglichkeiten
bieten. Dass dies nicht der einzige Faktor ist, der Einfluss auf die Möglichkeiten des
Hackings mittels Suchmaschinen Einfluss hat, wurde durch einen Blick auf die Webcrawler der Suchmaschinen verdeutlicht.
Ein Aspekt, der eine besondere Dimension der Möglichkeiten des Google Hackings
eröffnet, sind die so genannten Suchmaschinen-Caches. Hier können vollständige Dokumenten-Inhalte zu finden sein, auch wenn sie vom betroffenen Server längst entfernt
wurden.
Im Folgenden wird die Systematisierung und Automatisierung des Google Hackings
beschrieben. Ziel wird hierbei sein, die Grundlage für ein Werkzeug zu schaffen, das
automatisiertes Google Hacking durchführt.
17
Kapitel 3
Vulnerability-Scanning mittels
Google Hacking
3.1
Einleitung
In diesem Kapitel werden die Möglichkeiten für systematische Anwendung von Google Hacking bei der Überprüfung von Webservern auf Verwundbarkeit betrachtet. Es
soll also erörtert werden, ob sich Google Hacking prinzipiell als Methode für das Vulnerability Scanning eignet. Diese Art des Überprüfens von IT-Systemen auf Verwundbarkeit wird dafür zunächst erläutert. Dann wird eine systematische Vorgehensweise
bei einem „Google Scan“ beschrieben. Das betrifft die Planung, Durchführung und
Nachbereitung eines solchen Vorgangs.
Dieses Kapitel soll die Grundlage für die Entwicklung eines automatisierten GoogleHacking-Tools bilden, welche in Kapitel 4 detailliert beschrieben wird.
3.2
Vulnerability Scanning
Im Allgemeinen wird durch einen „Vulnerability Scan“ ein IT-System größtenteils automatisiert auf Anfälligkeiten gegenüber bestimmten Angriffsmustern überprüft. Bei
einem so genannten „Penetrationtest“ hingegen wird ein IT-System auf seine Anfälligkeit gegenüber Angriffen durch größtenteils manuelles Hacking getestet. Hierbei
wird weniger automatisiert gearbeitet, um individuelle Möglichkeiten nutzen zu können, einen erfolgreichen Angriff durchzuführen.
Nach diesem Verständnis der beiden Begriffe wäre automatisiertes Google Hacking
zum Schutz eines Netzwerks somit eher als eine Art Vulnerability Scan zu bezeichnen. Die Automatisierung ist sinnvoll, da die Anzahl der möglichen Google-HackingSuchmuster zu groß ist, als dass sie alle in regelmäßigen Zeitabständen manuell eingegeben werden könnten. Eine automatisierte, in einem festgelegten Zeitintervall durchgeführte Suche nach einer Menge von Suchmustern, die regelmäßig durchgeführt wird,
kann einen Administrator zeitnah zum Auftreten eines Informtionslecks informieren –
ohne dass hierbei für ihn ein zu großer Aufwand entsteht. Hierbei ist wichtig, dass
möglichst alle Treffer der Suche ausgewertet – d.h. in Augenschein genommen und
hinsichtlich ihrer Kritikalität bewertet – werden, und dass der Administrator nicht öfter
als einmal über ein und denselben Fund informiert wird.
18
Für die Bezeichnung einer automatisierten Suche mittels vieler Suchmuster wird
im Folgenden der Begriff „Google-Scan“ verwendet. Ein Google-Scan ist somit das
automatisierte Senden (großer) Mengen von Suchmustern an eine Suchmaschine wie
Google mit nachfolgender Entgegennahme aller Suchergebnisse.
Die Idee des Vulnerability Scanning mittels Google Hacking wurde bereits teilweise von Software-Herstellern oder privaten Entwicklern umgesetzt. Diese Programme
werden kurz vorgestellt. In den weiteren Abschnitten werden die eingangs erwähnten „Google Web Services“ und „Google Alerts“ betrachtet und hinsichtlich ihrer Verwendbarkeit für systematisches Google Hacking bewertet. Abschließend werden – aufbauend auf den Erfahrungen aus den vorhergehenden Kapiteln – die für das „Google“
Hacking verwendbaren Suchmaschinen ebenfalls in Bezug auf diesen Aspekt verglichen.
3.3
Anwendung von Google Hacking
Google Hacking kann in verschiedenen Größendimensionen durchgeführt werden und
verschiedene Zielsetzungen haben - zum Beispiel eher auf allgemeine Verwundbarkeit
eines Severs ausgerichtet, oder aber auf eine spezielle Information. Für einen Vulnerability Scan sind alle prinzipiell möglichen Ziele zu beachten; die Anzahl der Anfragen
an Suchmaschinen wird dabei folglich sehr hoch.
3.3.1
Voraussetzungen
Die Voraussetzungen für angewandtes Google Hacking sind im Allgemeinen sehr gering. Für die Eingabe eines einzelnen Suchmusters in das Eingabefeld einer Suchmaschine genügt ein Internet-Zugang und ein installierter Browser auf dem Computer
des Google Hackers. Geht es allerdings um komplette Google-Scans, sind die Voraussetzungen evtl. etwas höher – jedoch auch nicht bedeutend. Ein systematischer Scan
basiert auf einem Algorithmus. Dieser kann auf verschiedenste Weise implementiert
werden. Wichtig ist, dass das Programm die Fähigkeit besitzt, auf die Web-Dienste
von Google bzw. anderer Suchmaschinen zuzugreifen. Im Falle der Dienste von Live
Search und Google ist hierzu jeweils die Beantragung eines Registrierungsschlüssels
notwendig. Während des Zeitraums der Fertigstellung dieser Diplomarbeit wurde seitens Google die Herausgabe neuer Registrierungsschlüssel jedoch gestoppt [good]. Für
Live Search sind jedoch weiterhin Registrierungsschlüssel erhältlich [livd].
3.3.2
Ziele
Ein Vulnerability Scan bezüglich Google Hacking bzw. ein „Google-Scan“ sollte Antworten auf die folgenden Fragen liefern:
1. Welche sensiblen Informationen oder Angriffspunkte innerhalb des per Internet
zugänglichen Netzwerk-Bereichs bzw. Webauftritts einer Firma lassen sich mittels bestimmter Suchmaschinen entdecken?
2. Welche Suchergebnisse wurden bereits betrachtet und bewertet, bzw. bei welchen Ergebnissen ist dies noch nicht geschehen?
3. Sind Funde von sensiblen Informationen, die schon gemacht (und ggf. bewertet)
wurden, weiterhin in der jeweiligen Suchmaschine verfügbar?
19
Die Lösungsansätze zu diesen Punkten beziehen sich auf die konkrete Implementierung
eines Google-Scans.
Um Punkt 1 zufriedenstellend zu klären, sollten so viele Suchmaschinen wie möglich genutzt werden. Zudem muss eine Möglichkeit gefunden werden, auch die öffentlich zugänglichen Informationen zu finden, welche zwar noch nicht in einen öffentlichen Suchindex aufgenommen wurden, aber theoretisch gefunden und dort aufgenommen werden könnten. Um alle potentiellen Angriffspunkte zu erkennen, ist es
wichtig, eine möglichst umfassende und aktuelle Liste von möglichen Suchmustern
einzusetzen. Hierbei sollte grundsätzlich klar sein, dass man wohl niemals eine wirklich vollständige Liste von Suchmustern haben wird. Somit sollte eine Strategie zur
regelmäßigen Aktualisierung der Liste verfolgt werden.
Für Punkt 2 ist eine sinnvolle Methode für den Vergleich zwischen bereits betrachteten und bewerteten Funden, und den stetig weiter auftretenden Funden notwendig. Die Bewertung eines Fundes sollte aussagen, welche Gefahr von ihm ausgeht,
bzw. implizieren, welche Maßnahmen zum Schutz vor dieser Gefahr einzuleiten sind.
Von den Suchmaschinen erhält man auf eine Anfrage eine Menge von Kombinationen
aus URLs, Seiten-Fragmenten und Titel-Beschriftungen. Falls der Inhalt des SeitenFragments und des Titels in Kombination mit einer bestimmten URL sich zu einem
späteren Zeitpunkt eines Fundes im Vergleich zum vorherigen Zeitpunkt nicht geändert
haben, ist davon auszugehen, dass sich auch der Inhalt der Seite im Index der Suchmaschine nicht geändert hat. Diese Annahme wird aus Effizienzgründen getroffen, da
eine weitergehende Untersuchung eines jeden Wiederauftritts eines Fundes in der Praxis wohl kaum zu bewältigen wäre. Eine Bewertung eines Fundes ist erfahrungsgemäß
kaum automatisiert zu bewältigen, sondern erfordert stets einen geschulten Administrator oder Experten für Web-Sicherheit. Ein gewisses Maß an personellem Aufwand
ist somit nicht zu vermeiden. Falls also eine Kombination aus URL, Seiten-Fragment
und Seitentitel zu einem Zeitpunkt gefunden wird, zu welchem dieselbe Kombination
bereits gesichtet und bewertet worden ist, sollte diese Bewertung für den neuen Fund
übernommen werden.
Punkt 3 hat vor allem in den Fällen eine hohe Bedeutung, in denen sich die gefundenen Informationen im Suchmaschinen-Index nicht auf eine Sicherheitslücke beziehen,
die leicht zu schließen ist, sondern so sensibel sind, dass sie zu keinem Zeitpunkt an
die Öffentlichkeit gelangen sollten (wie etwa geheime Firmendokumente). Das Datum
des letzten Fundes sollte somit stets aktualisiert und zur leichten Betrachtung verfügbar
sein.
3.4
Ablauf des Google-Scans
Ziele eines Vulnerability-Scans mittels Google Hacking sind Webseiten, Web-Anwendungen und Computer-Netzwerke, was im Folgenden unter dem Begriff „IT-Systeme“
zusammengefasst wird.
Ein Google-Scan eines IT-Systems bezüglich Google Hacking erfordert Vorarbeit.
Hinsichtlich Punkt 1 der Liste aus Abschnitt 3.3.2 müssen noch folgende Punkte müssen geklärt werden:
1. Welche Domains sollen untersucht werden?
2. Wo außerhalb der ausgesuchten Domains laufen Webapplikationen bzw. gibt es
sensible Informationen, die geschützt werden sollen? Gibt es also weitere Domains oder URLs, die einbezogen werden sollten?
20
3. Welche Suchmuster sollten sinnvollerweise für den Scan benutzt werden?
4. Welche Suchmaschinen sollten verwendet werden?
5. Welche kurzfristigen Maßnahmen sind nach einem kritischen Fund einzuleiten?
6. Wie können sensible Informationen schon entdeckt werden, bevor sie in öffentliche Suchindizes aufgenommen werden?
Diese Punkte sollen in den folgenden Abschnitten im Einzelnen geklärt werden. Um
die bestehenden Möglichkeiten im Google Hacking genauer zu sehen, wird zunächst
einleitend in Abschnitt 3.4.1 geklärt, welche Einschränkungen hier bestehen. Punkte
1 und 2 werden in Abschnitt 3.4.2 behandelt, Punkt 3 in Abschnitt 3.4.3. Zu Punkt 4
wurde bereits in Abschnitt 2.3 erläutert, warum zum jetzigen Zeitpunkt Live Search
und Yahoo Search als Ergänzung zu Google zu empfehlen sind. Diese Empfehlung
kann sich im Laufe der Zeit und Marktentwicklung natürlich ändern.
Unter Berücksichtigung der weiteren Punkte aus Abschnitt 3.3.2 wird in Abschnitt
3.4.4 ein langfristiger Ablaufplan für einen Vulnerability Scan entwickelt. Auch in diesem langfristigen Plan stellt sich stets erneut die Frage, wie Funde als kritisch erkannt
und bewertet werden können. Um diesen entscheidenden Punkt geht es in Abschnitt
3.4.6. Zu Punkt 5 aus der obigen Liste werden Empfehlungen in Abschnitt 3.4.7 gegeben.
Der sich aus dem Gesamtablauf ergebende Aufwand wird separat in Abschnitt 4.3
betrachtet. Punkt 6 bezieht sich bereits auf eine präventive Abwehrmaßnahme gegen
Google Hacking (siehe Kapitel 6) und wird daher in Abschnitt 6.2 behandelt.
3.4.1
Probleme / Einschränkungen des Google Hackings
Durch die Suchmaschinen Google, Yahoo Search und Live Search können nicht alle
Elemente aus dem Quellcode von Webseiten gefunden werden. Bis auf den rein textuellen Inhalt, Hyperlinks, den Titel und die URL einer Seite betrifft dies alle anderen
HTML-Tags oder Script-Bestandteile. Somit können beispielsweise keine Eingabeformulare gesucht werden.
Eine weitere, stets präsente Einschränkung besteht in der Unvollständigkeit der Suchindizes. Ein Suchindex ist immer nur so aktuell, wie es die Arbeitsgeschwindigkeit
seines zugehörigen Webcrawlers zulässt, bzw. von der Frequenz der Besuche des Webcrawlers auf allen relevanten Webseiten. Außerdem hängt die Vollständigkeit des Suchindexes immer von den Fähigkeiten zur Link-Erkennung durch den Webcrawler ab.
Spezielle Link-Formate in Javascripts, Flash-Objekten oder anderen Inhalten werden
vielleicht nicht momentan, aber möglicherweise in zukünftigen Versionen des Crawlers
erkannt.
Zudem können nicht alle Dokumenten-Formate zuverlässig erkannt werden.Von
Google beispielsweise werden txt, pdf, ps, doc, xls, ppt, rtf und weitere Formate unterstützt, wobei diese Fähigkeiten laut Google kontinuierlich erweitert werden. Dennoch
werden beispielsweise textuelle Inhalte von Bildern nicht in den Inhalt aufgenommen.
Eine Grenze des Google Hacking besteht zudem in der Anzahl von Suchmustern,
die an die Suchmaschine gesendet werden dürfen. Diese Restriktion wurde von jeder
der drei hier betrachteten Suchmaschinen unterschiedlich gesetzt:
• Google: 1 Lizenzschlüssel pro Person; 1000 Anfragen pro Tag und Lizenzschlüssel
21
• Live Search: 1 Lizenzschlüssel pro Person; 10000 Anfragen pro Tag, Lizenzschlüssel und anfragender IP
• Yahoo Search: 5000 Anfragen pro Tag und anfragender IP
Die Limitation der Anzahl von Anfragen kann also in den Fällen von Live Search und
Yahoo durch die Verwendung verschiedener IPs abgeschwächt werden.
3.4.2
Finden aller relevanter Domains bzw. Webapplikationen
Zum Finden aller für das Google Hacking bzgl. einer bestimmten Firma relevanten
Domains gibt es verschiedene Vorgehensweisen:
• Information durch eine zentrale Domainverwaltung
• Erkennen Unternehmens-eigener Webseiten durch spezielle Merkmale
• Nutzung einer Domain-Suche wie beispielsweise „Domaxx“ [dom]
Gerade bei einem größeren Unternehmen ist oft nicht klar, welche Domains zu ihm
gehören bzw. auf welchen Domains Anwendungen des Unternehmens laufen, oder auf
welchen Internetseiten Informationen zu finden sein könnten, die für das Unternehmen sensibel sind. Da aber ein Vulnerability-Scan mittels Google Hacking stets auf
bestimmte Domains eingeschränkt werden sollte, ist es wichtig, alle relevanten Domains zu kennen und mit einzubeziehen. Hilfreich wäre an dieser Stelle, wenn alle
Domains, welche vom Unternehmen oder in Projekten eines Unternehmens eingesetzt
werden, an einer zentralen Stelle verwaltet werden. Aber dies ist in der Praxis nicht
immer der Fall. Ähnlich zu dieser Herangehensweise ist die Idee, beispielsweise bei
der DENIC [denb] oder ICANN [ica] die Information einzuholen, welche Domains auf
das Unternehmen registriert sind. Im allgemeinen wird diese Art von Anfrage jedoch
nicht ermöglicht (siehe [dena]). Ein freier Zugriff auf eine WHOIS-Datenbank könnte
das Problem jedoch lösen.
Eine Idee wäre, alle Webseiten eines Unternehmens durch eine bestimmte, in den
Text integrierte Zeichenfolge – eine Art Wasserzeichen – kenntlich zu machen. In der
Praxis könnte dies eine Hilfe darstellen, doch könnte man auch hierbei nicht davon
ausgehen, wirklich alle relevanten Seiten zu finden. Für Inhalte, die unbeabsichtigt in
die Öffentlichkeit gelangten, könnte man nicht von einer vorherigen Kennzeichnung
ausgehen. Zudem könnte diese Markierung eine Hilfe für potentielle Angreifer darstellen.
Der Ansatz, etwa über die Google-Bildersuche nach dem Dateinamen eines Firmenlogos zu suchen, führt zu keinem sinnvollen Ergebnis, wie die Suche nach „tmobile-logo.gif“ zeigt. Die hier gefundenen Webseiten gehören nur in einem geringen Anteil wirklich zu der Firma T-Mobile.
Eine weitere Idee ist die Suche nach Stichworten innerhalb von Domainnamen, was
zum Beispiel mit der speziellen Domain-Suchmaschine „Domaxxx“ [dom] möglich ist.
Die Möglichkeit der Suche nach Stichworten innerhalb von Domainnamen wird von
Google, Yahoo Search und Live Search nicht geboten.
3.4.3
Finden sinnvoller Suchmuster
Grundsätzlich gibt es verschiedene Wege, Suchmuster zu finden, die für einen GoogleScan sinnvoll sind. Diese sind im Wesentlichen:
22
1. Verwendung aller bekannten Suchmuster
2.
(a) „Schüsse ins Blaue“
(b) Verwendung charakteristischer Muster von relevanten Treffern nach Schüssen ins Blaue
3. Untersuchung von Webapplikationen und Anpassung von StandardSuchmustern
4. „Leetspeech“-Varianten von Domainnamen
In einem umfassenden Vulnerability Scan gilt grundsätzlich, dass man stets das Unerwartete erwarten sollte. Die gefährlichsten Sicherheitslücken sind oft diejenigen, von
deren Existenz man noch nicht mal etwas ahnt. Darum sollten stets alle Suchmuster
eingesetzt werden, die zur Verfügung stehen. Als Basis für eine Sammlung an Suchmustern bietet sich die Google Hacking Database (GHDB) [ghd07] der Community
um Johnny Long an.
Der „Schuss ins Blaue“ klingt zunächst nach einer unzuverlässigen Methode, um
systematisch Sicherheitsschwächen auf die Spur zu kommen. In der Praxis sollte sie
allerdings nicht unterschätzt werden, da hierdurch auch solche Schwächen oder sensible Informationen gefunden werden können, die von den bekannten Suchmustern nicht
erfasst werden können. Ein Beispiel für den Schuss ins Blaue ist das folgende Suchmuster:
Beispiel 13 Suche nach beliebigen Subdomains
site:domain.de -www.domain.de
Was dieses Suchmuster findet, sind alle Subdomains der Domain „domain.de“ –
ausgenommen „www.domain.de“. Die Suche bezieht sich also keinesfalls auf Sicherheitsschwächen oder sensible Daten. Jedoch kann sie erstens Aufschluss darüber geben, welche bisher womöglich unbeachteten Webanwendungen auf den Firmendomains laufen. Zweitens kommt es in der Praxis regelmäßig vor, dass eine dermaßen
unspezifische Suche überraschende Fehlermeldungen oder unerwartete Offenlegungen
privater Daten zu Tage fördert, welche eben durch die bisher eingesetzten Suchmuster
nicht gefunden werden konnten. Auf Basis dieser neuen Funde können dann spezifiziertere Suchmuster erstellt und in zukünftigen Scans eingesetzt werden.
Eine weitaus systematischere Art des Findens sinnvoller Suchmuster liegt in der
Analyse vorhandener und bekannter Webapplikationen. Ein Beispiel: Angenommen,
eine Firma besitzt auf ihrer Website ein Portal, auf welchem sich Geschäftskunden
einloggen können, um Bestellungen vorzunehmen. Der HTML-Code dieses Portals
könnte u.a. den folgenden Ausschnitt beinhalten:
Beispiel 14 Code-Fragment eines Login-Portals
<form name="login" type="GET">
<input type="text" name="id">
<input type="password" name "pword">
<button type="submit">Login</button>
</form>
23
Aus den Namen der beiden Input-Felder ergeben sich Ansätze für die Suche. Wie man
in diesem Falle deutlich sieht, erlaubt das Formular die Übertragung der Login-Daten
durch die „GET“-Methode. Somit ist es möglich, Daten mittels einer URL an das Formular zu übergeben. Ein Kunde könnte seine Login-Daten also als Link ablegen. Das
wäre natürlich genauso wenig im Interesse des Kunden, wie in dem der Firma, wenn
man den Sicherheitsaspekt betrachtet. Finden könnte man solche Links beispielsweise
durch das folgende Suchmuster:
Beispiel 15 Spezialisierte Suche nach Zugangsdaten
site:firmenname.de inurl:pword
Als Nächstes sollte untersucht werden, welche Software auf den Hosts der Webserver installiert ist, auf welchen die Inhalte zu den relevanten Domains liegen. Zu jeder
Software gibt es normalerweise eine Menge von typischen Fehlermeldungen. Manche
dieser Fehlermeldungen können Informationen preisgeben, die etwas über die innere
Struktur eines Servers verraten. Ein Beispiel dafür ist PHP, die Basis vieler Webseiten.
Beispiel 16 PHP-Fehlermeldung
Fatal error: Call to undefined function:
exif_read_data() in E:\Webpool\Album01\showpic.php
on line 91.
Wie man an Beispiel 16 sehen kann, ist bei einer vorhandenen PHP-Installation die
Suche nach „Fatal Error:“ also ein sinnvoller Ansatz, um Fehlermeldungen aufzuspüren, die sensible Informationen veröffentlichen.
Die Suche nach so genannten „Leetspeech“-Varianten von Domainnamen eines
Unternehmens ist keine Art von Suchmuster, wie sie von Google-Hackern verwendet
wird, um Informationen zu finden, die auf den Servern des Unternehmens liegen. Vielmehr können diese Domainnamen die Basis für Phishing-Attacken bilden, indem beispielsweise ein Login-Portal vorgetäuscht wird, auf welchem Firmenkunden zur Eingabe ihrer Login-Daten aufgefordert werden. Die Leetspeech-Schreibweise soll hierbei
der Original-Schreibweise möglichst ähnlich sehen und optisch nicht unterscheidbar
sein. Dies wird ansatzweise in Beispiel 17 deutlich, in welchem in der gefälschten
Version der Domain das „l“ durch eine „1“ ausgetauscht wurde. Bei Verwendung von
anderen Zeichensätzen kann der sichtbare Unterschied deutlich geringer ausfallen.
Beispiel 17 Optische Fälschung eines Domainnamens
Original: http://www.t-mobile.de
Fälschung: http://www.t-mobi1e.de
Die Suche nach solcherlei Domains ist allerdings auch ohne Hilfe von Google ohne
großen Aufwand automatisiert durchführbar und spielt hier daher eher eine untergeordnete Rolle.
3.4.4
Langfristiger Ablaufplan
Google Hacking bezüglich des eigenen Web-Inhalts eines Unternehmens sollte sinnvollerweise ein langfristiger, ständig überprüfender Vorgang sein. Maßgeblich für die
24
Anzahl der täglich durchgeführten Anfragen kann die Limitation an durchführbaren
Anfragen an eine Suchmaschine pro Tag sein. Allerdings wäre es prinzipiell denkbar, dass nicht unbedingt jeden Tag ein kompletter Scan einer Suchmaschine durchgeführt werden muss. Ein erneuter Scan ist schließlich nur dann sinnvoll, wenn die Daten
im Index der Suchmaschine von denen zum letzten Zeitpunkt der Durchführung eines Scans abweichen. Also sollte zwischenzeitlich der Crawler der Suchmaschine den
Inhalt des zu schützenden Servers erneut indiziert haben. Wie oft dieser Crawler das
tut, ist – mit Ausnahme von Google, da dort eine Kontrollmöglichkeit mit Hilfe der
sitemap.xml besteht – schwierig vorherzusagen. Ein Crawler kann allerdings beim Indizieren des Web-Inhalts eines Servers erkannt werden, da das Feld „User-Agent“ im
HTTP-Header ihrer Anfragen jeweils charakteristische Bezeichnungen enthält, oder
der Crawler von bestimmten IPs aus agiert. Denkbar wäre also, das regelmäßige Scannen der Suchmaschinen so zu organisieren, dass ein neuer Scan genau dann fällig wird,
wenn ein erneuter Besuch durch einen Webcrawler der Suchmaschinen aufgetreten ist.
Allerdings setzt dies voraus, dass die Crawler ihre Bezeichnungen tatsächlich stets in
Form der „User-Agent“-Information übermitteln oder eine feste bekannte Menge von
IPs verwenden. Sie müssten also immer identifizierbar sein. Zudem müsste bekannt
sein, wie lange es nach Besuch eines Webcrawlers dauert, bis die neu gesammelten
Informationen im Suchmaschinen-Index bzw. -Cache verfügbar sind. Für diese Zeitdauer könnte man einen Erfahrungswert verwenden. In Tabelle 2.1 sind einige dieser
Erfahrungswerte zu sehen.
Langfristig wird für die Suchmaschinen-Scans der Algorithmus aus Abbildung 3.1
durchgeführt. Hierbei sind für die beiden äußeren Schleifen alternative Definitionen
angegeben – je nach Planungsweise neu durchzuführender Scans. Durch den Teil von
Z.15-23 des Listings wird dauerhaft sichergestellt, dass jeder Fund mindestens einmal
betrachtet und bewertet wird. Dieser Algorithmus in Pseudocode soll allerdings nur
einen ersten Eindruck von der langfristigen Vorgehensweise vermitteln und ist daher
nicht vollständig. Eine konkrete Implementierung (mit der ersten Variante der äußeren
Schleifen) ist in Listing A.1 zu sehen.
3.4.5
Tiefe der Suche
Durch die Suchmaschinen wird nach einer Anfrage stets nur eine begrenzte Menge von
Treffern als Antwort geliefert. Angenommen eine Anfrage ergibt 10.000 Treffer. Von
Google erhielte man nach einer Anfrage nur 10 Ergebnisse innerhalb einer Antwort (in
der Web-Schnittstelle der Google-Suche kann dieser Wert zwar auf 100 erhöht werden;
das ist bei der SOAP-Schnittstelle, auf die man im automatisierten Google-Hacking angewiesen ist, allerdings nicht möglich.). Inkrementell können nun Treffer 11-20, 21-30,
usw. durch weitere Anfragen geliefert werden. Obwohl es nun aber (laut Angaben der
Suchmaschine) insgesamt 10.000 Treffer gibt, können Treffer, die über die 1000. Stelle
(im Einzelfall bis ca. 200 Stellen darunter) hinausgehen, nicht mehr abgerufen werden.
Diese Limitierungen sind bei den Suchmaschinen unterschiedlich: Um ein IT-System
also wirklich vollständig zu durchsuchen, muss man berücksichtigen, ggf. bis zu 1000
Treffer pro Anfrage zu untersuchen. Dies kann allerdings im Falle eines ungenauen
Suchmusters oder einer unerwartet ungenauen Reaktion der Suchmaschine (was in der
Praxis durchaus der Fall sein kann) zu sehr vielen Falschtreffern führen, was den Aufwand für die Bewertung der Treffer zu hoch werden ließe. Die „Tiefensuche“ bis zur
Grenze von 1000 Treffern sollte also nur durchgeführt werden, wenn aus Erfahrung gesagt werden kann, dass nicht zu viele Falschtreffer geliefert werden, die den Aufwand
zu sehr erhöhen würden. Um Verwundbarkeiten zu finden, die durch die in der Da25
1
2
3
/ / Entweder :
Für j e d e n f e s t g e l e g t e n I n t e r v a l l a b s c h n i t t {
Für j e d e Suchmaschine {
4
5
6
7
8
/ / Oder :
Zu jedem Besuch e i n e s W e b c r a w l e r s + e r f a h r u n g s g e m ä ß e W a r t e z e i t
b i s Informationsaufnahme in Index {
F ü r d i e zum W e b c r a w l e r g e h ö r i g e S u c h m a s c h i n e {
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/ / In j e d e r Variante :
F ü r j e d e r e l e v a n t e Domain {
Für j e d e s bekannte Suchmuster {
F a l l s A n f r a g e n −L i m i t n i c h t d u r c h b r o c h e n {
S t e l l e A n f r a g e an S u c h m a s c h i n e ;
Für j e d e n T r e f f e r {
Ü b e r p r ü f e , ob T r e f f e r b e r e i t s g e s i c h t e t und
bewertet ;
Falls ja {
Übernehme B e w e r t u n g f ü r d i e s e n a b e r m a l i g e n
Treffer ;
}
Sonst {
Sende A u f f o r d e r u n g an A d m i n i s t r a t o r , den T r e f f e r
zu b e w e r t e n ;
}
}
}
}
}
}
}
Abbildung 3.1: Ablaufplan Google Scanning in Pseudocode
26
Anzahl
gelieferter
Treffer pro Anfrage
Google SOAP-API
Live Search SOAPAPI
Yahoo Search RESTAPI
10
50
Obere Grenze der
Stellenpositionen
gelieferter Treffer
1000
1000
100
1000
Tabelle 3.1: Limitierung der Anzahl gelieferter Ergebnisse
tenbank vorhandenen Suchmuster nicht abgedeckt werden, ist es allerdings durchaus
empfehlenswert, dieses Risiko der großen Mengen von Falschtreffern zumindest probehalber bewusst für alle Suchmuster einzugehen. Um in diesem Fall alle möglichen
Falschtreffer zu erhalten, sollte hierbei auch das Leerzeichen als Suchmuster miteinbezogen werden.
3.4.6
Analyse der Ergebnisse
Ein wesentlicher Schritt des Ablaufs eines Google-Scans, wie in Abschnitt 3.4.4 skizziert, ist die Aufforderung an den Administrator, den Treffer zu bewerten. Das menschliche Urteilsvermögen in Bezug auf die Gefährlichkeit eines Fundes ist also ein Punkt,
an welchem sich entscheiden kann, ob das langfristige Google Scanning gelingt – oder
scheitert. Nach welchen Kriterien sollte ein Fund also bewertet werden? Wir betrachten
einführend ein paar beispielhafte Suchmuster und Fragmente von Webseiten, welche
nach Anfrage durch das Suchmuster als Funde geliefert wurden.
Beispiel 18 Fund einer unklaren Fehlermeldung
Suchmuster: Warning: Cannot
Fragment:
Warning: Cannot modify header information - headers
already sent eExhibitions Portal - Home <b>Warning:
Cannot modify header information - headers already
sent</b> by (output <b>...</b> <br> <b>Warning: Cannot
modify header information - headers already sent</b> by
(output <b>...</b>
In Beispiel 18 ist eine Fehlermeldung zu sehen, die zunächst keine sensiblen Informationen preiszugeben scheint und daher harmlos wirken könnte. Trotzdem sollte ein
Fund dieser Art nicht ohne weitere Untersuchung als harmlos eingestuft werden. Wenn
man diese durchführt, erkennt man, dass eine Fehlermeldung dieser Art beispielsweise
von einem PHP-Script generiert werden kann. Üblicherweise ist hier auch eine Pfadinformation mit inbegriffen. In diesem Fragment ist sie zwar nicht zu sehen, aber im
Google-Cache wahrscheinlich verfügbar. Daher sollte dieser Fund vor einer weiteren
Untersuchung als „auffällig“ eingestuft werden.
Beispiel 19 Fund eines Login-Portals
Suchmuster: intitle:login
27
Fragment:
Contenido 4.6.8 Login. Login:. Password:. Language:
. German (Germany), English (United States)
Ein Teil eines Login-Portals als Fund über eine Suchmaschine wie in Beispiel 19
stellt noch keine direkte Bedrohung für den zugrundeliegenden Server dieses Portals
dar. Allerdings können Login-Portale stets Startpunkte von Angriffsversuchen sein. Im
Falle des Beispiels bieten sich aufgrund der gegebenen Informationen sogar mehrere
Angriffsstrategien an: Das Erraten von Zugangsinformationen oder das Ausnutzen einer evtl. bekannten Sicherheitslücke des Content-Management-Systems Contenido in
der Version 4.6.8. Somit ist dieser Fund in mindestens einer Hinsicht kritisch.
Beispiel 20 Fund einer Verzeichnisstruktur
Suchmuster: intitle:Index of
Fragment:
[DIR] Parent Directory - [DIR] debian/ 15-Oct-2005 14:53 - [DIR]
freebsd/ 15-May-2005 16:35 - [DIR] linux/ 31-May-2005 23:23
- [DIR] windows/ 15-May-2005 ...
In Beispiel 20 wurde im Index der Suchmaschine der Inhalt eines Verzeichnisses
gefunden. Bei einem solchen Fund sollte man zunächst klären, ob die Auflistung eines
Verzeichnis-Inhalts beabsichtigt ist oder nicht. Solange die Auflistung nicht explizit beabsichtigt ist, sollte sie vermieden werden. Konkrete Begründungen für die Gefahr, die
von einer genauen Verzeichnisauflistung zum Zeitpunkt des Fundes ausgeht, müssen
für diese Einschätzung nicht unbedingt vorliegen, denn sie könnte beispielsweise erst
zu einem späteren Zeitpunkt Aufschluss über die Arbeitsweise einer dann installierten
Web-Applikation geben. Dann wäre diese Fehlkonfiguration des Webservers möglicherweise schädlich. Es ist also in diesem Fall evtl. noch Zeit, zukünftige Schäden zu
vermeiden. Der Fund ist vorsorglich als kritisch einzustufen.
Beispiel 21 Fund von Login-Informationen
Suchmuster: inurl:passwd
Fragment:
Try the following hints. , Is the Caps Lock or A light on
your keyboard on? If so, hit Caps Lock key before trying
again. ...
URL des Fundes:
n16.login.scd.yahoo.com/config?login=E_Shaw&passwd=bubbles
Das in Beispiel 21 gefundene Passwort ist offenbar nicht gültig, wie das angezeigte Fragment des Fundes impliziert. Allerdings bedeutet dieser Fund dennoch, dass
dieser oder mehrere Benutzer-Accounts der betreffenden Anwendung in Gefahr sind.
Dieser Account im Speziellen ist gefährdet, da es durch das gegebene (falsche) Passwort evtl. vereinfacht wird, auf das gültige, vielleicht ähnliche Passwort zu schließen.
Alle Accounts des Systems sind in Gefahr, da weitere Login-Informationen auf dieselbe Art und Weise wie diese hier in den Index der Suchmaschine geraten könnten. In
diesem Falle ist die Ursache für diesen Vorfall sowohl bei dem Eigentümer des Benutzeraccounts als auch bei dem Betreiber des Login-Portals zu suchen. Die URL kann
nur in den Index der Suchmaschine geraten sein, indem sie als Link auf einer dem
28
Webcrawler der Suchmaschine zugänglichen Seite platziert wurde. Hierfür muss der
Benutzer oder eine weitere beteiligte Person verantwortlich gemacht werden. Dass es
überhaupt Nutzen ergibt, Links dieser Art zu erstellen, liegt allerdings an dem Betreiber des Login-Portals, welches das GET-Verfahren für die Annahme der Login-Daten
zulässt. Aufgrund beider Missstände ist der Fund als kritisch einzustufen.
Beispiel 22 Fund einer Versions-Information
Suchmuster: intitle:index.of Apache server at
Fragment:
archive.<b>apache</b>.org. This <b>site</b> contains the
historical archive of old software <br> releases. <b>...</b>
<b>Apache</b> /2.3.0-dev (Unix) <b>Server at</b> archive.
<b>apache</b>.org Port 80.
Informationen über die Version einer serverseitigen Anwendung zu veröffentlichen,
gehört in vielen Fällen zu ihrer Standardkonfiguration. Wünschenswert ist dies allerdings so gut wie nie, da eine Versionsinformation erlaubt, gezielt nach passenden Exploits zu suchen und damit evtl. einen erfolgreichen Angriff durchzuführen. Ein Fund
wie in Beispiel 22 ist somit in den meisten Fällen als äußerst kritisch einzustufen.
Wie diese Beispiele ahnen lassen, gibt es nahezu unzählige verschiedene Funde,
die – indirekt oder direkt – eine Gefahr für einen Webserver darstellen. Um diese Gefahr einschätzen zu können, ist eine Kenntnis der in der Google Hacking Community
gängigen Suchmuster sehr hilfreich. Die Person, welche die Funde eines Google-Scans
evaluiert, muss wissen, was ein böswilliger Google-Hacker suchen könnte, bzw. welche Funde für einen Angreifer im Allgemeinen Sinne hilfreich sein könnten.
Für einen effizienten, langfristigen Ablauf eines Google-Scans ist es sinnvoll, dass
jede Kombination aus URL und zu dieser URL geliefertem Fragment und Seitentitel nur ein einziges Mal bewertet werden muss und nicht bei jedem Durchlauf des
Scans erneut. Dies lässt sich durch entsprechende Programmierung leicht einrichten.
Jedoch ist es vereinzelt der Fall, dass sich zwei Funde nur durch eine Session-ID in der
URL unterscheiden. Dies kommt vor, wenn eine Seite, welche bei jedem Besuch eine
Session-ID vergibt, mehrmals von dem Webcrawler einer Suchmaschine besucht wird.
Die bei jedem Besuch erneuerte Session-ID wird dabei in den Index der Suchmaschine
übernommen. Somit ist es sinnvoll, dem Benutzer bei einem Google-Scan die Möglichkeit zu geben, den Vergleich mehrerer Funde toleranter zu gestalten, also in diesem
Fall einen bestimmten Parameter einer gefundenen URL bei zukünftigen Vergleichen
nicht zu beachten.
Der nächste Schritt nach der Bewertung eines Fundes als gefährlich ist das Ergreifen von Gegenmaßnahmen.
3.4.7
Kurzfristige Maßnahmen nach einem Fund
Nach einem Sicherheits-relevanten Fund sind sowohl kurzfristige, als auch langfristige
Maßnahmen notwendig. Die kurzfristigen Maßnahmen beziehen sich auf Schadensbegrenzung: Die offengelegten Informationen müssen entfernt oder unschädlich gemacht
werden. Daraus folgende, langfristige Maßnahmen beziehen sich auf das Verhindern
abermaligen Vorkommens einer Offenlegung von Informationen dieser Art. In diesem
Abschnitt geht es um die kurzfristigen Maßnahmen. Wie langfristiger Schutz erreicht
wird, wird in Kapitel 6 erläutert.
29
Art des Fundes
Index von Verzeichnissen
Login-Daten
Login-Portale
Persönliche Daten
Kreditkartennummern
Fehlermeldungen
Logdateien
Web-Schnittstellen
von
Hardware
Versions-Informationen
Gegenmaßnahme(n)
Ändern der Verzeichnisstruktur, Verhindern der
Auflistung des Inhalts durch Rekonfiguration
des Servers, Entfernen des Inhalts aus dem
Suchmaschinen-Index
Ändern der Login-Daten, Rekonfiguration des
Portals, Verhinderung des Zugriffs
Entfernung
der
Information
aus
dem
Suchmaschinen-Index, Rekonfiguration robots.txt
Verhinderung des Zugriffs, Entfernung aus dem
Suchmaschinen-Index
Verhinderung des Zugriffs, Kreditkarte deaktivieren
Rekonfiguration des Servers, Entfernung aus dem
Suchmaschinen-Index
Verhinderung des Zugriffs, Entfernung aus dem
Suchmaschinen-Index
Verhinderung des Zugriffs, Entfernung aus dem
Suchmaschinen-Index
Änderung der Version und Belassen der Information im Suchmaschinen-Index. Oder: Absicherung
gegen evtl. existierende Exploits (Mittels Update oder – falls möglich – eines eigenen Workarounds) und Entfernung der Information aus dem
Suchmaschinen-Index
Tabelle 3.2: Funde und Gegenmaßnahmen
Bei den verschiedenen Arten von Funden sind unterschiedliche Gegenmaßnahmen
möglich und/oder sinnvoll. Ein nahe liegender, aber nicht unbedingt sinnvoller Schritt
ist das in-die-Wege-leiten einer Entfernung der sensiblen Information(en) aus dem Index bzw. Cache der jeweiligen Suchmaschine. Es kann eben gerade das Belassen der
Information in dem Index ein sinnvoller Schritt sein – etwa in dem Fall der Offenlegung
einer Versions-Information. Falls eine Gegenmaßnahme darin besteht, die entsprechende Software auf eine andere Version zu aktualisieren und die Versions-Information
zu verstecken, kann es zur Irreführung von Angreifern durchaus sinnvoll sein, eine
(falsche) Versions-Information weiterhin der Öffentlichkeit zur Verfügung zu stellen.
Der Nutzen einer Gegenmaßnahme muss also sowohl in Bezug auf die Art der Sicherheitsschwäche, als auch in Bezug auf die anderen Gegenmaßnahmen betrachtet
werden. Bevor man in Erwägung zieht, Suchmaschinen-Betreiber mit dem Ziel der
Entfernung von Informationen aus dem Index zu kontaktieren, sollte stets die Möglichkeit betrachtet werden, dass die Informationen bereits von potentiellen Angreifern
gesehen wurden (Worst-Case-Fall). Wenn allerdings ein auf diesen Informationen basierender Angriff nicht wirkungsvoll verhindert werden kann – oder die Informationen
keine Hilfe bei einem Angriff, sondern allgemein privater Natur sind – sollte nach dem
Motiv „Besser spät als nie“ die möglichst baldige Entfernung der Information aus dem
Index angestrebt werden. Hier eine Auflistung aller prinzipiell möglichen, kurzfristigen
Maßnahmen.
30
• Kontaktierung des Suchmaschinen-Betreibers bzgl. Entfernung des Inhalts aus
dem Suchmaschinen-Index
• Schließen der Sicherheitslücke durch Rekonfiguration:
– Verstecken von Versions-Informationen
– Ändern der Pfadstruktur eines Servers
– Aktualisierung von Software
– ...
• Entwertung der gestohlenen Information:
– Ändern von Passwörtern
– Deaktivieren von Kreditkarten
– ...
Eine Zuordnung zu verschiedenen Arten von Funden befindet sich in Tabelle 3.2.
3.4.7.1
Angebote der Suchmaschinen-Betreiber zur Entfernung von Inhalten
Falls es sich als dringend notwendig erweisen sollte, Informationen aus den Indizes
der Suchmaschinen zu entfernen, bieten einem ihre Betreiber auf mehr oder weniger
entgegenkommende Weise ihre Hilfe an. Das wohl hilfreichste Angebot im Vergleich
kommt von Google, da hier eine explizite Entfernung von Inhalt veranlasst werden
kann. Hierzu der Wortlaut aus der Online-Hilfe von Google [gooa]:
„(...) Hinweis: Wenn Ihre Anforderung Ihrer Meinung nach dringend
ist und nicht bis zum nächsten Google-Crawling warten kann, verwenden
Sie unser automatisches System zum Entfernen von URLs. Damit dieser
automatische Prozess funktioniert, muss der Webmaster zunächst die entsprechenden Meta-Tags in den HTML-Code der Seite einfügen. (...) Sie
können Ihre URL zur Entfernung aus Googles Suchergebnissen einreichen. URLs werden entfernt, nachdem wir Ihre Anforderung geprüft haben. Beachten Sie, dass diese Prüfung mehrere Tage oder länger in Anspruch nehmen kann und alle Seiten, die über unser automatisches System
zum Entfernen von URLs eingereicht wurden, vorübergehend für sechs
Monate aus dem Google Index entfernt werden. (...)“
Die erwähnten Meta-Tags dienen der Beeinflussung des Indizierungs-Verhaltens des
Webcrawlers von Google („GoogleBot“) und werden in Abschnitt 6.3 genauer erläutert. Die Betreiber von Live Search und Yahoo Search bieten kein Formular zur
ausdrücklichen Entfernung von Inhalten an. Hierzu aus den Hilfe-Seiten von Live
Search [liva]:
„(...) Damit Ihre Website oder Ihre Webseiten nicht im Index von Live
Search angezeigt werden, stehen Ihnen folgende Methoden zur Verfügung:
• Sie können auf Ihrer Site die Datei robots.txt erstellen und die Indizierung Ihrer Site durch MSNBot blockieren. Weitere Informationen
über die Datei robots.txt finden Sie auf den Webrobotseiten.
• Sie können den Seiten, die nicht indiziert werden sollen, das Metatag
noindex hinzufügen.
31
• Sie können für Ihre Site einen sicheren Speicherort auf dem Webserver verwenden (z. B. eine Benutzeranmeldung erforderlich machen
oder HTTPS verwenden).
• Entfernen Sie die Seiten aus Ihrer Site.
Es kann mehrere Tage dauern, bis Live Search die Aktualisierung der Indizierung abgeschlossen hat und Ihre Änderungen wirksam werden. Hinweis: Wenn andere Sites Links zu Ihrer Site bereitstellen, werden die URL
Ihrer Site und Text, den Sie in HTML-Ankertags aufnehmen, trotzdem zu
unserem Index hinzugefügt. Der Inhalt Ihrer Site wird jedoch nicht in den
Index aufgenommen. (...)“
Zur Vervollständigung noch die entsprechende Äußerung der Betreiber von Yahoo
Search [yaha]:
„(...) As our index contains billions of web pages we cannot manually
make changes to the index and rely on our automated crawl systems to
update the search index. If you want the status of pages that have been
crawled and indexed to change, you will need to make changes to the site
content or control documents that communicate to our crawler how these
pages should be handled by the search engine. When changes are made
to a web page, those changes will be properly reflected in our database
the next time the page is crawled, indexed, and the index-update cycle is
complete. (...)“
Letztlich relevant ist bei den drei Verfahren die Zeit bis zur Entfernung des Inhalts,
die in der Praxis vergeht. Hierzu ein Test: Die Testseite mit der URL www.pizzabestellen.de1 befindet sich mit URL und Inhalt zum 01.02.2007 um 16:09 Uhr in allen
drei Suchmaschinen-Indizes. Nun wird die Datei robots.txt (Siehe Beispiel 23) in das
Hauptverzeichnis der Seite abgelegt. Weiterhin wird der Inhalt der Seite geändert. Dann
wird bei Google die Entfernung der URL aus dem Index beantragt.
Beispiel 23 Inhalt der Datei robots.txt für den Test zum Entfernen von Content
aus den Suchmaschinen-Indizes
User-agent: *
Disallow: /
In Tabelle 3.3 sind die festgestellten Zeitpunkte, zu denen die aufgeführten Bestandteile der Seite aus den jeweiligen Bestandteilen von entfernt wurde, aufgelistet. Der
Suchmaschine
Google
Inhalt aus Cache entfernt
01.02.2007,
18:00 Uhr
Fragment aus
Index entfernt
02.02.2007,
13:00 Uhr
URL aus Index entfernt
02.02.2007,
13:00 Uhr
Tabelle 3.3: Vergleich von Entfernungszeiten
Test wurde auch für die beiden anderen Suchmaschinen versuchsweise durchgeführt,
was sich jedoch bald als zwecklos erwies, da die jeweiligen Webcrawler die Seite nicht
besuchten. Dies lag höchst wahrscheinlich daran, dass die Testseite als relativ unbedeutend eingestuft und daher seltener neu eingelesen wurde. Je „populärer“ eine Webseite,
1 Domain
im Besitz des Autors
32
desto schneller dürfte es möglich sein, Inhalte aus den Indizes und Caches von Live
Search und Yahoo Search zu entfernen. Jedoch kann bei keiner dieser Suchmaschinen
genau eingeschätzt werden, wie lange es dauern wird, bis der Inhalt wirklich entfernt
wurde.
3.5
Zusammenfassung
In diesem Kapitel wurde gezeigt, auf welche Art und Weise sich Google Hacking prinzipiell automatisieren lässt. Hierzu wurde zunächst kurz das Prinzip des Vulnerability
Scannings erläutert. Im Bezug auf das Google Hacking wurde im Detail erklärt, wie
ein Google-Scan vorbereitet, durchgeführt und nachbereitet werden sollte. Es sollten
also zunächst die relevanten Domains und Suchmuster gefunden werden. Der langfristige Ablaufplan ist teils vom Einfluss, den man auf das Verhalten der SuchmaschinenWebcrawler hat, abhängig. Jedoch kann er – wie die Tiefe der Suche – auch von der Anzahl von Anfragen, die man pro Tag zu stellen in der Lage ist, abhängen. Abschließend
wurden neben der Analyse der Funde einige kurzfristige Maßnahmen als Reaktionen
auf kritische Funde angesprochen und erläutert.
Im Folgenden wird auf Grundlage dieses Kapitels die konkrete Implementierung
eines automatisierten Google-Hacking-Werkzeugs beschrieben.
33
Kapitel 4
Entwicklung des
Google-Hacking-Tools
„GooScanner“
4.1
Einleitung
In diesem Abschnitt wird die Entwicklung eines Tools beschrieben, welches große
Mengen von Suchmustern automatisch an Suchmaschinen senden kann und die Ergebnisse von verschiedenen Zeitpunkten vergleicht. Mit Hilfe dieses Tools soll die Überprüfung der Anfälligkeit eines IT-Systems gegenüber Google Hacking mit möglichst
wenig Arbeitsaufwand überprüft werden.
Im Folgenden werden zunächst die wesentlichen Module des Programms anhand
ihrer Quellcodes vorgestellt. Danach wird der Aufwand, der sich durch die Arbeitsweise des Programms ergibt, abgeschätzt. Für die Anwendung des Tools wird eine
schematische Vorgehensweise konkretisiert.
Da es schon einige Werkzeuge gibt, die die Idee des Google Hackings aufgreifen,
werden diese in einem Abschnitt untersucht und teilweise mit dem hier entwickelten
Tool verglichen.
Abschließend werden die „Google Web Services“ und „Google Alerts“ bezüglich
ihrer Verwendbarkeit für Google Hacking betrachtet.
4.2
Arbeitsweise des Programms
GooScanner speichert seine Daten in einer SQL-Datenbank. Das Schema dieser Datenbank ist in Abbildung 4.1 zu sehen. Zunächst eine Erläuterung der einzelnen Tabellen
dieser Datenbank, anhand welcher die Arbeitsweise von GooScanner deutlich werden
sollte.
Zweck des Programms ist es, in regelmäßigen Abständen bestimmte Mengen von
Google-Hacking-Anfragen durchzuführen. Die Anfragen sollen sich dabei auf bestimmte Mengen von Domains beziehen. Welche Suchmuster und welche Domains für die
Anfragen verwendet werden sollen, wird als so genannter „Job“ in der gleichnamigen
Tabelle festgehalten. Hier wird zudem gespeichert, wann und wie oft der Job gestartet
werden soll, und wie viele Anfragen pro Durchführung gestellt werden sollen. Dies ist
34
Abbildung 4.1: Datenmodell von GooScanner
35
wichtig, da die Suchmaschinen, wie schon erwähnt, Grenzen in der Anzahl der Anfragen pro Tag setzen. Welche Suchmaschine für den Job genutzt werden soll, wird im
Feld „jobSearchMethod“ festgehalten.
Als Instanz einer Durchführung eines Jobs wird ein „Scan“ definiert (siehe gleichnamige Datenbank-Tabelle in Abb. 4.1). Zu jedem Scan wiederum werden die Ergebnisse zu jeder Anfrage in der Tabelle „result“ gespeichert. Jedes Ergebnis besteht aus
keinem, einem oder mehreren Treffern. Diese einzelnen Treffer werden den Ergebnissen in der Tabelle „hit“ zugeordnet. Der Titel der gefundenen Seite und der von
der Suchmaschine gelieferte Ausschnitt werden mit gespeichert. Mittels des Flags „hitEvaluated“ wird gekennzeichnet, ob der Benutzer des Programms den Treffer schon
bewertet hat, oder nicht. Jeder Treffer kann einer Kategorie zugeordnet werden.
Das Programm wurde in PHP implementiert. Eine zentrale Rolle in seinem Ablauf
spielt der so genannte „Scheduler“. Sein Quelltext ist in Listing A.1 (siehe Anhang,
S. 74ff) zu sehen. Dieses Script muss ein Mal am Tag gestartet werden. Es wird überprüft, ob ein noch nicht komplett durchgeführter Scan weitergeführt werden soll (siehe
Z.59), und ob laut Definition eines Jobs ein neuer Scan gestartet werden soll (siehe
Z.42). Mittels der Funktion „do_scan“ (Z.65 u. 75) werden die Scans durchgeführt.
Abhängig von der dem Job zugewiesenen Suchmaschine, wird ein speziell auf diese
Suchmaschine ausgerichtetes Modul, wie das für Google in Listing A.2 (siehe Anhang,
S.77ff), gestartet. Google und Live Search stellen zwar beide eine SOAP-Schnittstelle
zur Verfügung, jedoch ist die Handhabung dieser Schnittstellen so unterschiedlich, dass
eine einheitliche Programmierung des Scan-Parts umständlich wäre. Das Live-SearchModul steht zudem in einer leicht modifizierten Variante zur Verfügung, in welcher die
Suche nicht mit Hilfe des „site:“-Parameters, sondern mittels „ip:“ gesteuert wird. Als
viertes Modul gibt es eine Implementierung für die REST-Schnittstelle von Yahoo.
In dem hier gezeigten Google-Modul wird in Z.8 festgestellt, wie viele Anfragen
an die Suchmaschine an diesem Tag noch aufgrund deren Limitierung möglich sind. In
Z.9 wird das Produkt aus der Anzahl von URLs und der Anzahl von Suchmustern errechnet, was die Anzahl von durchzuführenden Anfragen an die Suchmaschine ergibt.
Die ineinander geschachtelten Schleifen von Z.14 und Z.15 laufen genau über diese
Anzahlen von URLs und Suchmustern. Aus deren Kombination ergibt sich dann die
Formulierung der Anfrage an die Suchmaschine in Z.24. Um jede im Job ausgewählte
URL zu berücksichtigen, muss tatsächlich für jede einzelne URL eine explizite Anfrage gestellt werden. Eine Anfrage der Form „(site:url1.de OR site:url2.de“ funktioniert
bei keiner der drei Suchmaschinen. Hierbei würde stets nur eine der URLs berücksichtigt. Der Ausschluss einzelner URLs (Z.35-37) funktioniert hingegen wie gewünscht.
Wenn ein Scan über mehrere Tage verteilt ist, kommt es vor, dass er mehrmals von
vorne gestartet wird und sich mehrmals dieselbe Kombination aus URL und Suchmuster ergibt. Dies soll innerhalb eines Scans allerdings nur genau einmal zu einer Anfrage
an die Suchmaschine führen (Zur Erinnerung: Ein Scan ist eine Instanz eines Jobs). Ob
innerhalb eines Scans eine Kombination schon vorkam, wird durch die Anfrage in Z.40
überprüft.
Zu jedem Job existieren ab einem bestimmten Zeitpunkt mehrere Scans. Bestimmte
(harmlose oder schwerwiegende) Treffer können in jedem dieser Scans erneut auftreten. Allerdings sollte ein Treffer nur einmal – und nicht bei jedem Scan erneut – als
harmlos oder schwerwiegend eingestuft werden müssen. Als eindeutige Charakterisierung eines bestimmten Treffers sollte die Kombination aus Webseiten-Ausschnitt,
(„Fragment“) URL und Seitentitel genügen. Wenn also eine Kombination aus Fragment, URL und Titel zu einem früheren Zeitpunkt zu demselben Ergebnis wie im aktuellen Scan geführt hat und dieser Treffer in der Vergangenheit schon vom Benutzer als
36
harmlos oder schwerwiegend eingestuft und evtl. in eine Kategorie eingeordnet wurde
(Z.100), soll dieser Arbeitsvorgang nicht nochmal durchgeführt werden müssen. Daher
werden Bewertung und Kategorisierung übernommen (Z.101-110). Bei mindestens einem neuen, noch nicht bewerteten Treffer wird der Benutzer per Mail benachrichtigt
(Z.157-162).
In Abbildung 4.2 sieht man die Beschreibung eines Jobs in der Web-basierten Oberfläche des Programms. Die Schnittstelle zur Bewertung eines einzelnen Treffers ist in
Abbildung 4.3 zu sehen. Alternativ möglich ist die Bewertung vieler Treffer gleichzeitig innerhalb einer einzigen Auflistung (siehe Abbildung 4.4).
4.3
Aufwandsabschätzung
Der Aufwand für die Durchführung des Google Scannings wird in den folgenden Punkten gemessen bzw. abgeschätzt:
• Anfragen pro Zeiteinheit
• Genutzte Internet-Bandbreite
• Personeller bzw. zeitlicher Aufwand
• CPU-Belastung
• Bedarf an nichtflüchtigem Speicher
Google
2,307 s
Ø-Zeit zwischen Anfrage und Antwort
Live Search
2,412 s
Yahoo Search
1,243 s
Tabelle 4.1: Zeitbedarf von Google Scanning
Suchmaschine
Google
Yahoo
Live Search
Umfang der Grundlage der Messergebnisse
10 Scans mit insgesamt 13733 Anfragen
11 Scans mit insgesamt 17097 Anfragen
49 Scans mit insgesamt 77471 Anfragen
Tabelle 4.2: Grundlagen der Statistik in Tabelle 4.1
Das bedeutet: Ein Scan einer Domain mittels 1600 Suchmustern dauert mit Google 1600 × 2, 390 = 3824 Sekunden, also 63,7 Minuten. Für Live Search bzw. Yahoo
Search ergeben sich 78,6 bzw. 58,5 Minuten.
Aufgrund der langen durchschnittlichen Zeiten zwischen Anfragen und Antworten
liegt die Übertragungsrate, die durch einen Google-Scan zustande kommt, in einem
Bereich von unter 1kb/s.
Im personenbezogenen Bereich ergibt sich der zeitliche Aufwand von Google Scanning langfristig durch die benötigte Zeit für die folgenden Aktivitäten:
1. Bewerten von neuen Suchergebnissen
37
Abbildung 4.2: Konfiguration eines Jobs in GooScanner
Abbildung 4.3: Bewertung eines Fundes in GooScanner
38
Abbildung 4.4: Bewertung mehrerer Funde gleichzeitig in GooScanner
2. Korrektur/Anpassung vorhandener Suchmuster
3. Erstellen neuer Suchmuster
Die Zeit des Einrichtens einer regelmäßig durchzuführenden Aufgabe bzw. eines Jobs
ist im Vergleich relativ gering. Falls ein Programm wie GooScanner bereits vorliegt, ist
auch die für die Programmierung benötigte Arbeitszeit nicht sehr hoch.
Zur Bewertung neuer Suchergebnisse: Da jede Kombination aus URL, Fragment
und Seitentitel insgesamt nur einmal bewertet werden muss, werden bei den ersten
Durchgängen eines Jobs noch relativ viele Funde bewertet werden müssen. Bei späteren Durchgängen liegt diese Anzahl in der Regel bedeutend niedriger. Die Gesamtzahl
der durchzuführenden Bewertungen hängt natürlich auch eng mit der Größe des untersuchten Web-Auftritts zusammen.
In Tabelle 4.3 ist beispielhaft der Verlaufs der Anzahl zu bewertender (neuer) Treffer anhand eines täglichen Scans der Domain t-mobile.de zu sehen. Die für eine Bewertung benötigte Zeit hängt neben der Anzahl von neuen Treffern natürlich auch vom
jeweiligen Fund ab. Ein Fund kann „auf den ersten Blick“ als harmlos oder gefährlich
einzustufen sein, oder zunächst einer genaueren Untersuchung bedürfen. Eine genauere Untersuchung wiederum kann beliebig lang dauern, wobei im Einzelfall abgeschätzt
werden sollte, ob sich der Aufwand lohnt.
Der zeitliche Aufwand für die Bewertung hängt allerdings auch von der Gestaltung der Schnittstelle ab, über welche die Bewertung vorgenommen wird. Bei einer
„Einzelbetrachtung“ wie in Abbildung 4.3 ist sowohl der Aufwand, als auch die Aufmerksamkeit gegenüber dem einzelnen Treffer relativ hoch. Die benötigte Zeit wurde
39
Tag 1
Tag 2
Tag 3
Tag 4
Tag 5
Tag 6
Tag 7
Google
61
39
12
2
2
1
5
Yahoo Search
123
3
6
2
3
1
14
Live Search
109
14
0
24
7
1
0
Tabelle 4.3: Verlauf der Anzahl neuer Treffer bei Scans von t-mobile.de
– mit dem Autor als Versuchsperson – bei der Bewertung von 173 Treffern gemessen,
was eine Durchschnittszeit von 6,54 Sekunden pro Treffer ergab.
Bei einer Anzeige von beispielsweise 1000 Treffern pro Seite sind Aufwand und
Aufmerksamkeit pro Treffer relativ niedrig.
Ein weiterer Faktor für die Zeitdauer einer Bewertung ist der Mensch selbst, der
sie vornimmt. Hierzu lässt sich im Wesentlichen sagen, dass die Bearbeitung mit steigender Erfahrung auch weniger Zeit in Anspruch nimmt. Unter Verwendung der Benutzerschnittstelle des hier implementierten GooScanner, kann die durchschnittliche
Bearbeitungszeit eines Treffers berechnet werden, indem die Gesamtarbeitszeit für die
Treffer-Bewertung durch die Anzahl bewerteter Treffer geteilt wird. Da ein und derselbe Treffer bei einem abermaligen Fund nicht erneut bewertet werden muss, kann
ein realistischer Mittelwert für die tägliche Zeitbelastung aufgrund der Bewertungsvorgänge erst nach langfristiger Durchführung gebildet werden. Hier wollen wir den
ersten Monat nach Einrichtung eines Jobs betrachten.
Die Zeit, die für das Erstellen eines neuen Suchmusters aufgewendet werden muss,
kann pauschal nicht eingeschätzt werden. Für die Anzahl neu zu erstellender Suchmuster im Rahmen der Untersuchung der IT-Systeme eines Unternehmens können ebenfalls nur Erfahrungswerte herangezogen werden. Hier die Anzahl der Suchmuster, die
in den einzelnen Untersuchungen im Rahmen dieser Diplomarbeit (siehe Anhang B)
neu erstellt wurden:
• T-Mobile: 8
• Firma 1: 3
• Firma 2: 1
• Firma 3: 11
Je nach Umfang und Zusammensetzung der zu untersuchenden IT-Systeme kann die
Anzahl möglicherweise erheblich von diesen Erfahrungswerten abweichen; bei einer
Zusammensetzung eines IT-Systems aus einer Vielzahl verschiedenster Web-Anwendungen ist eine Abweichung nach oben sehr wahrscheinlich.
Relativ umfangreich kann auch die Zeit sein, die für die Korrektur vorhandener
Suchmuster aufgewendet wird. Bei Verwendung der Google-Hacking-Database von
Johnny Long [ghd07] gehören beispielsweise auch Suchmuster wie „filetype:doc“
mit zum Scan. Falls eine Firma jedoch in ihrem Web-Auftritt große Mengen von Dokumenten im Doc-Format bereitstellt, die auch für die Öffentlichkeit gedacht sind, ergeben sich durch dieses Suchmuster viele Fehltreffer, so dass der Aufwand für die
Bewertung der Treffer zu hoch sein könnte. In so einem Fall sollte das Suchmuster so
40
modifiziert werden, dass die für die Öffentlichkeit gedachten Dokumente explizit von
der Suche ausgeschlossen sind – beispielsweise durch Hinzufügen eines entsprechenden „site:“-Parameters.
Zum Anspruch an Rechenzeit: Die Auslastung einer Intel-Centrino-CPU mit 1.4Ghz,
die in einem Rechner arbeitet, der mit 1GB RAM und Windows XP ausgestattet ist,
liegt bei der Durchführung eines Google-Scans laut des Windows-Task-Managers stets
bei unter 10%.
Der Platzbedarf auf nichtflüchtigen Speichermedien für eine dauerhaft eingerichtete Untersuchungs-Routine eines IT-Systems ist proportional zum Umfang dieses ITSystems. Gründe hierfür sind:
• Die gesamte Anzahl von Treffern ist direkt proportional zum Umfang des ITSystems und der Anzahl benutzter Suchmuster.
• Wie in Tabelle 4.3 zu erkennen, bewegt sich die Anzahl neuer Treffer gegen
0 (Was bei häufig aktualisierten, von den Suchmaschinen oft neu eingelesenen
Seiten allerdings anders sein kann).
• Jeder Treffer, der nicht neu ist, muss nicht abgespeichert werden – bzw.: Die
einzigen Treffer, die (zum späteren Vergleich) abgespeichert werden müssen,
sind die neuen Treffer.
• Somit bewegt sich der Platzbedarf gegen einen festen Wert.
Insgesamt ist der Bedarf an nichtflüchtigem Speicher – wohl dank der Effizienz von
SQL-Datenbanksystemen – extrem gering und liegt auch bei mehreren 10.000 gespeicherten Treffern im Bereich von 2-4MB.
4.4
Schema für die Anwendung von GooScanner
Für die gesamte Vorgehensweise wird das nun folgende Schema angewandt. In Anhang
B wird dieses Schema in mehreren beispielhaften Scans angewandt.
1. Vorbereitung
(a) Suche nach relevanten Domains
(b) Suche nach sinnvollen Suchmustern durch Untersuchung von Webseiten
2. Konfiguration des Jobs
(a) Festlegung des Intervalls zwischen Starts von neuen Scans. Dieser kann davon abhängig gemacht werden, wie oft der Cache der Suchmaschine aktualisiert wird, kann aber auch durch die Limitierung der möglichen Anfragen
höher sein, als wünschenswert wäre.
(b) Festlegung der Anzahl von Anfragen pro Tag
(c) Auswahl der zu verwendenden Suchmuster
3. Analyse des ersten Scans
(a) Suche nach neuen Suchmustern
(b) Ausschluss von Subdomains und/oder Unterverzeichnissen
41
(c) Löschen von Treffern, falls massenhafte Falschtreffer
4. Analyse des Verlaufs der weiteren Scans
(a) Wie viele neue Treffer ergeben sich pro Durchlauf?
(b) Wie viele Falschtreffer ergeben sich, und warum?
(c) In welchem Durchlauf werden welche kritischen Treffer gefunden?
(d) Wie wertvoll war der Inhalt des Suchmaschinen-Cache?
(e) Welche Suchmuster sind am erfolgreichsten?
(f) Welche Suchmaschine ist am erfolgreichsten?
(g) Wie viele Treffer sind insgesamt zu bewerten?
(h) Welche Subdomains wurden gefunden?
5. Analyse der kritischen Treffer
(a) Welche Ursachen gibt es für das Auftreten der kritischen Treffer?
(b) Welche Gefahr stellen die kritischen Treffer dar?
(c) Welche kurzfristigen Gegenmaßnahmen sind zu ergreifen?
(d) Welche langfristigen Gegenmaßnahmen?
6. Analyse des Aufwands
(a) Wie ist die Dauer der einzelnen Scans?
(b) Welche Zeit war zum Bewerten der Treffer notwendig?
7. Fazit
4.5
4.5.1
Andere Vulnerability-Scanner, die Google Hacking
einsetzen
Sitedigger
Das Programm „SiteDigger 2.0“ der Firma Foundstone nutzt wie GooScanner die
SOAP-API von Google. Nach Eingabe einer Domain werden alle Suchmuster einer
zuvor ausgewählten Datenbank – erweitert durch „site:<Domain>“ – an Google gesendet. Das Ergebnis der Anfragen wird als Liste der gefundenen URLs in einer Tabelle präsentiert. Diese lässt sich in das HTML-Format exportieren. Eine Möglichkeit des
Vergleichs von Funden zu verschiedenen Zeitpunkten steht nicht zur Verfügung.
Als Suchmuster-Datenbanken stehen die der Firma Foundstone sowie die GHDB
zur Verfügung. Sie können durch ein manuelles Update auf dem neuesten Stand gehalten werden.
4.5.2
gooscan
Dieses Perl-Script wurde von Johnny Long geschrieben. Es erhält als Parameter eine
Liste von Suchmustern und eine URL. Danach fragt es den Google-Index nicht durch
die API ab, sondern über die Web-Schnittstelle, was zu einer Sperrung des Zugriffs
führen kann. Die Ausgabe der Ergebnisse der Suche erfolgt in Form einer HTMLDatei.
42
4.5.3
Acunetix
Acunetix konzentriert sich auf Google als einzige Suchmaschine. Die auf Anfälligkeit
zu untersuchende Web-Site wird durch einen Webcrawler auf den Rechner, auf welchem die Acunetix-Anwendung läuft, heruntergeladen und dort von Acunetix selbst
auf Anfälligkeit gegenüber Google Hacking untersucht. Der Google-Index oder -Cache
hingegen wird nicht untersucht. Somit ist unklar, welche Informationen wirklich im
Google-Index sind. Die Korrektheit der Untersuchung hängt davon ab, inwieweit Acunetix den Webcrawler von Google imitieren kann.
4.5.4
Athena
Athena ist eine Datenbank von Suchmustern mit grafischer Oberfläche. Hier gibt es
die Möglichkeit, ein Suchmuster manuell auszuwählen und per Mausklick die Suche
auszuführen. Das Ergebnis präsentiert sich durch das bekannte Web-Interface von Google. Falls dem Benutzer das Ergebnis interessant erscheint, kann er die URL der Suche
als „interessant“ markieren. Die Liste von bisher betrachteten Such-URLs kann in das
Microsoft-Word-Format exportiert werden. Es können zudem weitere Suchmaschinen
neben Google definiert werden, indem zu jeder Suchmaschine eine Basis-URL angegeben wird, an welche das Suchmuster dann durch den Mausklick angehängt wird.
Auch hier gibt es keinen automatischen Vergleich von Ergebnissen von Suchen mit
demselben Suchmuster zu verschiedenen Zeitpunkten.
4.5.5
Wikto
Wikto ist ein Vulnerability-Scanner, der sich nicht auf das Google Hacking beschränkt,
sondern dieses als Teil einer Untersuchung eines Webservers bereitstellt. Diese Untersuchung ist hier kein umfassender Vulnerability Scan – Ziel von Wikto ist es (laut
Dokumentation), „interessante Verzeichnisse und Dateien“ auf Webservern zu finden.
Wikto bietet - wie die meisten anderen Scanner für Google Hacking - die Möglichkeit,
die GHDB zu importieren. Die Suche lässt sich auf eine Domain einschränken. Wikto
arbeitet nur mit Google und keiner anderen Suchmaschine. Große Mengen von Anfragen lassen sich automatisiert durchführen. Die Ergebnisse werden in Form einer Liste
von URLs pro Anfrage präsentiert. Einen Vergleich von Ergebnissen zu verschiedenen
Zeitpunkten gibt es hier nicht.
4.6
Google Web Services
Die Bezeichnung von „Google Web Services“ bezieht sich auf die SOAP-Schnittstelle
für Anwendungen, welche die Google-Suche nutzen. Wie schon aus der Beschreibung
der Implementierung eines Google-Hacking-Tools in Abschnitt 4 hervorgeht, ist ihre
Verwendung unerlässlich. Bei Verwendung der Web-Schnittstelle für große Mengen
von Anfragen in hoher Frequenz würde der Zugriff auf sie bald gesperrt werden. Doch
ist die Verwendung der SOAP-Schnittstelle nicht nur unvermeidbar, sondern auch hinsichtlich der Programmierung eines automatischen Google-Scanners eine große Erleichterung, da die Ergebnisse von Anfragen nicht im HTML-Format, sondern als Array geliefert werden. Der Nutzen der Google Web Services für das unternehmensbezogene Google Hacking ist somit als positiv zu bewerten.
43
Die SOAP-API von Live Search und die REST-API von Yahoo Search sind aus
genau denselben Gründen als ebenfalls positiv in Bezug auf die Verwendung im Suchmaschinen-Hacking zu bewerten.
4.7
Google Alerts
Mittels des Google-eigenen Dienstes „Google Alerts“ könnte es prinzipiell erreicht
werden, dass Funde, die auf Suchmustern beruhen, die zu einem vorherigen Zeitpunkt definiert worden sind, zu jedem Zeitpunkt des erneuten Auftretens an einen
Administrator gemeldet werden. Die Meldung eines neuen Treffers hätte im Idealfall
die größtmögliche Zeitnähe zum Auftreten einer kritischen Information im Index der
Suchmaschine. Die große Anzahl von Suchmustern macht es allerdings im derzeitigen Google-Alerts-Index schwierig, diese zu verwalten. Zudem zeigt die Praxis, dass
„Google Alerts“ unzuverlässig arbeitet: Bereits gemeldete Funde werden erneut als
neue Funde erkannt und gemeldet.
Der Autor dieser Diplomarbeit hat dies dadurch überprüft, indem er seinen eigenen Namen als Suchbegriff für „Google Alerts“ (im Suchbereich „Web“) eingab. Die
erste „Alert-Mail“, die dann an ihn gesendet wurde, enthielt Hinweise auf 11 Funde.
Zur gleichen Zeit konnte derselbe Suchbegriff über das Google-Web-Interface allerdings 90(!) mal gefunden werden. Die weiteren Funde wurden ihm dann im Laufe der
nächsten Wochen inkrementell zugesendet.
Ein sinnvoller Einsatz als „Alarmsystem“ zum Schutz eines Netzwerks kommt für
„Google Alerts“ somit nicht in Frage.
4.8
Zusammenfassung
In diesem Kapitel wurde beschrieben, auf welche Art und Weise Google Hacking systematisch zum Schutz der IT-Systeme eines Unternehmens eingesetzt werden kann.
Hierzu wurde der Begriff „Google Scanning“ eingeführt, der das Senden großer Mengen von Anfragen an Suchmaschinen und Entgegennehmen der Ergebnisse umschreibt.
Ziel war es, eine Vorgehensweise zu finden, mittels derer regelmäßiges Google
Scanning langfristig automatisiert durchgeführt werden kann. Hierzu wurde zunächst
die Vorarbeit für das Einrichten einer solchen Routine beschrieben, wozu das Finden
aller relevanten Domains und sinnvoller Suchmuster gehörte. Das eigentliche Scanning wurde anhand eines Algorithmus in Pseudo-Code dargestellt. Weiterhin wurde
beispielhaft die manuelle Analyse der Ergebnisse des Google Scannings umschrieben.
Für den Fall des Fundes von sensiblen Informationen wurden mögliche kurzfristige
Gegenmaßnahmen dargestellt.
Im weiteren Verlauf wurde das Google Scanning-Tool „GooScanner“ vorgestellt,
das im Laufe dieser Diplomarbeit entwickelt wurde. Das Programm wurde komplett
in der Scriptsprache PHP implementiert und arbeitet als Web-Applikation auf der Basis eines SQL-Servers. Es bietet die Möglichkeit, frei festgelegte Mengen von Domains mittels einer ebenso frei definierten Menge von Suchmustern in regelmäßigen
Zeitabständen zu „scannen“, wobei die Suchmaschinen Google, Live Search und Yahoo Search verwendet werden. Außerdem steht innerhalb des Programms eine Schnittstelle zur Auswertung der Suchergebnisse zur Verfügung, in welcher Treffer der Suche
44
als „auffällig“ oder „unauffällig“ eingestuft und in beliebige Kategorien sortiert werden
können. Das Programm hat die Fähigkeit, bei neuen oder abermaligen Treffern zu späteren Zeitpunkten zu erkennen, ob diese bereits bewertet wurden oder nicht, und meldet
noch nicht bewertete, neue Treffer per E-Mail an den Administrator des Programms.
Da schon weitere Vulnerability-Scanner auf Basis von Google Hacking existierten,
wurden diese ebenfalls vorgestellt.
Zu den Zielen der Diplomarbeit gehört die Bewertung der Dienste „Google Web
Services“ und „Google Alerts“. Es stellte sich heraus, dass die „Google Web Services“
im Zusammenhang mit Google Hacking unverzichtbar sind, da dies die einzige Schnittstelle zur Google-Suchmaschine ist, über welche große Mengen von Anfragen gesendet werden können, ohne dass mit einer Abblockung der Anfragen zu rechnen ist. Für
das Benutzen dieser Schnittstelle ist allerdings ein Registrierungsschlüssel notwendig –
welcher zum Zeitpunkt des Abschlusses der Diplomarbeit nicht mehr beantragt werden
kann. Das im „GooScanner“ vorhandene Exemplar funktioniert jedoch weiter. Aufgrund dieser Knappheit an Registrierungsschlüsseln und der ohnehin vergleichsweise
strengen Limitierung von Anfragen pro Tag sind die Schnittstellen von Live Search
(SOAP) und Yahoo Search (REST) mit ihren vergleichsweise sehr viel geringeren Restriktionen sehr nützliche Alternativen zur Google-Schnittstelle.
„Google Alerts“ stellten sich schon nach einem kurzen Versuch als unbrauchbar für
systematisches Google Scanning heraus.
Abschließend wurden die drei mittels GooScanner verwendeten Suchmaschinen
hinsichtlich ihrer Eignung für Google Hacking verglichen, wobei sich diese als sinnvolle Ergänzungen zueinander erwiesen, zumal die Syntax der Anfragen jeweils sehr
ähnlich ist.
Nachdem nun mit Google Scanning eine spezielle Form des Vulnerability Scannings ausführlich vorgestellt wurde, folgt nun eine Betrachtung herkömmlicher Methoden. Im Zuge eines Vergleichs soll ein möglicherweise vorhandener Mehrwert durch
die Verwendung von Google Hacking erörtert werden.
45
Kapitel 5
Google Hacking im Kontext
anderer Vulnerability-ScanningMethoden
5.1
Einleitung
Im Allgemeinen wird die Verwundbarkeit eines Webservers durch Vulnerability Scanning und/oder Penetration Testing überprüft. Google Hacking würde nach der Vorgehensweise, die in dieser Diplomarbeit beschrieben wird, eher dem Vulnerability
Scanning zugeordnet werden. Auf jene Art der Überprüfung von Webservern soll im
Folgenden genauer eingegangen werden. Hierzu wird ein Überblick von ScanningMethoden anhand etablierter Vulnerability Scanner gegeben. Weiterhin wird Google
Hacking im breiteren Kontext des Penetration Testing betrachtet. Zunächst wird erörtert, ob ein Sicherheitsgewinn durch Google Hacking überhaupt messbar ist. Auf
Grundlage dieser Überlegungen und der Erfahrungen im praktischen Einsatz soll eine
Antwort auf die Frage gefunden werden, ob der Einsatz von Google Hacking einen
betrieblichen Mehrwert mit sich bringt.
5.2
Scanning-Methoden
Man unterscheidet zwischen passivem und aktivem Scanning. Bei passivem Scanning
wird Netzverkehr belauscht, woraus dann Rückschlüsse auf die Quellen oder Ziele der
aufgefangenen Datenpakete gezogen werden. Es wird allerdings kein direkter Kontakt
zu der zu untersuchenden IP-Adresse aufgenommen. Dies hingegen wird beim aktiven
Scanning getan, wodurch eine gezieltere Suche möglich ist.
Die im Folgenden beschriebenen zwei Werkzeuge – Nessus und Qualysguard – führen
aktives Scanning durch.
5.2.1
Nessus
Nessus [nesa] ist ein semi-kommerzielles (vormals freies) Vulnerability-Scanning-Werkzeug. Es hat Portscanning-Funktionalitäten, die Teilweise auf dem Tool „Nmap“ beruhen. Nessus führt darüberhinaus automatisiert Schritte von bekannten Angriffsmustern
46
durch, welche durch eine integrierte Scriptsprache definiert werden können.
Nmap ist ein freies Portscanning-Werkzeug, welches dazu dient, Dienste und Server in einem Netzwerk zu erkennen. Hierzu verfolgt es verschiedene Strategien, wobei
auf der TCP-/IP-Schicht gearbeitet wird.
1. Die Erkennung von Hosts: Beispielsweise mittels PING wird herausgefunden,
welche Computer in einem Netz online sind, also Antworten geben - bzw., welche Ports von welchen Systemen offen sind - also welche Dienste aktiv sind.
2. Versionserkennung: Auf Grundlage von offenen Ports wird versucht, zu erkennen, welche Version von welcher Software oder welchem Betriebssystem zu diesem Port gehört.
3. Erkennung von Paketfiltern und Firewalls
4. Hardware-Erkennung
Es wird festgestellt, auf welche Arten und Weisen Netzwerkverbindungen mit den untersuchten Computern aufgebaut werden können – bzw., welche Möglichkeiten für
einen Angriff bestehen. Zudem können Computer in Netzen entdeckt werden, die eigentlich nicht Bestandteil des Netzes sein sollten. Die Reichweite eines Scans kann bei
Nmap beispielsweise in Form von Intervallen von IP-Adressen eingestellt werden. So
kann man zum Beispiel alle IP-Adressen zwischen 192.168.10.0 und 192.168.10.256
untersuchen. Es können somit natürlich auch einzelne Adressen oder mehrere Intervalle untersucht, sowie bestimmte Adressen oder Intervalle ausgeschlossen werden.
Für Nessus können mit Hilfe eines Plugin-Systems und der Programm-eigenen
Scriptsprache Exploit-Module erstellt werden, welche genau auf bestimmte Sicherheitsschwächen ausgerichtet sind. Hier ein Auszug aus der Beschreibung eines solchen
Plugins [nesb]:
„The remote host appears to be running a version of Apache 2.x which is
older than 2.0.45
This version is vulnerable to various flaws :
- There is a denial of service attack which may allow an attacker to disable
this server remotely
- The httpd process leaks file descriptors to child processes, such as CGI
scripts. An attacker who has the ability to execute arbitrary CGI scripts on
this server (including PHP code) would be able to write arbitrary data in
the file pointed to (in particular, the log files)“
Anhand des Codes des Plugins aus Abbildung 5.1 kann man die Arbeitsweise von
Nessus (für diesen beispielhaften Fall) erkennen. In Z.10 wird geprüft, ob der Banner,
den eine Anfrage an einen Server geliefert hat, eine Information über den dort installierten Server liefert. Die Funktion „safe_checks()“ gibt die Information, ob Nessus
darauf konfiguriert ist, eine Sicherheitslücke probehalber auszunutzen. Falls nicht, würde nur die Version des Servers überprüft, was als Grundlage für die Aussage, ob ein
Server verwundbar ist oder nicht, ausreichen müsste. Falls safe_checks() also eine
positive Antwort gibt (im Sinne von: „Es ist für den Betrieb des Systems sicherer, die
Lücke nicht probehalber auszunutzen“), wird zunächst in Z.12 mittels eines regulären
47
1
2
include ( " http_func . inc " ) ;
include ( " backport . inc " ) ;
3
4
port = get_http_port ( default :80) ;
5
6
7
8
if ( get_port_state ( port ) ) {
banner = get_backport_banner ( banner : get_http_banner ( port :
port ) ) ;
i f ( ! banner ) e x i t (0) ;
9
s e r v = s t r s t r ( banner , " Server " ) ;
i f ( safe_checks () ) {
i f ( e r e g ( p a t t e r n : " ^ S e r v e r : . ∗ Apache(− A d v a n c e d E x t r a n e t S e r v e r )
?/2\.0\.([0 −9][^0 −9]|[0 −3][0 −9]|4[0 −4]) " , s t r i n g : serv ) )
{
security_hole ( port ) ;
}
}
e l s e i f ( e g r e p ( p a t t e r n : " Apache(− A d v a n c e d E x t r a n e t S e r v e r ) / 2 " ,
string : serv ) ) {
i f ( e g r e p ( p a t t e r n : " Apache(− A d v a n c e d E x t r a n e t S e r v e r )
?/([3 −9]\.|2\.([1 −9]|0\.([5 −9][0 −9]|4[6 −9]) ) ) " , string :
serv ) ) exit (0) ;
soc = open_sock_tcp ( p o r t ) ;
f o r ( i = 0 ; i < 1 0 1 ; i ++) {
n = s e n d ( s o c k e t : soc , d a t a : s t r i n g ( " \ r \ n " ) ) ;
i f ( n <= 0 ) e x i t ( 0 ) ;
}
10
11
12
13
14
15
16
17
18
19
20
21
22
23
r = h t t p _ r e c v ( socket : soc ) ;
if (! r ) security_hole ( port ) ;
24
25
}
26
27
}
Abbildung 5.1: Quellcode eines Nessus-Plugins
48
Ausdrucks ermittelt, welche Server-Version vorliegt. Falls eine bekanntermaßen verwundbare Server-Version vorliegt, wird diese Verwundbarkeit gemeldet und der Test
beendet.
Falls safe_checks() zulässt, die Lücke zu testen, wird mittels Z.16 und 17 überprüft, ob eine anfällige Server-Version vorliegt. Falls nicht, wird der Test mittels „exit(0)“ beendet. Andernfalls wird mittels Z.18-22 der Code ausgeführt, der einen DoS1
auslösen soll. In Z.24-25 wird überprüft, ob der Angriff erfolgreich war, also der Server
auf Anfragen nicht mehr reagiert.
Das Plugin veranlasst Nessus also – abhängig davon, wie es konfiguriert ist – die
Sicherheitslücke aktiv auszunutzen; zumindest, was das Auslösen eines DoS betrifft.
Das wäre mittels Google Hacking nicht möglich; wohl aber – unter Umständen – das
Herausfinden der Version der Server-Software. Jedoch ist man beim Google Hacking
davon abhängig, dass diese Information in einem seiner unterstützten Formate vorliegt.
Falls man nur die Ausgabe des Seiten-Fragments in einem Treffer einer Google-Suche
oder den Inhalt des Google-Cache betrachtet, besteht zudem die Möglichkeit, dass die
Information veraltet ist und die Version der Server-Software inwzischen geändert wurde.
5.2.2
QualysGuard
Zu den Fähigkeiten von QualysGuard Enterprise gehören die nun folgenden [qua]:
• Automatisiertes Scanning auf Verwundbarkeiten; vgl. Nessus
– Entdeckung aller Bestandteile von Netzwerken
– Internes und Externes Scanning
– Anpassbarkeit von Scans auf bestimmte Ports, Dienste oder Schwachstellen
– Scheduling-System für regelmäßige Scans
• Generierung von Reports
– Visualisierung von Netzwerk-Topologien
– Statistik-Funktionen: Am Häufigsten gefundene Angriffspunkte
– Generierung von Nachrichten an Administratoren; Integration in TicketSysteme
• Automatische Aktualisierung der eigenen Datenbank von Verwundbarkeits-Signaturen
Da es sich bei der Kernfunktionalität von QualysGuard um ein automatisiertes
Scanning-Verfahren handelt, findet sich damit die Hauptparallele zu Google Scanning.
Beide Scanning-Verfahren lassen sich in Umfang, Art der Ziele und Berichtverhalten
individuell anpassen, wobei die Art der untersuchten Ziele auf unterschiedlichen Ebenen von IT-Systemen zu finden sind.
Der Hauptunterschied zwischen den Verfahren von QualysGuard und von Google Scanning ist das Ziel, welches in beiden Fällen jeweils untersucht wird. Qualysguard hat die Möglichkeit, ein Netzwerk bis auf die Netzwerk-Ebene des ISO/OSIModells zu untersuchen. Diese Möglichkeit ist durch Google Scanning nicht gegeben;
1 DoS
= „Denial of Service“
49
hier bleibt man sogar nur auf der Anwendungsebene und untersucht Ausgaben von
Programmen.
Demzufolge lässt sich mit Hilfe von Qualysguard auch die physische Struktur eines
Netzwerkes veranschaulichen, wohingegen mittels Google Scanning die Struktur von
Web-Inhalten eines Netzwerks sichtbar gemacht werden könnte.
5.2.3
WebInspect
Der Vulnerability-Scanner „WebInspect“ der Firma SPI Dynamics [web] hat Fähigkeiten für das Erkennen von Sicherheitsschwächen in IT-Systemen auf verschiedenen
Ebenen des ISO/OSI-Schichtenmodells. Hierzu gehören:
• Durchsuchen eines Netzwerks nach Servern
• Portscanning
• Fingerprinting
• Bei Fund eines Webservers: Webcrawling und Indizierung der auffindbaren Seiten
• Suche nach „versteckten“ Links innerhalb von Kommentaren
• Suche nach Verzeichnissen; Durchsuchen gefundener Verzeichnisse und Dateien
nach weiteren Verzeichnis- und Dateinamen
• Simulation von Angriffen auf Hosts, Server und Web-Applikationen; hierbei
Rückgriff auf eine Datenbank von Angriffsmustern für spezifische Server-Versionen
Die Möglichkeiten des Webcrawlers dieses Vulnerability-Scanners gehen also über diejenigen einer Suchmaschine und somit über diejenigen des Google Hackings hinaus;
die Suche nach Links innerhalb von Kommentaren ist durch Google Hacking nicht
möglich.
5.2.4
Parallelen bzw. Unterschiede zum Google Hacking
Eine Parallele zwischen herkömmlichem Vulnerability Scanning und Google Hacking
besteht also im Feststellen von Anfälligkeiten allein aufgrund von Versions-Informationen. Mit Hilfe von Nessus können diese Anfälligkeiten allerdings auch direkt getestet
bzw. ausgenutzt werden, was mit Hilfe von Google nicht möglich ist.
Ein Unterschied besteht stets in der Aktualität der gewonnen Information(en). Im
Google-Index bzw. -Cache findet man stets Information(en) aus einer mehr oder weniger weit entfernten Vergangenheit, während bei einer direkten Untersuchung eines Servers jede Information aus der Gegenwart stammt. Dem Google Hacker liegt also nie ein
absolut aktueller Inhalt einer Webseite vor. Möglicherweise dient einem Google Hacker
die Information, die er mit Hilfe der Suchmaschinen findet, um sich – außerhalb des
Google Hackings – aktuelle Informationen zu beschaffen. Oder er findet Informationen
im Suchmaschinen-Cache, die im aktuellen Web-Inhalt seines Ziels schon längst nicht
mehr vorliegen. Dies bezieht sich auf verschiedene Arten von Informationen: Vertrauliche Dokumente, Log-Dateien, Listen von Usernamen, Fehlermeldungen etc..
50
Eine Parallele zwischen Vulnerability Scanning und Google Hacking kann in gewisser Weise im Idle Scanning gesehen werden. Hier kann – genau wie beim Google
Hacking – eine Information über die Angreifbarkeit eines Servers durch eine dritte Instanz beschafft werden – in einem Fall durch den „Idle“-Rechner bzw. „Zombie“, und
im anderen Fall durch eine Suchmaschine.
Ein direkter Portscan ist mit Hilfe von Google Hacking nicht möglich. Falls allerdings mit Hilfe einer Suchmaschine HTTP- bzw. Ftp-Inhalte gefunden werden, ist
somit immerhin klar, dass auf den betreffenden Servern zumindest Port 80 bzw. 21 geöffnet zu dem Zeitpunkt, zu welchem der Webcrawler der Suchmaschine den Server
untersucht hat, offen waren. Fingerprinting ist durch Google Hacking ebenfalls nicht
auf dem klassischen, sondern nur indirekten Wege durchführbar. Jedoch können durch
Google Hacking Informationen beschafft werden, die darauf schließen lassen, welche
Software auf einem Host läuft – zum Beispiel durch ungeschützte FTP-Verzeichnisse,
wo oft am Ende der ausgegebenen Seite die Version des Web-Servers ausgegeben wird.
Mit Nessus und Nmap kann ein Server in seiner tieferen Struktur im Vergleich zu
Google Hacking weitaus detaillierter untersucht werden – zum Beispiel hinsichtlich
offener oder geschlossener Ports. Beim Google Hacking wäre man für eine solche Information auf den selten auftretenden Fund von Konfigurations-Informationen in einem
seitens der Suchmaschinen unterstützten Format angewiesen.
Die Vielfältigkeit von durch Suchmaschinen erkannten Formaten – wie PDF, DOC,
XLS und PPT – ist ein hilfreicher Aspekt des Google Hackings. Vulnerability-Scanner
mit einem breiten Spektrum wie WebInspect haben allerdings sogar die Möglichkeit,
jede Art von Datei zu durchsuchen, unabhängig von deren Format.
Ob eine vertrauliche Information unbeabsichtigt an die Öffentlichkeit gelangt ist,
kann allerdings durch einen herkömmlichen Vulnerability-Scanner nicht hinreichend
überprüft werden. Das Google Hacking zeichnet somit eine gewisse Flexibilität aus;
neue Suchmuster lassen sich leicht integrieren und können verschiedene Arten von
Zielen haben, wohingegen herkömmliche Vulnerability Scans aufgrund ihrer festgelegten Systematik eher generischer Natur sind.
Während mit Hilfe von üblichen Vulnerability Scans eher die tiefere Struktur eines Systems analysiert werden kann, ist mit Hilfe von Google Hacking auf gewisse
Weise eine größere Breite in der Suche möglich. Dadurch, dass eine Suche allein auf
eine Domain eingeschränkt werden kann (und auch das nicht unbedingt muss), kann
es vorkommen, dass im Laufe eines Scans Subdomains oder Verzeichnisse entdeckt
werden, welche ursprünglich nicht berücksichtigt worden waren, aber dennoch ein Gefahrenpotential darstellen. Für einen herkömmlichen Vulnerability Scan ist es dagegen
notwendig, dass vorher alle Ziele bekannt sind.
Ein Unterschied besteht zwischen Google Hacking und den Methoden des Vulnerability Scanning liegt in der Auswahl des Ziels. Google Hacking bezieht sich stets
auf Webseiten. Hierbei können alle Webseiten in einem Suchindex durchsucht werden,
oder die Suche wird auf bestimmte URLs – im Falle von Live Search auch von IPs –
eingeschränkt. Ein Vulnerability Scanner wie Nessus untersucht IPs; WebInspect verfügt zudem über einen Webcrawler, der Web-Inhalte genau untersuchen und indizieren
kann.
In Nessus und WebInspect können bei der Untersuchung von Zeichenfolgen und
der Suche danach reguläre Ausdrücke verwendet werden. Dies ist bei Anfragen an
51
Feststellen von Verwundbarkeit anhand v. Versionsinformationen
„Dritte Instanz“ zwischen
Angreifer und Ziel
Automatisiertes Scanning
mit Meldung von Funden
Suchmuster individuell anpassbar
Feststellen von Verwundbarkeit anhand probehalber Angriffe
Vulnerability Scanning
Parallelen
Fingerprinting
Google Hacking
Zombie-Rechner
Informationen
auf
Webseiten oder in
Dokumenten
Suchmaschine
ja
ja
ja
ja (in einem eingeschränkteren Rahmen)
Unterschiede
Ja
Aktualität der gewonnenen
Informationen
Portscanning
größtmöglich
Scanning von Dokumenten
ja
Auswahl der Ziele
dynamisch
Verwendung regulärer Ausdrücke
Bemerkbarkeit des Testers
bzw. Angreifers
ja
Nein; es sei denn,
Google Hacking ist
der komplette Angriff
Abhängig von Suchmaschine
nicht direkt; ggf.
durch Rückschlüsse
aus
anderen
Informationen
eingeschränkt
auf
DOC, XLS, PDF,
PPT etc.
Beschränkung
auf
bestimmte Domains
bzw.
IPs
(Live
Search)
nein
möglich
leicht vermeidbar
direkt
Tabelle 5.1: Vergleich von Google Hacking und Vulnerability Scanning
52
Google, Yahoo Search und Live Search gleichermaßen nicht möglich. Bei automatisiertem Google Hacking wäre dies höchstens bei der Nachbearbeitung der Suchergebnisse
in Erwägung zu ziehen.
Eine Besonderheit des Google Hackings liegt in der geringeren Entdeckbarkeit des
Angreifers. Wie zuvor erläutert, gibt es bei Vulnerability Scannern die Unterscheidung
in aktive und passive Scanmethoden. Google Hacking wäre hier eher mit einer passiven Scanmethode vergleichbar. Der Umstand, dass ein Angreifer einen für ihn wertvollen Fund im Google-Index oder -Cache macht, wird vom potentiellen Opfer nicht
bemerkt, da zum Zeitpunkt des Fundes keine Daten von seinem Server abgerufen werden (vorausgesetzt, im Falle der Betrachtung des Google-Caches wird auf das Laden
von Grafiken und Multimedia-Inhalten verzichtet – diese würden vom Original-Server
nachgeladen.). Der Google-Hacker muss also keine Verbindung mit dem angegriffenen
Server aufnehmen; dies erledigt der Webcrawler der Suchmaschine für ihn.
Die Identität des Betrachters des Fundes könnte nur möglicherweise mit Hilfe des
Betreibers der entsprechenden Suchmaschine aufgeklärt werden. Allerdings besteht
bei der Benutzung von Google für den Angreifer die Möglichkeit, AnonymisierungsDienste wie JAP [jap] oder TOR zu verwenden. Inwieweit die Anonymisierung hierbei
wirkungsvoll ist, soll hier nicht genauer beleuchtet werden. Tatsache ist jedoch, dass
Google Hacking eine der unauffälligsten Scanning-Methoden darstellt.
Zusammenfassend eine tabellarische Gegenüberstellung (Tabelle 5.1) der Charakteristiken von herkömmlichem Vulnerability Scanning und Google Hacking.
5.3
Maximierung des Sicherheitsgewinns durch Google
Scanning
Es gibt verschiedene Betrachtungsweisen dafür, was als Sicherheitsgewinn für ein System zu verstehen ist. Eine Idee hierfür, die in [BN] erwähnt wird, basiert auf Betrachtung der Erfahrungen mit der Wirksamkeit einer Sicherheits-Policy in der Vergangenheit. Man geht hier davon aus, dass sich der Grad an Sicherheit dadurch definiert, wieviele Sicherheitsschwächen nicht ausgenutzt worden sind, also möglicherweise nicht
ausgenutzt werden konnten. Vereinfachend gesagt: „Sicherheit = 100% aller Daten minus prozentualer Datenverlust durch Sicherheitsschwächen“. Mit Blick auf die Zukunft stellt sich dann die Frage: Welcher Bruchteil eines möglichen Neu-Verlustes
kann durch welche Maßnahmen – wie zum Beispiel präventives Google Hacking bzw.
-Scanning – verhindert werden, bzw.: Wie kann die Abwehrrate möglicher GoogleHacking-Angriffe im Rahmen der gegebenen Möglichkeiten maximiert werden?
5.3.1
Die Effektivität des Google Scannings
Um feststellen zu können, wie effektiv Google Scanning funktioniert, muss zuvor festgelegt werden, welches maximale Maß an Aufgaben theoretisch erfüllt werden könnte
– also inwieweit man sich einer (nur theoretisch möglichen) sofortigen, umfassenden
Erkennung jeder Angreifbarkeit gegenüber Suchmaschinen-Hacking annähern kann.
Zu welchem Anteil man dies erreicht, soll hier genauer untersucht werden.
Eine umfassende Erkennung, welche die Voraussetzung für eine vollständige Abwehr wäre, wäre nur möglich, wenn stets alle möglichen Google-Hacking-Suchmuster
in der Datenbank des Abwehrsystems vorhanden wären. Das zu erreichen, ist natürlich
nahezu unmöglich. Was man tun kann, ist:
53
• Die Basis an Suchmustern durch regelmäßiges Laden der GHDB auf dem allgemein bekannten Stand halten
• Die vorhandenen Suchmuster individualisieren und an die eigenen Webseiten
anpassen
In den folgenden Überlegungen wird zunächst davon ausgegangen, dass dies getan
wurde. Zu dem Einfluss der Aktualisierungsstrategie auf die Abwehrrate später mehr.
Zunächst wollen wir uns klar machen, dass der Erfolg von Google Hacking auch stets
von der oder den benutzten Suchmaschine(n) abhängt.
5.3.2
Auswirkung der Aktualität des Suchindex auf die Abwehrrate
Es ist kaum möglich, zu erreichen, dass eine Sicherheitsschwäche zu dem Zeitpunkt
entdeckt wird, zu dem sie entsteht. Jedoch kann man im Fall des Google Hackings eine
sehr schnelle Erkennung erreichen, indem man eine eigene Suchmaschine wie „Google Search Appliance“ oder „Google Mini“ verwendet. Diese erlaubt sowohl ständiges Indizieren des Web-Inhalts, als auch die ständige und (in Bezug auf die Anzahl
von Suchanfragen) unlimitierte Auswertung des relativ aktuellen Indexes. Die Grenzen der Aktualität liegen hier in der physischen Übertragungskapazität, bzw. Bandbreite, welche dem Webcrawler der eigenen Suchmaschine zur Verfügung steht. Bei solch
einer Strategie wird hinsichtlich aller bekannten Suchmuster eine höchstmögliche Erkennunggeschwindigkeit erreicht, womit die Voraussetzungen für eine größtmögliche
Abwehrrate geschaffen werden. Um diese zu erreichen, müsste allerdings eine sofortige Reaktion auf einen Fund erfolgen. Hier könnte man entscheiden, den Inhalt eines
IT-Systems, der durch Google Scanning gefunden wurde, automatisch im Sinne einer
Prävention zu sperren, ohne zuvor auf eine Bewertung des Fundes zu warten. Im Falle eines Fehlalarms könnten die auf diese Weise gesperrten Inhalte zu einem späteren
Zeitpunkt manuell wieder frei gegeben werden. Allerdings könnte sich diese Art der
Vorgehensweise nur als praktikabel erweisen, wenn es gelingen würde, die Menge an
Fehlalarmen zu minimieren.
Möglicherweise steht eine eigene Suchmaschine wie „Google Search Appliance“
oder „Google Mini“ nicht zur Verfügung. Alternativ könnte man einen eigenen Crawler entwickeln und damit arbeiten; jedoch wäre es schwierig, die öffentlichen Suchmaschinen exakt zu simulieren, was mittels eines Google-Produkts leichter wäre. Das
Verhalten einer öffentlichen Suchmaschine möglichst genau nachzuvollziehen ist wichtig, um die Gefahr, die von den öffentlichen Suchmaschinen ausgeht, auch möglichst
genau einschätzen zu können.
Dieser Aspekt – und die Einsparung der Kosten für eine eigene Suchmaschine –
sind Gründe, die für das Arbeiten mittels der öffentlichen Suchmaschine beim präventiven Google Scanning sprechen. In diesem Fall muss man mit allen Einschränkungen
auskommen, die dies mit sich bringt – also die Limitierung der Anzahl von Anfragen,
und die Unvorhersehbarkeit des Crawling-Verhaltens der Suchmaschinen.
Diese Unvorhersehbarkeit ist der Aspekt, welcher einem potenziellen Angreifer
möglicherweise einen Vorsprung gegenüber der Abwehr ermöglicht. Ihm steht also
mindestens die Zeit zwischen dem neuesten Update des Suchmaschinen-Cache und
-Index, und dem neuesten Google-Scan der Verteidigung für einen Angriff zur Verfügung. Wie lang diese Zeitdauer ist, hängt davon ab, wie oft der bzw. die Crawler
die Webseite erneut einlesen, und wie oft ein erneuter Google-Scan initiiert werden
54
kann. Wie oft dies möglich ist, hängt davon ab, wie viele Domains zu überprüfen sind.
Zusammenfassend sind also dies die entscheidenden Faktoren:
• Frequenz erneuten Einlesens durch die Webcrawler der Suchmaschinen
• Frequenz erneut durchgeführter Google-Scans
• Anzahl zu überprüfender Domains
• Durchschnittliche Zeitdauer zwischen Besuch des Webcrawlers und des entsprechenden Google-Scans
Je länger diese Zeitdauer ist, desto angreifbarer das System. Ziel ist also die Minimierung dieser Zeitdauer. Diese kann auf zwei Wegen erreicht werden:
1. Erhöhung der Anzahl möglicher Anfragen an die Suchmaschinen
2. Kontrolle bzw. Erkennung des Besuchs von Webcrawlern der Suchmaschinen
Die Anzahl möglicher Anfragen hängt im Falle von Yahoo Search von der Anzahl von
Anfragenden IPs, im Falle von Google von der Anzahl an Registrierungsschlüsseln,
und im Falle von Live Search von beidem ab. Welche Möglichkeiten zur Beschaffung
dieser beiden Ressourcen bestehen, muss sich im Einzelfall zeigen. Angenommen, es
seien für die Verwendung jeder Suchmaschine genügend Registrierungsschlüssel und
IPs verfügbar, um den ganzen Tag lang ununterbrochen Anfragen zu senden. Dann
könnte die Anfragerate noch dadurch erhöht werden, indem mehrere IPs zur selben
Zeit die verschiedenen Suchmuster unter sich aufteilen. Die Anfragerate könnte also
theoretisch maximiert werden. Allerdings bedeutete dies keine Erhöhung der Abwehrrate mehr, sobald der jeweilige Webcrawler der Suchmaschine seinen Index seltener
aktualisiert - also die fraglichen Webseiten abruft - als das Abwehrsystem Anfragen
an die Suchmaschine sendet. Mit welchem Aufwand das Maximum an Effektivität erreicht werden kann, hängt also in erster Linie davon ab, wie oft der Webcrawler einer
Suchmaschine die fraglichen Seiten abruft.
Daher wäre eine Kontrolle bzw. Erkennung von Besuchen der Webcrawler der
Suchmaschinen wünschenswert. Die Möglichkeiten der Kontrolle des Google-Bots mit
Hilfe der sitemap.xml werden in Abschnitt 6.3 auf S.66 vorgestellt. Die Frequenz der
Besuche durch die Crawler der beiden anderen Suchmaschinen kann man nicht kontrollieren, jedoch kann man sie erkennen – und zwar anhand ihrer IPs und/oder UserAgents. Alle IP-Adressen herauszufinden, von denen aus die Crawler operieren, ist
evtl. möglich; die Crawler anhand der User-Agents zu identifizieren ist jedoch einfacher und wahrscheinlich auch zuverlässig, da die großen Suchmaschinen sich so identifizieren sollten, um ihre Seriosität zu wahren. Hier eine Liste der bei den drei großen
Suchmaschinen üblichen User-Agents: Ein Google-Scan auf der jeweiligen SuchmaSuchmaschine
Live Search
Google
Yahoo
User-Agent
MSNBot
Googlebot
Yahoo! Slurp
Tabelle 5.2: Die UserAgents der Suchmaschinen
schine sollte also sinnvollerweise unmittelbar nach dem Besuch ihres Crawlers (siehe Tabelle 2.1 auf S.17) durchgeführt werden, falls die Limitierung der Anfragen das
55
zulässt. Falls Wege gefunden wurden, die Limitierung beliebig zu überschreiten, ist
mit dieser prompten Reaktion die bestmögliche Abwehr-Strategie gefunden. Jedoch
ist diese Strategie nur hinsichtlich aller Gefahren, die von unternehmenseigenen ITSystemen ausgehen, als „bestmöglich“ zu bezeichnen. Wie die Erfahrung gezeigt hat,
können sensible Informationen auch auf nicht-unternehmenseigenen Webservern zu
finden sein – wie zum Beispiel Zugangsdaten, die in eine URL eingebettet sind. Diese
URL wird dann zwar durch einen Google-Scan über die (bekannte) Domain entdeckt;
jedoch könnte kein optimaler Zeitpunkt für einen Scan festgelegt werden, da in diesem
Fall kein Besuch eines Webcrawlers festgestellt werden könnte.
5.3.3
Auswirkung der Aktualität bzw. des Inhalts der SuchmusterDatenbasis auf die Abwehrrate
Es kann stets vorkommen, dass es Suchmuster gibt, mittels derer zwar ein Angreifer sensible Inhalte aufspüren kann, welche aber der Suchmuster-Datenbasis des für
die Abwehr eingesetzten Google-Scanners nicht bekannt sind. In diesem Fall wird eine vorhandene Verwundbarkeit nicht erkannt. Die Frage danach, wie viele von solchen unbekannten Suchmustern es gibt, ist stets offen. Es gibt für den Betreiber eines
Google-Scanners zwei Möglichkeiten, die Basis an Suchmustern aktuell zu halten, und
dies sind:
• Regelmäßiges Laden der GHDB [ghd07] oder anderer Google-Hacking-Sammlungen
• Analyse der eigenen Webseiten und Server-Software und Erstellen von Suchmustern aufgrund individueller Merkmale
Innerhalb dieser Möglichkeiten die Basis an Suchmustern aktuell zu halten, ermöglicht
zumindest ein Maximum des erreichbaren Maßes an Sicherheit.
5.4
Kurze Einführung in Penetration Testing
In [Eck05] wird ein Penetrationtest als ein Verfahren beschrieben, mittels dessen man
„die Erfolgsaussichten eines vorsätzlichen Angriffs“ (S.85) einschätzen möchte. Hierbei wird zwischen Innen- und Außentäter unterschieden. Der Innentäter habe genaue
Kenntnisse über das angegriffene System, weshalb zum Simulieren seiner Möglichkeiten ein Whitebox-Test sinnvoll sei. Analog sei für die Einschätzung der Chancen eines
Außentäters ein Blackbox-Test sinnvoll.
Ein Penetrationtest wird in [Eck05] als ein aus 5 Phasen bestehender Vorgang beschrieben:
1. Recherche
2. Portscanning
3. Fingerprinting
4. Identifikation von Schwachstellen
5. Ausnutzen von Schwachstellen
56
Im Rahmen eines Penetrationtests können alle Angriffsmöglichkeiten auf ein IT-System
überprüft werden.
Die Recherche kann sich allerdings über beliebige Ebenen erstrecken, und somit
auch über die Web-Ebene. Google Hacking ist als Teil der Recherche durchaus vorstellbar.
Bei einem Portscan werden auf der Netzwerk-Ebene Anfragen an die verschiedenen Ports bzw. Dienste eines Servers gesendet. Aus der Reaktion wird dann geschlossen, ob der Port offen ist bzw. der Dienst aktiviert ist oder nicht. Auf dem Wege des
so genannten „Idle Scanning“ wird dies auf indirekte Weise gemacht, wobei bei der
Anfrage die IP eines dritten Rechners vorgetäuscht wird, und aus den Unterschieden
seiner IPIDs geschlossen wird, ob der Port des angefragten Rechners offen ist oder
nicht.
Beim Fingerprinting wird die Reaktion, die man auf eine Anfrage erhält, genauer
analysiert, um auf die Software, die auf dem Server läuft, zu schließen, also Betriebssystem, Server und deren Versionsnummern.
Zur Identifikation von Schwachstellen werden im Penetrationtest persönliche Erfahrung, Exploit-Datenbanken und weitere Verfahren wie etwa Fuzzing benutzt. Ob
diese Schwachstellen auch wirklich ausgenutzt werden können, wird ebenfalls getestet.
5.4.1
Resultate durch etablierte Penetration-Testing-Verfahren
Ein Penetrationtest ist ein umfassender Sicherheitscheck und sollte somit im Idealfall
auch alle Angriffsmöglichkeiten, die sich auf ein IT-System bieten, aufdecken. Dazu sollten auch die Angriffsmöglichkeiten gefunden werden, die man durch Google
Hacking aufdeckt. Da allerdings der Mehrwert von Google Hacking gegenüber allen
anderen Arten des Penetration Testing bzw. Vulnerability Scanning erörtert werden
soll, sollten hier Arten von Resultaten betrachtet werden, die ohne Hilfe von Google
Hacking erzielt werden können. Da sich Google Hacking explizit auf Suchmaschinen
bezieht, ist eigenständiges Webcrawling in diesem Vergleich im Pentesting erlaubt. Auf
diese Weise können also auch Suchmuster eingesetzt werden, um bestimmte Inhalte der
Webseiten eines Systems zu finden. Somit können mit Hilfe von Pentesting – neben allen anderen allgemeineren Sicherheitsschwächen – Web-Inhalte entdeckt werden, die
nicht genügend vor öffentlichem Zugriff geschützt werden.
Es gibt eine Ähnlichkeit der Vorgehensweisen im Penetration Testing und im Google Hacking. In einem Penetration Test werden durch eine Person oder ein Team alle
ihm bekannten Möglichkeiten für einen Angriff auf ein System probiert, wobei während des Tests auch neue Angriffsmethoden ersonnen werden, die nur im Angriff auf
das einzelne System greifen könnten. Hier liegt die Parallele zum Google Scanning: Allein eine festgelegte Menge an Suchmustern zu verwenden, reicht nicht aus. Durch die
Untersuchung von Webseiten und Server-Software eines individuellen Systems müssen Suchmuster gefunden werden, durch welche typische Fehlermeldungen, LoginParameter usw. gefunden werden.
5.5
Der betriebliche Mehrwert durch Google Hacking
Der Mehrwert, der durch den Einstatz von Google Hacking erzielt werden kann, ist
immer davon abhängig, welche Schutzsysteme oder -prozesse in einem Betrieb bereits
vorhanden sind. Der Vergleich der Sicherheitszustände in Situationen mit- bzw. ohne
57
Google Hacking kann – je nach Ausgangslage ohne Google Hacking – unterschiedlich ausfallen, wobei der Einsatz an Mitteln für Google Hacking in jedem Fall gleich
ist. Im Folgenden wird der Sicherheitsgewinn für die folgenden Ausgangssituationen
betrachtet:
• Ungesicherte IT-Systeme
• Durch automatisiertes Vulnerability Scanning gesicherte IT-Systeme
• Durch manuelles Pentesting gesicherte IT-Systeme
• Durch Vulnerability Scanning und Pentesting gesicherte IT-Systeme
5.5.1
Ungeschützte Systeme
Bei einem IT-System, welches weder durch Vulnerability-Scanning, noch durch Penetration Testing geschützt wird, ist der Sicherheitsgewinn – innerhalb bestimmter Grenzen – erheblich, da jede Sicherheitsschwäche, die durch Google Hacking aufgedeckt
wird, durch kein anderes Verfahren bemerkt werden könnte.
Erkannt werden können die folgenden Arten von Sicherheitsschwächen:
• Vertrauliche Daten, die in öffentlich zugänglichen Verzeichnissen eines Webservers liegen
• In URLs integrierte Zugangsdaten
• Versions-Informationen von Webservern, Webapplikationen und ggf. weiteren
Arten von Software
• Informationen über die innere Struktur von Webservern, z.B. durch Fehlermeldungen
• Informationen über die Funktionsweise von Anwendungen, z.B. durch Fehlermeldungen
• Ungeschützte Zugänge zu Intranets, Hardware-Administrationsschnittstellen und
allen Seiten, deren Betrachtung eigentlich Authentifikation voraussetzen
Die Grenzen des Sicherheitsgewinns bestehen aus all denjenigen Sicherheitsschwächen, die durch Google Hacking prinzipiell nicht erkannt werden können. Dies betrifft
alle Informationen, die...
• ...nicht in Form von HTML oder einem unterstützten Dokumentenformat sichtbar sind
• ...nicht über das Web zugänglich sind
• ...zwar über das Web zugänglich sind, aber weder in einem ungeschützten Verzeichnis aufgelistet werden, noch durch einen Hyperlink zu finden sind
• ...nur unter Verwendung von regulären Ausdrücken zu finden wären
58
5.5.2
Durch Vulnerability Scanning geschützte Systeme
Wie bereits in Tabelle 5.1 deutlich geworden, gibt es mehrere Unterschiede zwischen
herkömmlichem Vulnerability-Scanning und Google Scanning. Die nun folgende Gegenüberstellung behandelt die Frage: Welche Sicherheitsschwächen können durch Google Hacking erkannt werden, die allein durch herkömmliches Vulnerability Scanning
nicht erkannt würden?
Vorfall
Aufdeckung
durch Google
Hacking
Vertrauliche Informationen in den Formaten HTML, Doc, Xls, ... sind über das Web
öffentlich zugänglich
ja
Es existieren im Internet Links mit integrierten Zugangsdaten
Fehlermeldungen oder Versionsinformationen von IT-Systemen sind auf öffentlichen Webseiten sichtbar
ja
Authentifikation voraussetzende Bereiche
mit Web-Oberfläche sind öffentlich zugänglich
ja
Es existieren im Suchmaschinen-Cache
sensible Informationen, die im realen System nicht mehr zugänglich sind
ja
ja
Aufdeckung
durch
Vulnerability
Scanning
ja; mit Ausnahme
von
SuchmaschinenCaches
nein
ja; mit Ausnahme
von
SuchmaschinenCaches
nur, falls Link
von innerhalb
des Systems
aus
nein
Tabelle 5.3: Vergleich von Google Hacking und Vulnerability Scanning bzgl. Mehrwerts durch Google Hacking
Hier sind die Stärken von Google Hacking deutlich erkennbar. Die im Anhang aufgeführten Beispiele zeigen teilweise, dass sich der Mehrwert von Google Hacking gerade in den hier aufgeführten Punkten zeigt.
5.5.3
Durch Penetration Testing geschützte Systeme
Die unterschiedlichsten Angriffsmöglichkeiten, die durch Pentesting durchgeführt werden können, sind durch Google Hacking allein nicht durchführbar. Durch Google Hacking können nur – oder gerade – die Informationen recherchiert werden, die im weiteren Penetrationtest hilfreich sind. Zur Konkretisierung dieses Unterschieds nun eine
ähnliche Gegenüberstellung wie in Tabelle 5.3.
Hier zeigt sich, dass der eigentliche Vorteil von Google Hacking gegenüber Penetration Testing in der Möglichkeit der automatisierten Überwachung besteht. Alle
Funde, die durch Google Hacking gemacht werden können, können auch im Rahmen
eines Penetration Tests gemacht werden – zumal die Verwendung einer Suchmaschine
durchaus Teil eines Penetration Tests sein kann. Wenn die Verwendung einer Suchmaschine im Rahmen eines Penetration Tests nicht möglich ist, ist der Mehrwert durch
59
Zielsetzung
Durch Google Hacking
erreicht
Dauerhafte Überwachung der Web-Inhalte
von IT-Systemen
Entdeckung von Links mit integrierten Zugangsdaten od. SQL-Injection-Parametern
im Internet
Entdeckung von Fehlermeldungen oder
Versionsinformationen von IT-Systemen
auf öffentlich sichtbaren Webseiten
Entdeckung der öffentlichen Zugänglichkeit von Authentifikation voraussetzenden
Bereichen mit Web-Oberfläche
Entdeckung sensibler Informationen, die
im realen System nicht mehr zugänglich
sind, im Suchmaschinen-Cache
ja
Durch
Penetration
Testing
erreicht
nein
ja
evtl. ja
ja
evtl. ja
ja
evtl. ja
ja
evtl. ja
Tabelle 5.4: Vergleich von Google Hacking und Penetration Testing bzgl. Mehrwerts
durch Google Hacking
Google Hacking in den in Tabelle 5.4 aufgelisteten Punkten vorhanden. Dann zeigt sich
der Unterschied in der Art und Weise, auf welche in beiden Verfahren versucht wird,
an sensible Informationen zu gelangen. Beim Google Hacking können Informationen
über den Umweg des Suchindexes oder Caches entwendet werden. Ein Seiteneffekt ist
hierbei, dass es dem Google Hacker deutlich leichter fällt, dabei unerkannt zu bleiben.
Der Zugriff auf den Google Cache bleibt zumindest dann, wenn das Anzeigen von Bildern deaktiviert wird, vom Zielsystem absolut unbemerkt. Es bleibt noch zu bemerken,
dass die Ressourcen des Zielsystems – wie Bandbreite und Rechenzeit – durch Google
Hacking nicht belastet wird, wie es beim klassischen Penetrationtest etwa durch einen
Portscan allerdings der Fall sein kann.
5.5.4
Durch Vulnerability Scanning und Penetration Testing geschützte Systeme
Wie schon aus den letzten beiden Abschnitten hervorgeht, bietet Google Hacking für
IT-Systeme, die nur durch eine der beiden anderen genannten Schutzmaßnahmen gesichert werden, in bestimmten Punkten einen Mehrwert. Um zu erkennen, ob es auch
gegen die beiden anderen Schutzmaßnahmen gleichzeitig – und evtl. einen daraus hervorgehenden Synergieeffekt – einen Mehrwert bietet, hier eine weitere Gegenüberstellung.
Durch die Gegenüberstellung in Tabelle 5.5 wird deutlich: Durch Vulnerability
Scanner (insbesondere solche wie WebInspect) können ähnliche Überwachungs-Aufgaben wie durch Google Scanning übernommen werden. Allerdings wird ein Vulnerability Scanner üblicherweise von einem unternehmenseigenen IT-System aus gestartet.
Die Perspektive des Webcrawlers einer Suchmaschine beinhaltet einen größeren Abstand zu einem IT-System und repräsentiert somit möglicherweise eher eine Sicht auf
ein System, die derjenigen eines externen Angreifers entspricht. Zudem wird durch
60
Schutzmaßnahme
Google Hacking
Entdeckung öffentlich über
das Web zugänglicher, vertraulicher Informationen in
den Formaten HTML, Doc,
Xls, ...
Entdeckung von Links im
Internet, die Zugangsdaten od. SQL-InjectionParameter enthalten
Entdeckung von im Web öffentlich sichtbaren Fehlermeldungen und/oder Versionsinformationen
Durch intervallbasierte Überwachung;
von Außen
Entdeckung der Zugänglichkeit von Authentifikation
voraussetzenden Bereichen
mit Web-Oberfläche
Durch intervallbasierte Überwachung
von Außen
Überprüfung der Existenz
von sensiblen Informationen
im Suchmaschinen-Cache
Dauerhafte Überwachung
der Web-Inhalte von ITSystemen
Durch intervallbasierte Überwachung
Durch intervallbasierte Überwachung
von Innen; evtl.
im Rahmen eines
Pentests
Durch intervallbasierte Überwachung
von Innen; evtl.
im Rahmen eines
Pentests
Evtl. im Rahmen eines Pentests
ja; Perspektive: von
Außen
ja; Perspektive: von
Innen
Durch intervallbasierte Überwachung
von Außen
Durch intervallbasierte Überwachung
von Außen
Vulnerability Scanning mit Penetration
Testing
Durch intervallbasierte Überwachung
von Innen; Von Außen evtl. im Rahmen
eines Pentests
Evtl. im Rahmen eines Pentests
Tabelle 5.5: Vergleich von Google Hacking und Penetration Testing zusammen mit
Vulnerability Scanning bzgl. Mehrwerts durch Google Hacking
61
Google Scanning im Gegensatz zum herkömmlichen Vulnerability Scanning in jedem Aspekt die Problematik berücksichtigt, dass eine Information auch dann noch im
Suchmaschinen-Cache vorhanden sein kann, wenn sie im realen System schon nicht
mehr vorhanden ist.
5.5.5
Kosten-/Nutzen-Verhältnisse auf Basis des messbaren Anteils
am Sicherheitsgewinn
Wie schon in [Fre] bemerkt wird, gibt es einen steigenden Bedarf dafür, Kosten und
Nutzen von Investitionen in Sicherheit abzuwägen. Investitionen in (Daten-)Sicherheit
unterscheiden sich (siehe [Wei]) von anderen unternehmerischen Investitionen darin,
dass sie nicht etwa einen steigenden Gewinn zur Folge haben, sondern möglicherweise die Vermeidung von Verlust. Diese Perspektive macht es schwierig, eine sinnvolle
Höhe der Investition zu finden.
Um dies zu erleichtern, wurden betriebswirtschaftliche Messwerte wie ROSI („Return on Security Investments“), „risk leverage“ eingeführt. Anhand von Werten wie
diesem soll aufgezeigt werden, welchen Wert eine Investition in Sicherheit hat, indem
sie ins Verhältnis zum Verlust, der durch die gestiegene Sicherheit verhindert wurde,
gesetzt wird. Dies setzt Kenntnisse darüber voraus, welche Gefahren durch die Investition abgewehrt werden. Hierbei kann man sich ausschließlich auf Erfahrungswerte
stützen.
In den beispielhaften Google-Scans, die in Anhang B beschrieben werden, sind die
folgenden Arten von Funden aufgetreten:
1. Zugangsdaten von Kunden zu einem Business-Portal
2. Zugangsdaten zu einer Kunden-Homepage
3. Auflistung von Verzeichnis-Inhalten
4. Konfigurationsdatei für „Virtual Hosts“
5. PHP-Testseiten mit detaillierten Konfigurations-Informationen
Die Möglichkeiten des Missbrauchs dieser Informationen können jeweils nur abgeschätzt werden. Bei den hier aufgelisteten Arten von Funden ist die Art von Punkt
1 diejenige, durch die am wahrscheinlichsten ein erheblicher finanzieller Schaden für
eine Firma entstehen könnte. Alle weiteren Arten von Funden können es einem Angreifer allerdings unter Umständen erheblich erleichtern, eine Strategie für einen Angriff
auf die IT-Systeme der jeweiligen Firmen zu finden.
Wenn zudem nur anhand dieser Erfahrungswerte über das Vorkommen von Funden von sensiblen Daten einer Investition in Sicherheit, also in diesem Falle in Google
Hacking / Google Scanning, zugrundegelegt wird, bringt dies allerdings die Frage mit
sich: Sollten bei einer Investition in Security nur diejenigen Gefahren berücksichtigt
werden, bei denen aus Erfahrung bekannt wurde, welche Verluste und Folgekosten
durch sie entstehen können? Die Höhe eines möglichen, zukünftigen Verlustes kann
zwar nicht leicht eineschätzt werden. Jedoch könnte er möglicherweise durch die vergleichsweise geringen Investition in Google Hacking bzw. -Scanning verhindert werden – wobei der Hauptteil dieser Investition aus Personalkosten bestehen würde.
62
5.6
Zusammenfassung
Für den Vergleich mit herkömmlichem Vulnerability Scanning wurden die Tools „Nessus“, „QualysGuard“ und „WebInspect“ vorgestellt. Anhand dieser Beispiele wurden
Parallelen und Unterschiede zum Google Scanning untersucht, wobei sich einige theoretische und praktische Parallelen herausstellten, die Berücksichtigung von Suchmaschinen-Speichern aber stets einen Unterschied ausmachte.
Im Folgenden wurden die Möglichkeiten, die Abwehrrate gegen Google Hacking
durch präventives Google Scanning zu maximieren, betrachtet. Hierbei zeigte sich,
dass die Aktualität der Indizes der verwendeten Suchmaschine, sowie der Inhalt der
verwendeten Menge von Suchmustern wesentlichen Einfluss auf diese Möglichkeiten
haben.
Ein Ziel der Diplomarbeit war die Beurteilung eines möglichen Mehrwertes für
die Sicherung der IT-Systeme eines Unternehmens durch Google Hacking bzw. Google Scanning. Hierzu wurde der Einsatz von Google Scanning im Rahmen von verschiedenen Ausgangssituationen betrachtet, in denen entweder überhaupt keine vergleichbare Schutzmaßnahme eingesetzt wird; ausschließlich Vulnerability Scanning,
ausschließlich Penetration Testing oder beide diese Verfahren. Hier zeigte sich, dass
Google Scanning im ersten Fall zwar einen erheblichen Sicherheitsgewinn darstellen
kann, allerdings nur in bestimmten Bereichen.
Im Falle der Ergänzung zu Vulnerability Scanning zeigt sich der Mehrwert von
Google Scanning darin, dass hierdurch zwar ähnliche Aspekte berücksichtigt werden
wie durch Vulnerability Scanner der Art von WebInspect; mit Fokussierung auf die
Suchmaschinen liefert Google Scanning jedoch darüber hinaus gehende Informationen,
die einen Mehrwert bedeuten.
Zu Penetration Testing liefert Google Scanning allein schon deshalb einen Mehrwert, da es als regelmäßige, automatisierte Schutzmaßnahme – wie im herkömmlichen
Vulnerability Scanning – eingerichtet werden kann. Penetration Testing als Maßnahme zu vereinzelten Zeitpunkten kann zwar aufgrund der allgemeineren Fokussierung
alle Ergebnisse, die durch Google Hacking entstehen können, mit berücksichtigen, da
dieses im Rahmen eines Pentests durchaus angewendet werden kann. Jedoch werden
durch Penetration Testing die Funde, die durch Google Scanning entstehen, nicht zeitnah zu ihrem Auftreten gemacht.
Somit liefert Google Scanning auch für den Schutz von IT-Systemen, die sowohl
schon durch Vulnerability-Scanning, als auch durch Penetration Testing gesichert werden, einen Mehrwert. Es wird ebenso wie herkömmliches Vulnerability Scanning als
automatisiertes Schutzsystem eingesetzt, liefert jedoch teilweise Ergebnisse, die sonst
nur durch Penetration Testing entstehen würden.
Das Kosten-/Nutzen-Verhältnis von Google Scanning ist zwar auch nach diesen
Erkenntnissen nicht genau zu quantifizieren und könnte nur aufgrund von Erfahrungen
mit Ergebnissen durch Google Scanning gemacht werden. Diese Ergebnisse können jedoch schon einen Eindruck davon vermitteln, welche Arten von potentiellen Ursachen
für finanzielle Schäden durch Google Scanning entdeckt und verhindert werden können. Aufgrund der nur geringen Investitionen, die für die Einrichtung eines dauerhaften Schutzes durch Google Scanning notwendig wären, und der sehr wahrscheinlichen
Reduktion der dauerhaften Personalkosten auf ein akzeptables Maß, ist das Kosten/Nutzen-Verhältnis somit zugunsten der Investition anzusehen.
Durch Vulnerability Scanning werden Sicherheitslücken aufgedeckt, die mögli63
cherweise schon über einen längeren Zeitraum vorhanden sind und eventuell zu Schaden geführt haben. Um Schäden im Voraus zu vermeiden, sind präventive Abwehrmaßnahmen notwendig. Welche Möglichkeiten hierfür bestehen, wird im folgenden
Kapitel erläutert.
64
Kapitel 6
Präventive Abwehr von Google
Hacking
6.1
Einleitung
Einem Google-Hacker soll es im Sinne des Datenschutzes unmöglich gemacht werden,
sensible Informationen zu finden. Daher ist es für den Eigner dieser Informationen
wichtig, frühzeitig zu erkennen, ob diese Gefahr besteht, so dass er die Möglichkeit
hat, sich vor der Preisgabe seiner Informationen zu schützen. Wie im letzten Kapitel beschrieben wurde, besteht diese Möglichkeit durch Google Scanning mittels eines
Werkzeugs wie GooScanner. Diese Art der Vorgehensweise hat jedoch den Nachteil,
dass eine Gefahr erst erkannt wird, wenn sie schon gegenwärtig ist – nämlich in Form
von Inhalt einer öffentlichen Suchmaschine. Potentiellen Angreifern kann man daher
mit Hilfe einer eigenen Suchmaschine effektiver zuvorkommen, was im ersten Abschnitt dieses Kapitels erläutert wird.
In den weiteren Abschnitten werden ergänzende Schutzmaßnahmen erläutert. Hierzu gehört grundsätzlich eine sichere Konfiguration von schützenswerten Servern. Der
Einsatz von so genannten „Google Hacking Honeypots“ kann ggf. Angreifer ablenken
oder Informationen über sie liefern. Unvorsichtige Google Hacker können zudem ggf.
erkannt und abgeblockt werden.
Bei Überlegungen zur Abwehr von Google Hacking ist es wichtig, zu wissen, wie
weitgehend Informationen von Web-Crawlern wie den Bots der Suchmaschinen überhaupt gefunden werden können. Hierauf wird im vorletzten Abschnitt dieses Kapitels
eingegangen.
Zusammenfassend wird im letzten Abschnitt eine Empfehlung zur Einrichtung eines dauerhaften Schutzes gegen Google Hacking gegeben.
6.2
Alarmsysteme
Ziel eines Alarmsystems sollte sein, eine eventuelle Lücke im Zugriffsschutz auf sensible Informationen vor Interessenten mit böswilligen Absichten, in unserem Falle vor
Google-Hackern, zu finden. Wenn zum Aufspüren solcher Lücken ein Administrator
dieselbe Ressource verwendet wie eventuelle Angreifer, nämlich die originale Suchmaschine, hat er keinen zeitlichen Vorsprung vor dem Hacker. Da man davon ausgehen
65
sollte, dass Hacker ebenfalls automatisierte Tools verwenden, ist ein zeitlicher Vorsprung eigentlich überhaupt nicht möglich.
Eine auf Google Scanning basierende Abwehrmaßnahme wäre effektiver, wenn
durch das Einlesen von sensiblen Informationen durch Webcrawler von öffentlichen
Suchmaschinen nicht nur im Nachhinein sondern vorher erkannt würde, dass diese
Möglichkeit besteht. So könnten die Informationen rechtzeitig geschützt werden. Durch
Google Scanning kann dies allerdings nur erreicht werden, wenn ein Webcrawler nebst
zugehöriger Suchmaschine verwendet wird, die nicht öffentlich zugänglich ist und aktuellere Inhalte als die öffentlichen Suchmaschinen hat. Falls hierzu eine selbst entwickelte Kombination aus Webcrawler und Suchmaschine verwendet würde, könnte man
im Betrieb allerdings nicht sicher gehen, alle möglichen Funde zu machen, die auch
durch die öffentlichen Suchmaschinen gemacht werden könnten, da die Quellcodes
ihrer Webcrawler und Such-Algorithmen nicht öffentlich zugänglich sind. Allerdings
bietet Google seinen Crawler und seine Suchmaschine als geschlossenes System zum
Einsatz innerhalb von Unternehmen an. Google Mini und Google Search Appliance
können auf „Dauer-Crawling“ konfiguriert werden (siehe [gooc]). Somit hängt die Aktualität der Daten nur davon ab, wie viel Bandbreite man dem Crawler zur Verfügung
stellt - und natürlich von der internen Arbeitsgeschwindigkeit des Google-Mini- oder
-Search-Appliance-Servers. Welche Auswirkungen diese Aktualität auf die Möglichkeiten zur Sicherung eines Systems hat, wird in Abschnitt 5.3.2 erläutert.
Dem Autor dieser Diplomarbeit stand allerdings kein Exemplar der Suchmaschinen zur Verfügung, so dass die praktische Verwendung im Zusammenhang mit Google
Hacking nicht getestet werden konnte.
6.3
Server-Konfiguration
Mittels einer Datei namens robots.txt, welche im Wurzelverzeichnis einer Website
liegt, kann man Suchmaschinen mitteilen, welche Bestandteile einer Website möglichst
durch sie indiziert werden sollten und welche nicht. Zudem kann man die Indizierung
der Seite durch bestimmte Suchmaschinen erlauben oder verbieten. An diese auf Basis des so genannten „Robots Exclusion Standard“ verfassten Anweisungen halten sich
jedoch nicht unbedingt alle Webcrawler, jedoch definitiv die Webcrawler der hier für
Google Hacking verwendeten Suchmaschinen.
Das Problem auf der Opferseite des Google Hacking besteht oftmals darin, dass ein
Verzeichnis oder Dateien vom Internet aus zugänglich sind, obwohl sie es nicht sein
sollten. Diese Verzeichnisse sind somit nicht durch vorher definierte Indizierungsverbote schützbar, da ohnehin die Möglichkeit der Indizierung nicht in Erwägung gezogen
worden war. Eine Blacklist mit bestimmten Verboten ist somit nicht sehr wirkungsvoll.
Stattdessen sollte eine robots.txt als Whitelist konfiguriert werden. In Belegungen der
Parameter „Allow“ und „Disallow“ darf wie bei „User-agent“ das Jokerzeichen „*“
verwendet werden.
Beispiel 24
User-agent: *
Disallow: /*
Allow: /news/daily.html
In Beispiel 24 wird durch die erste Zeile das Indizieren der Website jeder Suchmaschine erlaubt. In der zweiten Zeile wird das komplette Indizieren des Verzeichnisses
„/news/“ verboten. Das Indizieren der Datei „/news/daily.html“ wiederum wird
66
durch die dritte Zeile erlaubt.
Auf diese Weise kann sichergestellt werden, dass nur genau diejenigen Seiten in Suchmaschinen-Indizes auffindbar sind, von denen man dieses auch möchte. Einen Schutz
vor Web-Spidern oder -Crawlern, die sich nicht an die Konvention der Berücksichtigung einer robots.txt halten, bietet diese Maßnahme natürlich nicht.
Im Falle des MsnBot kann zusätzlich noch auf folgende Weise die minimale Zeit
zwischen zwei Crawling-Vorgängen angegeben werden:
Beispiel 25
User-agent: msnbot
Crawl-delay: 120
Ergänzend zur robots.txt können die Webcrawler von Google und weiterer Suchmaschinen mittels spezieller Meta-Tags in den indizierten HTML-Dateien in ihrem
Indizierungs-Verhalten beeinflusst werden. Durch den folgenden Tag im Header einer
HTML-Datei werden Crawler dazu veranlasst, die Seite nicht in ihren Cache aufzunehmen:
<META NAME=ROBOTS CONTENT=NOARCHIVE>
Wenn von der Seite außerdem keine Fragmente gespeichert werden sollen, die in
der Liste der Suchergebnisse gezeigt werden, lautet der Tag mit der entsprechenden
Anweisung folgendermaßen:
<META NAME=ROBOTS CONTENT=NOSNIPPET>
Im Falle des MsnBot sind die Bezeichnungen dieser Meta-Tags abweichend. Das
Verbot einer Aufnahme in den Cache lautet hier:
<META NAME=msnbot CONTENT=NOCACHE />
Verbot der Aufnahme in den Index:
<META NAME=msnbot CONTENT=NOINDEX />
Zudem kann hier verboten werden, Links zu folgen, welche auf der Hauptseite angegeben werden:
<META NAME=msnbot CONTENT=NOFOLLOW />
Speziell im Hinblick auf Google ist eine etwas genauere Konfiguration möglich.
Mittels einer Datei namens sitemap.xml, welche im Wurzelverzeichnis einer Website abgelegt wird, kann der Google-Bot angewiesen werden, welche Seite einer Website
er wie oft besuchen soll, und welche Seiten als Suchergebnis eine höhere Priorität haben sollen. Allerdings gibt es keine Garantie durch Google, dass die Anweisungen in
dieser Datei genau beachtet werden. Zudem bietet das Format keine Möglichkeiten, bestimmte URLs von der Indizierung auszuschließen. Dafür muss weiterhin die robots.txt
verwendet werden. Die folgenden XML-Tags können in einer sitemap.xml verwendet
werden:
• <urlset> (erforderlich): Menge von URLs
• <url> (erforderlich): Beschreibung der Behandlung einer URL
• <loc> (erforderlich): Wortlaut der URL
67
1
2
3
4
5
6
7
8
9
<? xml v e r s i o n = " 1 . 0 " e n c o d i n g = "UTF−8" ? >
< u r l s e t xmlns = " h t t p : / / www. g o o g l e . com / s c h e m a s / s i t e m a p / 0 . 8 4 " >
<url>
< l o c > h t t p : / / www. e x a m p l e . com / < / l o c >
< l a s t m o d >2005−01−01< / l a s t m o d >
< c h a n g e f r e q >monthly< / c h a n g e f r e q >
< p r i o r i t y >0.8</ p r i o r i t y >
</ url>
</ urlset>
Abbildung 6.1: Beispiel einer sitemap.xml
• <lastmod> (optional): Datum der letzten Änderung des Inhalts
• <changefreq> (optional): Häufigkeit der Änderung des Inhalts der Seite. Mögliche Werte:
– always
– hourly
– daily
– weekly
– monthly
– yearly
– never
Diese Werte dienen allerdings nur als Hinweis an Google. Dadurch ist nicht seitens Google garantiert, dass die Seite auch gemäß dieser Zeitabstände neu indiziert wird.
• <priority> (optional): Priorität der URL gegenüber anderen URLs in derselben Menge von URLs
Das Listing 6.1 einer beispielhaften sitemap.xml stammt aus der offiziellen Dokumentation der Google Webmaster Tools [goof]. Grundsätzlich ist eine sichere Konfiguration
der gesamten IT-Infrastruktur empfehlenswert, um auch gegen Google Hacking weniger anfällig zu sein. Da eine allgemeine Absicherung sich nicht explizit auf Google
Hacking bezieht, wird sie hier nicht weiter erläutert.
6.4
Google Hacking Honeypots / Verbreitung von Falschinformationen
Webseiten lassen sich so präparieren, dass sie, sobald sie von einer Suchmaschine indiziert wurden, unter Verwendung von typischen Google-Hacking-Suchmustern gefunden werden. Dies ist im Wesentlichen der Ansatz des so genannten „Google Hacking
Honeypots“ [ghh]. Seiten, die exakt den Inhalt haben, der einem bestimmten Suchmuster entspricht, tauchen bei einer Suche an oberster Stelle der Ergebnisliste auf. Auf
diese Weise kann ein Angreifer also auf eine Seite gelockt werden, die allerdings keine
sensiblen Informationen enthält. Falls möglich, können an dieser Stelle Informationen
68
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/ / getAttacker () returns attacker profile
function getAttacker () {
$ A t t a c k e r = array ( ) ;
$ A t t a c k e r [ ’ I P ’ ] = i s s e t ( $_SERVER [ ’REMOTE_ADDR ’ ] ) ? s a n i t i z e (
$_SERVER [ ’REMOTE_ADDR ’ ] . g e t P r o x y ( ) ) : n u l l ;
$ A t t a c k e r [ ’ r e q u e s t ’ ] = i s s e t ( $_SERVER [ ’REQUEST_URI ’ ] ) ?
s a n i t i z e ( $_SERVER [ ’REQUEST_URI ’ ] ) : n u l l ;
$ A t t a c k e r [ ’ r e f e r e r ’ ] = i s s e t ( $_SERVER [ ’HTTP_REFERER ’ ] ) ?
s a n i t i z e ( $_SERVER [ ’HTTP_REFERER ’ ] ) : n u l l ;
$ A t t a c k e r [ ’ a g e n t ’ ] = i s s e t ( $_SERVER [ ’HTTP_USER_AGENT ’ ] ) ?
s a n i t i z e ( $_SERVER [ ’HTTP_USER_AGENT ’ ] ) : n u l l ;
$ A t t a c k e r [ ’ a c c e p t ’ ] = i s s e t ( $_SERVER [ ’HTTP_ACCEPT ’ ] ) ?
s a n i t i z e ( $_SERVER [ ’HTTP_ACCEPT ’ ] ) : n u l l ;
$ A t t a c k e r [ ’ c h a r s e t ’ ] = i s s e t ( $_SERVER [ ’HTTP_ACCEPT_CHARSET ’ ] )
? s a n i t i z e ( $_SERVER [ ’HTTP_ACCEPT_CHARSET ’ ] ) : n u l l ;
$ A t t a c k e r [ ’ e n c o d i n g ’ ] = i s s e t ( $_SERVER [ ’HTTP_ACCEPT_ENCODING ’
] ) ? s a n i t i z e ( $_SERVER [ ’HTTP_ACCEPT_ENCODING ’ ] ) : n u l l ;
$ A t t a c k e r [ ’ l a n g u a g e ’ ] = i s s e t ( $_SERVER [ ’HTTP_ACCEPT_LANGUAGE ’
] ) ? s a n i t i z e ( $_SERVER [ ’HTTP_ACCEPT_LANGUAGE ’ ] ) : n u l l ;
$ A t t a c k e r [ ’ c o n n e c t i o n ’ ] = i s s e t ( $_SERVER [ ’HTTP_CONNECTION ’ ] )
? s a n i t i z e ( $_SERVER [ ’HTTP_CONNECTION ’ ] ) : n u l l ;
$ A t t a c k e r [ ’ k e e p _ a l i v e ’ ] = i s s e t ( $_SERVER [ ’HTTP_KEEP_ALIVE ’ ] )
? s a n i t i z e ( $_SERVER [ ’HTTP_KEEP_ALIVE ’ ] ) : n u l l ;
return $Attacker ;
}
Abbildung 6.2: Honeypot-Funktion zum Sammeln von Informationen über Angreifer
über den potentiellen Angreifer gesammelt werden, wie etwa die IP, der verwendete
Browser, der Referrer und – im Einzelfall möglicherweise vorhanden – weitere Informationen, welche durch den HTTP-Header des Angreifers in Erfahrung zu bringen
sind. Eine mögliche Maßnahme wäre daraufhin das Blockieren des Zugriffs auf die
gesamte Website für die IP des potentiellen Angreifers.
Die präparierten Honeypot-Seiten sollten hierbei nur für den Bot der Suchmaschine erkennbar sein, aber nicht für „normale“ Besucher der Website. Somit sollten Links
auf die Honeypot-Seiten unsichtbar innerhalb von sichtbaren Webseiten gesetzt werden. Das versteckte Sammeln von Daten über Besucher ist beispielsweise mit Hilfe
Server-seitiger Scriptsprachen durchführbar. So können PHP-Scripte beispielsweise in
txt-Dateien versteckt werden, wobei nach Aufruf der Datei durch den Angreifer nur die
Ausgabe, die das PHP-Script produziert, sichtbar ist. In Zeile 4 des Listings 6.2 soll die
IP-Adresse des Angreifers ermittelt werden. Zur Identifizierung des Angreifers ist diese allerdings nur dann hilfreich, wenn der Angreifer keinen Anonymisierungsdienst
wie JAP [jap] verwendet.
Ein Nebeneffekt dieser Methode ist die Verbreitung falscher Informationen – also
derjenigen Informationen, die einen Google-Hacker anlocken sollen, aber nicht wirklich wertvoll für ihn sind. Auch ohne eine versteckte Honeypot-Funktion bieten Fehlinformationen den Nutzen, dass Angreifer sie bei geschickter Präparierung kaum von
wahrheitsgemäßen Informationen unterscheiden können, so dass in der Gesamtmenge von Informationen diejenigen, die für den Angreifer interessant sein könnten, nicht
mehr als solche erkannt werden können. Ein Beispiel hierfür wäre die Angabe von
69
falschen Server-Versions-Informationen, oder die Ablage von PHP-Fehlermeldungen,
die auf nichtexistente Pfadstrukturen des Servers hinweisen. Solche Fehlermeldungen
müssen das Erscheinungsbild einer Webseite nicht stören, da Verweise auf sie optisch
unauffällig bis unsichtbar abgelegt werden können.
6.5
Blockieren des Zugriffs für offensichtliche
Google-Hacker
Falls der Google-Hacker direkt auf der Suchergebnis-Seite von Google den Link auf
sein Ziel anklickt, kann man ihn und seine Absichten ggf. am „Referrer“ erkennen. Im
Allgemeinen wird durch die gängigen Internet-Browser beim Aufruf einer Seite, deren
URL auf einer anderen Seite als Link existiert, im HTTP-Header im Feld namens „Referer“ die Adresse der Seite, auf welche der Link ausgewählt wird, mit gesendet. Diese
Eigenschaft kann in manchen Browsern allerdings abgeschaltet werden, und kann nicht
ausgenutzt werden, wenn nicht direkt ein Link einer Ergebnisliste einer Suchmaschine
ausgewählt bzw. angeklickt wird. Eine Referrer-Angabe kann auch ohne großen Aufwand gefälscht bzw. manipuliert werden. Daher ist dieser Ansatz im Allgemeinen nicht
besonders erfolgsversprechend.
Beispiel 26 Der Referrer eines Users, der auf eine Webseite gelangt, lautet:
http://www.google.com/search?q=inurl:password
+site\%3Atarget.com
Hier hat jemand über Google nach dem folgenden Suchmuster gesucht:
inurl:password site:target.com
Wenn die Suche aus Beispiel 26 vorher vom Administrator der gefährdeten Website
in Erwägung gezogen wurde, kann ein potentieller Google Hacker an seinem Referrer
erkannt werden und auf eine Honeypot-Seite weitergeleitet werden.
6.6
Betrachtung des Inhalts von Websites unter Verwendung eines Webcrawlers
In [spi07] wird als wichtige Maßnahme zur Prävention von Informationslecks durch
Suchmaschinen empfohlen, einen eigenen Webcrawler zu verwenden, der alle WebAuftritte eines IT-Systems durchsucht und alle findbaren Informationen speichert. Diese sollten dann in ein leicht lesbares Format gebracht und komplett in Augenschein
genommen werden, um evtl. unerwartete Auffälligkeiten zu finden. Dies ist vor allem
deswegen sinnvoll, da eine Datenbank aus Google-Hacking-Suchmustern niemals vollständig sein kann. Wenn man sich allein auf Google Scanning beschränken würde, um
einen Web-Auftritt zu durchsuchen, könnte man sich aufgrund dieser Unvollständigkeit in falscher Sicherheit wiegen. Selbst bei Verwendung des „Schusses ins Blaue“
– also der Suche nach einem Leerzeichen – wäre es möglich, dass ein Fund nur deswegen nicht gemacht wird, da der Webcrawler der Suchmaschine eine verwundbare
Stelle evtl. erst später finden wird – oder, dass der Fund „zu tief“ in der Ergebnisliste
liegt, d.h., über die Grenze der Anzahl lieferbarer Suchergebnisse hinausgeht (siehe
Abschnitt 3.4.5). Eine ähnliche Maßnahme kann auch mit Hilfe von Suchmaschinen
durchgeführt werden – also die bewusste Suche nach einer maximal möglichen Anzahl
von (teilweise Falsch-)Treffern (siehe ebenfalls Abschnitt 3.4.5).
70
6.7
Zusammenfassung
In diesem Kapitel wurden Ansätze und Methoden der präventiven Abwehr gegen Google Hacking beschrieben. Eine Möglichkeit, im präventiven Google Hacking einen
Vorsprung gegenüber potentiellen Angreifer zu haben, stellt hierbei eine unternehmenseigene Suchmaschine dar. Durch eine nicht-öffentliche und in ihrem Inhalt oft
aktualisierte Suchmaschine könnte also theoretisch eine Schutzvorrichtung eingerichtet werden, mittels derer einer Verwundbarkeit durch die öffentlichen Suchmaschinen
vorgebeugt werden könnte.
Eine – im allgemeinen Sinne – sichere Konfiguration von IT-Systemen ist jedoch
auch im Falle von Google Hacking die beste Methode, um Anfälligkeit gegenüber Angreifern zu unterbinden. Einrichtungen wie Google-Hacking-Honeypots können dazu
dienen, Informationen über einen Angreifer zu sammeln, wobei diese nur dann einen
Wert haben, wenn dieser keinen Anonymisierungsdienst verwendet. Die Verbreitung
von Falschinformationen könnte im Vergleich eine wirkungsvollere Abwehrmaßnahme sein. Das Blockieren des Zugriffs für offensichtliche Google-Hacker hingegen ist
nur dann von Nutzen, wenn dieser nicht besonders geschickt vorgeht.
Als letzte Maßnahme, die wie die sichere Konfiguration von IT-Systemen nicht nur
hinsichtlich Google Hacking empfehlenswert ist, wurde das „manuelle“ Betrachten der
Inhalte von Web-Inhalten angesprochen.
Im folgenden und letzten Kapitel werden nun diese und die Ergebnisse der Vergangenen Kapitel zusammengefasst und bewertet.
71
Kapitel 7
Zusammenfassung
Zu Beginn der Diplomarbeit wurde zunächst das Google Hacking in seinen Grundlagen beschrieben und eine Übersicht über die verwendeten Techniken gegeben. Mittels
beispielhafter Suchmuster wurde dargestellt, auf welche Art und Weise mit Hilfe von
Suchmaschinen Daten gefunden werden können, die eigentlich nicht für die Öffentlichkeit bestimmt sind. Dabei beschränkt sich diese Suche nicht nur auf die Suchmaschine,
die namensgebend für diese Art des Hackings war, sondern kann ebenso gut in anderen Suchmaschinen wie Live Search und Yahoo Search angewandt werden. Diese
beiden Suchmaschinen haben neben Google eine besondere Bedeutung für das Google
Hacking, da sie aufgrund ihrer APIs für automatisierte Google Scanning-Programme
nutzbar sind.
Der systematische Ablauf von Google Scanning wurde im darauf folgenden Kapitel beschrieben. Neben der Beschreibung von Vorbereitung und Durchführung eines
Google-Scans wurde gezeigt, auf welche Weise Ergebnisse dieses Vorgangs interpretiert werden können, und welche Maßnahmen im Einzelfall nach einem kritischen Fund
getroffen werden sollten.
Im folgenden Kapitel wurde die Implementierung eines automatisierten GoogleHacking-Tools beschrieben. Mit Hilfe des im Rahmen der Diplomarbeit entwickelten
„GooScanner“ können beliebige Domains bezüglich beliebiger Suchmuster überwacht
werden, wobei hierfür eine Untersuchung in regelmäßigen Abständen durchgeführt
wird. Neue Funde werden durch das Programm gemeldet. Zur Bewertung und Kategorisierung dieser Funde stellt es eine Web-Schnittstelle zur Verfügung. Die GoogleSOAP-API bzw. „Google Webservices“ erwies sich für die Implementierung als nützlich, und auch unverzichtbar – ebenso wie die APIs der Suchmaschinen Live Search
und Yahoo Search. Dies trifft allerdings nicht auf „Google Alerts“ zu.
Im Rahmen der Verwendung von GooScanner für einige Beispielhafte Scans der
Domains einiger IT-Firmen und der Einrichtung eines regelmäßigen Scan-“Jobs“ für
Domains der Firma T-Mobile (siehe Anhang B5 in der nicht-öffentlichen Version des
Dokuments) zeigte sich die Eignung von Google Hacking für die Aufdeckung unbeabsichtigter Veröffentlichung sensibler Daten, und somit für den Schutz von IT-Systemen.
Nach der Vorstellung von GooScanner wurde im Rahmen eines Vergleichs mit herkömmlichen Scanning-Methoden erörtert, welchen Mehrwert Google Hacking bzw.
-Scanning gegenüber anderen, üblichen Sicherungsmethoden hat. Hierzu wurden mehrere Ausgangslagen von IT-Systemen hinsichtlich ihrer Sicherheit mit- oder ohne Google-Scanning betrachtet. Es zeigte sich, dass der Mehrwert von Google Hacking gegenüber Vulnerability Scanning und Penetration Testing darin besteht, dass durch Google
72
Hacking spezielle Funde gemacht werden können, die durch herkömmliches Vulnerability Scanning üblicherweise nicht gemacht werden; der Mehrwert gegenüber Penetration Testing besteht in der Möglichkeit der Automatisierung von Google Hacking.
Zu Abwehr von Angriffen durch Google Hacking wurden abschließend einige Maßnahmen vorgestellt. Hierzu gehörte auch die Idee, statt einer öffentlichen Suchmaschine eine private zu verwenden. Hierdurch könnten sensible Informationen gefunden und
geschützt werden, bevor öffentliche Suchmaschinen sie kopieren können.
7.1
Fazit
Bei der Entstehung von Google Hacking gab es noch nicht das Ziel des Angriffs auf
bestimmte IT-Systeme. Es entwickelte sich eher aus allgemeiner Neugier und war ohne Fokussierung auf bestimmte Domains auch weitaus ergiebiger – was es auch heute
noch ist. Wie sich im Rahmen der in dieser Diplomarbeit durchgeführten Scans gezeigt
hat, sind bei der Untersuchung einzelner IT-Systeme auf Verwundbarkeiten durch Google Hacking nicht unbedingt sehr viele Ergebnisse zu erwarten. Dennoch können die
wenigen Funde, die gemacht wurden, hilfreich für die Administratoren der jeweiligen
Systeme sein, um diese sicherer zu konfigurieren – bzw., um ihre Kunden darauf aufmerksam zu machen, weniger nachlässig mit ihren Zugangsdaten umzugehen.
Dabei ist das Google Hacking bzw. -Scanning durchaus als sinnvolle Ergänzung
zu Vulnerability Scanning zu betrachten, wie der Vergleich in Kapitel 5 gezeigt hat.
Ein Mehrwert gegenüber herkömmlichen Scanning-Methoden ist vorhanden, wobei
sich dieser nicht verallgemeinernd in Zahlen ausdrücken lässt. Für ein Unternehmen
hängt die Entscheidung über den Einsatz von Google Hacking in erster Linie von der
notwendigen finanziellen Investition ab. Diese ist allerdings relativ niedrig – ein Programm wie GooScanner hat niedrige Ansprüche an Rechenleistung, Arbeitsspeicher
und nichtflüchtigem Speicherplatz. Die Zeit zum Bewerten neuer Treffer liegt auch bei
der Untersuchung umfangreicher Domains nach ein paar Tagen im Bereich weniger
Minuten. Insofern ist der Einsatz von Google Hacking für Unternehmen empfehlenswert.
73
Anhang A
Quellcode aus GooScanner
A.1
1
2
Das Scheduling-Modul von GooScanner
<? php
/ ∗ g o o s c a n n e r _ s c h e d u l e r . php : S c h a u t nach , w e l c h e J o b s
e x i s t i e r e n ; w e l c h e davon a u s g e f ü h r t werden können ; w i e v i e l e
A n f r a g e n p r o S u c h m a s c h i n e am Tag noch g e t a n werden d ü r f e n ;
und l e g t dann l o s m i t den h e u t e f ä l l i g e n S c a n s . ∗ /
3
4
5
6
7
$ c u r r e n t D a t e = d a t e ( "Y−m−d " ) ; $ c u r r e n t T i m e = d a t e ( "G: i : s " ) ;
i n c l u d e _ o n c e " common / o p e n _ d a t a b a s e . php " ;
i n c l u d e _ o n c e " common / g e n e r a l . php " ;
set_time_limit (60000) ;
8
9
10
11
12
$ s q l = "SELECT ∗ FROM j o b WHERE j o b A c t i v e =TRUE" ;
$ j o b s _ r s = my_query ( $ s q l ) ;
$number_of_all_active_jobs = mysql_affected_rows ( ) ;
echo " I n s g e s a m t b e f i n d e n s i c h $ n u m b e r _ o f _ a l l _ a c t i v e _ j o b s a k t i v e
Jobs i n der Datenbank . " ;
13
14
15
/ / Gehe a l l e a k t i v e n J o b s d u r c h und s c h a u p r o J o b nach , ob e s
s c h o n e i n e n a n g e f a n g e n e n Scan d a f ü r g i b t , d e r noch n i c h t
beendet i s t .
w h i l e ( $ j o b _ d a t a s e t = m y s q l _ f e t c h _ a r r a y ( $ j o b s _ r s , MYSQL_ASSOC) )
{
16
17
18
19
20
21
22
23
24
25
26
27
28
/ / I n f o r m a t i o n e n über e i n e n Job :
$jobKey = $ j o b _ d a t a s e t [ ’ jobKey ’ ] ;
$jobSearchMethod = $ j o b _ d a t a s e t [ ’ jobSearchMethod ’ ] ;
$jobCompanyName = $ j o b _ d a t a s e t [ ’ jobCompanyName ’ ] ;
$jobStartDate = $job_dataset [ ’ jobStartDate ’ ];
$jobStartTime = $job_dataset [ ’ jobStartTime ’ ] ;
$jobInterval = $job_dataset [ ’ jobInterval ’ ];
$jobQueriesPerConduct = $job_dataset [ ’ jobQueriesPerConduct ’ ] ;
$jobDescription = $job_dataset [ ’ jobDescription ’ ];
$jobLastDate = $job_dataset [ ’ jobLastDate ’ ] ;
$jobLastTime = $ j o b _ d a t a s e t [ ’ jobLastTime ’ ] ;
$jobForceNewStart = $job_dataset [ ’ jobForceNewStart ’ ] ;
74
29
30
31
32
33
34
35
36
37
38
/ / Zu d i e s e m J o b e x i s t i e r e n d e Scan−Vorgänge
$ s q l = "SELECT ∗ FROM j o b
INNER JOIN j o b _ h a s _ s c a n
ON j o b . jobKey = j o b _ h a s _ s c a n . jobKey
INNER JOIN s c a n
ON j o b _ h a s _ s c a n . scanKey = s c a n . scanKey
WHERE j o b . jobKey = ’ $jobKey ’ " ;
$ s c a n s _ r s = my_query ( $ s q l ) ;
$ n u m b e r _ o f _ e x i s t i n g _ s c a n s _ f o r _ t h i s _ j o b = mysql_affected_rows
() ;
39
40
$ d i f f e r e n c e _ o f _ d a t e s = d a t e D i f f ( "−" , $ c u r r e n t D a t e , $ j o b L a s t D a t e
);
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
i f ( ( $ d i f f e r e n c e _ o f _ d a t e s >= $ j o b I n t e r v a l ) OR (
$jobForceNewStart ) ) {
$ n e w _ s c a n _ s h o u l d _ b e _ b e g u n = TRUE;
i f ( $jobForceNewStart ) {
echo "ACHTUNG: A u ß e r p l a n m ä ß i g e r S t a r t ! \ n " ;
$ j o b F o r c e _ s q l = "UPDATE j o b SET j o b F o r c e N e w S t a r t =FALSE
WHERE jobKey = $jobKey " ;
$ j o b F o r c e _ r s = my_query ( $ j o b F o r c e _ s q l ) ;
} / / i f ( $jobForceNewStart )
echo " Neuen Scan a n f a n g e n − v o r a u s g e s e t z t , d i e s c h o n
angefangenen Scans s i n d a l l e beendet ? \ n " ;
$ s q l = "UPDATE j o b SET j o b L a s t D a t e = ’ $ c u r r e n t D a t e ’ , j o b L a s t T i m e
= ’ $ c u r r e n t T i m e ’ WHERE jobKey = ’ $jobKey ’ " ;
$ r s = my_query ( $ s q l ) ;
} / / i f ( ( $ d i f f e r e n c e _ o f _ d a t e s >= $ j o b I n t e r v a l ) OR (
$jobForceNewStart ) )
else {
echo " Kein n e u e r Scan f ä l l i g . S i n d a n g e f a n g e n e und noch
n i c h t v o l l e n d e t e Scans vorhanden ? \ n " ;
$new_scan_should_be_begun = 0;
} // else
57
58
59
60
61
62
63
64
65
66
67
68
69
/ / Nun Ü b e r p r ü f u n g , ob e s denn noch e i n e n n i c h t −b e e n d e t e n
s c a n zu d i e s e m J o b g i b t .
i f ( $ n um b e r_ o f_ e x is t i ng _ sc a n s_ f or _ t hi s _ jo b > 0) {
while ( $ s c a n _ d a t a s e t = mysql_fetch_array ( $scans_rs ,
MYSQL_ASSOC) ) {
/ / I s t d e r Scan a k t i v ?
i f ( $ s c a n _ d a t a s e t [ ’ s c a n A c t i v e ’ ] == 1 ) {
echo " Es g i b t e i n e n noch−n i c h t −b e e n d e t e n Scan zu dem
J o b . D i e s e r w i r d nun w e i t e r g e f ü h r t . \ n " ;
$scanKey = $ s c a n _ d a t a s e t [ ’ scanKey ’ ] ;
d o _ s c a n ( $jobKey , $scanKey ) ; / / D i e s f ü h r t zum
e i g e n t l i c h e n Scan−Modul .
$new_scan_should_be_begun = 0;
} / / i f ( $ s c a n _ d a t a s e t [ ’ s c a n A c t i v e ’ ] == 1 )
else {
echo " Scan " . $ s c a n _ d a t a s e t [ ’ scanKey ’ ] . " i s t n i c h t
mehr a k t i v . \ n " ;
75
70
71
72
73
74
75
76
77
78
79
80
81
82
83
} // else
/ / Nochmal ü b e r p r ü f e n , ob e s j e t z t noch e i n e n n i c h t
b e e n d e t e n Scan zu d i e s e m J o b g i b t .
} / / while ( $scan_dataset = mysql_fetch_array ( $scan_rs ,
MYSQL_ASSOC) )
/ / Nun ü b e r p r ü f e n , ob h e u t e noch e i n n e u e r Scan zu d i e s e m
J o b a u s g e f ü h r t werden s o l l .
i f ( $ n e w _ s c a n _ s h o u l d _ b e _ b e g u n == 1 ) {
d o _ s c a n ( $jobKey , " " ) ;
} / / i f ( $ n e w _ s c a n _ s h o u l d _ b e _ b e g u n == 1 )
} / / i f ( $n u m be r _ of _ ex i s ti n g_ s c an s _ fo r _t h i s_ j ob > 0)
else {
echo " Es gab b i s h e r noch k e i n e n Scan zu d i e s e m J o b . \ n " ;
i f ( $ n e w _ s c a n _ s h o u l d _ b e _ b e g u n == 1 ) {
d o _ s c a n ( $jobKey , " " ) ;
} / / i f ( $ n e w _ s c a n _ s h o u l d _ b e _ b e g u n == 1 )
} // else
84
85
86
} / / while ( $job_dataset = mysql_fetch_array ( $jobs_rs ,
MYSQL_ASSOC) )
?>
76
A.2
1
2
3
4
Das Google-Scan-Modul von GooScanner
<? php
/ / Zur B e n u t z u n g d e r SOAP−API von Google
i n c l u d e _ o n c e ( " n u s o a p / l i b / n u s o a p . php " ) ;
$ n u s o a p c l i e n t = new n u s o a p c l i e n t ( " h t t p : / / a p i . g o o g l e . com / s e a r c h /
beta2 " ) ;
5
6
/ / F ü h r e i n S c h l e i f e a l l e A n f r a g e d u r c h , d i e s i c h a u s den
K o m b i n a t i o n e n d e r g e g e b e n e n Domänen und d e r S u c h m u s t e r
e r g e b e n . K o m p l e x i t ä t : A n z a h l Domänen ∗ A n z a h l S u c h m u s t e r .
7
8
9
10
11
12
$ n u m _ o f _ t o d a y _ q u e r i e s = t o d a y _ r e m a i n i n g _ q u e r i e s ( " google_SOAP " ) ;
$ a l l _ q u e r i e s _ f o r _ t h i s _ t e s t = bcmul ( c o u n t ( $ u r l s ) , c o u n t (
$searchstrings ) ) ;
$const_queries_for_this_test = $all_queries_for_this_test ;
echo " \ n F u e r d i e s e n T e s t muessen w i r e i n e G e s a m t z a h l an
A n f r a g e n von $ a l l _ q u e r i e s _ f o r _ t h i s _ t e s t e r r e i c h e n . \ n " ;
$queries_that_we_did_this_time = 0;
13
14
15
f o r ( $ u r l I n d e x = 0 ; $ u r l I n d e x < c o u n t ( $ u r l s ) ; $ u r l I n d e x ++) {
for ( $ s e a r c h s t r i n g I n d e x =0; $ s e a r c h s t r i n g I n d e x <count (
$ s e a r c h s t r i n g s ) ; $ s e a r c h s t r i n g I n d e x ++) {
16
17
18
/ / echo " $num_of_today_queries g r ö ß e r a l s 0 ? " ;
i f ( ( $ n u m _ o f _ t o d a y _ q u e r i e s > 0 ) AND ( $ q u e r i e s _ f o r _ t h i s _ t e s t
> $ q u e r i e s _ t h a t _ w e _ d i d _ t h i s _ t i m e ) AND (
$ a l l _ q u e r i e s _ f o r _ t h i s _ t e s t > 0) ) {
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$currentUrl = $urls [ $urlIndex ] ;
$currentSearchstring = $searchstrings [ $searchstringIndex
];
$ p a r a m e t e r s = array (
’ key ’ => $ g o o g l e _ a p i _ k e y , / / Google−L i z e n z s c h l ü s s e l
’q ’
=> " s i t e : $ c u r r e n t U r l $ c u r r e n t S e a r c h s t r i n g " , / /
Die A n f r a g e an Google
’ s t a r t ’ => 0 , / / B e g i n n e b e i E r g e b n i s 0
’ m a x R e s u l t s ’ => 1 0 , / / L i e f e r e 10 E r g e b n i s s e
’ f i l t e r ’ => f a l s e , / / Ä h n l i c h e E r g e b n i s s e e n t f e r n e n
’ r e s t r i c t ’ => ’ ’ , / / K e i n e E i n s c h r ä n k u n g a u f " Thema "
’ s a f e S e a r c h ’ => f a l s e , / / Kein E n t f e r n e n von
Erwachsenen −I n h a l t e n
’ l r ’ => ’ ’ , / / K e i n e E i n s c h r ä n k u n g a u f S p r a c h e
’ i e ’ => ’ ’ , / / K o d i e r u n g d e r E i n g a b e
’ oe ’ => ’ ’ / / K o d i e r u n g d e r Ausgabe
);
34
35
36
37
for ( $ e x c l U r l I n d e x =0; $ e x c l U r l I n d e x <count ( $ e x c l u d e d _ u r l s )
; $ e x c l U r l I n d e x ++) {
$parameters [ ’q ’ ] .= " −s i t e : " . $excluded_urls [
$exclUrlIndex ] ;
} / / f o r ( $exclUrlIndex =0; $exclUrlIndex <count (
$ e x c l u d e d _ u r l s ) ; $ e x c l U r l I n d e x ++)
38
77
39
40
41
42
43
44
45
/ / D i e s e Suche s o l l t e n w i r n u r g e n a u dann d u r c h f ü h r e n ,
wenn d i e s im Rahmen d e s g e s a m t e n S c a n s noch n i c h t
g e s c h e h e n i s t . F a l l s w i r den T e s t n a c h e i n e r P a u s e
w i e d e r aufnehmen , a l s o s c a n A c t i v e a u f TRUE s t e h t ,
müssen w i r d a s ü b e r p r ü f e n .
$ s q l = s p r i n t f ( "SELECT ∗ FROM r e s u l t WHERE ( u r l =%s ) AND (
s e a r c h s t r i n g =%s ) AND scanKey=%s " ,
quote_smart ( $currentUrl ) ,
quote_smart ( $currentSearchstring ) ,
q u o t e _ s m a r t ( $scanKey ) ) ;
$ r s = my_query ( $ s q l ) ;
$ d o _ t h i s _ q u e r y = ( m y s q l _ a f f e c t e d _ r o w s ( ) == 0 ) ;
46
47
48
49
50
51
i f ( $do_this_query ) {
$ g o o g l e _ r e s u l t = $ n u s o a p c l i e n t −> c a l l ( " d o G o o g l e S e a r c h " ,
$parameters , ’ urn : GoogleSearch ’ , ’ urn : GoogleSearch ’
);
$ n u m _ o f _ t o d a y _ q u e r i e s −−;
$ q u e r i e s _ t h a t _ w e _ d i d _ t h i s _ t i m e ++;
} / / i f ( m y s q l _ a f f e c t e d _ r o w s ( ) == 0 )
52
53
$ a l l _ q u e r i e s _ f o r _ t h i s _ t e s t −−;
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
if ( $google_result [ ’ faultstring ’ ]) {
echo " \ n $ s e a r c h M e t h o d F e h l e r ! " . $ g o o g l e _ r e s u l t [ ’
faultstring ’ ];
}
e l s e i f ( $do_this_query ) {
/ / Das E r g e b n i s s o l l nun i n d e r T a b e l l e " r e s u l t "
g e s p e i c h e r t werden . Die e i n z e l n e n H i t s wiederum
s o l l e n i n d e r T a b e l l e " h i t " g e s p e i c h e r t werden .
$ r e s u l t D a t e = d a t e ( "Y−m−d " ) ;
$ r e s u l t T i m e = d a t e ( "G: i : s " ) ;
$searchstring = $currentSearchstring ;
$url = $currentUrl ;
$resultHits = $google_result [ ’
estimatedTotalResultsCount ’ ];
$ s q l = s p r i n t f ( " INSERT INTO r e s u l t ( r e s u l t D a t e ,
r e s u l t T i m e , s e a r c h s t r i n g , u r l , r e s u l t H i t s , scanKey )
VALUES (%s , %s , %s , %s , %s , %s ) " ,
quote_smart ( $resultDate ) ,
quote_smart ( $resultTime ) ,
quote_smart ( $searchstring ) ,
quote_smart ( $url ) ,
quote_smart ( $ r e s u l t H i t s ) ,
q u o t e _ s m a r t ( $scanKey )
);
$ r s = mysql_query ( $ s q l ) ;
i f (! $rs ) {
die ( mysql_error ( ) ) ;
} / / i f (! $rs )
$resultKey = mysql_insert_id ( ) ;
78
79
i f ( $ g o o g l e _ r e s u l t [ ’ estimatedTotalResultsCount ’ ] > 0) {
78
80
81
82
echo " \ nDie Suche n a c h " . $ g o o g l e _ r e s u l t [ ’
searchQuery ’ ] . " hat " . $google_result [ ’
estimatedTotalResultsCount ’ ] . " T r e f f e r ergeben .
";
i f ( is_array ( $google_result [ ’ resultElements ’ ]) ) {
foreach ( $ g o o g l e _ r e s u l t [ ’ r e s u l t E l e m e n t s ’ ] as
$current_hit ) {
83
84
$current_hit [ ’ snippet ’ ] = str_replace ( " ’" , "" ,
$current_hit [ ’ snippet ’ ]) ;
85
86
87
88
/ / Z u n ä c h s t mal s c h a u e n wir , ob e s den H i t s c h o n
mal i n d e r D a t e n b a n k g e g e b e n h a t .
$ h i t U r l = $ c u r r e n t _ h i t [ ’URL ’ ] ;
$hitSnippet = $current_hit [ ’ snippet ’ ]; $hitTitle
= $current_hit [ ’ t i t l e ’ ];
89
90
91
$ s q l = "SELECT ∗ FROM h i t WHERE ( h i t U r l = ’ $ h i t U r l ’
AND h i t S n i p p e t = ’ $ h i t S n i p p e t ’ AND h i t T i t l e = ’
h i t T i t l e ’) " ;
$ r s = my_query ( $ s q l ) ;
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
i f ( m y s q l _ a f f e c t e d _ r o w s ( ) == 0 ) {
$ n e w _ h i t _ f o u n d = TRUE;
echo "NEU ! ! " ;
$hitEvaluated = 0;
$hitSuccess = 0;
$categoryKey = 0;
} / / i f ( m y s q l _ a f f e c t e d _ r o w s ( ) == 0 )
else {
echo " Schon mal g e s e h e n : " ;
/ / a b e r wie wurde d a s d a m a l s b e w e r t e t ?
$ r s _ d a t a s e t = m y s q l _ f e t c h _ a r r a y ( $rs ,
MYSQL_ASSOC) ;
$old_hitKey = $ r s _ d a t a s e t [ ’ hitKey ’ ] ;
$ h o w _ r a t e d _ s q l = "SELECT h i t S u c c e s s ,
h i t E v a l u a t e d , c a t e g o r y K e y FROM h i t WHERE
hitKey=$old_hitKey " ;
$ h o w _ r a t e d _ r s = my_query ( $ h o w _ r a t e d _ s q l ) ;
$how_rated_dataset = mysql_fetch_array (
$ h o w _ r a t e d _ r s , MYSQL_ASSOC) ;
$hitSuccess = $how_rated_dataset [ ’ hitSuccess ’ ] ;
$hitEvaluated = $how_rated_dataset [ ’
hitEvaluated ’ ] ; ;
$categoryKey = $how_rated_dataset [ ’ categoryKey ’
];
} // else
112
113
114
$hitTitle = $current_hit [ ’ t i t l e ’ ];
$hitCachedSize = $ c u r r e n t _ h i t [ ’ cachedSize ’ ] ;
115
116
$ s q l = s p r i n t f ( " INSERT INTO h i t ( h i t S n i p p e t ,
hitUrl , h i t T i t l e , hitCachedSize , resultKey ,
h i t E v a l u a t e d , h i t S u c c e s s , c a t e g o r y K e y ) VALUES
79
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
(%s , %s , %s , %s , %s , ’ $ h i t E v a l u a t e d ’ , ’
$hitSuccess ’ , ’ $categoryKey ’) " ,
quote_smart ( $hitSnippet ) ,
quote_smart ( $hitUrl ) ,
quote_smart ( $ h i t T i t l e ) ,
quote_smart ( $hitCachedSize ) ,
quote_smart ( $resultKey )
);
$ r s = mysql_query ( $ s q l ) ;
i f (! $rs ) {
die ( mysql_error ( ) ) ;
} / / i f (! $rs )
} / / foreach ( $ g o o g l e _ r e s u l t [ ’ r e s u l t E l e m e n t s ’] as $r
)
} / / if ( is_array ( $google_result [ ’ resultElements ’]) )
} / / i f ( $google_result [ ’ estimatedTotalResultsCount ’] >
0)
else {
echo " − Kein H i t . " ;
} // else
} / / e l s e i f ( $do_this_query )
} / / i f ( ( $ n u m _ o f _ t o d a y _ q u e r i e s > 0 ) AND (
$queries_for_this_test > $queries_that_we_did_this_time
) AND ( $ a l l _ q u e r i e s _ f o r _ t h i s _ t e s t > 0 ) )
} / / f o r ( $ s e a r c h s t r i n g I n d e x =0; $ s e a r c h s t r i n g I n d e x <count (
$ s e a r c h s t r i n g s ) ; $ s e a r c h s t r i n g I n d e x ++)
} / / f o r ( $ u r l I n d e x = 0 ; $ u r l I n d e x < c o u n t ( $ u r l s ) ; $ u r l I n d e x ++)
137
138
139
140
i f ( $ n u m _ o f _ t o d a y _ q u e r i e s <= 0 ) {
echo " \nACHTUNG: H e u t e k e i n e A n f r a g e n mehr m ö g l i c h . " ;
} / / i f ( $ n u m _ o f _ t o d a y _ q u e r i e s <= 0 )
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/ / Haben w i r i n s g e s a m t f ü r d i e s e n T e s t a l l e A n f r a g e n
d u r c h f ü h r e n können , d i e u r s p r ü n g l i c h g e p l a n t waren ( A n z a h l
d e r URLS m u l t i p l i z i e r t m i t A n z a h l A n f r a g e n ) ?
i f ( $ a l l _ q u e r i e s _ f o r _ t h i s _ t e s t <= 0 ) {
$ s q l = s p r i n t f ( "UPDATE s c a n SET s c a n A c t i v e =FALSE WHERE
scanKey=%s " , q u o t e _ s m a r t ( $scanKey ) ) ;
$ r s = my_query ( $ s q l ) ;
echo " \ n F u e r d i e s e n T e s t wurden a l l e A n f r a g e n d u r c h g e f u e h r t .
Er w i r d nun a u f \ " n i c h t a k t i v \ " g e s e t z t . " ;
} / / i f ( $ a l l _ q u e r i e s _ f o r _ t h i s _ t e s t <= 0 )
else {
$ s q l 2 = s p r i n t f ( "SELECT ∗ FROM r e s u l t WHERE scanKey=%s " ,
q u o t e _ s m a r t ( $scanKey ) ) ;
$ r s 2 = my_query ( $ s q l 2 ) ;
$number_of_conducted_queries = mysql_affected_rows ( ) ;
$number_of_missing_queries = $ c o n s t _ q u e r i e s _ f o r _ t h i s _ t e s t −
$number_of_conducted_queries ;
echo " \ n F u e r d i e s e n T e s t b l e i b e n noch
$number_of_missing_queries Anfragen durchzufuehren . " ;
} // else
155
156
/ / Wenn e s i n d i e s e m T e s t i r g e n d w o e i n e n n e u e n H i t gab , s t e h t
80
157
158
159
160
161
162
163
nun $ n e w _ h i t _ f o u n d a u f TRUE . A l s o B e n a c h r i c h t i g u n g an
Administrator mailen .
i f ( $ n e w _ h i t _ f o u n d == TRUE) {
$ l i n k _ t o _ r e s u l t p a g e = " h t t p : / / $ h o s t n a m e / goopen / v i e w _ r e s u l t .
php ? t o d o = v i e w _ s c a n&scanKey = $scanKey&o n l y H i t s =TRUE" ;
$ l i n k _ t o _ l o g f i l e = " h t t p : / / $ h o s t n a m e / goopen / l o g s /
j o b l o g _ $ j o b K e y . htm " ;
$ n a c h r i c h t = " H a l l o A d m i n i s t r a t o r , \ n \ nGooScanner h a t n e u e
E r g e b n i s s e g e f u n d e n zu dem J o b m i t d e r f o l g e n d e n
B e s c h r e i b u n g : \ n \ n $ j o b D e s c r i p t i o n \ n \ nAnschauen können S i e
s i c h d i e E r g e b n i s s e h i e r : \ n $ l i n k _ t o _ r e s u l t p a g e \ n \ nDas
L o g f i l e zu d i e s e m J o b : \ n $ l i n k _ t o _ l o g f i l e " ;
mail_to_admin ( $ n ac h r ic h t ) ;
} / / i f ( $ n e w _ h i t _ f o u n d == TRUE)
?>
81
Anhang B
Fallbeispiele
B.1
Einleitung
Im Folgenden werden die IT-Systeme von vier großen Firmen aus der MobilfunkBranche durch Google Hacking überprüft. Um ggf. keine Informationen zu veröffentlichen, die das Datenschutzrecht der ersten drei Firmen verletzen könnten, werden die
Firmen nur unter den Namen „Firma 1“ bis „Firma 3“ genannt, und alle anderen Vorkommen von Hinweisen auf die Namen entsprechend geändert.
82
B.2
Firma 1
Vorbereitung
Zu dem Unternehmen sind drei Domains bekannt. Unter zweien davon sind (scheinbar
identische) Inhalte für Kunden zu finden; unter der dritten finden sich Informationen
über das Unternehmen. Zudem sind aufgrund dieser Domains zwei verschiedene IPs
für den Web-Inhalt bekannt.
Auf den Kundenseiten fanden sich Login-Formulare mit den Bezeichnungen „IDToken1“, „IDToken2“ und „IDToken3“, in welche Kunden-ID, Passwort und MobilfunkRufnummer eingegeben werden sollten. Somit wurden als Suchmuster
• inurl:IDToken1
• inurl:IDToken2
• inurl:IDToken3
mit in die Sammlung aufgenommen.
Konfiguration des Jobs
Suchmaschine
Domains
Anzahl Anfragen pro
Domain und Scan
Verwendete Suchmuster
Startdatum
Intervall zwischen
Neustarts
Google
Live Search
Yahoo
3
1618
Inhalt der GHDB und an Firma 1 angepasste; insgesamt 1616
7 Tage
1 Tag
22.01.2007
1 Tag
Tabelle B.1: Konfiguration der Scan-Jobs für Firma 1
Analyse des ersten Scans
Google
Live Search
Yahoo Search
Treffer Insgesamt
14
39
56
Davon auffällig
2
12
0
Tabelle B.2: Der erste Scan für Firma 1
Es ergaben sich insgesamt 12 Treffer mit niedriger Gefährlichkeit. 2 davon wurden
mit Hilfe von Google gefunden, alle 12 mit Hilfe von Live Search. Die Funde waren alle sehr ähnlich strukturiert, deswegen hier nur ein repräsentatives Beispiel eines
Treffers:
• Suchmuster: intitle:index.of
83
• Belegung des Parameters „site“: firma1.de
• Titel der gefundenen Seite: Index of /Firma1/html/
• URL der gefundenen Seite: http://sms.firma1.de/Firma1/html/
• Fragment der gefundenen Seite: „Parent Directory hilfe.htm 04-Jan-2007 15:24
65K inbox_label.htm 04-Jan-2007 15:24 2K inbox_leer.html 04-Jan-2007 15:24
1K logout.html 04-Jan-2007 15:24 1K nologin.html 04-Jan ...“
Der Inhalt des Suchmaschinen-Cache stimmte zum Zeitpunkt der Analyse des Scans
noch mit dem Inhalt der aktuellen Version der Firmen-Homepage überein.
Es mussten keine Subdomains von der Suche ausgeschlossen werden, da sich insgesamt nur wenige Falschtreffer ergaben. Fast alle Falschtreffer waren eine typische
Anomalie von Live Search: Aus nicht nachvollziehbaren Gründen wird zu manchen
Anfragen ein Fund mit der URL, dem Titel und dem Inhalt in Form eines einzigen
Buchstaben geliefert. Zwei weitere Falschtreffer waren zwar Seiten, die den zugehörigen Suchmustern entsprachen, jedoch stellten sich als nicht weiter auffällige LoginPortale heraus.
Es ergaben sich durch die Treffer keine neuen Suchmuster.
Analyse des Verlaufs der weiteren Scans
Bei den weiteren Scans ergaben sich stets dieselben Funde, und es kamen kaum neue
Funde hinzu – was darauf hindeutet, dass innerhalb des Test-Zeitraums die IT-Systeme
von Firma 1 entweder nicht neu von den Webcrawlern der Suchmaschinen gescannt
wurden, oder dass die Firma den Inhalt der Webseiten im Zeitraum nicht geändert hat.
Scan 1
Scan 2
Scan 3
Scan 4
Scan 5
Scan 6
Scan 7
Google
14
0
0
0
0
0
0
Yahoo Search
90
0
0
0
0
0
0
Live Search
39
0
0
0
0
0
2
Tabelle B.3: Verlauf der Anzahl neuer Treffer bei Scans der Domains von Firma 1
Wie man in Tabelle B.4 erkennen kann, waren viele Falschtreffer auf eine ungenaue Arbeitsweise von Yahoo Search zurückzuführen. Diese Ungenauigkeit wird auch
in den folgenden Teilen des Anhangs noch Ursache für viele Falschtreffer – oder unbeabsichtigte Zufallstreffer – sein. Weitere Falschtreffer sind auf Suchmuster zurückzuführen, die bei der Suche nach sensiblen Daten weiterhin – trotz der Falschtreffer –
mit dabei sein sollten.
Zu jedem Treffer enthielt der jeweilige Suchmaschinen-Cache ein komplettes Abbild der jeweiligen Seite.
Es wurde eine Subdomain gefunden:
• sms.firma1.de
84
Suchmuster
Suchmaschine
„Outlook Web Access“
inurl:login.asp
Google
Anzahl Treffer
7
Google
5
Live Search
Live Search
2
9
Live Search
20
Yahoo Search
56
inurl:bin.welcome.sh
|
inurl:bin.welcome.bat |
intitle:eHealth.5.0
inurl:name
(diverse)
Ursache
Vorkommen der Phrase auf
harmlosen Seiten
Dateiname von LoginPortalen für Kunden
Fehlfunktion
Search
von
Live
Seiten von Produktbeschreibungen enthielten diesen Parameter in der URL
Ungenauigkeit bei Auswertung der Suchparameter seitens Yahoo Search
Tabelle B.4: Falschtreffer bei Scans der Domains von Firma 1
Die Suchmuster mit den meisten relevanten Treffern waren:
1. intitle:index.of (14)
2. intitle:index.of inbox (3)
3. intitle:index.of WEB-INF (2)
Insgesamt waren die Suchmaschinen mit den meisten relevanten Treffern:
1. Live Search (14)
2. Google (2)
Insgesamt gab es 93 verschiedene Kombinationen aus URL, Fragment und Titel
der gefundenen Webseite, welche bewertet wurden.
Analyse der kritischen Treffer
Grund für das Erscheinen der Verzeichnisinhalte in der Öffentlichkeit war vermutlich
ein fehlerhaft konfigurierter Web-Server. Eine konkrete Gefahr, die von den Funden
ausging, konnte nicht gefunden werden. Jedoch lassen die Verzeichnis-Listen Rückschlüsse auf die Struktur der Web-Anwendungen zu.
Als kurzfristige Gegenmaßnahme wäre es für die Firma empfehlenswert, die Entfernung der Inhalte aus dem Suchmaschinen-Cache bei Google zu beantragen. Damit
die Inhalte auch bei Live Search entfernt werden, sollte eine robots.txt angelegt werden. Zudem sollte der Webserver rekonfiguriert werden, so dass eine Auflistung von
Verzeichnisinhalten nicht mehr möglich ist. Im Überblick also:
• Benantragung der Entfernung der Inhalte bei Google
• Anlegen einer robots.txt
• Rekonfiguration des Webservers
85
Analyse des Aufwands
Bei der Berechnung des Zeitbedarfs der Scans werden die Durchschnittswerte aus Abschnitt 4.3 zugrunde gelegt. Die Dauer pro Suchmaschine ergibt sich damit aus dem
Produkt der Anzahl der Suchmuster, der Anzahl von Domains und der durchschnittlichen Zeitdauer zwischen Anfrage und Antwort bei der jeweiligen Suchmaschine.
Dauer
Google
1593 × 2, 307s =
61, 25min
Live Search
1593 × 2, 412s =
64min
Yahoo
1593 × 1, 243s =
33min
Tabelle B.5: Dauer eines Scans der Domains von Firma 1
Bei der Berechnung des zeitlichen Gesamtaufwands für die Bewertung aller Treffer
wird der Durchschnittswert hierfür aus Abschnitt 4.3 zugrunde gelegt. Dabei ist zu beachten, dass verschiedene Suchmaschinen auch gleiche Treffer gehabt haben können;
dieser Treffer aber nur einmal bewertet werden musste.
TBewertung = 6.54s × 113 = 739, 02s = 12, 3min
Fazit
Dieser Fall zeigt, dass die Anwendung von Google Hacking sicherlich im Sinne der
Firma wäre, da die Auflistung der Verzeichnis-Inhalte ihr höchstwahrscheinlich nicht
bewusst ist. Neben einer Verbesserung der Sicherheit würde eine Verbesserung dieses
Missstandes sicherlich auch auf potentielle Kunden einen professionelleren Eindruck
machen – also wäre Google Hacking in diesem Falle auch aus Marketing-Gründen
empfehlenswert.
86
B.3
Firma 2
Vorbereitung
Zu dieser Firma existierten zahlreiche Domains, welche durch ihren Wortlaut zwar
suggerieren sollten, im Besitz der Firma zu sein, es aber tatsächlich nicht waren, oder
zumindest nicht die Firma als Eigner der Domain im Whois-Record trugen. Somit
konzentrierte sich der Scan zunächst auf die beiden deutsch- und englischsprachigen
(Haupt-)Domains der Firma. Durch diese beiden Domains wurden zusätzlich zwei verschiedene IP’s der Firma gefunden, wodurch wiederum zwei weitere Domains gefunden worden. Somit wurde der Test auf 4 Domains und 2 IPs erweitert.
In Login-Formularen auf den Homepages gab es Eingabefelder mit den Bezeichnungen „name“, „dummy“ und „Password“. Das Feld „dummy“ war das Eingabefeld
für ein so genanntes „Internetkennwort“. Als neues Suchmuster wurde somit
inurl:dummy
mit in die Sammlung aufgenommen, da die beiden anderen Bezeichnungen als oft verwendete schon vorhanden waren.
Konfiguration des Jobs
Suchmaschine
Domains
Anzahl Anfragen pro
Domain und Scan
Verwendete Suchmuster
Startdatum
Intervall zwischen
Neustarts
Google
Live Search
3
1616
Yahoo
Inhalt der GHDB und an Firma 2 angepasste
22.01.2007
1 Tag
7 Tage
1 Tag
Tabelle B.6: Konfiguration der Scan-Jobs für Firma 2
Analyse des ersten Scans
Google
Live Search
Yahoo Search
Treffer Insgesamt
7
50
42
Davon auffällig
0
0
0
Tabelle B.7: Der erste Scan für Firma 2
Im ersten Scan ergaben sich insgesamt 105 Treffer, von denen aber keiner Auffälligkeiten zeigte.
87
Scan 1
Scan 2
Scan 3
Scan 4
Scan 5
Scan 6
Scan 7
Google
7
0
0
0
0
0
0
Yahoo Search
42
22
5
0
0
0
0
Live Search
50
0
1
1
2
0
0
Tabelle B.8: Verlauf der Anzahl neuer Treffer bei Scans der Domains von Firma 2
Suchmuster
Suchmaschine
„Outlook Web Access“
inurl:name
Google
Anzahl Treffer
7
Live Search
3
(mehrere)
Live Search
23
Ursache
Vorkommen der Phrase auf
harmlosen Seiten
„name“ war ein Parameter von Webseiten, der allerdings nicht etwa UserNamen enthielt.
Anomalie von Live Search
Tabelle B.9: Falschtreffer bei Scans der Domains von Firma 2
Analyse des Verlaufs der weiteren Scans
Insgesamt waren nach 7 Durchläufen 130 Treffer zu bewerten, und es wurden 15 Subdomains gefunden.
Analyse des Aufwands
Dauer
Google
1591 × 2, 307s =
61, 2min
Live Search
1591 × 2, 412s =
64min
Yahoo
1591 × 1, 243s =
33min
Tabelle B.10: Dauer eines Scans der Domains von Firma 2
TBewertung = 6.54s × 130 = 850, 2s = 14, 2min
Fazit
Für Firma 2 wurde kein auffälliger Treffer gefunden. Im Allgemeinen sollte – vor dem
Hintergrund der Scans von IT-Systemen anderer Firmen – daraus allerdings nicht gefolgert werden, dass sich der Einsatz von Google Hacking für konkret diese Firma nicht
lohne. Die Resultate dieser Scans können daher als ggf. ergänzende Bestätigung einer
funktionierenden Security Policy betrachtet werden.
88
B.4
Firma 3
Vorbereitung
Zu der Firma waren drei Domains zu finden: eine deutsch- und eine englischsprachige
Hauptdomain, sowie die Domain, unter welcher Informationen zu einem von der Firma
gesponserten Sportstadion zu finden waren. Alle drei Domains wurden in den Scan
miteinbezogen.
Später wurde festgestellt, dass mit Hilfe der 3 verschiedenen IPs der bekannten
Domains noch zahlreiche weitere Domains, die im Besitz des Unternehmens waren,
gefunden werden konnte. Die Einbeziehung dieser Domains in den Test hätte den Rahmen jedoch gesprengt. Es wurden stattdessen die IPs mit Hilfe des „ip:“-Parameters
von Live Search gescannt.
Für den Login von Kunden gab es auf den Homepages Felder mit den Bezeichnungen „loginName“ und „password“. Hieraus wurde das Suchmuster
inurl:loginName
abgeleitet. „inurl:password“ war als Suchmuster schon vorhanden.
Konfiguration des Jobs
Suchmaschine
Domains
Anzahl Anfragen pro
Domain und Scan
Verwendete Suchmuster
Startdatum
Intervall zwischen
Neustarts
Google
Live Search
3
1616
Yahoo
Inhalt der GHDB und an Firma 3 angepasste
22.01.2007
1 Tag
7 Tage
1 Tag
Tabelle B.11: Konfiguration der Scan-Jobs für Firma 3
Analyse des ersten Scans
Google
Live Search
Yahoo Search
Treffer Insgesamt
4
30
96
Davon auffällig
0
0
2
Tabelle B.12: Der erste Scan für Firma 3
Der erste Scan ergab insgesamt 2 interessante Treffer.
1. Treffer 1:
• Fund durch Suchmaschine: Yahoo
89
• Suchmuster: intitle:asterisk.management.portal web-access
• Art des Fundes: Konfigurationsdatei für „Virtual Hosts“
• Gefahr durch den Fund: Mittel
2. Treffer 2:
• Fund durch Suchmaschine: Yahoo
• Suchmuster: inurl:name
• Art des Fundes: Zugangsdaten zu einer „Mobile Homepage“ eines Kunden
in Form von Username und Passwort-Hash
• Gefahr durch den Fund: Gering
Beim ersten Fund handelt es sich um eine Konfigurationsdatei für einen Apache-Webserver. Teil des Inhalts sind Informationen über die interne Pfadstruktur eines Servers.
Diese könnten sich für einen Angriff ggf. als sehr hilfreich erweisen. Durch Ansteuern
der verschiedenen Verzeichnisebenen der URL, unter welcher der Fund gemacht wurde, konnten leicht die Versionen des zugrunde liegenden Webservers und eines eines
PHP-Servers ausfindig gemacht werden. Als neue Suchmuster ergeben sich Worte, die
typischerweise in einer Datei wie der gefundenen vorkommen:
• RewriteRule
• DocumentRoot
• RewriteEngine
• ErrorLog
• CustomLog
Die Daten in Fund 2 konnten nicht für einen Login-Vorgang ausgenutzt werden, da für
den Hash kein Dekodier-Verfahren gefunden wurde. Dennoch ist zumindest nicht absolut auszuschließen, dass sich bei intensiverer Nachforschung ein Dekodierverfahren
finden würde. Als neues Suchmuster ergibt sich:
inurl:pwdhash
Analyse des Verlaufs der weiteren Scans
Scan 1
Scan 2
Scan 3
Scan 4
Scan 5
Scan 6
Scan 7
Google
4
0
0
0
0
0
0
Yahoo Search
96
24
8
0
0
0
0
Live Search
212
0
0
3
1
0
0
Tabelle B.13: Verlauf der Anzahl neuer Treffer bei Scans der Domains von Firma 3
90
Suchmuster
Suchmaschine
„http://*:*@www“
domainname
Google
Anzahl Treffer
4
(username | userid |
employee.ID | „your
username is“)
(password | passcode
| „your password is“)
Live Search
5
Live Search
10
inurl:name
Live Search
3
Yahoo Search
10
intitle:admin
le:login
intit-
Ursache
Fehlerhaftes
Suchmuster.
Das Wort „domainname“ ist
nicht nötig.
Das Wort „username“ wurde
in vielen harmlosen Zusammenhängen gefunden.
Das Wort „password“ wurde ebenfalls in vielen harmlosen Zusammenhängen gefunden.
„name“ war ein Parameter von Webseiten, der allerdings nicht etwa UserNamen enthielt.
Wurde von Yahoo völlig
falsch interpretiert - Treffer
enthielten keins der genannten Wörter im Titel.
Tabelle B.14: Beispielhafte Falschtreffer bei Scans der Domains von Firma 3
An den beispielhaften Falschtreffern in Tabelle B.14 sieht man, dass einige Suchmuster aus der GHDB eine sehr allgemeine Ausrichtung haben – wie etwa die Suche
nach „username“ oder „password“. Allerdings ist die Sinnhaftigkeit solcher Suchmuster nicht ganz von der Hand zu weisen, wie der obige – relevante – Fund durch das
Suchmuster „inurl:name“ zeigt.
Alle kritischen Treffer wurden bereits im ersten Durchlauf der Scans gefunden.
Der Suchmaschinen-Cache enthielt im Fall des Treffers Nr.1 den kompletten Inhalt
der Konfigurationsdatei. Die Datei war direkt vom Server der Firma ebenfalls weiterhin
abrufbar.
Insgesamt waren nach 7 Durchläufen 348 Treffer zu bewerten.
Es wurden insgesamt 26 verschiedene Subdomains gefunden.
Analyse der kritischen Treffer
Im Falle von Fund 1 liegt die Ursache für den Fund sicherlich bei einer fehlerhaften
Konfiguration eines Webservers. Die Konfigurationsdatei für „Virtual Hosts“ müsste
nicht in einem öffentlich zugänglichen Bereich liegen. Die Gefahr dieses Fundes besteht darin, dass tatsächlich ein wesentlicher Teil der internen Serverstruktur verraten
wird. Dies kann durch verschiedene Arten von Angriffen ausgenutzt werden.
Kurzfristige Gegenmaßnahme wäre zunächst entweder die Entfernung der Datei
oder Verbieten des öffentlichen Zugriffs auf das Verzeichnis. Da der Inhalt der Datei wahrscheinlich noch eine Weile im Yahoo-Cache nachgelesen werden kann, wäre
es denkbar, die Verzeichnissstruktur des Servers zu ändern, so dass die Information
aus der Datei nicht mehr stimmt. Um zu erreichen, dass der Inhalt dauerhaft aus dem
Suchmaschinen-Cache entfernt wird, sollte eine robots.txt entsprechend konfiguriert
91
werden.
Im Falle von Fund 2 liegt die Ursache höchstwahrscheinlich beim Kunden, der
wahrscheinlich aus Gründen der Bequemlichkeit einen Link auf seiner eigenen Seite
angelegt hat. Allerdings ist das Funktionieren solcher Links nur möglich, wenn seitens
des Servers die „GET“-Übergabe von Parametern erlaubt ist.
Eine Gefahr besteht im Missbrauch des Kundenkontos; jedoch ist dies nur möglich,
falls ein Angreifer den Hash des Passworts knackt; also vermutlich eher unwahrscheinlich. Dennoch sollte der Kunde gebeten werden, den entsprechenden Link zu entfernen
und sein Passwort zu ändern. Langfristig sollte, um solche Vorkommnisse zu unterbinden, über eine Umstellung auf das „POST“-Verfahren nachgedacht werden.
Analyse des Aufwands
Dauer
Google
1591 × 2, 307s =
61, 2min
Live Search
1591 × 2, 412s =
64min
Yahoo
1591 × 1, 243s =
33min
Tabelle B.15: Dauer eines Scans der Domains von Firma 3
TBewertung = 6.54s × 348 = 2275, 92s = 37, 9min
Fazit
Auch in diesem Fall hat sich Google Hacking als lohnenswert für die Firma erwiesen.
Dass die Konfigurationsdatei des Webservers öffentlich sichtbar ist, stellt sicherlich ein
gewisses Gefahrenpotential dar.
92
B.5
Zusammenfassung
Wie sich an den beispielhaft untersuchten Web-Inhalten von IT-Firmen zeigt, kann
der Wert des Google Hackings als Abwehrmaßnahme von den jeweiligen Firmen als
unterschiedlich hoch eingeschätzt werden.
Für Firma 1 war keine konkrete Gefahr für ihre IT-Systeme durch die Funde erkennbar, jedoch wäre es sicher wünschenswert für sie, die gefundenen Nachlässigkeiten zu
beseitigen. Firma 2 zeigte gegenüber Google Hacking keine Anfälligkeit, was jedoch
nicht darauf schließen lässt, dass diese auch in Zukunft nicht vorhanden sein wird. Zu
Firma 3 hingegen waren mittels Google Hacking Informationen findbar, die möglicherweise bei einem Angriff auf ihre IT-Systeme hilfreich wären. Für dieses Unternehmen
würde sich der Einsatz von präventivem Google Hacking also auszahlen.
93
Literaturverzeichnis
[arc]
Internet Archive. http://www.archive.org,
[ask]
Ask. http://www.ask.com,
[BN]
B ÖHME, Rainer ; N OWEY, Thomas: Economic Security Metrics
[dena]
DENIC eG - Datenschutz. http://www.denic.de/de/domains/recht/datenschutz/index.html,
[denb]
Domain Verwaltungs- und Betriebsgesellschaft eG. http://www.denic.de,
[dom]
Domaxxx. http://www.domaxxx.de/,
[Eck05] E CKERT, Prof. Dr. C.: IT-Sicherheit. Oldenbourg Verlag, 2005
[exa]
Exalead. http://www.exalead.com,
[Fre]
F REILING, Felix: Introduction to Security Metrics
[gcs07] Google Code Search. http://www.google.com/codesearch/, 2007
[ghd07] Google Hacking Database. http://johnny.ihackstuff.com, 2007
[ghh]
GHH - The „Google Hack“ Honeypot. http://ghh.sourceforge.net/,
[gooa]
Google
Hilfe
für
Webmaster:
Wie
kann
ich
Content
aus
dem
Google-Index
entfernen?
http://www.google.de/support/webmasters/bin/answer.py?answer=35301&ctx=sibling,
[goob]
Google Language Tools. http://www.google.com/language_tools,
[gooc]
Google
Search
Appliance
Product
http://www.google.com/enterprise/gsa/features.html#enterprise,
[good]
Google SOAP Search API. http://code.google.com/apis/soapsearch/,
[gooe]
Google Webmaster Help Center: What kinds of links does Googlebot follow?
http://www.google.com/support/webmasters/bin/answer.py?answer=33580&topic=8460,
[goof]
Google Webmaster-Tools. https://www.google.com/webmasters/tools/docs/de/protocol.html,
[ica]
Internet
Corporation
http://www.icann.org,
[jap]
JAP - Anonymity & Privacy. http://anon.inf.tu-dresden.de/,
for
Assigned
94
Names
and
Features.
Numbers.
[liva]
Entfernen Ihrer Website aus dem Index der Live Search.
http://help.live.com/thinservice.aspx?project=wl_webmasters&mkt=dede&querytype=topic&query=WL_WEBMASTERS_CONC_REMOVESITE.HTM,
[livb]
Live Search. http://www.live.com,
[livc]
Live
Search:
Richtlinien
für
eine
erfolgreiche
Indizierung.
http://help.live.com/thinservice.aspx?project=wl_webmasters&mkt=dede&querytype=topic&query=WL_WEBMASTERS_REF_GUIDELINESFOR
SUCCESSFULINDEXING.HTM,
[livd]
MSDN:
Getting
Started
with
the
Live
http://msdn2.microsoft.com/en-us/library/bb266187.aspx,
Search
API.
[Lon05] L ONG, Johnny: Google Hacking for Penetration Testers. Syngress Publishing, 2005
[nesa]
Nessus. http://www.nessus.org,
[nesb]
Nessus Plugin 11507. http://www.nessus.org/plugins/index.php?view=single&id=11507,
[qua]
QualysGuard
Enterprise
Benefits
http://www.qualys.com/products/qgent/features/,
&
Features.
[ses07] Search Engine Showdown: The Users’ Guide to Web Searching.
http://searchengineshowdown.com/, 2007
[spi07] Preventing Google Hacking - Steps to protect your web application.
http://www.spidynamics.com, 2007
[web]
WebInspect Features and Benefits. http://www.spidynamics.com/products/
webinspect/datasheet.html,
[Wei]
W EISS, Steffen: Industrial Approaches and Standards for Security Assessment
[yaha]
How do I have my web site or web pages removed from the Yahoo! Search
Index? http://help.yahoo.com/help/us/ysearch/indexing/indexing-13.html,
[yahb]
Yahoo Search. http://search.yahoo.com,
[yahc]
Yahoo! Slurp - Yahoo’s Webcrawler. http://help.yahoo.com/help/us/ysearch/slurp/index.html,
95
Index
Acunetix, 43
Athena, 43
Referer, 70
Registrierungsschlüssel, 19
REST, 4
robots.txt, 32, 66
Datenmodell, 35
Fehlermeldung, 10
Fingerprinting, 51, 57
Sitedigger, 42
sitemap.xml, 25, 67
SOAP, 4, 43
SQL, 34
Suchmuster, 3
GHDB, 4, 23, 56
Google, 7, 15
Google Alerts, 44
Google Hacking Honeypot, 68
Google Mini, 54, 66
Google Search Appliance, 54, 66
Google Web Services, 43
Google-Cache, 16
Google-Scan, 19
gooscan, 42
Gooscanner, 34
User-Agent, 25, 55
Verzeichnisse, 8
Vulnerability Scanning, 18, 46
Webcrawler, 15
WebInspect, 50
Webserver, 11
Wikto, 43
HTML, 21
Yahoo Search, 14, 15
Idle Scanning, 51, 57
Internet Archive, 16
Zugangsdaten, 8
Job, 34
Leetspeech, 24
Live Search, 13, 15
Logdatei, 10
Login-Portal, 10, 23
Nessus, 46
Nmap, 47
Parameter, 7, 13, 14
Penetration Testing, 56
PHP, 24
Portscan, 51, 57
Proxy-Server, 12
QualysGuard, 49
96