
Ferramenta de ataque OSDP (e a palavra élfica para amigo)
Ferramenta de ataque OSDP (e a palavra élfica para amigo)
O OSDP suporta, mas não exige estritamente, criptografia. Portanto, sua conexão pode nem estar criptografada. O Ataque #1 é apenas ouvir passivamente e ver se você consegue ler os números dos cartões no fio.
Só porque o controlador e o leitor suportam criptografia não significa que estão configurados para exigir seu uso. Um atacante pode modificar a mensagem de resposta de capacidade do leitor (osdp_PDCAP) para anunciar que ele não suporta criptografia. Quando isso acontece, alguns controladores prosseguem sem criptografia.
O OSDP possui um “modo de instalação” quase oficial que se aplica tanto a leitores quanto a controladores. Como o nome sugere, deve ser usado ao configurar um leitor pela primeira vez. O que ele faz é essencialmente permitir que os leitores perguntem ao controlador qual é a chave de criptografia base (o SCBK). Se o controlador estiver configurado para permanecer em modo de instalação, um atacante pode aparecer no fio e solicitar o SCBK.
O código de exemplo do OSDP frequentemente vem com chaves de criptografia embutidas. Claramente, são apenas amostras, onde o usuário deve gerar chaves de forma segura por conta própria. No entanto, isso não é explicado nem simplificado para o usuário. E qualquer um que esteja na segurança há tempo suficiente sabe que o que quer que seja o padrão provavelmente estará em produção.
Então, como vetor de ataque, quando o link entre leitor e controlador está criptografado, vale a pena tentar enumerar algumas chaves fracas comuns. Essas são chaves AES de 128 bits, então não conseguiremos enumerar todas elas. Nem mesmo uma porção significativa. Mas o que podemos fazer é atingir alguns padrões comuns que vemos quando alguém insere uma chave fixa:
O OSDP não possui mecanismo em banda para troca de chaves. O que isso significa é que um atacante pode:
Você encontrará código de prova de conceito para cada um desses ataques em attack_osdp.py. Consulte o comando --help para mais detalhes sobre o uso. Este é um script Python, destinado a ser executado a partir de um laptop com adaptadores USB<-->RS485 como este. Então você provavelmente vai querer adquirir alguns. Não precisa ser esse modelo, no entanto.
Se você tem um controlador que deseja testar, ótimo. Use-o. Se não, temos um controlador OSDP intencionalmente vulnerável que você pode usar aqui: vulnserver.py.
Alguns dos ataques em attack_osdp.py esperarão estar como um MitM completo entre um leitor e um controlador funcionais. Para testá-los, você pode precisar de três adaptadores USB<-->RS485, conectados com uma placa de prototipagem.
Esses problemas não são, isoladamente, exploráveis, mas representam um enfraquecimento do protocolo, da implementação ou do sistema como um todo.