2 Ihre Python-Umgebung einrichten
Das ist der langweiligste, aber dennoch ein sehr wichtiger Teil dieses Buches. Hier richten wir eine Umgebung ein, in der Sie Python-Programme entwickeln und testen können. Wir absolvieren einen Crashkurs zur Einrichtung einer Kali Linux-VM (virtuellen Maschine) und installieren eine nette IDE, sodass Sie alles haben, was Sie zur Entwicklung von Code benötigen. Am Ende dieses Kapitels sollten Sie alle Übungen und Codebeispiele in Angriff nehmen können, die im Rest des Buches auf Sie zukommen.
Bevor Sie loslegen, müssen Sie den VMWare Player1 herunterladen und installieren. Sie sollten auch einige Windows-VMs vorbereiten, einschließlich Windows XP und Windows 7, vorzugsweise in der 32-Bit-Version.
2.1 Kali Linux installieren
Kali ist der Nachfolger der von Offensive Security entwickelten BackTrack-Linux-Distribution, die von Grund auf als Penetrationstest-Betriebssystem konzipiert wurde. Es wird mit einer ganzen Reihe vorinstallierter Tools ausgeliefert und basiert auf Debian Linux, d.h., Sie können eine Vielzahl von Tools und Bibliotheken nachinstallieren.
Besorgen Sie sich zuerst ein Kali-VM-Image von der folgenden URL: http://images.kali.org/Kali-Linux-1.1.0c-vm-486.7z2. Laden Sie das Image herunter und entpacken Sie es. Durch einen Doppelklick wird es dann im VMWare Player gestartet. Der Standardbenutzername lautet root und das Passwort toor. Sie sollten in einer vollständigen Kali-Desktop-Umgebung landen (siehe Abbildung 2–1).
Abb. 2–1 Der Kali-Linux-Desktop
Zuerst wollen wir nun sicherstellen, dass die korrekte Version von Python installiert ist. Im gesamten Buch arbeiten wir mit Python 2.7. In der Shell (Applications › Accessories › Terminal) führen Sie den folgenden Befehl aus:
root@kali:~# python --version
Python 2.7.3
root@kali:~#
Wenn Sie das von mir weiter oben empfohlene Image heruntergeladen haben, wird Python 2.7 automatisch installiert. Bitte beachten Sie, dass einige Codebeispiele aus diesem Buch mit anderen Versionen von Python nicht funktionieren.
Nun wollen wir nützliche Python-Paketmanagement-Tools in Form von easy_install und pip installieren. Diese ähneln dem Paketmanager apt, da sie es erlauben, Python-Bibliotheken direkt zu installieren, ohne sie manuell herunterladen, entpacken und installieren zu müssen. Wir installieren beide Pakete durch Eingabe des folgenden Befehls:
root@kali:~#: apt-get install python-setuptools python-pip
Sobald die Pakete installiert sind, können wir einen kurzen Test machen, indem wir das Modul installieren, das wir in Kapitel 8 verwenden, um einen GitHub-basierten Trojaner zu bauen. Geben Sie den folgenden Befehl in Ihrem Terminal ein:
root@kali:~#: pip install github3.py
Die Ausgabe im Terminal sollte anzeigen, dass die Bibliothek heruntergeladen und installiert wurde.
Dann öffnen wir eine Python-Shell und prüfen, ob die Bibliothek korrekt installiert wurde:
root@kali:~#: python
Python 2.7.3 (default, Mar 14 2014, 11:57:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import github3
>>> exit()
Sind Ihre Ergebnisse nicht mit diesen identisch, ist Ihre Python-Umgebung nicht korrekt konfiguriert und Sie haben große Schande über uns gebracht! In diesem Fall müssen Sie sicherstellen, dass alle obigen Schritte ausgeführt wurden und die korrekte Kali-Version installiert wurde.
Denken Sie daran, dass der Code für die meisten Beispiele in diesem Buch in verschiedenen Umgebungen entwickelt werden kann, einschließlich Mac, Linux und Windows. Es gibt einige Windows-spezifische Kapitel, aber das lasse ich Sie zu Beginn des jeweiligen Kapitels wissen.
Nachdem wir nun eine virtuelle Maschine für das Hacking eingerichtet haben, wollen wir eine Python-IDE für die Entwicklung installieren.
2.2 WingIDE
Eigentlich bin ich kein Verfechter kommerzieller Software, doch WingIDE ist die beste IDE, mit der ich in den letzten sieben Jahren bei Immunity gearbeitet habe. WingIDE bietet alle gängigen IDE-Funktionalitäten wie Autovervollständigung und die Beschreibung von Funktionsparametern, doch sind es vor allem die Debugging-Fähigkeiten, die es von anderen IDEs abhebt. Im Folgenden gebe ich einen kurzen Überblick über die kommerzielle Version von WingIDE, aber natürlich können Sie die Version nutzen, die sich für Sie am besten eignet.3
Sie können WingIDE von http://www.wingware.com/ herunterladen; ich empfehle die Testversion (Trial), damit Sie aus erster Hand einige der Features erleben können, die in der kommerziellen Version zur Verfügung stehen.
Sie können auf jeder gewünschten Plattform entwickeln, doch zumindest am Anfang sollten Sie WingIDE auf Ihrer Kali-VM installieren. Wenn Sie meinen
Anweisungen bis hierhin gefolgt sind, sollten Sie das 32-Bit-deb-Paket für WingIDE herunterladen und in Ihrem Benutzerverzeichnis speichern. Öffnen Sie dann ein Terminal und führen Sie den folgenden Befehl aus:
root@kali:~# dpkg -i wingide5_5.0.9-1_i386.deb
Damit sollte WingIDE problemlos installiert werden. Kommt es zu Installationsfehlern, sind möglicherweise einige Abhängigkeiten nicht erfüllt. In diesem Fall führen Sie einfach den folgenden Befehl aus:
root@kali:~# apt-get -f install
Damit sollten alle fehlenden Abhängigkeiten aufgelöst und WingIDE installiert werden. Um sicherzustellen, dass es korrekt installiert wurde, starten Sie das Programm über den Kali-Desktop (siehe Abb. 2–2).
Abb. 2–2 WingIDE im Kali-Desktop starten
Öffnen Sie nun eine neue (leere) Python-Datei. Folgen Sie mir nun bei einem kurzen Überblick einiger nützlicher Features. Erst einmal sollte der Bildschirm aussehen wie in Abbildung 2–3, d.h., der Haupt-Editierbereich befindet sich oben links, und unten sind eine Reihe von Tabs aufgeführt.
Abb. 2–3 WingIDE-Layout
Nun wollen wir ein paar Zeilen einfachen Beispielcode eingeben, um einige der nützlichen Funktionen von WingIDE vorzustellen, darunter auch die Tabs »Debug Probe« und »Stack Data«. Geben Sie den folgenden Code im Editor ein:
def sum(number_one,number_two):
number_one_int = convert_integer(number_one)
number_two_int = convert_integer(number_two)
result = number_one_int + number_two_int
return result
def convert_integer(number_string):
converted_integer = int(number_string)
return converted_integer
answer = sum("1","2")
Zugegeben, dieses Beispiel ist doch arg gestellt, doch es zeigt sehr gut, wie man sich mit WingIDE das Leben leichter macht. Sichern Sie den Code unter einem beliebigen Dateinamen, klicken Sie dann auf den Menüpunkt Debug und wählen Sie dann die Option Select Current as Main Debug File, wie in Abbildung 2–4 zu sehen.
Abb. 2–4 Aktuelles Python-Skript zum Debugging auswählen
Nun setzen Sie einen Breakpunkt in der folgenden Zeile:
return converted_integer
Zu diesem Zweck klicken Sie den linken Rand an oder drücken die F9-Taste. Am Rand erscheint daraufhin ein kleiner roter Punkt. Führen Sie das Skript nun aus, indem Sie F5 drücken. Die Ausführung wird am Breakpunkt angehalten. Klicken Sie den Reiter Stack Data an und es erscheint eine Seite wie in Abbildung 2–5.
Im Reiter »Stack Data« finden wir einige nützliche Informationen, etwa den Zustand aller lokalen und globalen Variablen beim Erreichen des Breakpunkts. Das erlaubt das Debugging komplexeren Codes, bei dem die Variablen während der Ausführung untersucht werden müssen, um Fehlern auf die Spur zu kommen. Wenn Sie die Dropdown-Leiste anklicken, sehen Sie auch den aktuellen Aufrufstack (Call-Stack). Dieser sagt Ihnen, welche Funktion die Funktion aufgerufen hat, in der Sie sich gerade befinden. Sehen Sie sich den Stacktrace in Abbildung 2–6 an.
Abb. 2–5 Anzeige der Stackdaten beim Erreichen eines Breakpunkts
Abb. 2–6 Der aktueller Stacktrace
Wir können sehen, dass convert_integer von der sum-Funktion in Zeile 3 unseres Python-Skripts aufgerufen wurde. Das ist sehr praktisch bei rekursiven Funktionen, oder wenn eine Funktion von vielen verschiedenen Stellen aufgerufen wird. Die Nutzung des »Stack Data«-Tabs wird in Ihrer Karriere als Python-Entwickler sehr hilfreich sein!
Das nächste wichtige Feature ist der Tab »Debug Probe«. Dieser Tab ermöglicht es Ihnen, in eine Python-Shell zu wechseln, die innerhalb des aktuellen Kontexts beim...