Tobias Scheible Cyber Security & IT-Forensik Dozent
Angeschlossener EvilCrow Keylogger

EvilCrow-Keylogger – Programmierbares Tool

Der EvilCrow-Keylogger ist nicht ein üblicher Hardware-Keylogger in einem unauffälligen Gehäuse. Stattdessen kommt keine Hülle zum Einsatz und der Blick ist frei auf den Atmega32U4 Mikrocontroller und das ESP32 WLAN-Modul. Durch die Standardkomponenten kann der Code, der Arduino kompatibel ist, selbst sehr einfach modifiziert werden kann.

Freitag, 29. Januar 2021
0 Kommentare

Mit dem EvilCrow-Keylogger werden verschiedene Funktionalitäten, die von einzelnen anderen Keyloggern geboten werden, in einer Hardware vereint. Die erfassten Daten werden auf einer microSD-Karte gespeichert und per WLAN kann auf die gespeicherten Daten live zugegriffen werden. Über das Webinterface ist eine Keystroke-Injection (BadUSB Angriff) möglich. Der EvilCrow-Keylogger wurde von Joel Serna und Ernesto Sánchez entwickelt, die alle Informationen und den dazugehörigen Code auf der GitHub-Seite bereitstellen.

Der Keylogger besitzt kein Gehäuse. Die Platine ist in Schwarz gehalten und auf der einen Seite sitzt ein USB-A-Stecker und auf der anderen Seite eine USB-A-Buchse. Er misst inklusive Anschlüsse ca. 6,5 × 1,8 cm und ist nicht höher als die USB-Buchse selbst. Auf der Seite der USB-Buchse befindet sich um 90 Grad gedreht der microSD Karten Slot. Ist eine Karte eingelegt, steht sie leicht über das Board hinaus. Daneben befinden sich der Chip für die USB-Kommunikation und darüber und darunter jeweils eine Pin-Leiste. Auf der Unterseite befindet sich der Chip des Mikrocontrollers und des WLANs. Der Name EvilCrow-Keylogger selbst ist nicht aufgedruckt. Neben ein paar Markierungen für die Bauteile sind die Version und eine Kennung auf der Unterseite aufgedruckt.

EvilCrow Keylogger
EvilCrow-Keylogger – Programmierbares Tool (Atmega32U4 und ESP32)
EvilCrow Keylogger EvilCrow-Keylogger – Programmierbares Tool (Atmega32U4 und ESP32)

Als Mikrocontroller kommt der Atmega32U4 zum Einsatz, der auch auf vielen anderen Boards wie dem Arduino Micro, dem Teensy 2.0 oder dem Beatle Board zum Einsatz kommt. Zusätzlich wurde der Arduino Lilypad USB-Bootloader verwendet, wodurch viele Anwendungen mit dem Mikrocontroller kompatibel sind. Für die WLAN-Kommunikation wird der bekannte ESP32 Chip in der Pico Ausführung eingesetzt. Um die USB-Host-Funktion zu realisieren, wird zusätzlich der Chip MAX3421 eingesetzt.

Konfiguration und Installation

Zur Installation der Software wird PlatformIO verwendet. PlatformIO ist ein plattform- und architekturübergreifendes multiples Framework für die Anwendungsentwicklung für eingebettete Systeme. Damit lassen sich viele Build-Prozesse automatisieren. Die Macher des EvilCrow-Keylogger nutzen es für die „Automatic Installation“ Methode. Darüber hinaus werden auf der GitHub-Seite noch die Methoden „Automatic Installation with ESP Flasher“ und „Manual Installation“ beschrieben. Bei diesen beiden Methoden wird zusätzliche Hardware benötigt und muss zum Teil gelötet werden. Nachfolgend beschreibe ich die „Automatic Installation“ Methode.

PlatformIO Core installed

Als Erstes muss PlatformIO Core installiert werden. Am einfachsten ist hier die Nutzung eines Python-Scripts des Projektes. Für die Installation habe ich ein Kali Linux System verwendet. Als Voraussetzung muss Python installiert sein.

$ python3 -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)"

Die Installation erfolgt im eigenen Benutzer-Verzeichnis. Daher müssen noch symbolische Links im Verzeichnis /usr/local/bin angelegt werden, damit PlatformIO von der Shell aus aufgerufen werden kann.

$ sudo ln -s ~/.platformio/penv/bin/platformio /usr/local/bin/platformio
$ sudo ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio
$ sudo ln -s ~/.platformio/penv/bin/piodebuggdb /usr/local/bin/piodebuggdb

