IMPRESSUM
Bibliografische Information der Deutschen Nationalbibliothek:
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über www.dnb.de abrufbar.
© 2018-2019 Alicia Noors & Mark B.
Herstellung und Verlag:
BoD – Books on Demand GmbH, Norderstedt
ISBN:
978-3749427291
Viele Interessierte kribbelt es in den Fingern sich mit dem sagenumwobenen Thema Hacking zu beschäftigen und dieses Buch zeigt Ihnen wie Sie Ihr Wissen völlig legal in der Praxis testen können und damit Geld verdienen.
Nachdem man die ersten praktischen Übungen mit speziellen Testapplikationen und virtuellen Maschinen absolviert hat würde man sich auch gerne an realen Szenarien versuchen - allerdings kann man nicht einfach irgendwelche Webseiten oder Server angreifen ohne sich dabei strafbar zu machen.
Der einzige legale Weg so etwas zu tun wäre es sich als Penetrationstester oder kurz Pentester engagieren zu lassen nur werden hierzu oftmals teure Zertifizierungen oder zumindest nachweisware Erfahrung in dem Bereich vorausgesetzt!
Genau da setzen Bug Bounty Programme ein. In der Regel ist hier jeder willkommen von Anfänger bis hin zum erfahrenen Pentestern. Außerdem werden weder bestimmte Zertifizierungen, Ausbildungen noch sonstiges vorausgesetzt. Genau das bietet Anfängern die Möglichkeit gelerntes Wissen in realen Beispielen anzuwenden, sich die "ersten Sporen" zu verdienen.
Folgen Sie uns auf den ersten Schritten zum Pentester und lernen Sie wie Sie auf die Verwundbarkeit mit einem bestimmten Angriff testen und mit welchen Tools Angriffe dann durchgeführt werden können. Dabei legen wir auch Wert darauf Ihnen zu zeigen wie man gute Reporte schreibt und welche Strategie uns bei realen Tests die besten Dienste geleistet hat.
Im Grunde sind Bug Bounty Programme so etwas wie öffentliche Ausschreibungen um Fehler in Webseiten, IT-Systemen, Netzwerkgeräten oder Programmen zu finden. Dabei ist der überwiegende Großteil die Fehlersuche in Webseiten oder webbasierten Managementinterfaces.
Diese öffentliche Ausschreibung erlaubt es zwar jedem daran teilzunehmen und Fehler zu finden ungeachtet von Befähigungsnachweisen und dergleichen aber damit geht auch eine starke Konkurrenz einher. Wenn mehrere Personen auf der gleichen Webseite nach Fehlern suchen bleibt es nicht aus, dass der gleiche Fehler mehrfach gefunden wird - hierbei gilt allerdings, dass nur der erste der die Meldung abgibt auch einen Anspruch auf die Vergütung hat und alle anderen haben damit quasi Ihre Zeit verschwendet.
Bevor man mit der Fehlersuche loslegen kann benötigt man einen Account auf den gängigen Bug Bounty Plattformen:
» https://www.hackerone.com/de
» https://www.bugcrowd.com/
» https://cobalt.io/platform
» https://www.yeswehack.com/en/index.html
» https://www.bugbountyhq.com/
» https://www.intigriti.com/public/researchers
Auf diesen veröffentlichen Firmen dann Ihre Angebote. Hierbei gilt es vor allem genau zu lesen denn wer gegen die vereinbarten Spielregeln verstößt oder Fehler auf Unterseiten oder Subdomains meldet die vom Test ausgenommenen sind, bekommt dafür natürlich keine Vergütung.
Große Firmen wie Facebook, Google und einige weitere haben eigene Bug Bounty Programme bei denen meist jeder teilnehmen kann. Allerdings muss man sich hierzu direkt an diese Firmen wenden oder sich auf entsprechenden Unterseiten des Portals separat anmelden.
Dabei ist auch das richtige Melden der gefundenen Fehler sehr wichtig. Es gilt kurz und knapp den Fehler zu beschreiben und darzulegen wie dieser ausgenutzt werden kann. Verzichten Sie hierbei auf Seitenlange Abhandlungen wie Sie den Fehler aufgedeckt haben, theoretische Abhandlungen was das für die Firma oder Webseite bedeuten könnte oder auf mehrfache Beispiele wie man den Fehler ausnutzen könnte. Beim Auftraggeber werden die Eingaben aller Teilnehmer des Programms gegengeprüft und wenn ein Entwickler dann dutzende Fehlerberichte am Schreibtisch hat wäre es nur menschlich einen 1- oder 2-seitigen Bericht zur gleichen URL einem 36-seitigem "Roman" vorzureihen und diesen als ersten abzuarbeiten.
Wenn wir schon bei der menschlichen Komponente sind dann denken Sie auch daran, Berichte neutral zu formulieren und nicht abfällig "dumme" Fehler der Entwickler hervorzuheben denn es ist oftmals davon auszugehen das eben die Entwickler die Sie in einem solchen Report vorführen auch diejenigen sind die Ihre Eingaben gegenprüfen. Beißen Sie also nicht die Hand die Sie füttert!
Zu knappe Berichte die mehr Fragen offen lassen als Sie beantworten sind allerdings genau so wenig zielführend. Entwickler sind auch keine Hellseher - denken Sie auch daran wenn diejenigen den "offensichtlichen" Weg etwas auszunutzen gesehen hätten, dann wäre der Fehler garnicht erst entstanden. Setzen Sie also nichts vorraus und erklären Sie ein paar Sätzen auch für Sie offensichtliches ohne dabei weit abzuschweifen.
Im Idealfall beschreiben Sie wo genau der Fehler ist (zB genaue URL), um welche Art von Fehler oder möglichen Angriff es sich handelt und wie dieser ausgenutzt werden kann. Fügen Sie danach noch ein wenig Code an der den erfolgreichen Angriff demonstiert und der Bereicht ist fertig.
Da wir dies für geanuso wichtig wie die fachlichen Fähigkeiten halten, werden wir an passender Stelle ein paar Beispiel-Berichte veröffentlichen damit Sie so etwas schon einmal gesehen haben. Viele Seiten bieten eigens Formulare an die dafür sorgen, dass jeder User formell sehr ähnliche Berichte einreicht und immer alle wichtigen Informationen zur Verfügung stehen. Für alle anderen Fälle nutzen wir ein kleines Python-Script, dass mit einem Formular und ein paar vorgefertigten Textblöcken einen professionellen Bug-Report im PDF-Format erstellt.
Außerdem sollte man auch in diesem Bereich anfangs lieber kleine Brötchen backen - wer sich als blutiger Anfänger auf Branchengrößen wie Facebook stürzt wird in der Regel sehr schnell frustriert werden dann diese Seiten wurden schon von so vielen Personen getestet und es wurden schon sehr viele Fehler gefunden und behoben. Am besten Sie stürzen sich anfangs auf kleinere und neuere Projekte die eher weniger Anklang finden oder bei denen noch nicht sehr viele Reports abgegeben wurden. So haben Sie weniger Konkurrenz und eine deutlich bessere Chance Fehler zu finden und die ersten Erfolge und Umsätze zu verbuchen!
Da wir uns in diesem Buch vorrangig mit Sicherheitstests für Webseiten beschäftigen werden benötigen wir zum Üben Webseiten die einerseits einige Fehler enthalten und andererseits garantiert nicht verändert werden damit Sie alle Beispiele genau so nachvollziehen können wenn Sie mit diesem Buch arbeiten. Daher haben wir uns für eine virtuelle Maschine entschieden die genau diese Anforderungen erfüllt und gleich eine ganze Sammlung an verwundbaren Webprojekten mitbringt:
https://sourceforge.net/projects/owaspbwa/
Wir haben zum Zeitpunkt der Bucherstellung die Version 1.2, geneuer gesagt die Datei OWASP_Broken_Web_Apps_VM_1.2.ova
heruntergeladen. Diese OVA-Datei können wir direkt in Virtualbox importieren.
Zuerst müssen Sie Virtualbox von https://www.virtualbox.org/wiki/Downloads
herunterladen und installieren. Sobald dies geschehen ist sollte ein Doppelklick auf die OVA-Datei Virtualbox starten und folgendes Fenster anzeigen:
Sollte dies nicht der Fall sein, können Sie die OVA-Datei manuell mit dem Menüpunt Datei
-> Appliance Importieren
öffnen.
Sie können alles genau so übernehmen und dann auf Importieren
klicken. Dieser Vorgang kann ein paar Minuten dauern uns sobald er abgeschlossen ist, müssen wir dann nochmals die Einstellungen der soeben erstellten virtuellen Maschine öffnen.
Markieren Sie dazu im Hauptfenster von Virtualbox die Maschine auf der linken Seite und klicken Sie dann oben auf das Ändern-Symbol. Wählen Sie hier den Reiter Netzwerk
aus und danach sollten Sie folgenden Dialog sehen:
Bei Adapter 1
wählen Sie Netzwerkbrücke
bei dem Prunkt Angeschlossen an
aus! Unter Name
wählen Sie bitte diejenige Netzwerkkarte aus die mit Ihrem Heimnetzwerk verbunden ist.
Danach können Sie den virtuellen PC booten und von jedem der Rechner in Ihrem Netzwerk darauf zugreifen.
Kali ist eine sogenannte Pentesting-Destribution - also ein System in dem schon die beliebtesten Hacking-Tools und diverse Werkzeuge für die Softwareentwicklung enthalten sind. Es steht Ihnen natürlich frei, die benötigten Tools auf dem Betriebssystem Ihrer Wahl zu installieren.
Kali-Linux wird mit Gnome3, KDE, XFCE4, LXDE, Enlightment und Mate als Windowmanager angeboten. Für diejenigen die Linux nicht kennen - der Windowmanager ist vereinfacht gesagt die grafische Oberfläche des Systems, und bei Linux hat man die freie Wahl welchen man verwendet. Verwechseln Sie das jetzt aber nicht mit Themes wie man es aus anderen Betriebssystemen kennt! Die einzelnen Windowmanager unterscheiden sich nicht nur im Aussehen, sondern auch im Ressourcenverbrauch, dem Bedienkonzept und den Standard-Tools (Einstellungsverwaltung, Dateimanager, etc.) die mitinstalliert werden.
Ich für meinen Teil bevorzuge XFCE. Der Look ist klar und schlicht, der Windowmanager ist ressourcenschonend und auf schnelles Arbeiten optimiert. Außerdem ist es mit einigen XFCE-Plugins recht einfach die Systemressourcen im Blick zu behalten.
Außerdem wird Kali für verschiedenste Einplatinencomputer angeboten. Damit ist es sehr einfach möglich ein kleines Bot-Netzwerk zu erstellen um bestimmte Angriffe gleichzeitig von verschiedensten IP-Adressen durchzuführen.
Parrot Security OS ist ebenfalls eine Pentesting-Distribution und enthält bis auf wenige Ausnahmen den gleichen Satz an Tools wie Kali. Darüber hinaus gibt es auch eine Home / Workstation Version von Parrot die keine Hacking- oder Forensiktools enthält, dafür aber auf Sicherheit optimiert wurde. Das soll auch einfache Linux-User ansprechen und genau darum werden Updates deutlich besser getestet und es wird entsprechend auch auf Stabilität geachtet. Unter dem Punkt Other Builds
finden sich auch hier Images für einige Einplatinencomputer oder fertige virtuelle Maschinen.
Unser Hauptproblem mit Kali war, dass jedes Update zu einem Glücksspiel wurde - oftmals wurde einiges am System durch Updates beschädigt was dann viel an händischer Nacharbeit zur Folge hatte - auch wenn wir durchaus in der Lage sind diese Probleme handzuhaben ist es doch auf Dauer nervtötend wenn man permanent am System nacharbeiten muss!
Da Parrot und Kali nicht nur weitestenteils in der Toolsammlung sondern auch in den vorinstallierten Worklisten und ähnlichem übereinstimmen ist es der ideale Ersatz und unsere klare Empfehlung! Egal für welches System Sie sich entscheiden - Sie können alle hier gezeigten Befehle ident auf jedem der beiden Systeme verwenden!
Kali kann unter https://www.kali.org/downloads/
kostenlos heruntergeladen werden. Diejenigen die einen virtuellen PC verwenden möchten können fertige VMware- oder VirtualBox-Images downloaden. Wenn Sie sich für Parrot Security OS entscheiden dann finden Sie die Image-Downloads unter: https://www.parrotsec.org/download.php
.
Nachdem wir die ISO-Datei heruntergeladen haben, können wir Sie auf eine DVD brennen oder auf einen USB-Stick entpacken...
Windows-User können dazu den Win32 Image writer
verwenden, den Sie unter https://launchpad.net/win32-image-writer
downloaden können. Das Programm sollte soweit selbsterklärend sein...
Linux- und OSX-User können dazu den Konsolen-Befehl dd
verwenden:
dd if=/pfad/zum/image.iso of=/dev/sdb bs=512k
Dieser Befehl muss als root
oder mit sudo
ausgeführt werden!
Seien Sie aber vorsichtig mit dd
... Dieser Befehl verzeit keine Fehler und kann Ihnen eine ganze Festplatte überschreiben!
Mit if=
wird die Eingabe-Datei (input file) bestimmt und mit of=
die Ausgabe-Datei. In meinem Beispiel habe ich /dev/sdb
angegeben, was die Geräte-Datei der zweiten SCSI- bzw. SATA-Platte ist. Unter Linux werden so auch die USB-Laufwerke angesprochen. Wichtig ist, nicht beispielsweise /dev/sdb1
zu verwenden, denn das wäre die erste Partition dieser Platte, und wir wollen die gesamte Platte inklusive der Partitionstabelle überschreiben!
Unter OSX wäre das /dev/disk1
. Hier wäre /dev/disk1s0
die erste Partition und somit falsch! Am einfachsten identifizieren Sie die richtige Geräte-Datei indem Sie df -h
im Terminal eingeben:
Wenn nun die Ausgabe beispielsweise
/dev/disk0s2 148Gi 86Gi 62Gi 58% ...
/dev/disk1s1 7.4Gi 5.2Gi 2.2Gi 71% ...
liefert ist klar, dass das Laufwerk disk1
mit der 7,4 GB-Partition der USB-Stick und die Platte disk0
der 148GB-Partition die SSD ihres Rechners ist. In dem Fall wäre also /dev/disk1
zu verwenden.
Das bs=512k
definiert eine Blockgröße von 512KB
und kann so übernommen werden. dd
meldet keinen Fortschritt und ist auch nicht besonders schnell - kochen Sie sich einen Kaffee, gönnen Sie sich einen Snack oder schnappen Sie kurz frische Luft - mit 10 bis 20 Minuten können Sie schon rechnen.
Zuvor muss das Laufwerk aber gegebenenfalls ausgehängt werden - dies geschieht mit:
umount /dev/sdb1
(Linux)
diskutil umount /dev/disk1s1
(OSX)
Jeweils mit sudo
oder als root
ausgeführt! Sobald das Erstellen des bootfähigen USB-Sticks fertig ist, meldet dd
dies mit einer derartigen Ausgabe:
5345+1 records in
5345+1 records out
2802616968 bytes transferred in 668.849633 secs (4190204 bytes/sec)
Danach kann ein Rechner von dem Installations-Stick gestartet werden. Hierbei haben Sie die Möglichkeit Kali vom USB-Stick zu starten und ohne Installation zu testen. Diese Option ist auch sehr hilfreich, wenn eines Ihrer Systeme nicht mehr bootet - so können Sie mit Kali oder Parrot zumindest noch eine Datensicherung vornehmen und dann nach der Ursache forschen.
Kali und Parrot sind wie alle Linux-Distros sehr genügsam und laufen auf meinem Atom-Netbook mit 2 GB Ram absolut flüssig - im Leerlauf werden gerade einmal 1 - 3% der CPU-Leistung benötigt. Daher kann ich jedem Interessierten empfehlen ein altes Notebook oder Netbook mit einer der beiden Distributionen aufzusetzen!
Wichtig ist hierbei, dass der Pentesting-Rechner über eine ausreichend große Festplatte oder SSD verfügt! Wenn Sie mit Wortlisten oder Rainbow-Tables arbeiten haben Sie schnell mit Dateigrößen von 100GB und mehr zu tun... 500GB oder mehr Plattenplatz wäre meine Empfehlung.
Für eine ausführliche Installationsanleitung verweisen wir an dieser Stelle auf die offizielle Dokumentation von Kali:
https://docs.kali.org/installation/kali-linux-hard-disk-install
Für Parrot findet sich eine entsprechende Anleitung unter:
https://www.parrotsec.org/docs/getting-started/install-parrot/
Im Grunde ist die Installation von Linux sehr einfach und absolut kein Hexenwerk. Allerdings gebe ich Ihnen an dieser Stelle den guten Rat, dass Sie bei der Installation die Partitionierung der Platte wie folgt vornehmen:
Wählen sie Manuell
als Partitionsmethode aus und legen folgendes Partitionsschema für einen Rechner mit Legacy BIOS-Modus an:
Einhängepunkt | Größe | Benutzen als |
/ |
40-60GB | ext4 |
/root |
40-100GB | ext4 |
--- | 4-8GB | swap |
/home |
restlicher Speicher | ext4 |
Für einen Rechner mit UEFI empfehle ich folgende Aufteilung der Platte:
Einhängepunkt | Größe | Benutzen als |
/boot/efi |
2-4GB | fat32 |
/ |
40-60GB | ext4 |
/root |
40-100GB | ext4 |
--- | 4-8GB | swap |
/home |
restlicher Speicher | ext4 |
Bei einem Rechner mit UEFI muss man auch eine GUID-Partitionstabelle verwenden.
Diese Aufteilung macht Sinn, da Programme die unter root
/
/root
/home