Компания
47,16
рейтинг
13 марта 2015 в 12:15

Разработка → Как крадут деньги, которых нет. Или кое-что новенькое о криптовалютах

Привет, Хабр!

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

Обнаружили мы его в ходе программы непрерывного мониторинга безопасности сети Интернет и тут же разобрали на запчасти несколько семплов вредоноса. Таких комбайнов по автоматизированному уводу криптокошельков у владельцев пока мало, но будет больше, мы уверены.

Ниже мы расскажем о том, как вредонос работает, и как не оказаться в группе риска. И конечно ещё раз просуммируем информацию о самих криптомонетах и их родственниках.

Кстати, финансовые регуляторы считают биткойн и всех его друзей валютными суррогатами, и мы ни в коем случае не пропагандируем их использование, а наоборот, призываем пользоваться фиатными деньгами как надёжным и стабильным платёжным инструментом. (Тут мог бы быть смайл)

А что за криптовалюты такие?

Криптовалюты в привычном нам виде появились в 2009-м году, когда некто Сатоши Накамото после 2 лет разработки запустил децентрализованную сеть обмена платёжными данными и опубликовал клиент для работы с валютой «Биткойн».

Стоит отметить, что и личность Сатоши до сих пор не является стопроцентно подтверждённой, и идея криптовалюты принадлежит вовсе не ему. Впервые подобные идеи были высказаны в 1998 году в тематических рассылках энтузиастов криптографии, а уже в 1999-м писатель Нил Стивенсон поместил идею криптовалюты в головы персонажей своего культового романа «Криптономикон» (Очень рекомендуем к прочтению. Прим. авт.). Известны и первые попытки создания подобных платёжных систем, имевшие все предпосылки к успешной работе задолго до анонса сети Bitcoin.

Однако именно детище Накамото, будь он реальным физическим лицом или псевдонимом группы авторов, стало коммерчески успешным. «Инфомонеты», поднялись в цене в миллионы раз с десятых долей цента в 2009-м до тысячи долларов и выше в 2013-м году. Это особенно интересно, учитывая, что валюта не обеспечена ничем, кроме доверия пользователей к криптографической сложности алгоритма и вложений в вычислительную мощь компьютеров, необходимых для добычи «майнинга» биткойнов.

Существенная коррекция стоимости криптовалюты произошла в конце 2013-го года, затем биткойны возобновили свой рост до следующего падения во второй половине 2014-го. Что ожидает «монетки» в будущем нам неведомо и прогнозами заниматься мы не станем, однако, предположим, что развитие вредоносов подобных описываемому способно лишить криптовалюту доверия и привести к оттоку пользователей.

К особенностям криптовалют, рассматриваемых нами на примере биткойна относятся, в том числе, следующие:
• Анонимность текущего владельца;
• Отсутствие централизованного регулятора;
• Хранение всех данных кошелька в едином файле.

Естественно, такого рода платёжное средство стало удобным инструментом для нелегальных транзакций (что на определённом этапе взвинтило его популярность и стоимость), а также объектом многочисленных хищений и мошеннических операций.

Где хранятся монеты?


Представлением Bitcoin-кошелька, на машине владельца является файл wallet.dat, содержащий приватный ключ пользователя системы. Этот файл создаётся во время первого запуска Bitcoin-клиента и сохраняется в каталоге %AppData%/Bitcoin. Злоумышленнику достаточно скопировать файл кошелька чтобы получить полный доступ к счетам пользователя.

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

Исходный код модуля работы с шифрованием кошелька Bitcoin



В случае применения шифрования, даже после получения злоумышленником доступа к файлу wallet.dat, перевести с него средства будет невозможно без получения реквизитов доступа.

