0

Исследование уязвимости Signature Malleability и компрометации приватного ключа в подписи Bitcoin [Часть №3]

В первой части статьи мы провели большое исследование уязвимости Signature Malleability, угрожающей безопасности популярных криптовалют, таких как Bitcoin и Ethereum. Во второй части статьи мы рассмотрели на реальном примере механизмы эксплуатации CVE-2024-42461 в библиотеке Elliptic для ECDSA, используя биткоин-кошелек 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw, на котором были потеряны монеты на сумму 21.2529214 BTC, что на ноябрь 2024 года составляет 1,744,572.51 USD. В этой третьей части статьи мы рассмотрим методы поиска уязвимости Signature Malleability, как предотвращение угрозы для собственного криптовалютного кошелька Bitcoin и Ethereum мы можем воспользоваться и применить на примерах различных методов машинного обучение.

Воспользуемся списком из “Tutorials Power AI” широко применяемая категория искусственного интеллекта для введение бизнеса в различных сферах деятельности криптоанализа и крипографии в целом.

Команда установки:

git clone https://github.com/demining/Tutorials-Power-AI.git

cd Tutorials-Power-AI/

python tutorials.py

BitcoinChatGPT — это инновационный чат-бот на базе искусственного интеллекта, который помогает пользователям находить уязвимости в транзакциях криптовалюты Bitcoin. Преимущества и классификации BitcoinChatGPT дают возможность проверить ваш адрес Bitcoin на предмет различных схем атак на криптокошельки. Машинное обучение на основе криптоанализа дает нам полную возможность исследовать различные атаки на алгоритмы, используемые в экосистеме Bitcoin. Инструменты для извлечения приватого ключа из реестра Bitcoin Wallet широко популярны, где BitcoinChatGPT служит важным и полезным ресурсом для кибербезопасности.

Применим уязвимость CVE-2024-42461: Signature Malleability в библиотеке Elliptic для создания Raw транзакции с помощью процесса машинного обучение BitcoinChatGPT

Рассмотрим построение структуры уязвимой Raw транзакции в котором используется модуль BitcoinChatGPT

Откроем версию Google Colab:

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

State of a vulnerable transaction in Bitcoin: 01000000 ....01 ........0dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935 ............00000000 ........8b483045 ....0221 ...........00 ...........97255916a3cc4f69d4fa16f68219d0b1798d392fb0dce5fb0a358510df8cabe0 ....0220 ........1014656120e0a6e7c8c4a79ee22b3cdd4f55435e3e9bf3ab7287ae16858dd9d5 .....0141 .....049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461 ....ffffffff 01 ....d204000000000000 ........1976 ............a914 ........d77522a2b18e0064aba02ca7f864a5bb22998259 ....88ac 00000000

Соединим все выданные значение в одну общую строку с помощью Python-скрипта combinex.py:

01000000010dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935000000008b48304502210097255916a3cc4f69d4fa16f68219d0b1798d392fb0dce5fb0a358510df8cabe002201014656120e0a6e7c8c4a79ee22b3cdd4f55435e3e9bf3ab7287ae16858dd9d50141049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461ffffffff01d2040000000000001976a914d77522a2b18e0064aba02ca7f864a5bb2299825988ac00000000

Откроем опцию от BlockCypher «Decode A Transaction»:

https://live.blockcypher.com/btc/decodetx/

После декодирование уязвимой Raw транзакции Биткоина мы получаем результат:

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

Обратим внимание на Bitcoin HASH160: d77522a2b18e0064aba02ca7f864a5bb22998259

https://github.com/demining/CryptoDeepTools/blob/dfc7da9a6b41d72253bfcb6ae6da2718de7d9b87/36SignatureMalleability/DecodeRawTX.txt#L31

Transaction Script

The above script has been decoded

BitcoinChatGPT создает структуру транзакции, используя HASH публичного ключа, где мы видим что Bitcoin address: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw отправляет 1234 satoshi на тот же адрес внутри своей сети.

