Все помнят недавнюю атаку на Electrum и её последствия. Известный производитель антивирусного ПО компания Malwarebytes, провела расследование и опубликовала обширный отчет.
Сделал перевод и некоторую адаптацию. Букв много, но кому интересно - приобщайтесь!Источник:
https://blog.malwarebytes.com/cybercrime/2019/04/electrum-bitcoin-wallets-under-siege/By Adam Thomas, with additional contributions from Jérôme Segura, Vasilios Hioueras and S!Ri
Осада Биткоин кошелька Electrum
С конца декабря 2018 года многие пользователи популярного кошелька
Electrum Bitcoin стали жертвами серии фишинговых атак, в результате которых, по нашим оценкам, были похищены более чем
771 биткойна, что составляет сумму, эквивалентную приблизительно
4 миллионам долларов США по текущему обменному курсу.
Используя уязвимость в программном обеспечении Electrum, злоумышленникам удалось обмануть пользователей, убедив их загрузить и установить вредоносную версию кошелька. В результате, в
феврале разработчики Electrum решили использовать тот же недостаток в своем программном обеспечении, чтобы перенаправить пользователей для загрузки последней исправленной версии программы. Программное обеспечение было в такой беде, что в
марте разработчики начали использовать еще одну неизвестную публике уязвимость, по сути заставить пользователей обновить программу и тем самым предотвратить появление фишинговых сообщений, чтобы они не подключались к вредоносным узлам.
Вскоре после этого ботнет начал
распределенные атаки типа «отказ в обслуживании» (DDoS) на серверы Electrum, это было, как считается, ответным ударом за то, что разработчики пытались исправить баг. Сценарий был прост, при помощи DDoS загрузить легитимные ноды так, чтобы клиентам с все еще не обновленной версией программы приходилось подключаться к вредоносным узлам.
В этой статье мы расскажем о фишинг-схеме, используемой для распространения вредоносного обновления Electrum, обсудим, куда ушли украденные средства, и, наконец, рассмотрим заражение вредоносным ПО, непосредственно связанное с ботнетом и DDoS.
Electrum wallet 101Для лучшего понимания того, как эти атаки стали возможными и настолько успешными, полезно иметь общее представление о том, как функционирует кошелек Electrum.
Известный как «облегченный» биткойн-кошелек, Electrum реализует разновидность методики, описанной Satoshi Nakamoto’s в
белой книги Биткоина (
в оригинале ссылка ведет на сайт с доменом .com, правильная ссылка - https://bitcoin.org/bitcoin.pdf) под названием «Упрощенная проверка платежей» (SPV). SPV позволяет пользователю отправлять и получать транзакции, не загружая весь блокчейн биткоина (размер которого составляет сотни гигабайт).
Вместо этого Electrum работает в конфигурации клиент/сервер. Кошелек (клиент) по умолчанию запрограммирован для подключения к сети одноранговых узлов (сервер), чтобы убедиться, что транзакции действительны.
Хотя исторически это был довольно безопасный метод ведения транзакций, злоумышленники воспользовались тем, что публичную ноду Electrum может запустить абсолютно любой человек. Как показано ниже, произошло значительное увеличение числа активных пиров в сети Electrum:
Поддельное уведомление об обновлении кошелька Electrum26 декабря 2018 года разработчик Electrum опубликовал публичное предупреждение на официальной странице GitHub, предоставив некоторую информацию об атаке:
https://github.com/spesmilo/electrum/issues/4968#issue-394260722To users: when you broadcast a transaction, servers can tell you about errors with the transaction. In Electrum versions before 3.3.3, this error is arbitrary text, and what’s worse, it is HTML/rich text (as that is the Qt default). So the server you are connected to can try to trick you by telling you to install malware (disguised as an update). You should update Electrum from the official website so that servers can no longer do this to you. If you see these messages/popups, just make sure you don’t follow them and that you don’t install what they tell you to install. The messages are just messages, they cannot hurt you by themselves.
В основном была использована
Sybil attack (Атака Сивиллы) - вид атаки в одноранговой сети, в результате которой жертва подключается только к узлам, контролируемым злоумышленником.
Легитимное приложение кошелька Electrum, показывающее вредоносные узлы Если пользователь подключался к вредоносному узлу (с высокой вероятностью) и пытался отправить транзакцию через него, то, благодаря уязвимости в Electrum позволяющей принимать и отображать HTML/rich текст, получал фальшивое уведомление об невозможности транзакции и необходимости обновления:
Фишинговый код внедряется в приложение Electrum при попытке отправить биткойны На втором этапе атаки пользователь устанавливает вредоносную версию кошелька Electrum. Два различных мошеннических проекта были активны на Github примерно с 21 по 27 декабря 2018 года.
Репозиторий вредоносных приложений Electrum
hxxps://github.com/electrum-project/electrum/releases/tag/3.4.1
hxxps://github.com/electrum-wallet/electrum/releases
Репозиторий вредоносных приложений Electrum Вредоносные кошельки ElectrumВ практических целях мы будем называть следующие вредоносные программы
Вариант 1 и
Вариант 2, однако дальнейшие исследования показали, что участники этой конкретной кампании действуют уже довольно давно. Таким образом, представляется вероятным, что до 21 декабря 2018 года существовали другие разновидности этой вредоносной программы. Варианты 1 и 2, по-видимому, эксплуатировались различными участниками, основываясь на нескольких различиях в вредоносной программе.
Вариант 1Вариант 1 уникален тем, что авторы вредоносной программы реализовали функцию загрузки украденных приватных ключей кошелька и SEED данных на удаленный сервер. Были предприняты дополнительные меры для обеспечения того, чтобы эта функция оставалась скрытой, при помощи обфускации (запутывание кода) исходного кода внутри файла под названием (initmodules.py) которого обычно нет в стандартной, легитимной программе Electrum.
Мошеннический модуль, ответственный за эксфильтрацию данных Как уже упоминалось, внедренные вредоносные домены не видны в приведенном выше коде и вместо этого создаются во время запуска вредоносного программного обеспечения. Эта техника используется злоумышленниками для того, чтобы код, содержащийся в файле initmodules.py, казался легитимным.
В дополнение к краже данных кошелька, любой баланс, присутствующий в кошельке, отправлялся на один из нескольких заранее запрограммированных публичных адресов под контролем злоумышленников. Выбранный адрес зависит от формата адреса, используемого кошельком Electrum зараженного пользователя.
Pay-to-PubkeyHash (P2PKH) используются по умолчанию во время установки программы и является основной формой совершения транзакции и наиболее распространенным методом в сети Bitcoin которая используется обычным пользователем. Это становится очевидно при просмотре активности каждого адреса.
14MVEf1X4Qmrpxx6oASqzYzJQZUwwG7Fb5 (P2PKH address type)
Total Received: 202.91141530 BTC ~ 776,243.23 USD
bc1q9h36cyfnqcxjeuw629kwmnp5a7k5pky8l2kzww
Total Received: 0.01927492 BTC ~ 73.75 USD
1rTt8GePHv8LceXnujWqerUd81U29m857
Total Received: 0 BTC
3CrC4UitJqNqdkXY5XbJfCaGnbxHkKNqzL
Total Received: 15.22210788 BTC ~ 58,239.77 USD
1FmxAHft8trWjhRNvDsbjD8JNoSzDX8pfD
Total Received: 0 BTC
Вариант 1 - общая сумма в биткоинах: 218.1527981 BTC
Вариант 1 - общая сумма в USD: ~$1,101,034.00Образец того, в каком формате отправлялись приватные ключи (xprv) на вредоносный сервер используя HTTP POST Образец того, в каком формате отправлялись SEED фразы на вредоносный сервер используя HTTP POST Все вредоносные домены, обнаруженные во время нашего анализа Варианта 1, были созданы одновременно и связанны с IP-адресом 31.31.196.86. Этот адрес принадлежит Reg.ru, хостинговой компании, базирующейся в Москве, Россия. Вариант 1 также уникален тем, что установочные файлы Windows имели цифровую подпись, в отличии от последующих вариантов.
Вредоносное приложение с использованием цифрового сертификата Интересно, что цифровой сертификат, используемый для подписи одного из вредоносных файлов Windows Electrum (EIZ Ltd), недавно использовался для подписания другого, несвязанного с этой атакой
вредоносного ПО.
Вариант 2Поскольку Вариант 1 был настолько успешным в краже значительных сумм Биткойна, казалось почти неизбежным, что вскоре будут еще попытки заработать на этой достаточно простой схеме. И конечно же, появился второй вариант вредоносных кошельков Electrum. Этот вариант атаковал довольно агрессивно, обгоняя сеть Electrum и приводя к краже большего количества биткойнов, чем Вариант 1.
Вместо перенаправления жертв на вредоносный Github сайт, Вариант 2 размещал вредоносные ссылки на загрузку в домене который был аналогом официального сайта Electrum. Содержимое HTML по сути являлось зеркальным копией оф.сайта Electrum.
Поддельный сайт, копия официального Похоже на то, что злоумышленники очень хорошо разбираются в коде Electrum. К примеру, в поддельной версии ПО, они отключили автоматическое обновление, удалили запросы на подтверждения, такие как «Да, я уверен», и даже отключили возможность RBF (замена существующей транзакции новой транзакцией с повышением комиссии).
Содержимое main_window.py Replace-by-Fee - это функция, которая была добавлена в кодовую базу биткойнов позже в процессе разработки, которая позволила бы пользователям по существу создавать Двойную трату (Double spending) в Electrum. В этом случае, если вы знали об этой функции, то могли бы отменить перевод украденных средств, используя более высокую комиссию.
Функция Replace-by-Fee в файле screens.py закомментирована (это исключает часть кода из компиляции) Ниже приведен модифицированный исходный код файла paytoedit.pyc, который был использован для перенаправления платежей на биткойн-адрес злоумышленника:
Биткоин адрес для получения украденных средств bc1qhsrl6ywvwx44zycz2tylpexza4xvtqkv6d903q
Total received: 187.8298 BTC / 941,436 USD
bc1q92md7868uun8vplp9te0vaecmxyc5rrphdyvxg
Total received: 55.9948 BTC / 201,326 USD
bc1q7hsnpd794pap2hd3htn8hszdfk5hzgsj5md9lz
Total received: 36.7358 BTC / 126,972 USD
bc1ql0p2lrnnxkxnw52phyq8tjr7elsqtnncad6mfv
Total received: 75.2927 BTC / 291,342 USD
bc1qyjkcthq9whn3e8h9dd26gjr9kd8pxmqdgvajwv
Total received: 21.8628 BTC / 84,678 USD
bc1qvr93mxj5ep58wlchdducthe89hcmk3a4uqpw3c
Total received: 27.3636 BTC / 138,733 USD
bc1qcla39fm0q8ka8th8ttpq0yxla30r430m4hgu3x
Total received: 232.6469 BTC / 1,166,068 USD
Вариант 2 - общая сумма в биткоинах: 637.7264 BTC
Вариант 2 - общая сумма в USD: ~$2,950,555.00Куда делись все украденные биткоины?Простой анализ блокчейн транзакций показывает, что средства, украденные Вариантом 1 были разбиты на меньшие суммы. Сумму 48,36 BTC сначала перераспределили по 3,5 BTC, а потом по 1,9 BTC.
Такая модель, вероятно, свидетельствует о том, что был использован метод отмывания денег, известный как смурфинг (smurfing). 1,9 BTC это приблизительно 7000 долларов США, депозиты на эту сумму вряд ли вызовут вопросы и повлекут за собой подачу отчета в FinCEN, поскольку эта сумма находится ниже порога в 10 000 долларов США. (
Структурирование (разделение, смурфинг). Большой объем наличных нелегальных средств разбивается на множество мелких сумм (к примеру, до 10 тыс. долларов в США).)
биткоины разбитые на части Наконец, 11 транзакций, показанных выше, объединяются с дополнительными 15 транзакциями перед отправкой на 329nUnJxz5zgr4vnNPu8JNwpa3qEJfucQX, адрес, который является частью
хорошо известного горячего кошелька криптовалютной биржи Bitfinex.
Первый шаг прежде, чем попасть в кошелек Bitfinex Заключительный шаг (1Kr6QSydW9bFQG1mXiPNNu6WpJGmUa9i1g)
В воскресенье, 14 апреля, мы заметили, что злоумышленники которые стояли за Вариантом 2, только что перевели сумму 114.61050153 BTC (более полумиллиона долларов):
Вариант 2 уведомление о транзакции Многие движения украденных средств из Варианта 2, похоже, следуют аналогичной схеме. Давайте посмотрим на недавний вывод 38.38517511 BTC с адреса злоумышленника “bc1qhsrl6ywvwx44zycz2tylpexza4xvtqkv6d903q”. Транзакция всегда делится на 2 выхода:
Транзакция разделена на два выхода Держим в памяти транзакцию 36.38011271 BTC, к которой мы еще вернемся, давайте сначала проследим за транзакцией в 2.0050624 BTC по адресу «1BCtXcP3gc7FygZMegeKUPsogo68aKRSPA», за которым следует перевод на «1wotccCFTuLQdCv46Bz3zqcosDCDwAWhd». Мы видим транзакцию, содержащую 2 выхода, в которых адрес «3DvWYYkzgHbyBgUTSjtPsLmkzs1R9frSrz» получает все средства. Другой вывод с именем «not-address» - это то, что известно, как скрипт
OP_RETURN. Этот скрипт обычно используется для записи данных в блокчейн.