Ethereum private key bruteforce

Ethereum private key bruteforce

Ethereum Private Key Brute Force Attacker

A simple, pure-python script to generate private keys and compare the resulting ETH addresses with a list of known values. Strength of each guess is measured by the number of leading hexadecimal digits that match (other digits may match, but we don’t count those).

While guessing, the script shows its guesses WarGames-style.

Thanks to @vkobel/ethereum-generate-wallet for the pure-python implementation of ETH key generation.

I wanted a more tangible understanding of how hard it is to guess a private key before using it to store any non-trivial value. I mean, how hard could it be to guess someone else’s key, right? As this script tries to show, it’s basically impossible to collide with an already existing key.

How many leading digits can you match? 😉

Note: having a 39 digit match of the address means you’re no closer to unlocking anything.

Seriously, no chance

How impossible is this? Assuming 45,000,000 addresses, you have a 45000000 / 115792089237316195423570985008687907853269984665640564039457584007913129639936 or 3.8862758497925e-70 chance of randomly guessing a private key associated with a public address.

If you made O(100) random guesses per second, it would take you on roughly 1 trillion trillion trillion trillion years to guess one address (on average). Clearly a short-cut is needed, but that’s for another project.

This script uses python3. Its dependencies are listed in requirements.txt . Use virtualenv to install and execute this script without affecting your system’s python3 distribution:

Читайте также:  Gtx 1080 майнинг разгон

Not recommended: you can skip the virtualenv steps and install the necessary dependencies to your system’s python3 distribution:

libyaml is not found

Your python development environment is missing a few components. Ensure you have libyaml-dev , libpython3-dev , and python3-dev installed.

Click wants UTF-8 but your python install was configured for ASCII

Export the recommended locale information to make click happy.

If you specify a —port command line argument, the app listens on that port for HTTP GETs and will return some basic run-time statistics.

About

Brute force private key attack against ethereum wallets

Источник

Бесплатные деньги: как хакер смог заработать миллионы долларов поиском слабых приватных ключей

На прошлой неделе консалтинговая фирма Independent Security Evaluators (ISE) опубликовала исследование приватных ключей на блокчейне Эфириума. В ходе своей работы аналитикам удалось обнаружить «блокчейн-мошенника», который сумел украсть более 45 тысяч ETH перебором простых комбинаций. Подробнее о проблеме журналистам Cointelegraph рассказал главный аналитик ISE Эдриан Беднарек.

С чего всё началось?

Беднарек обнаружил хакера совершенно случайно. Ранее он занимался исследовательской работой по заказу одного из своих корпоративных клиентов, который хотел разработать собственный кошелёк с интегрированным алгоритмом генерации ключей.

В Эфириуме, Биткоине или любом другом блокчейне, поддерживающем протокол Elliptic Curve Digital Signature Algorithm (ECDSA), приватные ключи представлены в виде 256-битных чисел. Во время исследования аналитики ISE разделили эту комбинацию на восемь 32-битных «субрегионов», так как брутфорс целого приватного ключа статистически невозможен.

В этих восьми субрегионах было найдено 34 миллиарда слабых ключей. По словам Беднарека, сканирование заняло целый день. Стоит отметить, что ключи были сгенерированы из-за ненадёжного кода.

Приватный ключ — это ваш ID и паспорт. Здесь всё не так, как в банковской системе, где каждому пользователю выдан свой логин и пароль.

Ещё один интересный факт — приватный ключ «1» уже используется в блокчейне Эфириума. Более того, он фигурирует в нескольких тысячах транзакций.

В 256-битном коде ключ имеет следующий вид: 0x0000000000000000000000000000000000000000000000000000000000000001.

Беднарек считает этот факт большой проблемой.

Почему люди вообще пользуются этим ключом? Это невозможно.

Команда ISE начала изучать блокчейн более подробно, чтобы найти ещё больше слабых ключей. Им удалось обнаружить по крайней мере 735 комбинаций, которые можно ассоциировать с 49 060 транзакциями.

Читайте также:  Илон маск про доги коин

Мошенник на блокчейне

Примечательно, что кошельки с большинством упомянутых слабых приваткеев имеют определенные транзакции, которые ведут к узкому кругу адресов.

Кое-кто просто высасывал деньги с ключей, которые нам чудом удалось обнаружить. Из 735 приватных ключей, которые мы нашли, он имел доступ к 12. Мошенник не мог просто так угадать комбинацию, он занимался тем же, чем и мы. Он вытаскивал средства с кошельков, как только те поступали туда.

Эксперты установили, что хакер (или группа хакеров) установил ноду, которая «выкачивала деньги» в автоматическом режиме. Чтобы протестировать это, аналитики даже отправили один доллар с использованием слабого приватного ключа. Монеты с указанного кошелька исчезли за считанные секунды.

По данным Etherscan, на кошельке мошенника хранится около 45 000 ETH или около 7,3 миллиона долларов по сегодняшнему курсу. На момент исторического максимума цены Эфириума хакер мог бы обладать более чем 50 миллионами долларов.

Кстати, адрес мошенника имеет много комментариев от потерпевших. Судя по всему, преступник безнаказанно занимается своим делом вот уже несколько лет. В одном из комментариев нашли ссылку на старый тред с Reddita за 2016 год. Создатель обсуждения рассказывал о том, как его «ограбили» всего через несколько минут после запуска собственной ноды.

Аналитики подробнее изучили методы работы хакера.

Во-первых, он ищет слабые приватные ключи. Во-вторых, он ищет кошельки с ненадёжной кодовой фразой и неправильно настроенные RPC.

Проблема, как всегда, скрыта в человеческом факторе. Даже у самих экспертов ISE были «моральные трудности» во время проведения исследования.

Перед началом работы у нас появилась этическая дилемма — что если мы найдём ключ от кошелька с миллионами долларов? Мы просто оставим всё как есть? Но если сделать так, хакеры наверняка рано или поздно доберутся до денег.

Однако кого нам предупредить об опасности? Найти владельца приватного ключа довольно сложно. Возможно, мы могли бы взять деньги на хранение, пока кто-то не докажет факт владения ими? Такой сценарий может вызвать много проблем с законом.

Читайте также:  Анализ структуры инвестиций по видам экономической деятельности

Меры безопасности

Итак, Беднарек выделяет две причины, из-за которых приватные ключи могут быть ненадёжными. Первая — ошибки в ПО, которое генерирует сам ключ. Второе — некоторые пользователи могут получить идентичные ключи из-за использования слабых кодовых фраз (к примеру, «abc123» или что-то в этом роде).

По словам аналитика, пока ни одна команда разработчиков кошельков не связалась с ними.

Это интересно, так как сложно найти ответственных среди создателей кошельков. Может быть это просто вина пользователей, которые снисходительно относятся к безопасности собственных денег.

Тем, кто не сильно разбирается в технологиях и просто хочет сохранить свои деньги, Беднарек рекомендует пользоваться аппаратными кошельками. В особенности, если речь идёт о хранении большого объёма криптовалют.

Ещё больше интересного можно найти в нашем крипточате.

Источник

Оцените статью