
Cerca monete BTC nelle versioni precedenti di Bitcoin Core con la vulnerabilità critica OpenSSL 0.9.8 CVE-2008-0166
In questo articolo creeremo uno strumento che genererà Indirizzi Bitcoin (P2PKH) utilizzando la vulnerabilità CVE-2008-0166. Questo è un progetto di ricerca per trovare monete BTC nelle versioni precedenti del client software Bitcoin Core.
Generatore di numeri casuali che genera numeri prevedibili CVE-2008-0166
VAIM-OpenSSL 0.9.8/1.0.0 Rilevato
La versione con vulnerabilità critica OpenSSL 0.9.8 CVE-2008-0166 era popolata solo con l'ID di processo. A causa delle differenze tra endianness e sizeof(long), l'output dipende dall'architettura: 32 bit big endian (ad esempio, i386), 64 bit big endian (ad esempio, amd64, ia64), 32 bit big endian (ad esempio, powerpc , sparc). PID 0 è il core, e PID_MAX ( 32768 ) non viene raggiunto tramite porting, quindi c'erano 32767 possibili flussi di numeri casuali per ogni architettura.
Il client software Bitcoin Core utilizza OpenSSL. Nello specifico, utilizza una funzione «EC_KEY_generate_key()» per generare Indirizzi Bitcoin (come una chiave) per ricevere pagamenti. Le versioni precedenti di Bitcoin Core generano e memorizzano 100 chiavi in wallet.dat
Una nuova chiave viene generata solo quando viene ricevuto un pagamento Bitcoin. Pertanto, il client software Bitcoin Core mantiene un pool di 100 chiavi Bitcoin inutilizzate (indirizzi) . Lo stato del generatore interno di numeri casuali dipende da quali altre chiamate sono state effettuate alla libreria OpenSSL prima della chiamata 'EC_KEY_generate_key()' . Chiamate che influenzano lo stato interno del RNG: «RAND_add(8)», «RAND_bytes(8)» и «RAND_bytes(32)».
Quindi la ricerca consisteva nell'esaminare molte vecchie fonti di bitcoin per scoprire quali chiamate venivano effettuate che influenzavano lo stato interno del RNG prima della chiamata «EC_KEY_generate_key()». Il percorso delle chiamate cambia tra le versioni del client software Bitcoin Core
Lo studio si è concentrato sulle seguenti versioni:
| Data di rilascio | Versione |
Il nostro obiettivo è generare chiavi private per ogni versione del client software Bitcoin Core, per ogni architettura (le32/le64), per ogni ID di processo e per gli Indirizzi Bitcoin (P2PKH), utilizzando un numero casuale da una vulnerabilità critica. OpenSSL 0.9.8.
In definitiva, creeremo un Generatore di Indirizzi Bitcoin (P2PKH) e tutto verrà salvato in un file result.txt
Tutto verrà memorizzato nell'archivio file di Google Drive
Per questo useremo il kit di distribuzione «Ubuntu 18.04.5 LTS» da Google Colab
In precedenza abbiamo registrato una videoguida : «TERMINAL in Google Colab crea tutte le comodità per lavorare in GITHUB»
Apri Google Colab in Terminal [TerminalGoogleColab]
Eseguiamo il comando:
cat /etc/lsb-release
«Ubuntu 18.04.5LTS»
Andiamo al «CryptoDeepTools» repository e diamo un'occhiata ai dettagli
git clone https://github.com/demining/CryptoDeepTools.git
cd CryptoDeepTools/05VulnerableOpenSSL/
ls -lh
Aggiorna e installa g++ libgmp3-dev libmpfr-dev
apt-get update
sudo apt-get install g++ -y
installa g++
sudo apt-get install libgmp3-dev libmpfr-dev -y