Zusätzlich müssen die udev-Regeln gesetzt werden, damit ein Zugriff auf die USB-Schnittstelle möglich ist:

curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/master/scripts/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
sudo service udev restart

Repositories herunterladen

Jetzt können die Repositories heruntergeladen werden. Dazu wird git und der clone-Befehl verwendet. Neben dem EvilCrow-Keylogger Repository wird noch das weitere Repository keylogger-pio von Volca benötigt.

$ git clone https://github.com/joelsernamoreno/EvilCrow-Keylogger.git
$ git clone https://github.com/volca/keylogger-pio.git 
Fehler

Bei mir trat ein Fehler auf, wodurch der Vorgang abbrach. Auf GitHub habe ich dazu einen Issue eröffnet und sehr schnell eine Antwort erhalten. In der Datei platformio.ini befinden sich zwei Zeilen (35 & 36), die entfernt werden müssen.

Datei: keylogger-pio/esp32/platformio.ini 
35: platform_packages = 
36:     tool-esptoolpy@https://github.com/AprilBrother/esptool.git#keylogger

Modifikationen

Jetzt kann der Code noch weiter modifiziert werden. Wer schon einmal mit einem ESP8266 oder ESP32 einen Webserver realisiert hat und mit einem Arduino Board eine Tastaturausgabe realisiert hat, wird sich schnell im Code zurechtfinden.

Die wichtigste Stelle befindet sich in der Datei Keyboard.cpp. Hier kann das Tastaturlayout eingestellt werden. Um ein deutsches Tastaturlayout zu verwenden, muss die folgende Zeile geändert werden:

EvilCrow-Keylogger/libraries/Keyboard/src/Keyboard.cpp
26: #define kbd_en_us => #define kbd_de_de

Der EvilCrow-Keylogger generiert ein WLAN im AP-Modus. Die Zugangsdaten dafür können in der Datei ESP32.ino angepasst werden.

Datei: EvilCrow-Keylogger/code/ESP32/ESP32.ino
16: const char* ssid = "WiFi"; // Enter your SSID here
17: const char* password = "987654321"; //Enter your Password here

Code hochladen

EvilCrow Keylogger Jumper
Gestzter Jumper – EvilCrow Keylogger
EvilCrow Keylogger Jumper Gestzter Jumper – EvilCrow Keylogger

Um den Programmier-Modus des EvilCrow-Keyloggers zu aktivieren, muss eine Jumper-Brücke gesetzt werden. Diese silbernen Drahtstücke in U-Form werden in einem kleinen Plastikbeutel mitgeliefert. Hierbei wird GND mit GPIO0 verbunden.

Nachdem der Jumper gesetzt wurde, kann der EvilCrow-Keylogger per USB mit dem Rechner verbunden und der Installationsvorgang kann gestartet werden:

$ sudo ./keylogger-pio/flash.sh

Wenn dreimal die Meldung „success“ erscheint, war der Vorgang erfolgreich. Danach muss der Stick ausgesteckt und der Jumper entfernt werden.

Anwendung und Einsatz

Nachdem die aktuellste Softwareversion auf dem EvilCrow-Keylogger installiert wurde, kann er bestückt mit einer microSD-Karte an einem Rechner angeschlossen werden. Um die Funktionen zu testen, muss eine Tastatur an die USB-Buche angeschlossen werden. Nach kurzer Zeit erscheint das WLAN des Sticks, mit dem eine Verbindung aufgebaut wird. In der Standardkonfiguration lautet die SSID „Keylogger“ und das Passwort „123456789“. Danach kann in einem Webbrowser die IP-Adresse 192.168.4.1 aufgerufen werden und die Startseite des EvilCrow-Keylogger Interface erscheint.

EvilCrow Keylogger Startseite
Startseite des EvilCrow Keylogger Web-Interfaces
EvilCrow Keylogger Startseite Startseite des EvilCrow Keylogger Web-Interfaces

Die aktuelle Softwareversion wird in der obersten Zeile neben dem Namen angezeigt. Darunter befindet sich das Menü mit den Optionen „Live Payload“, „View Log“ und „Delete Log“. Der Button „Menu“ führt immer zur Startseite zurück.

View Log

Nachdem mit der an den EvilCrow-Keylogger angeschlossenen Tastatur eine Eingabe vorgenommen wurde, werden die Inhalte in der Datei LOG.TXT auf der SD-Karte gespeichert. Die Inhalte können auch über den Menüpunkt „View Log“ eingesehen werden.

