
Herramienta de ataque OSDP (y la palabra élfica para amigo)
Herramienta de ataque OSDP (y la palabra élfica para amigo)
OSDP admite, pero no exige estrictamente el cifrado. Por lo tanto, su conexión podría no estar cifrada en absoluto. El ataque #1 consiste simplemente en escuchar pasivamente y ver si se pueden leer los números de tarjeta en el cable.
El hecho de que el controlador y el lector admitan cifrado no significa que estén configurados para exigir su uso. Un atacante puede modificar el mensaje de respuesta de capacidad del lector (osdp_PDCAP) para anunciar que no admite cifrado. Cuando esto sucede, algunos controladores continúan sin cifrado.
OSDP tiene un 'modo de instalación' cuasi oficial que se aplica tanto a lectores como a controladores. Como su nombre indica, se supone que se utiliza al configurar un lector por primera vez. Lo que hace es esencialmente permitir que los lectores pregunten al controlador cuál es la clave de cifrado base (el SCBK). Si el controlador está configurado para permanecer persistentemente en modo de instalación, entonces un atacante puede aparecer en el cable y solicitar el SCBK.
El código de muestra de OSDP a menudo viene con claves de cifrado hardcodeadas. Claramente están pensadas como ejemplos, donde se supone que el usuario genere claves de forma segura por su cuenta. Pero esto no se explica ni se simplifica para el usuario. Y cualquiera que haya estado en seguridad el tiempo suficiente sabe que lo que sea por defecto probablemente esté presente en producción. Así que como vector de ataque, cuando el enlace entre el lector y el controlador está cifrado, vale la pena intentar enumerar algunas claves débiles comunes. Estas son claves AES de 128 bits, por lo que no podremos enumerarlas todas. Ni siquiera una porción significativa de ellas. Pero lo que podemos hacer es atacar algunos patrones comunes que se ven cuando alguien hardcodea una clave:
OSDP no tiene un mecanismo dentro de la banda para el intercambio de claves. Lo que esto significa es que un atacante puede:
Encontrarás código de prueba de concepto para cada uno de estos ataques en attack_osdp.py. Consulta el comando --help para obtener más detalles sobre el uso. Este es un script de Python, diseñado para ejecutarse desde una laptop con adaptadores USB<-->RS485 como estos. Así que probablemente quieras conseguir algunos de esos. No tiene que ser ese modelo, sin embargo.
Si tienes un controlador que quieras probar, genial. Úsalo. Si no, tenemos un controlador OSDP intencionalmente vulnerable que puedes usar aquí: vulnserver.py.
Algunos de los ataques en attack_osdp.py esperarán estar como un MitM completo entre un lector y un controlador funcionales. Para probarlos, es posible que necesites tres adaptadores USB<-->RS485, conectados con una placa de pruebas.
Estos problemas no son explotables de forma aislada, pero sin embargo representan un debilitamiento del protocolo, la implementación o el sistema en general.