Bitcoin HASH160 был получен с помощью Python Script: wif_to_hash160.py

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_3_12055413?u=https%3A%2F%2Fgithub.com%2Fdemining%2FCryptoDeepTools%2Fblob%2Fmain%2F36SignatureMalleability%2FDecodeRawTX.txt%23L31&t=d77522a2b18e0064aba02ca7f864a5bb22998259&h=3916a1de8c0846ef45877197f79931b69bed3374" title="https://github.com/demining/CryptoDeepTools/blob/main/36SignatureMalleability/DecodeRawTX.txt#L31" target="_blank" rel="nofollow noopener">d77522a2b18e0064aba02ca7f864a5bb22998259</a>

d77522a2b18e0064aba02ca7f864a5bb22998259

https://github.com/demining/CryptoDeepTools/blob/main/36SignatureMalleability/wif_to_hash160.py

Вопрос — Ответ:

В конечном итоге модуль BitcoinChatGPT выдает ответ в файл: KEYFOUND.privkey сохранив приватный ключ в двух наиболее используемых форматах HEX & WIF

https://github.com/demining/CryptoDeepTools/blob/main/36SignatureMalleability/KEYFOUND.privkey

============================= KEYFOUND.privkey ============================= Private Key HEX: 0x17e96966f15a56993e13f8c19ce34a99111ad768a051d9febc24b6d48cae1951 Private Key WIF: 5HzpNjEsxrpxPFqBKaoRSnFeq7RP57mvzwgoQFVtAJNZBpLVyur Bitcoin Address: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw Balance: 21.25292140 BTC ============================= KEYFOUND.privkey =============================

BitcoinChatGPT №5 Signature Malleability Vulnerability Algorithm

Уязвимая Raw транзакция

Создадим из полученных данных уязвимую Raw транзакцию используя репозиторию Broadcast Bitcoin Transaction

Скачаем и установим исходный код откроем терминал и запустим команду:

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

Каталог:

cd Broadcast-Bitcoin-Transaction

Установим три важные библиотеки:

<a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_3_12055413?u=https%3A%2F%2Fgithub.com%2Fsmartibase%2FBroadcast-Bitcoin-Transaction%2Fblob%2Fmain%2Frequirements.txt&t=requirements.txt&h=e61bf3f6194b080b6f36020c1544d75782a2bf26" title="https://github.com/smartibase/Broadcast-Bitcoin-Transaction/blob/main/requirements.txt" target="_blank" rel="nofollow noopener">requirements.txt</a>

requirements.txt

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

pip install -r requirements.txt

Откроем в Notepad++ основной файл и внесем небольшие изменение в коде Python Script: main.py

from io import BytesIO from secp256k1 import * from sighash import * pk = PrivateKey.parse("5HzpNjEsxrpxPFqBKaoRSnFeq7RP57mvzwgoQFVtAJNZBpLVyur") pk.address() tx = bytes.fromhex("35591e5c7f4f1f0e4d81748042f2a4b7dcae3ae01027f361cad7c8746369bc0d") index = 0 send = "1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw" 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 в каталоге:

01000000010dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935000000008b48304502210097255916a3cc4f69d4fa16f68219d0b1798d392fb0dce5fb0a358510df8cabe002201014656120e0a6e7c8c4a79ee22b3cdd4f55435e3e9bf3ab7287ae16858dd9d50141049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461ffffffff01d2040000000000001976a914d77522a2b18e0064aba02ca7f864a5bb2299825988ac00000000

Порядок выполнения действий на видео:

  1. Именно эту уязвимую RawTX мы рассматривали в начале данной статьи: ↩︎

Процесс декодирование RawTX с помощью инструмента <a href="https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_3_12055413?u=https%3A%2F%2Fgithub.com%2Fsmartibase%2FBroadcast-Bitcoin-Transaction%2Ftree%2Fmain%2Fdecoderaw&t=decoderaw&h=13b2af61ff62d46a1d11f037ba156b9eab2dba3f" title="https://github.com/smartibase/Broadcast-Bitcoin-Transaction/tree/main/decoderaw" target="_blank" rel="nofollow noopener">decoderaw</a>

