Как крадут криптовалюты. Новые способы
Как крадут деньги, которых нет. Или кое-что новенькое о криптовалютах
Безусловно, ты знаешь о криптовалютах очень много, но сегодня мы принесли тебе кое-что новенькое: исследование вредоноса, созданного для кражи кошельков 80 криптовалют, включая биткойн вместе со всеми реквизитами доступа к ним.
Обнаружили мы его в ходе программы непрерывного мониторинга безопасности сети Интернет и тут же разобрали на запчасти несколько семплов вредоноса. Таких комбайнов по автоматизированному уводу криптокошельков у владельцев пока мало, но будет больше, мы уверены.
Ниже мы расскажем о том, как вредонос работает, и как не оказаться в группе риска. И конечно ещё раз просуммируем информацию о самих криптомонетах и их родственниках.
Кстати, финансовые регуляторы считают биткойн и всех его друзей валютными суррогатами, и мы ни в коем случае не пропагандируем их использование, а наоборот, призываем пользоваться фиатными деньгами как надёжным и стабильным платёжным инструментом. (Тут мог бы быть смайл)
Где хранятся монеты?
Представлением 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
Источник habrahabr