Pentesting RFID

Reading time: 12 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks

Introdução

Radio Frequency Identification (RFID) é a solução de rádio de curto alcance mais popular. Geralmente é usada para armazenar e transmitir informações que identificam uma entidade.

Uma tag RFID pode depender de sua própria fonte de energia (ativa), como uma bateria embutida, ou receber sua energia da antena leitora usando a corrente induzida pelas ondas de rádio recebidas (passiva).

Classes

A EPCglobal divide as tags RFID em seis categorias. Uma tag em cada categoria tem todas as capacidades listadas na categoria anterior, tornando-a compatível retroativamente.

  • Class 0 tags são passivas que operam em bandas UHF. O fabricante as pré-programa na fábrica. Como resultado, você não pode alterar as informações armazenadas na sua memória.
  • Class 1 tags também podem operar em bandas HF. Além disso, elas podem ser escritas apenas uma vez após a produção. Muitas Class 1 podem também processar cyclic redundancy checks (CRCs) dos comandos que recebem. CRCs são alguns bytes extras no final dos comandos para detecção de erros.
  • Class 2 tags podem ser escritas várias vezes.
  • Class 3 tags podem conter sensores embutidos que registram parâmetros ambientais, como a temperatura atual ou o movimento da tag. Essas tags são semi-passivas, pois, embora tenham uma fonte de energia embutida, como uma bateria integrada, não podem iniciar comunicação sem fio com outras tags ou leitores.
  • Class 4 tags podem iniciar comunicação com outras tags da mesma classe, tornando-as tags ativas.
  • Class 5 tags podem fornecer energia para outras tags e comunicar-se com todas as classes anteriores. Class 5 podem atuar como leitores RFID.

Informação Armazenada em Tags RFID

A memória de uma tag RFID geralmente armazena quatro tipos de dados: os dados de identificação, que identificam a entidade à qual a tag está anexada (estes dados incluem campos definidos pelo usuário, como contas bancárias); os dados suplementares, que fornecem mais detalhes sobre a entidade; os dados de controle, usados para a configuração interna da tag; e os dados do fabricante, que contêm o Identificador Único da tag (UID) e detalhes sobre a produção, tipo e fornecedor da tag. Você encontrará os dois primeiros tipos de dados em todas as tags comerciais; os dois últimos podem variar conforme o fornecedor da tag.

A norma ISO especifica o valor Application Family Identifier (AFI), um código que indica o tipo de objeto ao qual a tag pertence. Outro registrador importante, também especificado pela ISO, é o Data Storage Format Identifier(DSFID), que define a organização lógica dos dados do usuário.

A maioria dos controles de segurança de RFID tem mecanismos que restrigem as operações de leitura ou escrita em cada bloco de memória do usuário e nos registradores especiais que contêm os valores AFI e DSFID. Esses mecanismos de bloqueio usam dados armazenados na memória de controle e possuem senhas padrão pré-configuradas pelo fornecedor, mas permitem que os proprietários das tags configurem senhas personalizadas.

Comparação entre tags de baixa e alta frequência

Tags RFID de Baixa Frequência (125kHz)

As tags de baixa frequência são frequentemente usadas em sistemas que não exigem alta segurança: acesso a edifícios, chaves de interfone, cartões de academia, etc. Devido ao seu alcance maior, são convenientes para uso em estacionamentos pagos: o motorista não precisa aproximar o cartão do leitor, pois ele é acionado a uma distância maior. Ao mesmo tempo, as tags de baixa frequência são muito primitivas, têm baixa taxa de transferência de dados. Por essa razão, é impossível implementar uma transferência complexa bidirecional para coisas como manutenção de saldo e criptografia. Tags de baixa frequência apenas transmitem seu ID curto sem qualquer meio de autenticação.

Esses dispositivos dependem da tecnologia RFID passiva e operam em uma faixa de 30 kHz a 300 kHz, embora seja mais comum usar 125 kHz a 134 kHz:

  • Long Range — frequência mais baixa se traduz em maior alcance. Existem alguns leitores EM-Marin e HID que funcionam a até um metro. Estes são frequentemente usados em estacionamentos.
  • Protocolo primitivo — devido à baixa taxa de transferência de dados, essas tags só podem transmitir seu ID curto. Na maioria dos casos, os dados não são autenticados e não são protegidos de nenhuma forma. Assim que o cartão está no alcance do leitor, ele simplesmente começa a transmitir seu ID.
  • Baixa segurança — Esses cartões podem ser facilmente copiados, ou mesmo lidos do bolso de outra pessoa devido à primitividade do protocolo.

Protocolos populares de 125 kHz:

  • EM-Marin — EM4100, EM4102. O protocolo mais popular na CIS. Pode ser lido a cerca de um metro por causa de sua simplicidade e estabilidade.
  • HID Prox II — protocolo de baixa frequência introduzido pela HID Global. Esse protocolo é mais popular em países ocidentais. É mais complexo e os cartões e leitores para esse protocolo são relativamente caros.
  • Indala — protocolo de baixa frequência muito antigo que foi introduzido pela Motorola e posteriormente adquirido pela HID. É menos provável encontrá-lo em uso atualmente comparado aos dois anteriores, pois está saindo de uso.

Na realidade, existem muitos mais protocolos de baixa frequência. Mas todos eles usam a mesma modulação na camada física e podem ser considerados, de uma forma ou de outra, uma variação das listadas acima.

Ataque

Você pode atacar essas Tags com o Flipper Zero:

FZ - 125kHz RFID

Tags RFID de Alta Frequência (13.56 MHz)

As tags de alta frequência são usadas para uma interação leitor-tag mais complexa quando você precisa de criptografia, grande transferência de dados bidirecional, autenticação, etc.
Geralmente são encontradas em cartões bancários, transporte público e outros passes seguros.

