
OSDP-Angriffstool (und das Elbische Wort für Freund)
OSDP-Angriffstool (und das Elbische Wort für Freund)
OSDP unterstützt Verschlüsselung, verlangt sie aber nicht strikt. Daher ist Ihre Verbindung möglicherweise gar nicht verschlüsselt. Angriff #1 besteht lediglich darin, passiv mitzuhören und zu prüfen, ob man die Kartennummern auf der Leitung lesen kann.
Nur weil Controller und Leser Verschlüsselung unterstützen, heißt das nicht, dass sie so konfiguriert sind, dass deren Verwendung erforderlich ist. Ein Angreifer kann die Fähigkeitsantwortnachricht des Lesers (osdp_PDCAP) so modifizieren, dass sie angibt, keine Verschlüsselung zu unterstützen. Wenn dies geschieht, fahren manche Controller einfach ohne Verschlüsselung fort.
OSDP verfügt über einen quasi-offiziellen „Installationsmodus“, der sowohl für Leser als auch für Controller gilt. Wie der Name schon sagt, soll er bei der Ersteinrichtung eines Lesegeräts verwendet werden. Im Wesentlichen erlaubt er es Lesern, den Controller nach dem Basis-Verschlüsselungsschlüssel (dem SCBK) zu fragen. Wenn der Controller dauerhaft im Installationsmodus konfiguriert ist, kann ein Angreifer auf der Leitung auftauchen und den SCBK anfordern.
OSDP-Beispielcode enthält oft fest codierte Verschlüsselungsschlüssel. Offensichtlich sind sie als Beispiele gedacht, bei denen der Benutzer die Schlüssel selbst auf sichere Weise generieren soll. Dies wird dem Benutzer jedoch nicht erklärt oder einfach gemacht. Und jeder, der schon lange genug in der Sicherheitsbranche ist, weiß, dass das, was standardmäßig da ist, wahrscheinlich auch in der Produktion verwendet wird.
Als Angriffsvektor lohnt es sich daher, wenn die Verbindung zwischen Leser und Controller verschlüsselt ist, einige gängige schwache Schlüssel durchzuprobieren. Dies sind 128-Bit-AES-Schlüssel, daher werden wir nicht alle aufzählen können. Auch nicht einen nennenswerten Teil davon. Aber wir können einige typische Muster treffen, die man sieht, wenn jemand einen Schlüssel fest codiert:
OSDP hat keinen bandinternen Mechanismus zum Schlüsselaustausch. Das bedeutet, dass ein Angreifer Folgendes tun kann:
osdp_KEYSET) erfassen, wenn der Leser zum ersten Mal eingerichtet wird.Sie finden Proof-of-Concept-Code für jeden dieser Angriffe in attack_osdp.py. Sehen Sie sich den Befehl --help für weitere Details zur Verwendung an. Dies ist ein Python-Skript, das von einem Laptop mit USB<-->RS485-Adaptern wie diesen ausgeführt werden soll. Sie werden also wahrscheinlich einige davon besorgen wollen. Es muss aber nicht dieses Modell sein.
Wenn Sie einen Controller haben, den Sie testen möchten, dann großartig. Verwenden Sie diesen. Wenn nicht, haben wir hier einen absichtlich verwundbaren OSDP-Controller, den Sie verwenden können: vulnserver.py.
Einige der Angriffe in attack_osdp.py erwarten, dass Sie als vollständiger MitM zwischen einem funktionierenden Leser und Controller agieren. Um diese zu testen, benötigen Sie möglicherweise drei USB<-->RS485-Adapter, die mit einem Steckbrett verbunden sind.
Diese Probleme sind isoliert betrachtet nicht ausnutzbar, stellen aber dennoch eine Schwächung des Protokolls, der Implementierung oder des Gesamtsystems dar.