Hacken lernen bzw. Hacker werden
08.01.2019, 20:22 - Autor: Jasmin Horvath
Ich lese immer und immer wieder Fragen wie:
- Wie werde ich Hacker?
- Wie lernt man hacken?
- Was braucht man um hacken zu lernen?
- usw.
Daher will ich diese Fragen etwas ausführlicher behandeln...
Nun erstmal gibt es nicht das "Hacken". Viele stellen sich das vor wie "hacken lernen" und dann kann man "hacken". Doch es gibt es noch zig Unterkategorien und Teilbereiche darüber hinaus ist noch einiges mehr an Zusätzlichem Wissen nötig, dass an sich nichts mit dem Thema "Hacken" zu tun hat aber ohne dieses Wissen sind viele Angriffe nicht durchführbar oder es können viele Angriffsvektoren garnicht identifiziert werden!
In der Regel fängt man als Scriptkiddy an - man spielt mit fertigen Tools herum, folgt Tutorials und landet hierbei allzuoft in Sackgassen... Reale Angriffe sind nun oftmals nicht so einfach oder Angriffsvektoren sind nicht so offensichtlich zu entdecken wie in speziell präparierten Beispielen! Es liegt dann an dir ob du dich weiterentwickelst...
Ein guter Einstieg wären
Bücher oder Videokurse.
Von Youtube-Tutorials rate ich eher ab - viel zu oft wird nur das Tool und die Bedienung gezeigt und die techn. Details dahinter garnicht oder manchmal sogar komplett falsch erklärt. Natürlich gibt es einige brauchbare Tutorials aber vieles ist leider falsch oder unvollständig und ein Anfänger kann da nicht "die Spreu vom Weizen trennen".
Wenn du erst mal mit fertigen Tools umgehen kannst und zumindest soviel über die Arbeitsweise der Tools und die Hintergründe der Angriffe weißt, dass du es auch mal schaffst Probleme selbstständig zu lösen oder den ein oder anderen Workarround selber zu finden dann bist du schon mal einen kleinen Schritt weiter... Als "Scriptkiddy++" tastest du dich an die ersten realen Tests heran und lernst methodisch auf Schwachstellen zu testen. Außerdem musst du lernen, dass Hacken vor einem eine Geduldsübung ist. Vergiss die "Hacker" aus dem Fernsehen - zwei oder drei Befehle eintippen und schon ist man "drin" gibt es im realen Leben nicht außer jemand anders hat einem eine Backdoor hinterlassen!
Oftmals verbringt man Tage damit nur Informationen zu sammeln und nach Angriffspunkten zu suchen. Und sehr oft steht man dann vor einer irrsinnigen Datenflut, die man erstmal nach nützlichen Informationen durchsuchen muss.
- Welches Betriebssystem hat das Opfer und in welcher Version?
- Welche Dienste bietet das Opfer an?
- Welche Software in welcher Version stellt die Dienste zur Verfügung?
- Welche Scripte laufen zB auf dem Webserver?
- Wie ist das Netzwerk geschützt - Firewall? IDS? WAF? usw...
- Gibt es externe Schwachpunkte - Filialen? Homeoffice von Mitarbeitern?
- Welche Email-Adressen gibt es? Eventuell hat ja zB ein Admin in einem Forum nach Hilfe gesucht und nütliche Infos wie Teile von Config-Dateien oder dergleichen gepostet...
- Spitznamen, Usernamen, sozial Media Accounts, usw. der Mitarbeiter? Man sollte Namen der Verwandten, Partner, Kinder, Hobbies, usw. kennen um eine individuelle Passwordliste für die Mitareiter zu erstellen.
- usw.
Spätestens wenn man vor zig tausenden Zeilen von Programmausgaben sitzt und sich durch dutzende solcher Listen arbeiten muss wird der Wunsch aufkommen einige Dinge zu automatiesieren oder einfach nur diese irrwitzige Datenflut besser handeln zu können. Und damit kommt Programmierungs ins Spiel, sofern man sich bis dahin noch nicht beschäftigt hat wird es jetzt höchste Zeit! Außerdem wirst du irgendwann feststellen, dass die 0815-Tools nicht in allen Situationen gut funktionieren.
Ich rate dir an dieser Stelle: "
Du solltest dir Python ansehen."! Mit wenigen Zeilen Code hast du ganz schnell POC-Scripte, die Automatisierung eines Angriffs, kleine Tools zum filtern und vergleichen von Daten, usw. gebastelt. Außerdem ist Python eine der am leichtesten zu lernenden Sprachen überhaupt und darüber hinaus auch noch sehr flexibel und mächtig! An diesem Punkt kannst du dann mit deinen Python-Kenntnissen anfangen eigene Tools zu entwickeln. (Python ist dafür sogar die bevorzugte Sprache vieler IT-Experten aka Hacker aka Pentester) Dabei wirst du ein noch tieferes Verständnis dafür bekommen wie die einzelnen Angriffe arbeiten und was genau hinter den Tools steckt.
Viele verwenden den Ausdruck Scriptkiddy so abwertend - ist er oftmals auch aber jeder Hacker ist auch ein Scriptkiddy! Ich verwende bei Pentests großteils fertige Tools und Scripte - warum das Rad immer neu erfinden? Auf der anderen Seite kenne ich auch die Hintergründe und kann mir bei Bedarfe ein spezielles Tool schreiben wenn ich es wirklich brauche oder einfach nur Bock drauf habe. Ein Hacker "programmiert" auch nicht ständig - den Großteil der Zeit verbringt man mit Weiterbildung, Datenauswertung, schreiben von Berichten und Gutachten, Datenbeschaffung, Recherche in Softwaredokumentationen, neue Sicherheitsmeldungen lesen, usw.
Eines der einfachsten Gebiete ist hierbei Web-Pentesting. Angriffe wie
SQLi,
XSS, CSRF, usw. sind meist weder besonders komplex noch besonders Aufwändig. Allerdings müsst man dazu die gängigen Sprachen des Web (HTML, CSS, Javascript, PHP, SQL, ...) kennen. Darüber hinaus sollte man auch die gängigen Frameworks wie jQuery, Node.js, usw. kennen auf die man eventuell treffen könnte. Damit kannst du die ersten Praxiserfahrungen (zB Bug-Bounty-Programme) sammeln und auch noch etwas Geld verdienen.
Als mittlere Schwierigkeitsstufe würde ich diverse Angriffe und Techniken für die Netzwerk- und Protokollgrundlagen erforderlich sind einstufen. Hierzu zählen MITM, Sniffer, Scanner, usw.
Andere Dinge wie Buffer-Overflows, Shellcode-Generierung, etc. sind schon anspruchsvoller. Das sogenannte Exploit Research ist die Königsdisziplin - dazu wirst du dich mit Sprachen wie C/C++ oder Assembler auseinandersetzen müssen. Mit diesem Wissen bewaffnet kannst du dann lauffähige Programme Disassemblieren und mit Debuggern (gdb, OllyDebug, ...) untersuchen und Schwachstellen aufdecken. Allerdings ist das nicht gerade leichte Kost ;-)
Um alle möglichen Schwächen in kryptografischen Algorithmen zu verstehen wären sehr gute Mathematik-Kenntnisse Voraussetzung.
Irgendwo auf dem Weg kannst du dir auch Zertifizierungen wie zB CEH, LPT, usw. holen. (Allerdings sind die nicht gerade billig... 3.000 - 7.000 EUR / Zertifikat kannst du einplanen)
Abgesehen von den Hacking-Techniken brauchst du allerdings wie eingangs schon erwähnt einiges weitere Wissen wie zB:
- Erfahrung mit der Wartung und Administration von Betriebssystemen - Sicherheit hängt hier stark davon ab wie gut der Admin ist und um dessen Maßnahmen zu überlisten sollte man in der Regel mehr Wissen als er!
- Netzwerk-Grundlagen wie zB Schichenmodell, 3-Wege-Handshake, ...
- zumindest Grundlagenwissen wie die gängigen Protokolle (TCP, IP, ARP, IMAP, HTTP, FTP, POP, SMTP, ...) arbeiten
- Programmierkenntnisse um Angriffscode zu schreiben oder auch fertigen Exploitcode zu debuggen - hierbei sollte ich erwähnen, dass Exploitcode oftmals nicht sehr universell einsetzbar programmiert ist oder auch nur ordentlich dokumentiert ;-)
Ich hatte schon oftmals das "Vergnügen" in fremden Exploitcode Anpassungen vornehmen zu müssen damit er auf meinem System überhaupt läuft oder im Code danach zu suchen welche zusätzlichen Tools aufgerufen werden und daher vorab installiert sein müssen.
Außerdem gibt es Angriffe für die man sich überlegen müsste wie das der Entwickler wohl programmiert haben könnte um sich dann mögliche Tests auf Schwachstellen zu überlegen.
- Erfahrungen mit dem Einrichten, Administrieren und Warten von Serverdiensten (IIS, Apache, ProFTPd, EXIM, Postfix, NGINX, MySQL, ...) und Firewalls - oftmals liegen die Schwachstellen nicht in der Software selbst sondern in fehlerhafter oder unsicherer Konfiguration der Dienste!
- Arbeitsweise von Virenscannern und Anti-Malware-Tools denn nur wer diese wirklich kennt kann auch Tools wie Trojaner oder diversen anderen Angriffscode vor diesen Programmen verbergen. Hierzu wird meist Code in größerem Maße obfuscated und zusätzlich mit Kryptografie gearbeitet.
- usw.
Weitere wichtige Eigenschaften wären:
- Geduld, Hartneckigkeit und Durchhaltevermögen - nicht jeder kann sich nach zig Rückschlägen und Sackgassen wieder hochraffen und weiteran einem Problem arbeiten. Ein kühler Kopf ist ebenfalls unerlässlich - oftmals hilft es nur ein oder zwei Schritte zurück zu machen und einen neuen Weg zu suchen.
- Eine hohe Frustrationsgrenze (oder einen Boxsack im Büro)! Ich kenne derart "stabilen" Exploit-Code, der regelmäßig alle 30-90 Sekunden abstürzt und die Verbindung beendet. Mit soetwas über Stunden hinweg zu versuchen die Userrechte weiter auszubauen und sich über 300x an einem einzigen Arbeitstag wieder neu einzuloggen ist definitiv ein gutes Mittel geben zu niedrigen Blutdruck!