Майнинг в браузере: Coinhive и WebAssembly

  1. Начало майнинга в браузере
  2. Coinhive et al.
  3. WebAssembly
  4. Это вредоносное ПО?
  5. Когда хорошие собаки делают плохие вещи
  6. Как все это работает в дикой природе?
  7. Активная инфекция № 1: «Базовый» майнер
  8. Активная инфекция № 2: «продвинутый» майнер
  9. Сравнение двух активных майнеров
  10. смягчение
  11. Отключение WebAssembly и / или JavaScript
  12. Выводы и заявление о защите
  13. Показатели компромисса
  14. Серверы ретрансляции WebSocket
  15. Хеши (файлы WebAssembly)

Мы рассмотрели основные понятия блокчейна, криптовалют и майнинга монет в нашем предыдущий блог ,

Как мы уже говорили, после нескольких эволюционных шагов с помощью алгоритмов майнинга интегральных схем для конкретных приложений (ASIC) вернулись к своим корням: «скромный» персональный компьютер. Пригодность таких алгоритмов, как CryptoNight (которая лежит в основе валюты Monero), в конечном итоге привела к переносу исходного кода на JavaScript и отходу от более традиционного подхода, заключающегося в использовании автономных исполняемых файлов для майнинга, вместо выполнения кода из процессов браузера.

Начало майнинга в браузере

Этот новый подход означал, что любой браузер, поддерживающий JavaScript, можно было использовать для добычи монет, и вскоре появились сервисы для использования процесса монетизации веб-сайтов. Это естественным образом привлекло киберпреступников, поскольку теперь не было необходимости в кропотливом процессе развертывания и сохранения бинарных файлов - все, что требовалось, - это просто внедрение кода на веб-странице.

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

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

Coinhive et al.

Coinhive - законный сервис, который впервые появился в середине 2017 года как майнер на основе JavaScript, поддерживающий майнинг (XMR). После встраивания в веб-сайт он использует ресурсы ЦП посетителя для майнинга, обеспечивая тем самым альтернативный поток дохода для обычной рекламы. Благодаря его относительно быстрой адаптации - что, по крайней мере, частично можно отнести к тому факту, что The Pirate Bay был одним из первых ее покровителей, - к концу 2017 года более тысячи сайтов включили его код.

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

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

Естественно, сильное поглощение Coinhive привело к развитию конкурирующий Сервисы в конце 2017 и начале 2018 года вместе с несколькими простыми в использовании плагинами для майнинга для популярных веб-платформ, таких как WordPress.

WebAssembly

Ключ к большинству майнеров в браузере: WebAssembly (сокращенно Wasm): новый формат двоичных инструкций, использующий виртуальную машину на основе стека, разработанную в качестве переносной цели для языков высокого уровня, таких как C / C ++. Его основные цели разработки включают в себя эффективность времени загрузки и близость к собственной скорости выполнения в безопасной изолированной среде - например, в изолированной программной среде JavaScript в браузере. Группа сообщества WebAssembly отвечает за открытый стандарт.

Первая версия WebAssembly «Минимальный жизнеспособный продукт» (MVP) была выпущена в марте 2017 года, и в настоящее время стандарт поддерживается всеми основными браузерами, включая Firefox, Chrome, WebKit / Safari и Microsoft Edge.

Несмотря на многочисленные варианты использования, многие из которых перечислены в проектной документации WebAssembly, легко понять, как эта технология понравится разработчикам монетных майнеров: майнеры в браузерах вынуждены мириться со значительным падением производительности по сравнению с «нативными». код, а внимание WebAssembly к скорости помогает восполнить этот пробел. Для справки разработчики Coinhive предоставляют следующие рекомендации по производительности:

Конечно, при работе с JavaScript производительность по-прежнему невелика, но это не так уж плохо. Наш майнер использует WebAssembly и работает с 65% производительности собственного майнера.

Это вредоносное ПО?

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

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

С другой стороны, выполнение хэширования с согласия пользователя не является злонамеренным действием - по крайней мере, некоторые пользователи могут захотеть запускать эти сценарии, если это означает отсутствие рекламы на веб-сайте. В начале 2018 года Салон Веб-сайт экспериментировал с этим подходом ,

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

Когда хорошие собаки делают плохие вещи

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

Политика Google Web Store изначально была разрешающей в отношении майнинга расширений: до тех пор, пока единственной целью расширения был майнинг и пользователь был должным образом проинформирован, он не был бы забанен. Тем не менее, многие не соблюдают эти правила, и в результате Google недавно предпринял шаги по эффективному ужесточению правил. запрещение любых расширений майнинга из Интернет-магазина Chrome.

Это оставило плохих парней с проверенным подходом внедрения кода сайта.

Как все это работает в дикой природе?

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