Процесс декодирование RawTX с помощью инструмента decoderaw

Как нам известно из prompt ответов модуля BitcoinChatGPT Signature Malleability Vulnerability Algorithm может быть использован для решения сложных криптографических задач.

Заключение

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

1. Увеличение количества подтвержденийОдним из простейших способов защиты от поддельных подписей является увеличение количества подтверждений транзакции перед ее окончательным принятием. Рекомендуется ждать не менее шести подтверждений, чтобы снизить вероятность успешной атаки. Это позволяет убедиться в том, что транзакция была включена в блок и не может быть отменена.2. Анализ блоков и транзакцийМайнинговое ПО и узлы сети анализируют блоки и транзакции на предмет конфликтов и аномалий. Это включает проверку подписи на соответствие формату, а также проверку значений r и s на допустимые диапазоны. Если значения находятся вне допустимых пределов, транзакция может быть отклонена.3. Внедрение систем анализа аномалийИспользование систем анализа аномалий позволяет выявлять подозрительные транзакции и цепочки блоков. Эти системы могут использовать алгоритмы машинного обучения для обнаружения необычного поведения в сети, что может указывать на попытки подделки подписей.4. Программное обеспечение для мониторинга сетиИнструменты, такие как Wireshark, могут быть использованы для анализа сетевого трафика и выявления подозрительных активностей. Мониторинг сетевого трафика позволяет выявлять атаки типа «Sybil» или «Eclipse», которые могут быть использованы для манипуляции с транзакциями.5. Регулярное обновление протоколов безопасностиРегулярное обновление программного обеспечения и протоколов безопасности помогает устранить известные уязвимости, такие как уязвимость DeserializeSignature, которая позволяет злоумышленникам создавать недействительные подписи. Обновления должны включать исправления для всех известных уязвимостей и улучшения безопасности.6. Многоуровневое подтверждениеИспользование нескольких уровней подтверждения транзакций может повысить безопасность сети. Это может включать дополнительные проверки со стороны узлов или использование сторонних сервисов для верификации подписей.

References:

  1. Odlyzko, Andrew; te Reile, Herman J. J. «Disproving Mertens Conjecture» Journal für die reine und angewandte Mathematik

  2. D. Simon (2007). «Selected applications of LLL in number theory» LLL+25 Conference. Caen, France.

  3. Regev, Oded. «Lattices in Computer Science: LLL Algorithm» New York University. Retrieved 1 February 2019.

  4. Silverman, Joseph. «Introduction to Mathematical Cryptography Errata» Brown University Mathematics Dept. Retrieved 5 May 2015.

  5. Bosma, Wieb. «4. LLL» Lecture notes. Retrieved 28 February 2010.

  6. Abderrahmane, Nitaj. Cryptanalysis of NTRU with two public keys // International Association for Cryptologic Research. — Caen, France.

  7. Bleichenbacher, Daniel and May, Alexander. New Attacks on RSA with Small Secret CRT-Exponents // International Association for Cryptologic Research. — Darmstadt, Germany.

  8. Xinyue, Deng. An Introduction to LLL Algorithm // Massachusetts Institute of Technology.

  9. Liu, Jiayang, Bi, Jingguo and Xu, Songyan. An Improved Attack on the Basic Merkle–Hellman Knapsack Cryptosystems // IEEE. — Beijing 100084, China.

  10. Lattice algorithms using floating-point arithmetic // The FPLLL development team. FPLLL, a lattice reduction library. — 2016.

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

Исходный код

Google Colab

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/wf6QwCpP3oc

Video tutorial: https://dzen.ru/video/watch/674116440bddfa35d730ca7a

Источник: https://cryptodeeptool.ru/signature-malleability

0
Автор поста оценил этот комментарий

Круто звучит, но нужны не публичные экзешники, чтоб даже просто проверить. Я так понимаю они сильно платные, да? :)

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества