Fábio Martins é autodidata e trabalha nas áreas de segurança da informação, engenharia reversa, programação, administração, telecomunicação e integração de sistemas há pelo menos 15 anos.
Já transformou alguns dinossauros em lagartixas.
Illegal snooping, be it to steal trade secrets via corporate intelligence companies[1], or section 702 being used abroad by the FBI[2], or being the target of political rivals[3], are becoming the norm nowadays. How can you protect yourself?
First of all, if you are a high-value target, full of sought-after intelligence, innovations or from a rival military branch, there is little hope you won’t be targeted. Your rivals will use all their valuable cyber weapons against you and your smartphone. Including million-dollar exploits – so, end-to-end encryption like the offered by Signal can be easily defeated.
In such cases, there is another layer of protection you can shield yourself against – the physical layer.
The industry-standard for information extraction from smartphones, is an application called Cellebrite UFED Physical Analyzer – currently being used by the majority of Law Enforcement Agencies around the world. Signal’s founder, Moxie Marlinspike, found several vulnerabilities in this product[4], showing that evidence obtained through this application can be tainted, due to several flaws present in Cellebrite’s product.
As protection, some smartphone’s app makers have pottentially added countermeasures against this product, covertly exploiting these flaws – some publicly detailed, others not, essentially putting in doubt the trustworthness of the court-required evidence generated by such product.
The Signal Messenger is one of those products. If installed on an smartphone from which information was collected/extracted, there is a strong possibility that the evidence obtained is tainted, and a well-versed-in-cybersecurity lawyer can request to analyze Cellebrite’s product, or appoint an specialist to do so, to clear doubts about the evidence collected. Some lawyers already have done so [5] to protect their clients.
Parioli, Roma, Itália. Ao visitar uma feira próxima de artesanato num final de semana, resolvi comprar um gorro preto (Black Hat) pois o frio as vezes era forte. Passei a usar o gorro preto parte do dia.
Após alguns meses de namoro, Giovanna se laureou no curso de engenharia e arquitetura. Linda festa (ainda tenho o DVD) e logo após, almoço com os familiares para comemorar.
Sobrava assim mais tempo para Giovanna, e a mesma queria fazer amor com muito mais frequência. Como seus pais moravam numa cidade vizinha, e ela não mais estudava em Roma, precisava inventar desculpas para ir a Roma ao meu encontro, pois eu apenas visitava a mesma nos finais de semana para almoço em família, e sexo no local não era permitido.
Para sua infelicidade, seu genitor era contra o aumento da frequência de nossos encontros, e lhe disse que enquanto ela morasse na casa do mesmo, as regras eram dele.
Giovanna arrumou um emprego numa empresa de engenharia em menos de 2 semanas.
Com nós 2 trabalhando, decidimos alugar uma casa num bairro nobre de Roma, em Parioli.
Apartamento espaçoso dentro de condomínio, com piscina, academia e mini-mercado. Bons restaurantes no entorno. Ótima mesa de madeira de lei para trabalhar, com amplo espaço para notebook e monitores extra.
Giovanna saía do trabalho de manhã, e eu já estava acordado para trabalhar na empresa de ecommerce do Brasil e em projetos freelancer.
Nessa época, Giovanna decidiu se tornar vegetariana, para tristeza do pai – caçador e pescador. Como eu trabalhava de casa, cuidava da comida e tentava adicionar alguma proteína para suprir a falta de carne e peixe na alimentação da pequena.
No seu horário de almoço, pegava o carro para comer com a mesma, num restaurante próximo ao seu trabalho.
Num desses dias trabalhando, abro a gaveta do móvel de madeira da sala e descubro que o antigo inquilino era provavelmente um oficial da Marinha da Itália, pois existiam anotações a mão em algumas folhas de papel – detalhavam um exercício conjunto em Napoli com um grupo da NATO. Não lembro se ainda tenho as folhas.
Minha pequena chegava a noite, conversávamos sobre os problemas que ela teve no trabalho, sobre os projetos CAD que estava fazendo e para quais clientes, acariciava seus cabelos, jantávamos com um bom vinho e fazíamos sexo antes de dormir.
Observando o mercado, vi que existiam ótimas oportunidades para inovação no campo de pentest utilizando criptografia simétrica e assimétrica, e envio de e-mail marketing – com vários clientes pedindo programas relacionados nestas áreas, resolvi satisfazê-los.
Um dos clientes se destacou, conseguindo alcançar um grande número de consumidores. Os lucros foram distribuídos de acordo com o contrato.
Com o sucesso dos negócios, resolvi testar novos restaurantes em Roma com Giovanna. A mesma percebeu o aumento dos gastos e perguntou sobre meu trabalho na área, que falei parcialmente. Giovanna não aceitou bem saber com o que eu trabalhava, desenvolvendo código e ferramentas de segurança para clientes ao redor do mundo – sua fase atual estava mais voltada ao ativismo climático, vegetarianismo, e ações politicamente corretas.
Nossa vida amorosa passou a ter sérios problemas.
Passados 2 meses, concordamos em nos separar. Fizemos amor de despedida, uma viajem ao mar adriático, e nos separamos.
Roma, Itália. Trabalhava numa empresa de ecommerce do Brasil, remotamente, e a Black Friday estava se aproximando – pra quem conhece, é um período de muita tensão para qualquer sysadmin e equipe de segurança da informação.
Um dos maiores clientes estava com grandes ofertas programadas, e por isso foi movido para servidores dedicados na Softlayer, agora IBM Cloud. A migração tinha ocorrido na madrugada e sem problemas – dump do banco de dados feito e levantado numa nova configuração mais robusta e em cluster, rsync dos arquivos de um servidor pra outro, TTL do DNS do cliente diminuído para 5 minutos, verificação de última hora para ter certeza que nenhuma alteração foi feita no banco de dados como uma compra na madrugada, e pronto.
A loja já online nos novos servidores, regras de firewall fazendo NAT do servidor antigo pro novo, e mudança no DNS do domínio do cliente apontando pro IP novo da loja – tudo funcionando, era só esperar propagar o DNS para remover a regra de NAT do servidor antigo.
Giovanna e eu namorávamos há apenas algumas semanas, por isso as faíscas ainda eram bem intensas quando nos encontrávamos. A mesma ainda morava com os pais e estudava engenharia e arquitetura numa faculdade local em Roma, então nosso tempo para namoro era mais a noite ou nos finais de semana, no quarto que aluguei com amigos da mesma, num apartamento bem espaçoso em Roma.
Na manhã da Black Friday, comecei a monitorar os logs dos servidores e tudo ia ok – utilização de CPU e memória relativamente mediana, mesmo com uma grande quantidade de clientes comprando.
Até que o dono da empresa me liga por haver um problema sério – o cluster MySQL com engine NDB, configurado em modo ACTIVE / ACTIVE estava apresentando problemas – aparentemente algumas transações eram escritas num dos nós e não era replicada para o outro, resultando em clientes comprando, e após atualizar a página, o carrinho e/ou a compra terem sumido – pois estavam consultando o banco de dados sem os dados, já que a sessão tinha ido para outro nó do cluster.
Nesse momento, começo a debuggar os nós do cluster do banco de dados – em plena Black Friday com os clientes comprando, basicamente consertando o avião enquanto o mesmo estava voando.
De manhã ainda em Roma, com os companheiros de apartamento já tendo ido para seus devidos trabalhos, a campainha toca – era Giovanna. Perguntei o que a mesma fazia ali, e me disse que após ter assistido a uns 2 tempos de aula, sentiu saudade, saiu da faculdade e foi me ver.
Fechei rápido a porta e voltei para a sessão de debug do banco de dados.
Minha mesa era virada para a parede, Giovanna sentada no sofá atrás de mim, observando o teclar frenético no computador, até que me pergunta o que eu faço – respondo que trabalho.
Ao olhar para trás, vejo que Giovanna está totalmente nua, como veio ao mundo. Seus seios pequenos, pele alva e olhos claros que me encantaram desde que nos conhecemos.
Diante de tal incentivo, descobri rápido o que fazer – rapidamente coloquei o cluster em modo ACTIVE / STANDBY, mudei a configuração da loja apontando o BD apenas para o nó ACTIVE, liguei para o dono da empresa informando que estava parcialmente resolvido e que as inconsistências seriam resolvidas posteriormente, pois estávamos no meio da Black Friday e a loja não poderia parar de vender. O mesmo concordou com a resolução meia-boca da situação.
Habilitei o beep no terminal para palavras-chave de erro nos logs do sistema e do monit, como erro de conexão com o banco de dados ou daemons dando crash – para me dar o alerta sonoro em caso de grandes falhas.
Nossos principais produtos de exportação, em pleno ano de 2023, são primários, nos mesmos moldes de 500 anos atrás – colônia exportando cacau e importando chocolate, ou minério de ferro e importando aço, ou exportando petróleo cru e importando produtos refinados [1]. Algo não está certo.
Recentemente li artigos que citam que o Irã está interessado em adquirir algo como 40 aeronaves da Embraer. [2]
Empresas do Irã já substituem a Siemens da Alemanha no design de partes de turbinas à Rússia [3], carros [4], sem contar os drones Iranianos que até alguns anos atrás eram motivos de chacota [5] – muitos países do Ocidente diziam tratar-se de animação produzida via computador. Mostraram que o produto era bem real [6].
Com grande parte dos motores, aviônica e sistemas gerais sendo produzidos por Estados Unidos e Europa, a Embraer fica claramente passível de controles de exportação a “países não alinhados” com os fornecedores de tais partes “mais avançadas” [2].
Porém uma ordem de compra de tal magnitude nos faz pensar em encontrar alternativas viáveis.
Vejamos o exemplo da China, que em poucos anos foi capaz de produzir o C919 Jetliner com partes totalmente “indígenas” [7]. Provavelmente entra no mercado nacional em março de 2023. Está em fase de testes e já voou entre uma dezena de aeroportos, já possui pilotos e pessoal de manutenção treinados. Alguns países como a Nigéria já pensam em comprá-lo.
Voltando ao mercado brasileiro, sem pagar os bilhões acordados previamente, a Boeing se retirou de uma Joint-Venture com a Embraer, no último minuto, após ter conseguido listas confidenciais de negócios e engenheiros da Embraer.
Tendo o Irã se mostrado capaz na produção de turbinas industriais e outros itens de aviação, seria uma Joint-Venture viável?
As partes passíveis de controle de exportação a outros países podem ser quão facilmente substituídas pelos componentes indígenas, a serem produzidos pelos 2 países interessados?
Parte dos motores, aviônica e sistemas gerais certamente já são utilizadas em outras indústrias, especialmente na de defesa do Irã.
Também temos engenheiros brasileiros capazes de produzir tais sistemas e peças – pelo menos os que ainda não foram “exportados / cooptados” a saírem do Brasil ou de empresas nacionais pela Boeing [8]. A lista de empresas nacionais que perderam recentemente capital humano super-qualificado para a supracitada Boeing inclui Embraer, Akaer, Avibras, AEL Sistemas, Safran, Mac Jee, entre outras.
O que não podemos é continuar exportando produtos primários e engenheiros qualificados, e importando produtos manufaturados. A balança comercial agradece.
Alguem acha impossível abater aviões de caça F35, um dos mais modernos existentes, com um computador, antenas, SDR (rádio definido por software), link de internet?
Pois não é.
Nos dias de hoje não temos mais aviões, e sim computadores com asas. São centenas de microchips integrados aos mesmos. E mais dados trafegando entre o mesmo e a base de comando e controle do que anteriormente, via satélite ou rádio.
Não que seja uma tarefa fácil. Antes, é necessário obter os blueprints dos fornecedores de defesa que construíram o mesmo. Exemplo:
Quais os “part-numbers” dos chips sendo utilizados?
Obter os softwares e firmwares que rodam no avião de caça, de preferência o código-fonte, mas na indisponibilidade, apenas o binário onde será feita a engenharia reversa. Muito provavelmente o sistema operacional principal será uma versão do VxWorks rodando em ARM ou x86 (no caso da Rússia, provavelmente um Linux customizado rodando em Elbrus)
Descobrir o modelo do rádio ou a empresa que fornece o link de satélite para a comunicação terrestre com o comando-e-controle
Chaves criptográficas utilizadas para proteção das sessões (podem não ser necessárias ou talvez sejam passíveis de quebra)
Descobrir vulnerabilidades nos softwares, firmwares e hardwares via engenharia reversa e fuzzying
A complexidade certamente é maior que produzir vulnerabilidades para Windows, Linux ou iPhone. Um time de engenheiros trabalhando em conjunto certamente é necessário.
Porém a superioridade tecnológica frente a outras nações supostamente mais avançadas, dá aos que possuem tais armas cyber, imensa vantagem. Sem contar o valor que um exploit para abater F35s teria no mercado internacional.
É análogo ao David versus Golias moderno, sendo o primeiro um nerd de óculos fundos num porão com um computador, enfrentando Golias, um aviador pilotando um caça stealth com mísseis supersônicos – David vencendo com alguns cliques de mouse e teclado, integrações, e engenharia reversa.
Tatiana tinha acabado de ser aceita num novo emprego. Recém-formada pela UERJ em Engenharia de Produção, cabelos negros longos, corpo bem torneado e inteligente, fez o processo seletivo numa empresa de engenharia no bairro do Flamengo no Rio de Janeiro, e estava feliz em sua nova posição.
Com o passar dos dias, geralmente na sexta-feira à noite, olhava pela janela do escritório e via uma badalada boate lotada de pessoas em busca de diversão na porta. Digamos que Tatiana gostava mais do sexo oposto que a maioria de suas colegas recém-formadas, porém a maratona estudo/entrevistas de trabalho fez a mesma se privar de certos prazeres carnais que ela tanto gostava. Após algumas semanas de trabalho e olhando pela janela da empresa, não teve dúvida – iria comemorar seu próximo aniversário, que estava prestes a acontecer, com suas amigas naquela boate, e tirar o tempo atrasado das suas aventuras carnais.
Fernanda, à época minha namorada e grande amiga de classe de Tatiana, foi convidada e me levou junto. Chegamos à noite na porta da boate junto com um grupo de amigos – muitas luzes, gente interessante na porta. Começamos a beber ainda na fila pra alegrar a noite da menina voraz que gostaria de extravazar sua felicidade.
Entramos e vimos um ambiente com luz negra, ainda com poucas pessoas, e como não éramos tímidos, fomos todos dançar na pista. Mais pessoas chegavam e começavam tambêm a dançar. Tatiana claro, já estava em “modo sniper” para escolher um parceiro para a noite – seus olhos procuravam algum par interessante para beijos e quiçá a fatídica conjunção carnal que almejava há tanto.
Porém algo estava estranho, o que foi confirmado após um dos rapazes que Tatiana estava de olho, tirar a camisa, se aproximar de outro rapaz, e, dançando sensualmente, beijá-lo apaixonadamente. Tatiana estava catatônica. A ninfomaníaca acabara de descobrir que tinha escolhido uma boate GLS para seu aniversário, inadvertidamente. Rompeu em lágrimas, chamou o grupo de amigas e amigos, e fomos para o lado de fora da boate.
Tatiana começou a beber muita vodka, descontroladamente, e já tinha se resolvido que naquela noite iria beber até perder a consciência, como para afogar as mágoas do que era pra ser uma das noites mais felizes dos últimos meses.
Fernanda, como boa amiga e sabendo que estava sob minha tutela, falou que a acompanharia para dar “suporte emocional” a mesma. Porém Fernanda não estava muito acostumada ao álcool, e logo me vi com um corpo quase sem vida nos braços. Hora de chamar um táxi. Como não poderia devolver a pequena naquele estado para sua família, tomei o rumo da minha casa, e pedi desculpas ao taxista pelo “presente” que minha pequena tinha deixado em seu carro, enquanto balbuciava algumas sílabas incompreensíveis e tentava se recuperar da bebedeira.
Ao chegarmos dei uma boa gorjeta ao taxista pelo “acidente”, e levei a mesma direto ao banheiro. Após despi-la foi dado um bom banho no corpo quase sem vida; coloquei na mesma uma camisa, bermuda, e foi posta na minha cama de solteiro. Dormi num colchão no chão caso ocorresse alguma coisa pela noite.
Dormindo um sono profundo, já pela manhã, senti algo adentrar no meu pijama. Ainda desorientado, não entendi o que ocorria. Senti uns beijos no meu pescoço e comecei a apreciar. A mão fazia movimentos como que se quizesse despertar algo, e após alguma insistência, ás vezes um tanto quanto violenta, a mesma conseguiu. Tive a calça do pijama arrancada, e com a habilidade de uma “cowgirl”, fui montado. Ainda estava meio sonolento, mas não era necessário fazer muita coisa. Praticamente tudo foi feito por Fernanda, que após alguns minutos caiu adormecida abraçada a mim. Também voltei a dormir.
Quem faz parte de Red Team sabe da importância de não ter seus códigos detectados por ferramentas de segurança.
As ferramentas customizadas de ofuscação, criptografia de código e load em tempo de execução são uma importante parte do arsenal para a customização de payloads indetectáveis. Programo as minhas próprias ferramentas de acordo com as necessidades do projeto.
Porém, antes do deploy desses payloads indetectáveis, existe a porta de entrada inicial. Após a publicação de determinada vulnerabilidade, em questão de algumas horas a maioria das ferramentas disponíveis no mercado já detectam o padrão dos seus opcodes, adicionam assinatura para scannear os arquivos, e realizam detecção inclusive no tráfego de rede.
Falo especificamente aqui sobre vulnerabilidades em cabeçalhos e estruturas de arquivos, como por exemplo do tipo Office. Falhas podem ocorrer em outros tipos de arquivos não-executáveis como RAR, Zip e muitos outros [1] [2].
Entra em cena um mercado que poucos conhecem, o de limpadores de N-days.
Fui contratado para um pentest envolvendo uma falha numa suíte de Office, em que um header mal-formado conseguia executar código automaticamente, após abertura do documento. Tudo sem a necessidade de ativar macros. Algo parecido com essa falha.
Não torça o nariz por ser uma falha que exige 1-clique num documento, trabalho é trabalho. Afinal, nem todas as conquistas da noite são as mais belas – e dependendo do seu nível alcóolico, você pode até já ter beijado uma cilada sem saber.
O problema do contratante
Documento com exploit sendo utilizado, com detecção em mais de 25 ferramentas de antivírus no Virustotal.
O pedido
Customizar a parte do header com código ofensivo que ativa a falha, para que o documento enviado via email pudesse passar pelos scanners antivírus presentes no gateway de borda, e pela proteção endpoint instalada no computador do alvo, sem ser detectado.
Para quem tem conhecimento de nível intermediário na linguagem assembly, editores hexadecimais e formato de arquivos, este é um ótimo exercício. Pegue um arquivo ou documento com vulnerabilidade conhecida, e tente diminuir sua detecção pelos antivírus.
Uma boa fonte de malwares para estudo encontra-se em:
Não use o virustotal para scannear seus documentos após as modificações. Existem serviços especiais para profissionais de Red Team, que não compartilham os arquivos com fabricantes de antivírus. Caso use o VT, perderá suas horas de trabalho, pois os arquivos são compartilhados com todas as empresas de antivírus y otros más.
O valor de tais documentos com exploits de N-dias e baixa detecção, gera rendimentos medianos, mas satisfatórios, enquanto suas ferramentas de fuzzying não acham alguma vulnerabilidade mais interessante para você se dedicar e lucrar mais.
[ NT: O domínio de certas tecnologias dá ao Brasil garantia de poder frente a outras nações-estado, inclusive em relação a algumas potências chamadas de primeiro mundo, que frequentemente recorrem a “fuga de cérebros” para tentar manter o status-quo. Assim como ocorre com a tecnologia de exploração de petróleo em águas profundas e ultraprofundas, sim, também estamos na crista da onda em outras áreas. A criptografia assimétrica forte, exerce aqui um papel importantíssimo, o de não deixar cair em mãos erradas os ativos de grande valor conquistados e criados, que devem servir apenas ao nosso crescimento, guardados com segurança física, fora da rede e criptografados. Não é futuro, é presente. ]
[ NT: Também faço a engenharia reversa dos ATMs, e produzo código para a exploração dos mesmos, tanto para a parte de hardware quanto a de software, sempre com contrato e NDA assinado pelo cliente, que precisa ter as autorizações necessárias do(s) fabricante(s) ]
Isenção de responsabilidade: Este artigo é publicado apenas para fins informativos e não é, de forma alguma, um guia para ação. As vulnerabilidades descritas no artigo foram descobertas pelo autor como parte do projeto aprovado pelo fabricante do ATM. Neste ponto, eles foram corrigidos pela Diebold Nixdorf, que foi notificada pela Positive Technologies de acordo com os princípios de divulgação responsável. Como um elemento adicional de proteção, o fornecedor foi recomendado para habilitar a autenticação física para o operador durante a instalação do firmware, a fim de garantir que as alterações no ATM sejam feitas por um funcionário e não por um invasor.
Olá! Há algum tempo, a Positive Technologies publicou a notícia de que os ATMs fabricados pela Diebold Nixdorf (anteriormente conhecido como Wincor), ou mais especificamente, os terminais RM3 e os dispensadores de notas tipo CMDv5, continham uma vulnerabilidade que permitia aos atacantes sacar dinheiro e fazer upload de firmware modificado (vulnerável). E como meu ex-colega Alexei Stennikov e eu estávamos diretamente envolvidos na descoberta dessa vulnerabilidade, gostaria de compartilhar alguns detalhes.
Introdução
Em primeiro lugar, acho que devo dizer brevemente o que é um caixa eletrônico, como funciona e o que exatamente são os dispensadores de notas. Em geral, um ATM é um sistema bastante complexo, que consiste em duas partes principais: superior e inferior.
[ NT: O setup era assim antigamente. Nos dias de hoje, depende do país, e varia muito de fornecedor para fornecedor. Em 1 hall de banco com 20 caixas eletrônicos, pode haver 4 diferentes modelos, facilmente. ]
A parte superior era um PC normal, que na maioria das vezes fica na vertical. São muitos os dispositivos USB conectados a ele: câmeras, impressoras, leitores de cartões e, por fim, o dispensador de notas, que fica na parte inferior. O PC na parte superior (que, aliás, é considerado inseguro) costuma ser o alvo principal dos ataques de malware. Mas não se trata de nós – malware é ruim, [ NT: porém interessante ]! Então, vamos ver lá embaixo, do cabo USB até a parte inferior do ATM, onde podemos analisar …
A parte segura (também conhecida como cofre ou dispensador de notas) – uma parte protegida do caixa eletrônico. Ela está trancada com uma chave, que apenas os abastecedores de dinheiro possuem [ NT: Geralmente os vigias do carro-forte, os técnicos de manutenção ]; essa parte não é feita de plástico (ao contrário da parte superior) e geralmente é reforçada com concreto, aço ou montada em uma parede. E há algo no cofre que é a razão pela qual os caixas eletrônicos são hackeados – notas de banco. Eles são organizados por denominação em cassetes, cada um dos quais também é trancado com uma chave. O dinheiro é retirado dos cassetes por meio de um sistema de correia (e os NCRs usam ventosas), segue pela esteira até a porta de saída e é extraído pelo usuário.
Portanto, todo esse sistema complexo de sensores (usados para avaliar a espessura, número e amassamento das notas), esteiras, portas de saída e cassetes é controlado pela placa de controle do dispensador de notas (ou mais simplesmente, o dispensador). A placa possui um processador, memória e outros elementos de um dispositivo independente; além disso, há um código que controla tudo. E é aí que acabamos de ver o cabo USB.
Por que os criminosos invadem o dispensador em vez do PC, e o que os ataques de caixa preta têm a ver com isso?
Uma boa pergunta essa. Se olharmos da perspectiva de um invasor (o que é melhor não), a desconexão de um dispositivo USB (o distribuidor) do computador ATM será exibida apenas como uma linha nos registros do computador, e os registros do dispensador de notas não conterão nenhuma informação significativa (se comparado com os comandos executados no console do invasor).
[ NT: Muito cuidado nessa hora ! Alguns sistemas atuais enviam relatório de desconexões “incomuns” de alguns dispositivos ligados ao ATM – um “alarme” vai diretamente para a central de segurança, por isso, em um determinado pentest, houve a necessidade de injeção de código em memória, um patch em memória nas instruções assembly do processo que fazia essa notificação, para desabilitar essa capacidade do software do Banco. ]
Algum tempo atrás, os dispensadores de notas eram frequentemente explorados via ataques de caixa preta. Durante esse tipo de ataque, o criminoso, tendo uma vez capturado o tráfego de retirada de dinheiro USB / COM em um dispositivo, poderia usá-lo em outro, hackea-lo e obter o dinheiro. Hoje em dia, provavelmente ninguém será capaz de fazer isso, porque as técnicas anti-caixa negra são usadas em todos os lugares: por exemplo, chaves de rolagem de sessão para criptografar o tráfego USB e o uso de criptografia em quase todos os estágios. Agora, apenas um computador ATM pode trabalhar com essa criptografia, então, na maioria das vezes, um invasor não pode mais entrar no tráfego
[ NT: Ainda existe uma variação deste tipo de ataque, que não foi consertada em alguns modelos. ]
Mas então este artigo não existiria, nem as notícias que mencionei. Havia uma pequena vulnerabilidade em nosso projeto (felizmente, ela já foi corrigida). Leia sobre isso abaixo.
O que o tornou vulnerável?
Antes de começar, explicarei resumidamente do que se trata a vulnerabilidade e, em seguida, passarei aos detalhes.
Em primeiro lugar, deve-se dizer que o firmware é criptografado com chaves que são conhecidas apenas pelo fornecedor. Um invasor pode explorar as vulnerabilidades descritas pela Positive Technologies (uma em cada dispositivo) para fazer upload do firmware para o dispensador de notas sem saber as chaves de criptografia (elas serão mencionadas abaixo como KEY0 e KEY1). Ou seja, tendo um código limpo, um invasor pode modificá-lo como quiser, criptografá-lo novamente, fazer upload para o caixa eletrônico e, em seguida, retirar dinheiro, ignorando os algoritmos de criptografia de tráfego USB existentes. Bem, agora vamos passar aos detalhes …
Final de 2017, o projeto começa
[ NT: O Brasil está tão mais avançado nas tecnologias de proteção ao ATM (provavelmente devido às tentativas de explorá-los), que as técnicas utilizadas no Brasil há 10 anos atrás, ainda funcionam em vários modelos dos EUA e Europa. Caixas-Eletrônicos não são trocados como um desktop normal. Permanecem no mesmo lugar por anos, devido a custos. ]
Como parte do projeto em um banco, Alexei e eu recebemos dois arquivos: um tinha a extensão .BTR (bootloader) e o segundo tinha a extensão .FRM (firmware). Os arquivos tinham cabeçalhos claros, mas ao mesmo tempo o conteúdo era completamente incompreensível. Tentamos todos os tipos de formas de descriptografar o conteúdo (ficou óbvio que estava criptografado), mas sem sucesso. O projeto poderia ter terminado ali, e os arquivos permaneceram no disco rígido por vários meses até que o espertinho Alexei decidiu procurar uma placa de controle do dispenser no eBay. Como você deve ter adivinhado, Alexei encontrou a placa lá e, depois de um tempo, ela estava sobre a mesa.
Ter uma placa controladora do hardware a ser analisado é uma bênção, não ter um é uma maldição
[ NT: A experiência com os serviços prestados a diversos clientes ao longo dos anos, dá a capacidade de ter a lista completa de fabricantes, marca, modelo e versão de diferentes partes dos caixas eletrônicos, de algumas instituições. Alguns ATMs são verdadeiros “franksteins”. Se em foguetes europeus, vemos falhas de software causarem centenas de milhões de euros em estragos, com suporte de times que possuem uma grande quantidade de engenheiros com PHD, acreditar que sistemas bancários custando apenas algumas dezenas de milhares de dólares são imunes é, no mínimo, inocência. ]
Após tocar os pinos da placa, encontramos o conector JTAG, que estava localizado bem ao lado do processador principal. Além do principal, havia mais dois processadores na placa, cuja finalidade não era muito clara para nós: CollectorBooter e DispenseBooter. No entanto, a memória de todos os três processadores foi despejada para análise posterior.
Bem, não é grande coisa. Mas o que viria a seguir? Decidimos tentar fazer algo a respeito do firmware – tínhamos seus arquivos criptografados, lembra? E embora tivéssemos problemas, foi muito mais agradável trabalhar com o firmware em sua forma pura.
Software do fornecedor
Muitas vezes, seja para fins de diagnóstico ou para trabalhar com um caixa eletrônico, os fabricantes escrevem programas especializados que podem ser usados para realizar tarefas padrão e algumas tarefas não documentadas que raramente são usadas. Por exemplo, atualizando o firmware do dispensador.
[ NT: No início do hacking de ATMs, apenas esses softwares de teste/diagnóstico faziam funcionar os ataques caixa-preta ]
Esse software também estava em nosso projeto. E não foi escrito em algum tipo de BASIC ou C ++, mas na boa e velha linguagem Java (e respeitada por qualquer engenharia reversa). Com ele, você pode descompilar ou remontar as coisas, se necessário.
Depois de pesquisar em arquivos JAR, descobrimos uma função que carregava arquivos de firmware para o controlador. Infelizmente, ele não descriptografou os arquivos, mas nos deu uma boa oportunidade de depurar esse processo. Conectando o depurador ao JTAG e executando o upload do firmware, de alguma forma conseguimos encontrar o local responsável pela descriptografia. Vamos conversar a respeito disso.
Criptografia de arquivos de firmware
O algoritmo de criptografia era um XTEA normal, mas com um delta bastante incomum: 0xF27716BA. Não sabemos como foi gerado ou se era seguro ou não. Mas uma coisa era certa: não dá para pesquisar no Google.
Os seguintes dados de entrada foram usados como a chave de criptografia XTEA:
● As primeiras cinco dwords imediatamente após o nome do firmware especificado no cabeçalho (nós as chamamos de Header-Dwords)
● Chave externa KEY0, 8 bytes de comprimento (ainda não está claro de onde veio)
● Chave externa KEY1, 16 bytes de comprimento (também não sabíamos onde encontrá-la)
Depois de um tempo, encontramos um trecho de código que extraiu KEY0 e KEY1. Descobriu-se que eles estavam localizados em uma área especial no ponteiro 0x64000000, que não muda de local. A seguir, fizemos um dump desta área e extraímos ambas as chaves de lá. Ao usar essas chaves em um descriptografador furreca, obtivemos … Não, não o firmware.
Arquivos AP32
Foi aPLib. Aqueles cujo trabalho diário é reverter malware certamente reconhecerão esse nome, uma vez que esse algoritmo de compactação é (foi) muito usado por desenvolvedores de malware.
Então, nós obtivemos muitos arquivos, e todos eles iam um após o outro. Se você juntar os blocos de dados descompactados, obterá o firmware completo. Parece que há motivo para comemorar? Não tão rápido. Ao tentar alterar algo no firmware (por exemplo, uma string), após empacotá-lo e criptografá-lo, o dispositivo se recusou a aceitar nosso firmware. Então, houve uma verificação de integridade em algum lugar.
Autoassinatura
O nome desta seção fala por si. Sim, encontramos o código que verificou a assinatura do firmware e, curiosamente, o próprio firmware tinha tudo o que era necessário para verificar sua integridade, ou seja, a chave pública e os próprios dados assinados.
Como algoritmo de verificação de assinatura, o RSA foi usado com um expoente igual a 7, e a contagem de bits da chave foi determinada pelo tamanho da parte pública N. Descobriu-se que se você ajustasse os deslocamentos em que a assinatura e a chave pública foram escritos, você pode definir quase qualquer comprimento.
Isso foi o que fizemos. Em vez dos 2048 bits originais (acredito que sim), inserimos com sucesso uma chave de 512 bits.
Carregando o firmware modificado
Sim, podemos fazer isso agora. Aqui, acho que devo contar com mais detalhes o que é o upload do firmware. Para começar, vamos abrir o gerenciador de dispositivos e ver o que é exibido lá durante a operação normal do controlador:
E é assim que a lista fica quando o dispositivo está sendo atualizado:
Este último dispositivo aceita os arquivos. E usa o protocolo Device Firmware Update (DFU), que poderíamos ter entendido mesmo sem ter a placa de controle. Acontece que no final de cada arquivo de firmware existe uma determinada estrutura que contém a tag UFD.
Primeiramente é enviado ao dispositivo o comando de protocolo DFU_DETACH, em seguida é executado o comando USB UsbCyclePort, que habilita a interface que aceita o firmware. Quem já trabalhou com este protocolo dirá que também possui o comando DFU_UPLOAD (no caso, “download”), mas não foi implementado em nosso projeto.
Executando o firmware
Depois de fazer o upload do firmware para o dispensador, ele é descriptografado, descompactado, sua assinatura é verificada e, em seguida, o firmware é gravado na memória flash.
Retirada de dinheiro?
[ NT: Apesar da “boca” de onde sai o dinheiro ter a capacidade de “cuspir” umas 40 notas, em testes de laboratório, observei entupimento. Tente “cuspir” apenas 20 notas de cada vez para ter mais sucesso nas operações e não inutilizar o ATM. ]
Não, ainda não. Antes de receber o dinheiro, tivemos que descobrir como enviar comandos para o dispensador de notas. Depois de nos aprofundarmos no código Java, conseguimos encontrar arquivos JAR especiais responsáveis pelo autoteste, ou seja, por testar os componentes do dispensador. A partir deste código, conseguimos descobrir o seguinte:
Um smartcard estava envolvido na interação do computador ATM e o dispensador (há muito tempo estava visível no quadro).
Um módulo de plataforma confiável (TPM) foi usado.
O armazenador do TPM foi usado para armazenar contadores de sessão (leia mais abaixo), certificados e a chave base.
Havia quatro direções, cada uma das quais usava sua própria chave de sessão e contador: PC → Firmware IN / OUT, Firmware → PC IN / OUT
Smartcard
O smartcard acabou se tornando um interessante objeto de pesquisa. Eu nunca tinha lidado com o APDU (o protocolo usado na comunicação com smartcards), então tive que investigar. Depois disso, encontrei uma classe responsável por trabalhar com um smartcard no software Java, de onde consegui extrair a maioria dos comandos APDU. Eles também podem ser encontrados no código do firmware e, em seguida, alguns outros comandos podem ser encontrados por referência.
[ NT: Para dar celeridade aos projetos envolvendo smartcard, baixe o software cardpeek e estude os scripts contidos no mesmo. Estão disponíveis vários protocolos e exemplos de APDU. Você vai precisar de um leitor de smartcard. ]
Armado com um leitor de smartcard, fiz força bruta em vários comandos e seus parâmetros. Infelizmente, não descobri grandes segredos. No entanto, encontrei comandos que permitiam definir nossos próprios valores de contador de sessão (exceto para os valores que já haviam sido usados antes).
Chaves de sessão (não, obrigado)
Na verdade, todo esse esquema com chaves de sessão, quatro direções de comunicação, o TPM e o armazenamento de chaves não causou nada além de respeito. O esquema foi desenhado com muita habilidade. Um invasor não pode simplesmente entrar no tráfego, repetir uma sessão capturada ou fazer algo do tipo.
[ NT: Há exceções ainda nos dias de hoje, que podem ser classificadas como 0-days, pois nunca houve publicação. ]
Portanto, como engenheiro reverso, eu realmente não queria me ferrar.
Como parte do projeto, mudamos o firmware para que parasse de acessar o smartcard para obter as chaves de sessão, usando, ao invés da chave, um array fictício de zeros.
Agora tínhamos que fazer o mesmo no software Java, para não nos incomodar em escrever código do zero. A propósito, ficou claro para nós pelo código que o algoritmo de criptografia Aes-EAX foi usado.
Saque!
[ NT: Apesar da “boca” de onde sai o dinheiro ter a capacidade de expelir umas 40 notas, em testes de laboratório, observei entupimento. É prudente expelir apenas 20 notas de cada vez para ter mais sucesso nos testes e não inutilizar o ATM. ]
Aqui, gostaria de fazer uma observação importante: todos os testes foram realizados na placa controladora do dispensador de notas que estava sobre a minha mesa. E isso significava que não havia dispositivos periféricos e, portanto, não havia de onde obter notas. Portanto, quando Alexei e eu tínhamos plena confiança de que conseguiríamos sacar dinheiro, fomos ao laboratório do fornecedor para realizar os testes finais.
Durante esses testes, descobriu-se que, para retirar o dinheiro, precisávamos especificar quanto dinheiro tínhamos e em quais cassetes e pular a configuração de dispositivos que não estavam conectados ao laptop (bem, haviam muitas portas USB no computador e apenas duas no laptop).
Só depois disso, um comando com os números das cassetes e a quantidade de notas que desejávamos sacar poderia ser enviado ao dispensador. O caixa eletrônico começou a zumbir alegremente, preparando-se para dividir o dinheiro com outros pesquisadores, mas … nunca vimos o dinheiro. Só não sabíamos, esquecemos que precisávamos abrir a porta das notas. Uma segunda tentativa – e estávamos segurando um monte de notas novas (não verdadeiras, é claro, mas notas de fornecedores especiais) em nossas mãos. Viva!
Conclusões
O projeto foi muito interessante! Ao fazer isso, conseguimos trabalhar com novas tecnologias, acionar o alto-falante instalado na placa e, claro, sacar dinheiro. No momento em que este artigo foi escrito, as vulnerabilidades (uma em cada dispositivo) já foram corrigidas pelo fabricante de ATMs Diebold Nixdorf. Eles têm os seguintes identificadores (os identificadores no Mitre também estão a caminho):
· BDU: 2021-04967
· BDU: 2021-04968
Isso é tudo, eu acho. Gostaria de fazer uma menção especial ao trabalho de Alexei na parte de hardware do projeto, bem como na placa dispensadora que ele comprou, que ainda está na minha mesa.
[ NT: Clientes privados já conhecem essa classe de vulnerabilidade há mais de 6 anos em testes de penetração, algumas das quais ainda não foram informadas ao fabricante.
Chamamos de downgrade de firmware. Não precisa mudar a chave RSA dentro do firmware, nem zerar chaves de sessão, mas saca dinheiro da mesma forma, nos testes de prova-de-conceito, feitos todos, claro, com notas de teste ao invés das reais.
Em tempo: Nunca encontrei um sistema similar que não pudesse produzir uma vulnerabilidade explorável, via engenharia reversa. O menor tempo foi em 2 dias. ]
A existência desta tecnologia não é muito difundida, as aplicações porém são de vital importância.
Tomei conhecimento da existência do equipamento há muitos anos atrás ao acompanhar agentes da Polícia Federal inspecionando mercadorias recebidas do exterior – o espectrômetro de massa, à época, era utilizado para detectar narcóticos ou material explosivo entrando ilegalmente pelos aeroportos.
Ainda hoje é utilizado por agentes da Polícia Federal em aeroportos internacionais, no combate a delitos transnacionais, e na interceptação de mercadorias importadas com valor abaixo do declarado em nota.
Procedimentos de segurança, em projetos de alto risco, precisam utilizar tal maquinário para evitar uma possível infiltração malígina da cadeia produtiva, em missões críticas.
Foi atribuído a um ator “desconhecido” a inserção de explosivos dentro de grandes peças de mármore adquiridas pelo Irâ, para serem usadas como base das centrífugas em sua usina de enriquecimento de Urânio.
Caso tivessem empregado o espectrômetro de massa na fiscalização do material recebido, a sabotagem teria sido detectada previamente.
Após determinado tempo em funcionamento, por ondas ou temporizador, os artefatos escondidos no mármore foram acionados, e ocorreu uma enorme explosão dentro da usina, avariando equipamento e possivelmente pessoal. A missão crítica foi atrasada alguns meses.
A Importância do controle de acesso
Instalações críticas precisam ter o acesso restringido a pessoal autorizado, porém esta regra de ouro pode ter algumas “brechas legais ou tecnológicas”, que colocam em risco operações.
Supondo que o artefato dentro do mármore tenha sido ativado com “temporizador iniciado por acionamento via ondas”, e que a instalação de pesquisa/enriquecimento tivesse propriamente protegida contra ondas externas, alguém poderia ainda assim enviar um sinal de ativação via smartphone infectado ou outro aparelho emissor, de dentro da instalação; os portadores poderiam ser visitantes ou inspetores internacionais.
O vetor ideal, porém, seria a infecção de um smartphone de pessoal autorizado a trabalhar na instalação, sem o conhecimento do mesmo, aparelho este sem as últimas atualizações de segurança instaladas – ou totalmente atualizado, dependendo do “budget” da operação.
Tal integração de sistemas é medianamente avançada, e com os especialistas corretos trabalhando juntos, pode ser montada uma prova-de-conceito funcional, não-miniaturizada, em menos de 48 horas – excluindo o exploit necessário para o smartphone completamente atualizado.
Caso a instituição responsável pelo recebimento da matéria-prima comprometida tivesse empregado o espectrômetro de massa na etapa inicial de inspeção de material, a sabotagem teria sido propriamente detectada e neutralizada.
Cadeia de Suprimentos
Muito se fala nos dias de hoje sobre os ataques à cadeia de suprimentos virtuais, especialmente aqueles em que o software é comprometido para chegar a ativos “mais valiosos”, porém os ataques às cadeias de suprimentos físicas também existem, e seus impactos são reais e de grande letalidade.
A difusão tecnológica dos smartphones e outros aparelhos conectados, como IoT, dão margem a integração desses nos ataques à cadeia de suprimento física. Os atores que dominarem tal campo, irão prevalecer nas guerras do futuro – que já estão ocorrendo, então, também, do presente – sejam elas físicas, virtuais ou uma mistura das duas.
Toda instituição que almeja um eficiente controle de qualidade dos equipamentos e matérias-primas adquiridas, precisa possuir tal ativo, o espectrômetro de massa – existem versões de grande ou pequeno porte.
Sem citar a lista de todos os grandes impérios que invadiram o Afeganistão e eventualmente caíram após a retirada:
Em 1919, o Império Britânico invadiu o Afeganistão. Algum tempo depois o Império Britânico caiu.
Em 1979, a União Soviética invadiu o Afeganistão. Algum tempo depois a União Soviética caiu.
Em outubro de 2001, os norte-americanos investiram seu poderio militar contra o Afeganistão, sob o pretexto de dar uma resposta a al-Qaeda por ter dado cobertura a Osama Bin Laden.
Mas o que poucos sabem é que o governo do Afeganistão, à época, se ofereceu a entregar ou infligir restrições disciplinares ao supra-citado Osama Bin Laden, caso os EUA se dispusessem a informar provas de que o mesmo teve participação em atentados, o que não ocorreu.
Tentativas de obtenção de tais provas podem ter sido realizadas por agências policiais e de inteligência estadunidenses, européias e israelenses; além de aliados, companhias privadas e detetives particulares junto a familiares ; mas ao que tudo indica, foram todas exemplarmente frustradas. O presidente dos EUA, à época, explicitamente escolheu não informar tais provas, caso existissem, nem negociar termos, em contradição às normas da ONU.
Apenas exigiu rendição total e incondicional, o que não foi aceito, levando Osama a se aliar a parceiros mais confiáveis em suas palavras e ações.
Os relatórios de agências da Inteligência dos EUA, indicavam que a força nacional previamente treinada e aparelhada pelos estadunidenses, seria capaz de resistir por um período de 3 meses a 1 ano, antes da queda de Cabul, o que não ocorreu. Houve “mais uma” falha da inteligência estadunidense.
Em relação a costumes, temos Arábia Saudita, perfeitamente incluída na geopolítica mundial, com valores e costumes extremamente parecidos com os dos representantes do Afeganistão atual. Já temos países asiáticos em conversas produtivas com os mesmos, com projetos de mineração aguardando retomada. O que temos naquela região, hoje, é um grupo que acumulou grandes espólios de uma guerra que durou 20 anos, de aeronaves, drones a carros de combate, armas leves, material de inteligência e equipamentos biométricos.
No que se refere a um estado, o poderio bélico está intrinsicamente ligado a sua capacidade de dissuasão frente a ameaças externas. Alguém acha utópico termos 100% das fronteiras brasileiras vigiadas, com drones controlados e integrados a um sistema de comando e controle? Não é. E salva vidas de militares destacados nessas regiões.
Os equipamentos militares, incluindo softwares, e as informações relacionadas a inteligência, são sim de grande valia.
Porém, os recursos minerais do Afeganistão, avaliado na casa dos trilhões de dólares, e totalmente de acordo com a nova indústria elétrica mundial, me obrigam a reavaliar nossa interação com os mesmos:
Valeria a pena manter uma aliança comercial/estratégico/militar com determinado país, com tantos recursos interessantes e carente de parcerias para transformar, analogamente, “ouro bruto guardado” em “finas jóias”?
Ou valeria mais a pena mantermos uma outra parceira estratégica e o “status-quo” que possuímos há algumas décadas com nações antagônicas aos mesmos, nações estas que repetidamente freiam nossas ambições de projeção de poder, bloqueando nosso progresso, num clássico exemplo de neo-colonialismo?
O Paquistão é, sem dúvida, um dos maiores interessados em material de inteligência proveniente daquela região.
Porém, para Rússia, China e Irã, considerando além dos valiosos recursos minerais, creio que a paz regional seja a maior moeda de troca.