Поскольку популярность майнеров на основе браузера высока среди киберпреступников, уязвимый веб-сайт может быть потенциально скомпрометирован более чем одним субъектом: например, веб-сайт, показанный ниже, был скомпрометирован тремя отдельными киберпреступниками - все с использованием слегка отличающихся инструментов браузерного майнера. , Обратите внимание на отсутствие видимых доказательств майнеров на самом сайте.

,  Обратите внимание на отсутствие видимых доказательств майнеров на самом сайте

На изображении ниже показана полная цепочка заражения, видимая в захвате пакета при посещении этого сайта:

На изображении ниже показана полная цепочка заражения, видимая в захвате пакета при посещении этого сайта:

К тому времени, когда мы проанализировали сайт, первый из трех майнеров был удален, однако два других все еще работали. Введенный код для этого неактивного майнера показан ниже.

Введенный код для этого неактивного майнера показан ниже

Активная инфекция № 1: «Базовый» майнер

Первым активным майнером является широко доступный браузерный майнер («Базовый майнер» на диаграммах).

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

Изображение ниже показывает инъекцию для «основного майнера»

После загрузки он сначала загружает двоичный файл CryptoNight WASM, а затем немедленно начинает майнинг, направляя свой трафик через общеизвестные прокси-серверы coinhive.com (см. Ниже).

Ниже)

Активная инфекция № 2: «продвинутый» майнер

Многие общедоступные «серые / черные» майнеры также имеют частные версии для подписчиков, которые, как правило, гораздо сложнее обнаружить. Второй активный образец («Advanced Miner» на диаграммах) является потенциально одним из них. Его код для инъекций показан ниже.

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

Интересно, что этот майнер использует по крайней мере один прокси-сервер динамического DNS (см. Фрагмент кода ниже) для передачи данных майнинга через соединения WebSocket, что значительно усложняет обнаружение и блокировку.

{ "Домены": [ "d.cfcnet.top", "d.cfcnet.gdn", "d.cfcdist.gdn", "cfcd.duckdns.org"]}

Сравнение двух активных майнеров

Стоит отметить, что базовый код в «базовом» и «продвинутом» майнерах очень похож - в общем случае это происходит в случае большого количества майнеров на основе WebAssembly, многие из которых, по-видимому, являются минорные варианты кодовых баз доступны на GitHub. Эти 'copycats' в основном немного подправлены, чтобы избежать обнаружения, обычно путем изменения имен функций 'творческим путем' (batmanrobin, darkshadow, krypt0n1ght) или путем полного удаления ссылок на исходный источник языка C.

В таблице ниже сравниваются функциональные возможности двух майнеров.

'Basic' Miner 'Advanced' Miner Injection Легко обнаруживается, содержит ключевые слова, связанные с майнингом в браузере. Более безобидный вид, основной скрипт майнера скрыт за сокращением URL. Обфускация майнерских скриптов Почти не существует, только самые критические ключевые слова запутываются с использованием шестнадцатеричных значений. Кодировка Base64 для всего сценария, критические ключевые слова закодированы в шестнадцатеричном формате, плюс некоторая динамическая запутанность. Инфраструктура прокси-сервера WebSocket Публично известная и статичная, использует серверы coinhive.com WebSocket. Частный и динамически обновляемый, что делает удаление намного сложнее.

смягчение

Веб-сокеты

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

Поскольку стандарт для WebSockets предусматривает, что сеансы должны быть открыты как HTTP, а затем «обновлены» до WebSocket (см. Пример ниже), это не допускает прямой связи с большинством «пулов» добычи монет, которые обычно используют протокол, называемый слой ,

Пример ниже), это не допускает прямой связи с большинством «пулов» добычи монет, которые обычно используют протокол, называемый   слой   ,

В результате операторы операций майнинга в браузере должны настроить серверы WebSocket для прослушивания соединений от своих майнеров и либо сами обрабатывать эти данные, если они также используют собственный пул майнинга, либо «развернуть» трафик и перенаправить его на сервер. общественный бассейн, если они этого не делают.

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

Отключение WebAssembly и / или JavaScript

Примечание. Следующие действия выполняются на ваш страх и риск.

Что-то вроде ядерной опции, только Firefox и Chrome поддерживают отключение Wasm по состоянию на апрель 2018 года. Для этого следуйте инструкциям ниже. Прежде чем делать это, учтите, что этот подход может помешать нормальной работе растущего числа сайтов по мере дальнейшего внедрения технологии.

В Firefox: перейдите к about: config и установите для javascript.options.wasm значение false

В Chrome: перейдите к chrome: // flags / # enable-webassembly и измените его на отключенный

Если отключение Wasm является ядерной опцией, то отключение JavaScript вместе - термоядерная опция. Советы по безопасности часто включают в себя рекомендации для плагинов, таких как NoScript для этого. Хотя это значительно повышает безопасность, это снова окажет влияние на функциональность веб-сайтов, и вам следует подумать, подходит ли это для вашей организации и привычек просмотра.

Выводы и заявление о защите

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

Упрощенный процесс майнинга представляет собой не что иное, как арифметические инструкции, выполняемые для решения заранее определенного фрагмента головоломки. Это вряд ли можно считать вредоносным само по себе.

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

