
Pesquise por moedas BTC em versões anteriores do Bitcoin Core com a vulnerabilidade crítica OpenSSL 0.9.8 CVE-2008-0166
Neste artigo, criaremos uma ferramenta que gerará Endereços Bitcoin (P2PKH) usando a vulnerabilidade CVE-2008-0166. Este é um projeto de pesquisa para encontrar moedas BTC em versões anteriores do cliente de software Bitcoin Core.
Gerador de números aleatórios que gera números previsíveis CVE-2008-0166
VAIM-OpenSSL 0.9.8/1.0.0 Detectado
A versão de vulnerabilidade crítica OpenSSL 0.9.8 CVE-2008-0166 foi populada apenas com o ID do processo. Devido às diferenças entre endianness e sizeof(long), a saída depende da arquitetura: 32 -bits big endian (por exemplo, i386), 64 -bits big endian (por exemplo, amd64, ia64), 32 -bits big endian (por exemplo, powerpc, sparc). PID 0 é o núcleo, e PID_MAX ( 32768 ) não é alcançado por portabilidade, então havia 32767 fluxos de números aleatórios possíveis para cada arquitetura.
O cliente de software Bitcoin Core usa o OpenSSL. Especificamente, ele usa uma função «EC_KEY_generate_key()» para gerar Endereços Bitcoin (como uma chave) para receber pagamentos. Versões antigas do Bitcoin Core geram e armazenam 100 chaves em wallet.dat
Uma nova chave é gerada apenas quando um pagamento Bitcoin é recebido. Assim, o cliente de software Bitcoin Core mantém um pool de 100 Chaves Bitcoin não utilizadas (endereços). O estado do gerador de números aleatórios interno depende de quais outras chamadas foram feitas à biblioteca OpenSSL antes da chamada 'EC_KEY_generate_key()'. Desafios que afetam o estado interno do RNG: «RAND_add(8)», «RAND_bytes(8)» e «RAND_bytes(32)».
Então a pesquisa foi percorrer muitas fontes antigas do bitcoin para descobrir quais chamadas foram feitas que afetaram o estado interno do RNG antes da chamada «EC_KEY_generate_key()». O caminho de chamada muda entre versões do cliente de software Bitcoin Core
O estudo focou nas seguintes versões:
| Data de lançamento | Versão |
Nosso objetivo é gerar chaves privadas para cada versão do cliente de software Bitcoin Core, para cada arquitetura (le32/le64), para cada ID de processo e para Endereços Bitcoin (P2PKH), usando um número aleatório de uma vulnerabilidade crítica. OpenSSL 0.9.8.
Por fim, criaremos um Gerador de Endereços Bitcoin (P2PKH) e tudo será salvo em um arquivo result.txt
Tudo será armazenado no armazenamento de arquivos do Google Drive
Para isso, usaremos o kit de distribuição «Ubuntu 18.04.5 LTS» do Google Colab
Anteriormente, gravamos uma instrução em vídeo: «TERMINAL no Google Colab cria todas as conveniências para trabalhar no GITHUB»
Abra o Google Colab em Terminal [TerminalGoogleColab]
Vamos executar o comando:
cat /etc/lsb-release
«Ubuntu 18.04.5LTS»
Vamos ao «CryptoDeepTools» repositório e dar uma olhada nos detalhes
git clone https://github.com/demining/CryptoDeepTools.gitcd CryptoDeepTools/05VulnerableOpenSSL/
ls -lh
Atualize e instale g++ libgmp3-dev libmpfr-dev
apt-get update