SecPin - sichere Pineingabe
1. Aufgabenstellung
Es wurde untersucht, ob neben der Verwendung von sicheren PIN-Eingabegeräten (Secure PIN Entry Devices, SPED) für Smartcards auch andere, softwarebasierende Lösungen gefunden werden können. Der Bedarf an sicheren PIN-Eingabegeräten besteht vorwiegend im elektronischen Zahlungsverkehr (Bankomatkarte), aber auch in anderen Smartcard-basierenden Anwendungen, wie z.B. in elektronischen Informationsständen und elektronischen Anmeldesystemen. Da mögliche Lösungen sehr von der zugrunde liegenden Plattform abhängen, existiert die Einschränkung auf eine Untersuchung von WinNT basierenden Plattformen (NT4.0, Win2k, XP, CE). Vorgeschlagene Lösungen müssen nicht notwendigerweise auf all diesen Plattformen einsetzbar sein - es wäre aber wünschenswert, dass möglichst viele dieser Plattformen abgedeckt werden und dass die Lösungen auf der Verwendung von offenen Schnittstellen und dokumentierten Mechanismen beruhen. Ein wichtiges Element bei der Suche nach möglichen Lösungen ist eine Risikoanalyse der vorgeschlagenen Mechanismen. Zu vorgeschlagenen Lösungen sollen immer Angriffsszenarien designed und der Aufwand, diese durchzuführen, bewertet werden.
2. Angriffspunkte
Die am weitesten Verbreiteten Mechanismen, um sichere PIN-Eingaben zu kompromittieren sind Keylogger. Unter Keyloggern versteht man im weitesten Sinne ein Programme, welche Tastatureingaben protokollieren und/oder diese manipulieren bzw. an Dritte weiterleiten. Sie können als Hauptrisiko für Tastatureingaben aller Art - insbesondere also auch für Smartcard PIN-Eingaben betrachtet werden. Traurige Brisanz hat das Thema Keylogger etwa mit E-Mail Würmern wie Bugbear erlangt, der Keyboardeingaben (besonders Paßwörter und Kreditkartennummern) ausspioniert und an eine E-Mail Adresse versendet hat. Im Wesentlichen gibt es zwei Arten von Keyloggern: User-Mode und Kernel-Mode Logger:
2.1 User-Mode Logger
Diese Art der Keylogger ist am einfachsten zu realisieren und dadurch auch am weitesten verbreitet. Das Betriebssystem selbst liefert alles Nötige, um sie zu realisieren: den Hook-Mechanismus. Windows ist ein auf Nachrichten basierendes Betriebssystemen, d.h. die Anwendungen kommunizieren mittels Nachrichten untereinander. Dies läuft vollkommen unbemerkt vom User ab. Üblicherweise erhält nur jene Applikation eine Nachricht (z.B. eine Tastatureingabe), die auch den Fokus besitzt. Mittels Hooks kann eine Nachrichtenkette aufgebaut werden, wobei (vereinfacht gesagt) jede Applikation, die einen Hook für ein bestimmtes Ereignis registriert, diese Nachricht erhält und an die nächste Applikation in der Hook-Kette weiterleitet. Dieser Mechanismus wird z.B. dazu benutzt, um in Winamp die Lautstärke zu regeln bzw. um bei ICQ nach einiger Zeit den Onlinestatus zu wechseln - auch wenn diese Applikationen nicht den Fokus besitzen. Dadurch lässt sich erkennen, wie weit diese Technik verbreitet ist. Es gibt aber auch eine ganze Reihe von Viren und Trojanischen Pferden, die auf Hooks basieren. In früheren Versionen von Windows (95, 98, Me) ließen sich diese sogar so gut verstecken, dass sie nicht einmal in der Prozess-Liste des Task-Managers aufschienen. In auf Windows NT basierenden Versionen (NT, 2000, XP) ist dies zwar nicht mehr möglich. Wer allerdings kennt alle Prozesse, die im Task-Manager aufscheinen, die zudem meist recht kryptische Bezeichnungen haben? Da dieser Hook-Mechanismus ein ernstzunehmendes Problem in Bezug auf die Sicherheit von PIN-Eingaben darstellt, muss eine Lösung gefunden werden, in der User-Mode Logger (speziell auf Hooks basierende) wirksam außer kraft gesetzt bzw. umgangen werden können. SecPin ist sicher gegenüber User-Mode Keylogger.
2.2 Kernel-Mode Logger
Diese Art der Keylogger werden meistens als Filter-Treiber realisiert, die im Kernel-Mode laufen. Dem User ohne Administrator-Rechten kann es unmöglich gemacht werden, diese Treiber zu de-installieren. Hingegen kann ein solcher Filter-Treiber nur von Administratoren installiert werden. Hält man sich an die Richtlinie, unter Windows NT/2000/XP als Benutzer ohne Administratorrechte (wie auch von Microsoft empfohlen wird) zu arbeiten, so ist man von dieser Art eines Angriffes sicher. Ein solcher Filter-Treiber im Kernel-Mode kann aber dazu genutzt werden, auf Hooks basierende Keylogger zu umgehen: Die von der Tastatur kommenden Daten passieren zuerst die Kernel-Mode Treiber und erst anschließend die im User-Mode ablaufenden Programme - speziell User-Mode Keylogger. SecPin basiert auf dieser Methode.
3. SecPin
SecPin wurde als (upper) Keyboard Filter-Treiber realisiert. Die prinzipielle Arbeitsweise ist folgende: ReadPin teilt nach dessen Aufruf dem Treiber mit, dass man in den sog. 'secure-entry-mode' gelangen will. Der Treiber überprüft daraufhin (durch check der Registry) ob bereits ein Kernel-Mode Filter-Treiber installiert ist, wobei es sich um einen Kernel-Mode Keylogger handeln könnte. Diese Art der Keylogger ist die einzige, die auch bei SecPin die PIN-Eingabe mitprotokollieren könnte. Wird ein solcher Filter-Treiber entdeckt, wird die PIN-Eingabe abgebrochen. Falls nicht, befindet man sich nun im 'secure-entry-mode' und alle Tastatureingaben werden in einen internen Buffer mitprotokolliert. Jeder Tastendruck wird dabei durch den Tastencode der 'Ctrl'-Taste ersetzt. User-Mode Keylogger (und auch alle anderen Programme) erhalten dadurch nur die Information, dass die 'Ctrl'-Taste gedrückt wurde. Nach Abschluss der PIN-Eingabe wird dieser Buffer (durch ReadPin) ausgelesen und dargestellt. Die Programme wurden mit C mit Hilfe des Visual Studios 6 von Microsoft erstellt und unter Windows 2000 getestet. Auch der Einsatz unter Windows NT bzw. Windows XP sollte prinzipiell möglich sein, wurde jedoch nicht getestet. Folgende Programme kommen dabei zum Einsatz:
3.1 Setup.exe
Installiert (Aufruf: 'Setup /install') bzw. deinstalliert (Aufruf: 'Setup /uninstall') den Keyboard Filter-Treiber. Bei einer Installation muss dich die Datei 'SecPin.sys' im selben Verzeichnis wie 'Setup.exe' befinden. Das Programm kopiert den Treiber 'SecPin.sys' in das Windows Treiberverzeichnis und setzt die entsprechenden Registry-Einträge. Nach Aufruf von Setup muss der Rechner rebootet werden.
3.2 ReadPin.exe
Programm zum Auslesen der PIN. Der Aufruf kann ohne Parameter erfolgen. Es wird ein Protokoll in die Datei 'ReadPinLog.txt' erstellt. Es werden nur numerische Eingaben (nicht(!) jene vom NUM-Pad) akzeptiert. Die Eingabe kann durch 'Return' abgeschlossen oder durch 'Ctrl-c' abgebrochen werden. Anschließend wird die eingegebene PIN angezeigt.
3.3 SecPin.sys
Das Herzstück, der Keyboard (upper) Filter-Treiber.