Однако, уникальными возможностями исследуемого образца вредоносного ПО являются не только скрытное копирование кошельков Bitcoin и 80 других криптовалют (форков Bitcoin'a) но и извлечение паролей для зашифрованных кошельков без использования каких-либо кейлоггеров (клавиатурных шпионов) с помощью внедрения непосредственно в служебные процессы клиентского ПО. Разберёмся в процессе получения вирусом данных, необходимых для кражи биткойн-кошельков.

Что такое CryptoStealer?


PE-заголовок перехваченного и изученного файла содержит время компиляции и отладочную информацию, говорящую об оригинальном имени проекта, из которого был скомпилирован файл. Так мы и установили, что его название CryptoStealer, а время создания изучаемого образца – конец января 2014-го года.

Заголовок файла с датой компиляции семпла и отладочной информацией



Как происходит кража?


Скрытное копирование файлов кошелька выполняется следующим образом:
• CryptoStealer проверяет наличие каталога %APPDATA%\[Название криптовалюты] и % COMMON_APPDATA%\[Название криптовалюты] для всех 80 поддерживаемых криптовалют, например «C:\Documents and Settings\Owner\Application Data\Bitcoin\»;
• Если путь существует, проверяется существование файла wallet.dat, который, при наличии, копируется во временную папку;
• Файл кошелька отправляется на сервер злоумышленников.

Примечательно, что на профильных форумах о безопасности Bitcoin даются советы не хранить файлы кошелька в местах, принятых по умолчанию, предлагается размещать их на съёмных носителях, а Bitcoin-клиент запускать командой вида bitcoin-qt.exe –datadir=X:\wallet, таким образом явно указывая клиентскому ПО на место хранения файла кошелька. Но даже в этом случае могут быть считаны параметры запуска Bitcoin-клиента, а из каталога -datadir скопирован заветный файл wallet.dat.

Псевдокод функции отправки файла wallet.dat



А если файл кошелька зашифрован?



Еще одна важная функция CryptoStealer — перехват паролей шифрования кошельков. Она основана на следующем алгоритме:
• Выполняется поиск процессов программ для работы с криптовалютой, например «bitcoin-qt.exe», «litecoin-qt.exe» и т.д. Перечисляются все активные процессы, а их имена последовательно сравниваются с заранее сгенерированной базой из 8 десятков bitcoin-форков, к названию которых добавляется подстрока "-qt.exe".
• Производится внедрение кода в найденный процесс и запуск в нем удаленного потока(CreateRemoteThread).

Псевдокод функции перечисления процессов и внедрения кода



Псевдокод функции сплайсинга




• Выполняется сплайсинг (перехват) функции strlen из библиотеки msvcrt.dll. Данная функция проверяет длину вводимой парольной строки и, соответственно, оперирует самой парольной фразой.
• Новый код-обработчик перехватываемой функции strlen ищет активные окна ввода пароля шифрования к кошельку (класс QWidget, заголовок «Unlock wallet», «Encrypt wallet» и т.д.) и перехватывает ввод в них, фильтруя вызовы функции подсчета длины строки для «служебных» строк приложения Bitcoin.

Псевдокод функции-обработчика хука



Отладка кода перехвата пароля





• Пароль к кошельку отправляется на центр управления злоумышленникам. Запрос в закодированном виде включает в себя помимо пароля аппаратный идентификатор компьютера и название типа криптовалюты. Кодируется запрос в системе кодирования Base64, и его расшифровка не представляет сложности.

Перехват и декодирование трафика приложения





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

Исходя из вышеописанного, типичный пользователь не имеет возможности эффективно противодействовать и даже обнаружить CryptoStealer.

Тем не менее, существует ряд рекомендаций, способных существенно снизить риск заражения ПК вирусным ПО, в том числе, рассматриваемым в исследовании образцом:
• Для проведения любых финансовых транзакций и прочих чувствительных операций необходимо использовать отдельный компьютер. Допустимо использование виртуальной машины, изолированной от воздействий внешней операционной системы, но выделенное устройство лучше;
• Компьютер или виртуальная машина должны использоваться исключительно для означенных операций, посещение несвязанных с описанными целями сайтов и подключение недоверенных внешних носителей информации следует исключить;
• Данный компьютер должен быть оснащён антивирусным ПО с последними обновлениями сигнатурных баз и средствами межсетевого экранирования с актуальными правилами фильтрации;
• Межсетевая фильтрация к «финансовому» ПК применима только в разрешительном формате. Реджектим всё, кроме белого списка необходимых адресов. Лучше делать это с помощью внешнего устройства;
• Следует перепроверять адреса, по которым совершаются переходы в сети интернет на предмет фишинга (подмены символов в имени узла сети на похожие знаки для увода пользователя на мошеннический ресурс).

Список криптовалют, попадающих в группу риска


Bitcoin, Litecoin, 42Coin, Alphacoin, Americancoin, AndroidsTokens, Anoncoin, Argentum, AsicCoin, avingCoin, BBQCoin, BeaoCoin, BitBar, bitgem, bits, Blakecoin, Bottlecaps, BountyCoin, Bytecoin, CasinoCoin, CHNCoin, Cloudcoin, Colossuscoin, Copper Bars, CosmosCoin, CPU2coin, Craftcoin, Crimecoin, CryptogenicBullion, CryptogenicBullionC, Devcoin, Diamond, DigitalCoin, Dogecoin, DollarPounds, Dragoncoin, EagleCoin, Earthcoin, ElephantCoin, Extremecoin, EzCoin, Fastcoin, FeatherCoin, FerretCoin, Florincoin, Franko, FrankoCoin, FreeCoin, Freicoin, Galaxycoin, Gamecoin, GlobalCoin, Goldcoin, Grain, GrandCoin, Growthcoin, HoboNickels, infinitecoin, ItalyCoin, Ixcoin, Joulecoin, Jupitercoin, KingCoin, krugercoin, last Coin, Lebowskis, Liquidcoin, Lucky7Coin, LuckyCoin, Maples, mastercoin, MasterCoin, Mavro, Megacoin, MEMEcoin, MemoryCoin, Mincoin, NaanaYaM, Namecoin, NanoTokens, Neocoin, NetCoin, NovaCoin, Nuggets, NXTCoin, Onecoin, OpenSourcecoin, Orbitcoin, Paycoin, PEERCoin, Pennies, PeopleCoin, PhenixCoin, Philosopherstone, PlayToken, PPcoin, PrimeCoin, ProtoShares, ProtoSharesCoin, QuarkCoin, RealCoin, Redcoin, RichCoin, RoyalCoin, Sauron Rings, Secondscoin, SecureCoin, Sexcoin, SHITcoin, Sifcoin, Skycoin, Spots, supercoin, TagCoin, TEKcoin, Terracoin, TicketsCoin, tumcoin, UnitedScryptCoin, Unobtanium, UScoin, ValueCoin, Worldcoin, XenCoin, YACoin, Ybcoin, ZcCoin, ZenithCoin, Zetacoin
Пользуетесь ли Вы криптовалютами?
5%
(31)
Да, пользуюсь и крайне взволнован прочитанным
21%
(120)
Да, пользуюсь, но уверен, что вне опасности
34%
(195)
Нет, не пользуюсь, но хочу попробовать
17%
(100)
Нет, не пользуюсь, а после прочитанного и тем более не буду
17%
(95)
Только валюты, обеспеченные ценностями. Ну и доллар)
6%
(33)
Не понимаю о чём Вы, а под спойлер не заглядывал