Forcepoint применяет комбинаторный подход к обнаружению и блокированию майнеров, связанных с взломанными веб-сайтами, блокируя экземпляры сценариев, которые мы идентифицируем, но, что более важно, блокирует серверы командования / ретрансляции WebSocket, от которых зависят целые кампании.

Таким образом, клиенты Forcepoint защищены от этой угрозы на следующих этапах атаки:

Этап 5 (Dropper File) - вредоносные файлы не могут быть загружены.
Этап 6 (Call Home) - попытки связаться с сервером C2 блокируются.

Показатели компромисса

Примечание. Приведенный ниже список МОК не является исчерпывающим и в основном посвящен образцам и кампаниям Wasm, рассмотренным в этой статье.

Серверы ретрансляции WebSocket

cfcnet [.] top cfcnet [.] gdn cfcdist [.] gdn cfcdist [.] заем cpufan [.] клуб уильям [.] com

Хеши (файлы WebAssembly)

978c69b6b93a66e47236abc0f36c79096429111d 5117b6d9fd649e5946be0d3cbe4f285d14f64ca2 99e5c6e9bd5ffebf7afe070fb53ee08f10cc707f 96d82c07ef7e15465073bff9e07c30e54f867f50 8a31ff73da067ac87e098effcce909390b568965 16340175dad11597028d434a34365ee46fb815d9 f43a873add72fa6e6b5465d5cdd7ec275dadfaa5 f3353f1a3da825bcc4a552805cf345531a1e48dd eba038b18f32227a9dd1e761fb69029dda6bdbdd 730efe35879cd09c2dc1e18c21f79896fe611120 72616671f4fcebf2b357de851c3598b33108c9a1 957b140c2b28508c78e9b526769f2e9ab6e664da 54612d3dc9ac23c1b49ac3243db12eb5c003118e a3da43bb12093017143c2888c8fddd7e12479bd6 b6c6e98ddca1030b4d9261972506088115fcd04f 58776b6dccf4c0d7a329e64fdeb4f6d13dc3cd2e cbf527baabc7e344cb8f9ec37f0ee490ce800dc1 9392401eb40c0bdac3e22d5430a79af16f3424d5 bcf77c7424c4707b9ea57c82abf1a0859a456784 ba38dc9fb45946228081bd6932e533461e4b3a98 ef58f8c31ab2bc380afc13f691f7b9415aa2dac2 07506bbb3873180d97834622cd55e6cd890a92d2 19c0abdfcf37fdf0bd102b90f6c05b081ea772d0 7bc4adbb43f26f0d954946ae3c4a5e3b91882e9c 04e7b1e1251fb0c1 8753d0b413f69d5c34c17acf f6a08de1f9c9f79d39455ab31d91c1b44f859116 2a35af592d672d45848548fa17c67b7cc952f05d bc387716f4de26ae78a8c10c9d41b3f40cf517ab d0a66bc0e408e04776e0bec1fc18864974df0198 da6269118b9b8aec68ba7c22de689a7f8e3e1d42 ad765a663c40457cf96c8023500d24f02711f30d b3338cae76b9eacf477af92b4bcfd8cba8f2a516 59d33942585d970b75d2c2e9993d18335edb07bc 8ca54a1a926e5cb0b3a33baa3c58ff3acdbfc515 432fac1f706388be3f7257dd71388021e53038ad 971960066074c62f986215cdf0d85f36b0b33f0f 032c4d6c50c11b3dc247f1941bf77700720ac7e0 29122c16de434eccb4c3abe0c899ae47f9829dde 8c964de7bb13fa9683eed76c419256462393c55c 957cc99377fadb192483a9810660a2fc1f5451fb 608a65e5d08e4cb8362ffbb773a99e78b89d1b5c a0afabb912d593dd2ca9332a1367c1a7614dc3e3 f234378e7b3a93e1dfe06f3efebcee204becaa49 6b7423ab78e38cb8a4263d12c1c2158536fd02cd 57d9f3e422fca7dddbaa381230a6e20921d4a2ac 11c91a43f77f0a7b1da10f52160d52478464c86a b1ce36407b3a456e8bd0fb33b777d84f884db072 c8e27ae2938ea4be173e796f83c843009d21d883 198370faa7488ad8bb95d170880bd520 45576eff 4387f76d9c49232f62a41c55c6a48eb38dc97eee 786df01387091a23b15b11385e61e3d441b50bca b291f9545faea0cc4ff8ab44e7ea766f85d4993c 5abf24ed6a7b85b0fae6560fe67bcdc9f8406a11 edd53e16aee9344d580bc3e57b1b2e30d11f5d14 c147b98d461210f8aa835bb9636db2dbf358cd0a

Это вредоносное ПО?
Как все это работает в дикой природе?
Вопрос для индустрии безопасности - тот, что был поставлен выше: это вредоносное ПО?