EvilCrow Keylogger View Log
Inhalte, die durch den Keylogger abgegriffen wurden
EvilCrow Keylogger View Log Inhalte, die durch den Keylogger abgegriffen wurden

Alle gespeicherten Eingaben können über den Button „Delete Log“ gelöscht werden. Als Bestätigung wird eine weiße Seite mit der Meldung „File cleared!“ angezeigt.

EvilCrow Keylogger - Delete Log
Ausgabe „File cleared!“
EvilCrow Keylogger - Delete Log Ausgabe „File cleared!“

Live Payload

Über den Menüpunkt „Live Payload“ können automatische Tastatureingaben programmiert werden. Wie die Eingaben funktionieren, werden auf der EvilCrow Keylogger Seite erläutert. Um einfachen Text auszugeben, wird der Befehl pritnt oder println für Ausgaben mit anschließendem Zeilenumbruch verwendet. Mit delay, gefolgt von einer Zeitangabe in Millisekunden, können Pausen definiert werden. Um Sondertasten zu drücken, werden die Keyboard Modifiers von Arduino verwendet. Weitere Tasten für Tastenkombinationen werden entsprechend ihrer Nummer der ASCII-Tabelle angegeben. Mit dem nachfolgenden Beispiel wird unter Windows der Editor Notepad geöffnet und Hello World darin geschrieben. Mit einem Klick auf den Button „Run Payload“ wird der Vorgang gestartet.

delay 1000
press 131
press 114
release
delay 1000
print notepad
delay 500
rawpress 176
delay 2000
print Hello World
EvilCrow Keylogger - Live Payload
Eingabemöglichkeit, um einen Keystroke-Injection-Angriff auszuführen
EvilCrow Keylogger - Live Payload Eingabemöglichkeit, um einen Keystroke-Injection-Angriff auszuführen

Logger Artikelserie

Dieser Artikel ist Teil der Artikelserie „Logger als Angriffstools“, die dem Themenschwerpunkt Hacking Hardware angehört. In dieser Artikelserie beschreibe ich verschiedene Arten von Loggern, damit diese erkannt und effektive Gegenmaßnahmen getroffen werden können.

Über Tobias Scheible

Tobias Scheible

Hallo, mein Name ist Tobias Scheible. Ich bin begeisterter Informatiker und Sicherheitsforscher mit den Schwerpunkten Cyber Security und IT-Forensik. Mein Wissen teile ich gerne anhand von Fachartikeln hier in meinem Blog und in meinem Fachbuch. Als Referent halte ich Vorträge und Workshops für Verbände und Unternehmen u. a. auch offene Veranstaltungen für den VDI und die IHK.

Kommentare

Es wurde noch kein Kommentar abgegeben.

Schreibe einen Kommentar!

Hilfe zum Kommentieren und Hiweise

Um kommentieren zu können, geben sie bitte mindestens ihren Namen und ihre E-Mail-Adresse an. Bitte nutzen Sie die Kommentarfunktion nicht dazu, andere zu beleidigen oder Spam zu verbreiten. Trolle und Spammer sind hier unerwünscht! Unangemessene Kommentare, die zum Beispiel gegen geltendes Recht verstoßen, eine Gefährdung anderer Besucher darstellen oder keinen sinvollen Inhalt beinhalten, werden gelöscht oder angepasst.

Name: Ihr Name, der oberhalb des Kommentars steht, gerne auch Ihren echten Namen, das erleichtert die Kommunikation für alle. Sollte ein Spam-Keyword als Name verwendet werden, kann dieses entfernt oder korrigiert werden.

E-Mail: Ihre E-Mail Adresse dient zur Identifizierung weiterer Kommentare und damit ich direkt Kontakt aufnehmen kann. Die E-Mail Adresse wird natürlich nicht veröffentlicht und nicht weitergegeben.

Website: Hier können Sie ihren eigenen Blog bzw. ihre eigene Website eintragen, dadurch wird Ihr Name und Ihr Avatar-Bild verlinkt. Werden rein kommerzielle Angebote offensichtlich beworben, setze ich den Link auf nofollow und unangemessene werden einfach entfernt.

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <hr> <big> <small> <sub> <sup> <u>

Ihre E-Mailadresse wird nicht veröffentlicht. Mit dem Absenden anerkennen Sie die Datenschutzhinweis des Blogs.