As tags de alta frequência de 13.56 MHz são um conjunto de normas e protocolos. Elas costumam ser referidas como NFC, mas isso nem sempre está correto. O conjunto básico de protocolos usado nos níveis físico e lógico é o ISO 14443. Protocolos de alto nível, assim como padrões alternativos (como ISO 19092), são baseados nele. Muitas pessoas se referem a essa tecnologia como Near Field Communication (NFC), um termo para dispositivos que operam na frequência de 13.56 MHz.

Simplificando, a arquitetura do NFC funciona assim: o protocolo de transmissão é escolhido pela empresa que fabrica os cartões e implementado com base no nível baixo ISO 14443. Por exemplo, a NXP inventou seu próprio protocolo de transmissão de alto nível chamado Mifare. Mas no nível inferior, os cartões Mifare são baseados no padrão ISO 14443-A.

O Flipper pode interagir tanto com o protocolo de baixo nível ISO 14443, quanto com o protocolo de transferência de dados Mifare Ultralight e EMV usado em cartões bancários. Estamos trabalhando para adicionar suporte para Mifare Classic e NFC NDEF. Um exame aprofundado dos protocolos e padrões que compõem o NFC merece um artigo separado que planejamos publicar mais adiante.

Todos os cartões de alta frequência baseados no padrão ISO 14443-A têm um ID de chip único. Ele funciona como o número de série do cartão, semelhante ao endereço MAC de uma placa de rede. Normalmente, o UID tem 4 ou 7 bytes de comprimento, mas raramente pode chegar até 10. UIDs não são segredo e são facilmente legíveis, às vezes até impressos no próprio cartão.

Há muitos sistemas de controle de acesso que dependem do UID para autenticar e conceder acesso. Às vezes isso ocorre mesmo quando as tags RFID suportam criptografia. Esse uso indevido as coloca no mesmo nível dos cartões de 125 kHz em termos de segurança. Cartões virtuais (como Apple Pay) usam um UID dinâmico para que os donos de telefones não abram portas com seu app de pagamento.

  • Alcance baixo — cartões de alta frequência são especificamente projetados para que precisem ser colocados próximos ao leitor. Isso também ajuda a proteger o cartão de interações não autorizadas. O alcance máximo de leitura que conseguimos alcançar foi cerca de 15 cm, e isso com leitores de longo alcance feitos sob medida.
  • Protocolos avançados — velocidades de transferência de dados de até 424 kbps permitem protocolos complexos com transferência bidirecional completa. O que por sua vez permite criptografia, transferência de dados, etc.
  • Alta segurança — cartões contactless de alta frequência não ficam a dever aos smart cards. Existem cartões que suportam algoritmos criptograficamente fortes como AES e implementam criptografia assimétrica.

Ataque

Você pode atacar essas Tags com o Flipper Zero:

FZ - NFC

Ou usando o proxmark:

Proxmark 3

Manipulação offline de saldo armazenado em MiFare Classic (Crypto1 quebrado)

Quando um sistema armazena um saldo monetário diretamente em um cartão MiFare Classic, você frequentemente pode manipulá-lo porque o Classic usa o algoritmo obsoleto Crypto1 da NXP. Crypto1 foi quebrado há anos, permitindo a recuperação das chaves de setor e leitura/escrita completas da memória do cartão com hardware comum (por exemplo, Proxmark3).

Fluxo de trabalho ponta a ponta (abstrato):

  1. Fazer o dump do cartão original e recuperar as chaves
bash
# Attempt all built-in Classic key recovery attacks and dump the card
hf mf autopwn

Isso normalmente recupera os sector keys (A/B) e gera um full-card dump na pasta client dumps.

  1. Localize e entenda os campos de value/integrity
  • Realize recargas legítimas no cartão original e faça múltiplos dumps (antes/depois).
  • Faça um diff entre os dois dumps para identificar os blocos/bytes que mudam e que representam o saldo e quaisquer campos de integridade.
  • Muitas implementações Classic usam a codificação nativa de "value block" ou implementam seus próprios checksums (ex.: XOR do saldo com outro campo e uma constante). Após alterar o saldo, recompute os bytes de integridade e garanta que todos os campos duplicados/complementares estejam consistentes.
  1. Grave o dump modificado em uma tag Classic “Chinese magic” gravável
bash
# Load a modified binary dump onto a UID-changeable Classic tag
hf mf cload -f modified.bin
  1. Clone o UID original para que os terminais reconheçam o cartão
bash
# Set the UID on a UID-changeable tag (gen1a/gen2 magic)
hf mf csetuid -u <original_uid>
  1. Uso em terminais

Leitores que confiam no saldo no cartão e no UID irão aceitar o cartão manipulado. Observações de campo mostram que muitas implantações limitam saldos com base na largura do campo (por exemplo, ponto fixo de 16 bits).

Notes

  • If the system uses native Classic value blocks, remember the format: value (4B) + ~value (4B) + value (4B) + block address + ~address. All parts must match.
  • For custom formats with simple checksums, differential analysis is the fastest way to derive the integrity function without reversing firmware.
  • Only UID-changeable tags ("Chinese magic" gen1a/gen2) allow writing block 0/UID. Normal Classic cards have read-only UIDs.

For hands-on Proxmark3 commands, see:

Proxmark 3

Building a Portable HID MaxiProx 125 kHz Mobile Cloner

If you need a long-range, battery-powered solution for harvesting HID Prox® badges during red-team engagements you can convert the wall-mounted HID MaxiProx 5375 reader into a self-contained cloner that fits in a backpack. The full mechanical and electrical walk-through is available here:

Maxiprox Mobile Cloner


Referências

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks