Neste artigo, quero falar sobre a segurança dos sistemas de pagamento automatizados de estacionamento. Aproximadamente, como nesta foto.
Na entrada, é emitida uma multa de estacionamento e, na saída, é empurrada de volta para o terminal. Basicamente, existem dois tipos de cupons: papel com código de barras / código QR e cartões plásticos sem contato; este último será discutido.
Como sempre, quero fazer uma reserva imediata de que todas as informações são apresentadas apenas para fins informativos e não têm o objetivo de patrocinar o terrorismo e estabelecer a dominação mundial.
Uma vez, usando o estacionamento de um shopping metropolitano, fui inspirado por artigos sobre
Troika e
Podorozhnik , além de pura curiosidade, lancei o aplicativo
MifareClassicTool no
meu telefone compatível com NFC e tentei ler o conteúdo do mapa. Seria lógico supor que a verificação do pagamento seja realizada on-line e o cartão seja usado apenas como um ID do usuário. Nesse caso, não haveria nada a ver sem acesso à rede interna e este artigo simplesmente não existiria, mas a realidade acabou sendo mais interessante. Meus olhos viram algo assim:
A captura de tela é um pouco reduzida para a conveniência dos leitores. O cartão é um Mifare Classic 1K, dividido em 16 setores. Nos setores 1 a 9, algumas informações são registradas e as chaves para elas são desconhecidas. O restante está vazio e use as teclas padrão. Muito curioso Felizmente para nós, o protocolo de criptografia proprietário criptografado usado nesses cartões é bem compreendido e possui vulnerabilidades.
Precisamos de um laptop, leitor de cartão sem contato, como o ACR122U e o aplicativo
mfoc , que permita restaurar todos os outros com apenas uma chave de qualquer setor em um tempo razoável. Vamos pular o estágio de montagem e configuração dessas coisas, vamos direto ao ponto. Colocamos o cartão no leitor, executamos o programa, deixamos o laptop no carro e fazemos compras, porque viemos para cá. Uma hora se passou, todas as chaves foram restauradas, estamos tentando ler o cartão novamente.
Tornou-se ainda mais curioso, mas não está muito claro o que está escrito aqui. Saímos do estacionamento e ligamos imediatamente novamente. Já temos as chaves e você pode revisar imediatamente a comparação de despejos.
Não há muitas diferenças, mas como elas são? Sim, este é o horário de entrada no formato BCD, 11:25:47. Ao lado está a data, 11/12/2018. Mudamos a data de alguns dias atrás, vamos para o terminal de pagamentos e ele relata com satisfação que lhe devemos muito dinheiro. Mudamos a data, definimos a hora atual e deixamos o estacionamento de graça.
Em princípio, isso poderia ser interrompido, mas o amor pela pesquisa domina a preguiça, vamos a outro shopping center e repetimos a operação lá. As chaves são diferentes, mas o formato dos dados é semelhante. Tendo visitado vários shopping centers e uma estação e realizado vários experimentos, fica claro o que é o quê. No primeiro setor, o período de validade do cartão é armazenado; em nosso exemplo, é até 31/12/2050. No segundo - o horário da entrada, o horário e o valor do pagamento, o horário até o qual a partida é permitida. Blocos do terceiro e setores subsequentes devem ser lidos como 4 números em little-endian. Vamos tentar decifrar os dados em nosso exemplo.
Os blocos com uma descrição das tarifas diferem entre os estacionamentos, o primeiro bloco do setor 3 é usado como cabeçalho, mas seu formato não era conhecido, a documentação não pôde ser encontrada em domínio público e isso não é tão importante.
Provavelmente, aqui é necessário tirar algumas conclusões. Os desenvolvedores de sistemas podem usar a verificação on-line, podem usar os tipos de cartões Desfire / Ultralight C que não possuem vulnerabilidades conhecidas, mas dependem da segurança da tecnologia desatualizada. Por outro lado, este não é um cartão bancário e a perda aqui não é significativa, embora os motoristas de táxi da estação fiquem satisfeitos.