Проголосовало 574 человека. Воздержалось 138 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Автор: @andreybryzgin
Group-IB
рейтинг 47,16

Комментарии (28)

  • +2
    заголовок желтый а статью можно сократить до: А вы знали что вирусы могут украсть деньи с вашего *Coin кошелька даже когда он зашифрован?
    • +5
      Что касается сокращения статьи до «А вы знали...», не соглашусь с Вами, малварь из ряда вон выходящая по ряду параметров. Тут и охват разных видов криптовалют, и возможность похищения реквизитов доступа к шифрованным кошелькам, и ещё куча удивительных вещей.

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

      Мы могли бы назвать статью «Just Another Malware» (Согласитесь, JAM — удачная аббревиатура), но решили привлечь немного внимания. Надеюсь, желтизна никого не оскорбила.
  • 0
    Продвинутый пользователь и так знает о такого рода опасностях, как и о методах противостояния им.
    А типичному пользователю будет не понятно о рекомендациях снижения риска кроме, разве что, использования отдельного компьютера.
    Но за обзор в целом — спасибо.
    • +2
      Продвинутые пользователи на ресурсах посвящённых криптокоинам активно убеждают друг друга что шифрованный кошелёк — гарантия безопасности. И они не голословны, большинство специализированной малвари ограничивается кражей кошельков с надеждой на то, что они не защищены паролем.

      А типичному пользователю под спойлером мы рассказали про криптовалюты немного общих вещей и порекомендовали отличную книгу.
  • 0
    Интересно, кому понадобились форки и альткоины ниже 10-ой строчки по капитализации? Видимо, коллекционеры вредоноса писали)
    Еще в 2011 году я написал статью, как можно довольно безопасно хранить криптовалюту. Версии ПО в материале, конечно, устарели, но методология до сих пор актуальна.
    • 0
      Дело в том, что скорее всего кошельки всех этих валют по структуре одинаковы, т.е. для того чтобы чуть расширить доход с такого зловреда надо лишь немного увеличить массив для поиска и все. Тем более пользователи альтернативных криптовалют могут быть менее обеспокоены, т.к. могут думать, что зловреды нацеленны только на популярные форки. То есть они могут принебрегать безопасностью.
      • +1
        Верно предполагаете, форки биткоина потому и называются форками, что они ветвятся от единого кода и обладают общими характеристиками. Иными словами, при верной методологии написать малварь, похищающую 80 видов кошельков совсем не в разы сложнее чем создать таковую под один форк. Мы постоянно видим примеры взлётов и падений разных валют, поэтому жадность вирусописателей можно понять: кто знает, сколько будет стоить через год монетка, которую сегодня можно взять даром?
        • 0
          BURST например не форк биткоина и его в списке нет. Кроме-то там вообще нет wallet.dat — для входа в кошелек нужно знать длинную парольную фразу.
    • +1
      Хороший материал, спасибо за ссылку, уверен, многие почерпнут полезных навыков при работе с важной информацией.
  • –3
    Интересно, что специалисты по безопасности скажут про сайты крипто-кошельки?

    Вот btcbank.com.ua например весьма удобен тем, что сразу и биткоины в можно купить… для тех кто хочет попробовать, что за зверь эти криптовалюты.
    правда только для Украины.
    • +1
      Порталы-холдеры для криптокошельков — это, вероятно, очень удобная в использовании вещь, которая со временем накапливает существенную валютную массу и превращается в лакомый кусок для взломщиков.

      Как уже писали в статье, мы не одобряем использование денежных суррогатов и ценим только фиатные валюты (опять-таки смайл был бы уместен), но если предположить, что всё же стали бы хранить деньги в криптокойнах, то скорее всего, не стали бы доверять свои кошельки сторонней площадке.

      Атаки на криптокошельки сейчас в растущем тренде и следует ожидать дальнейшего увеличения таких активностей и миграции ряда технологий из банковских троянов в вирусы, подобные описанному. Появятся и автозаливы, и специфические зловреды для мобильных устройств. Защищённость онлайн-транзакций определяется защищённостью клиентской машины (логическое и) операторской части, а для клиента вторая составляющая всегда покрыта флёром тайны. В общем, самостоятельно защитить файл с платёжными данными, на мой взгляд, проще.

      Про btcbank могу сказать, CentOS, Apache 2.2, PHP, JQuery. Судя по WHOIS, домен принадлежит Вам. Ещё могу сказать, что внутри Вас живёт талантливый маркетолог, который умело заносит ссылку на онлайн-холдер в тему про опасность хранения кошельков на домашнем/рабочем ПК.

      Судя по входным данным, в ресурсе есть куда копать в плане безопасности, обратитесь к нам или другому крупному техаудитору, сможете выявить и устранить дыры, повесите на главной логотипчик «security tested by..» и повысите доверие пользователей. Кстати, мы не принимаем оплаты в криптовалютах. >smile type=«coin» /<

      P.S. Извиняюсь за коммерческие настроения в комментариях.
      • 0
        «то скорее всего, не стали бы доверять свои кошельки сторонней площадке»… ну как-бы есть банки, и есть счета в банках и никто не хранит деньги под подушкой… хотя и из банков и с карт воруют… тогда в чем разница?

        P.S. Это риторический вопрос, на него можно не отвечать.

        • 0
          Люблю отвечать именно на риторические)

          Банки работают с легальными валютами в правовом поле и несут ответственность за вклады (добровольную или вынужденную). Банки вкладывают серьёзные деньги в безопасность и регулярно проводят пентесты и аудиты всего. Даже пользовательские хосты банки начали защищать как только мы и наши соседи по рынку предложили достаточно эффективные и изящные решения, работающие без установки на клиентские ПК (Кстати, если будут реквесты, мы, вероятно, даже сможем рассказать кое-что про технологию). И может быть удивлю, но по итогам 2014-го года мы зафиксировали снижение количества хищений. Наконец, банки могут преследовать взломщиков в законном поле и в перспективе возвращать часть украденного (Пример — группа Carberp).

          Держатели онлайн-хранилищ в массе своей лишены этих преимуществ и если владелец ресурса не уйдёт в ночь по достижении некоторой суммы в активе, то весьма подвержен атакам, по результатам которых может лишиться всех доверенных в управление средств. Инцидент с Mt.Gox, пожалуй, самый известный, но далеко не единственный.
          • 0
            Все таки есть технологии типа hot/cold wallet. Так что при должной организации безопасности можно избежать потери всех клиентских активов в случае успешной хакерской атаки.
            Недавняя история с bitstamp — явный тому пример.
            • 0
              Тут Вам виднее, но мне всегда казалось, что прибыль финансовых площадок существенно меньше суммы оборотных средств на хранении и хищение даже небольшой части доверенных в управление средств больно ударит по карману. Иными словами, не обязательно выводить всё, площадка может накрениться и от небольших воздействий. Это в формате софистики.

              А прятать неиспользуемые активы подальше — хороший подход, вносящий свой немалый вклад в защищённость.
          • –1
            Стоит урегулировать этот вопрос на юридическом уровне, как банковский сектор потеряет прибыль, а получат эту прибыль появившиеся (как грибы после дождя) обменники на территории РФ. И пока денежные монстры дойдут, до того, что это еще один способ заработатать, обновят инфраструктуру, наймут специалистов и т.д и т.п. пройдет много времени. Так что банковское лобби тут очевидно. Проще запретить, чем ввести в оборот и дополнить соответствующими инструкциями регулирующие органы. Ведь нет ничего страшного, что человек откроет счет в биткоинах за рубежем. Надо будет лишь оповестить налоговую и все. Остальным может спокойно заниматься РосФинНадзор, точно так-же как они это делают сейчас.

            Видимо недавний шум про скайп и ОПСоСов успели забыть (напомню, это когда хотели брать дополнительные деньги за скайповый траффик с своих сетях).

            Мы (ну или большинство) все понимаем. И снисходительно на все это (решения) смотрим.

            Про Carberp. Сколько было украдено? Сколько было заявлено? Сколько вернули? Там и 10% не будет. Да и с кем банковский сектор пытается бороться? Ловят то в основном дропов. Чего стоит Кристина Свечинская и раздутый скандал. Чуть ли не политический мотив нашли. Ну бред же. Вы конечно можете напомнить про кардерпланет, но и там все объяснимо. Люди начали наглеть и работали по России. Тут видимо интересы пересеклись. Все очевидно.
  • +1
    Я правильно понимаю, что страдают только виндовые пользователи?
    • +11
      Винда и страдание — они всегда рядом.
    • +2
      Описываемый зловред — виндовый
  • 0
    А есть ли список Ip адресов куда эти уроды информацию сливают, чтобы их в блек листы внести?
    • 0
      Семплы, которые мы исследовали, отстукиваются на f8b2b9.su

      Естественно, сейчас домен снят с делегирования.

      Ну и Вы же знаете, что систему, оперирующую крупными суммами, следует файерволлить белыми списками, а не чёрными? И фильтровать лучше внешним устройством.
      • 0
        Все верно. То, что для операций с финансами нужно отдельное устройство иметь, это нас всех еще вирусы вебманщики в начале нулевых научили.
      • 0
        внесите белый список в свой список рецептов в статью, а то последний пункт мягковат и больше смахивает на призыв к использованию черного списка.
        • 0
          Спасибо за комментарий, дописал.
          • 0
            Это вам спасибо! Статья дельная, мысли грамотные. Хотя в целом ситуация с антивирусной защитой просто ужасает.
  • 0
    Как инфоповод еще ладно, сойдет, но как статья — не ахти.

    Одни только мало-облагороженные листинги из Иды чего стоят — выглядит крайне некрасиво. Вы же людям это показываете, могли бы листинги обработать, потратить на них еще пять минут, а нет же — скриним что есть с минимальной обработкой, все равно схавают.

    По файлу же инфы ноль: ни то как антивирусы его детектируют, ни хеша, ничего — просто взяли из pdb самоназвание и timestamp указали.

    Для Group-IB как-то не солидно, что-ли…
    • +1
      Спасибо за отзыв. Негативные мнения куда полезнее для развития, чем позитивные.

      В каком виде Вам было бы удобнее читать листинги? Специально посмотрел Вашу публикацию, примеров не нашёл, расскажите, пожалуйста.

      Что касается информации по файлу, Вы как исследователь малварей прекрасно знаете сколько сегодня стоит закриптовать семпл и сколько раз на дню это можно делать. Хэш файла, созданного в январе 2014-го едва ли будет полезен кому-либо, но тем не менее, вот он: 830FED2ACA9DF73B7CF55FD7051ED5CD

      Антивирусники же по понятным причинам не детектят его сигнатурно, адекватной эвристики для его поведения на момент проведения исследования тоже никто не предоставлял.
      • 0
        Так почему это пишется в комментарии, а не в самом посте?
        Так бы и написали — с некой связки снимался такой-то файл, туда прикручен серверный криптор, или по некоему линку с таймаутом в 10 минут выдавался каждый раз… в общем, думаю, понятно.
        О том, что он детектился/не детектился можно было написать. Про то, что на том же хосте у тех же авторов (или по партнерке) сидел еще и зевс тоже можно было указать. Язык написания, единичный это экземпляр или он популярен, что за семейство и т.д.
        По поводу скринов в моих каких-то мини-статьях на просторах инета — я вообще стараюсь не делать скринов для пояснения чего-либо, только для красного словца и для разнообразия их даю, в крайнем случае для пущей наглядности приходится скринить, а так стараюсь описывать все словами. Но не о мне речь.

        На приведенные скрины мой взгляд такой:
        1. На скринах иды после объявления переменных автокомменты ни к селу ни к городу, только портят картину (eax@7 и прочее подобное).
        2. Давать псевдокод внедрения через удаленные потоки. Это вообще зачем? Это же банальщина.
        3. В скрине из Олли нет никаких сделанных вручную комментов, только обведены строки, хотя они итак в глаза бросаются, ибо вообще там больше ничего нет. Только безымянные коллы и джамп
        4. На скрине с FindWindow — почему не переведены кракозябрики?

        Что в итоге имеем? Беглый анализ одного (даже не семейства о котором ни слова) единственного файла.
        Про эвристику поведения тоже в статье не слова. Как и на ком проверяли? Тема же реально интересная, могли бы сделать конфетку из статьи.

        За статью ставлю плюс. Жду следующих публикаций на уровень выше :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка