www.blafusel.de

  Home  |   Privat  |   Impressum  |   Bücher  |   Computer  |   Mikrocontroller  |   Misc  |   OBD  |   Forum

RadioKeySniff - ein moderner Minispion für die Tastatur

Inhalt

Hinweis
Einführung
Schaltplan/PCB Layout
Aufbau
Software

Hinweis

Die hier vorgestellte Technik ist lediglich eine Machbarkeitsstudie! Es ist absolut illegal, jedwede Daten anderer Leute hiermit oder anderweitig auszuspionieren.

Einführung

Die Idee zu diesem Projekt kam mir beim Lesen des Artikels Überwachung mit dem JitterBug (Gordon Bolduan) in der Technology Review. Besonders der Satz "Keylogger, die über Funknetze Daten senden, kennt Fink nur aus den Beständen von Nachrichtendiensten und Ermittlungsbehörden: 'Die sind nicht im freien Handel erhältlich'" führte bei mir zu Stirnrunzeln und anschließender Gehirnakrobatik.
Das kann doch nicht so das High-Tech Unternehmen sein, einen Keylogger auf die Beine zu stellen, der seine ausgespähten Daten per Funk übermittelt. Immerhin haben die beiden Alternativtechniken gravierende Nachteile: Module, die lokal Daten sammeln, müssen vom Datendieb wieder abgeholt werden. KEYSPY ist ein zu dieser Technik passendes Exemplar, bei welchem ich auch Ideen für meine Eigenentwicklung entliehen habe. Der in der TR vorgestellte Keyboard JitterBug hat den Nachteil, daß eine Internetverbindung vorhanden sein muß, über welche die Daten ausgeschleust werden - in einem Hochsicherheitstrakt unwahrscheinlich.
Die Lösung ist eigentlich naheliegend: Im Frequenzbereich 433,23–434,35 MHz FM darf man ohne Anmeldung funken. Ähnliches wäre via Bluetooth oder WLAN denkbar. Dafür gibt es fertige Module, die neben dem Sende-/Empfangsteil auch gleich noch ein wenig Logik d'rauf haben und sich um die Codierung der Daten kümmern. Die Tranceiver-Module ER400TRS von LPRS gehören zwar nicht gerade zu den Schnäppchen am Markt, sind dafür aber ziemlich klein und sehr einfach zu bedienen. Drumherum kommt noch ein wenig Logik und schon kann man die Tastaturanschläge per Funk senden. Auf der Empfängerseite noch ein weiterer ER400TRS und ein Pegelwandler und die Daten können an jedem PC über die serielle RS232 Schnittstelle eingelesen und mit einem popeligen Terminalprogramm angezeigt werden. Rein theoretisch könnte man auch auf die marginal preiswerteren Module zurückgreifen, die lediglich senden oder empfangen können, doch die kombinierten Sende-/Empfängermodule lassen sich dann ggf. noch für weitere Zwecke nutzen. Wo ist das Problem? Keins zu sehen, also mal loslegen.

Schaltplan/PCB Layout

Die Grundidee ist wohl klar. Zusätzlich soll das Loggermodul noch eine Funktion haben, die Tastatur zu sperren, so daß keine Daten an den PC weitergereicht werden. Das ist sicher kein zuverlässiger Schutz, soll aber diejenigen beim Schnüffeln behindern, die keine Ahnung haben und nur die Schaltung nachbauen und den Sourcecode unverändert nutzen, denn auf diese Weise muß der Nutzer, dessen Eingaben ausspioniert werden sollen, vorher aktiv werden. Symbolisch sieht die Sache dann so aus:

Schematische Funktionsskizze

Schaltplan Sender Der Schaltplan für den Sender, also den eigentlichen Keylogger, ist relativ einfach. Zuerst einmal müssen die Datenleitungen der Tastatur abgegriffen werden. Die Belegung eines DIN oder PS/2 Steckers ist einfach und besteht nur aus einer Datenleitung, dem Takt, Masse und +5 V. Allerdings zeigte sich, daß die Leitungen OpenCollector sind und auch sonst sehr empfindlich auf eine zusätzliche Beschaltung reagieren, so daß es nicht ohne Zusatzhardware möglich ist, die Signale abzugreifen. Der Mikrocontroller soll nur die Daten auswerten und nicht durchreichen. Als hilfreiches Bauteil stellte sich der 74HCT4053 heraus: Dieser kann die Datenleitungen "anzapfen" und sogar unterbrechen. Die Tastatur wird direkt an µC und 4053 angeschlossen und der PC an den Ausgang des 4053. Die Schaltung wird über die Tastaturschnittstelle mit Spannung versorgt.
Zusätzlich wird noch ein ATmega8 Mikrocontroller in Minimalbeschaltung aufgebaut und das Funkmodul angeschlossen. Über die ISP-Schnittstelle kann der Prozessor programmiert werden.

Bestückungsplan Sender Nebenstehend der Bestückungsplan für eine kleine Platine. Die Belichtungsvorlage als PDF.

Schaltplan Empfänger Der Empfänger ist noch einfacher: An den ER400TRS wird lediglich ein RS232 Pegelwandler angeschlossen. Die Spannungsversorgung sollte eigentlich aus der seriellen Schnittstelle über die DTS-Leitung erfolgen. Wie sich zeigte, klappt das nicht. Also die Verbindung zwischen Pin 4 der Schnittstelle und dem Spannungsregler auftrennen und extern Versorgen (Masse der externen Quelle natürlich auch anschließen!). Zum Beispiel aus einem 9 V Steckernetzteil. Hierfür könnte man auch die Platinenvorlage anpassen - könnte. Alternativ kann man auch 5 V vom USB klauen - dann aber IC2 auslöten. Eine weitere Idee wäre, mit einem FT232BL wie beim KKL-Interface den Empfänger USB-Fähig zu gestalten, wodurch auch die Spannungsversorgung nicht extern erfolgen müßte.

Bestückungsplan Empfänger Bestückungsplan und Belichtungsvorlage (PDF).

Zusatztip: Wird der Empfänger zweimal aufgebaut, eignet sich die Schaltung hervorragend, um Daten zwischen zwei PCs per Funk zu übertragen - unabhängig vom Tastaturlogger.

Aufbau

Aufgebauter Logger Beide Aufbauten können sicherlich noch um einiges verkleinert werden. SMD Bauteile und zweiseitige Platinen liesen es sicherlich zu, vor allem den Logger so klein schrumpfen zu lassen, daß er in ein unauffäliges Gehäuse paßt, wie beispielsweise der beim KEYSPY verwendete Pseudo-Ferritfilter. Aber wozu? Schließlich wäre das ja nur notwendig, wenn wir was illegales vorhätten...

Eine zusätzliche Antenne ist nicht zwingend notwendig. Ohne lassen sich problemlos mehrere Dutzend Zentimeter überbrücken. Mit einem simplen Draht von λ/4 (16,4 cm bei 434 MHz) im Empfänger steigerte sich die Reichweite schon auf ca. 15 m durch mehrere Zimmer hindurch.

Die Fuse-Bits des ATmega sind gemäß der Anleitung zu setzen.

Software

Aufgebauter Empfänger Download C Source und HEX-File.

Bei der Programmierung besteht der wesentliche Teil in der Auswertung der Scancodes von der Tastatur. Ich habe mich des Codes von Stefan Seegel bedient, der wiederum auf der Atmel Appication Note AVR313 (PDF) basiert und habe lediglich die Zeichendefinition an eine QWERTZ-Tastatur angepaßt. Hinzu kommt noch eine Routine für die serielle Schnittstelle. Die Scancodes werden dann vom µC mitgelesen und in ASCII umgesetzt und über das Funkmodul gesendet. Das Funkmodul wird in der Standardkonfiguration betrieben.
Eine kleine Besonderheit gibt es: Nach dem die Spannung anliegt (PC wird eingeschaltet und versorgt die Tastatur und damit auch den Keylogger mit Saft), wird die Tastatur für 60 Sekunden freigeschaltet. Das ist notwendig, damit beim Booten des PCs die Tastatur korrekt erkannt wird. In dieser Zeit werden keine Zeichen per Funk übermittelt. Nach einer Minute blockiert der µC die Verbindung zum PC, so daß keine Zeichen ankommen und auch keine per Funk gesendet werden, solange nicht das richtige Kennwort blind eingegeben wurde. Das Kennwort lautet "blafusel" und kann jederzeit getippt werden. Anschließend werden die Tastenanschläge zum PC weitergeleitet und per Funk übertragen. Der Keylogger verhält sich absolut transparent und beeinträchtigt nicht die Verbindung zum PC.

HyperTerminal Empfängerseitig wird das Modul an die serielle Schnittstelle über ein 1:1 Datenkabel angeschlossen. Ein einfaches Terminalprogramm wie Start/Programme/Zubehör/Kommunikation/HyperTerminal mit 19200 Bd. bei 8N1 genügt bereits, um die Zeichen angezeigt zu bekommen. Umlaute, Sonder- und Steuerzeichen werden teilweise nicht korrekt wiedergegeben. Das ist nur eine Fleißarbeit im C-Sourcecode, zu der ich keine Veranlassung habe.

Willkommen in der Welt von "Nachrichtendiensten und Ermittlungsbehörden". Interessant ist auch der Artikel Bedrohung durch Keylogger unterschätzt.