Как бороться с майнерами криптовалют в корпоративной сети
На днях ФСБ нагрянула в аэропорт Внуково и задержала администратора, который на вычислительных мощностях авиационной гавани майнил криптовалюту (аналогичная проблема была и в Транснефти). Сразу отвечу на часто звучащий вопрос: «А причем тут ФСБ?» Все очень просто. Внуково — это не только аэропорт для обычных пассажиров; из Внуково-2 летает Президент России и члены Правительства, что делает эту воздушную гавань критически важным объектом для национальной безопасности. И когда в ней происходят по непонятной причине скачки напряжения, которые могут повлечь за собой отключение отдельных систем управления воздушным транспортом, то за дело берется именно ФСБ. Но вернемся к майнингу. В последнее время мы получили несколько запросов от заказчиков с просьбой объяснить, как можно обнаружить факт использования майнеров в корпоративной или ведомственной сети? Учитывая растущее число таких вопросов, мы и решили написать эту заметку.
Начнем с того, что майнинг — это не типичная угроза информационной безопасности. Программное обеспечение для майнинга криптовалют напрямую не наносит ущерба вашим информационным активам. Кражи или модификации данных нет (обычно). Перехвата управления технологическими или производственными процессами тоже. Нарушения доступности? Вероятно тоже. Но есть тормозящий компьютер, нагрузка на электросеть (а за электричество платит компания), затраты на Интернет-трафик (может быть актуальной проблемой при лимитированном трафике) и садящаяся в ноль батарейка у ноутбука, что можно попробовать транслировать в финансовый ущерб для компании (хотя это и не просто). Самое неприятное, что кто-то за ваш счет может наживаться и получать баснословные барыши (достаточно посмотреть на курс криптовалют, чтобы нервно кусать локти и жалеть, что совесть не позволяет самому майнить на корпоративных ресурсах). Но… бывает и так, что майнинг сопровождает вредоносное программное обеспечение, что делает его уже более серьезной проблемой для специалистов по информационной безопасности. В любом случае, одна из задача ИБ (да и ИТ тоже) — знать, что происходит в ее хозяйстве и иметь инструментарий для контроля любой активности, легальной или не очень. Поэтому вопрос обнаружения и, зачастую, блокирования майнеров, становится все более актуальным.
Если почитать множество заметок в Интернет о том, как обнаружить майнера у себя на компьютере, то обычно все рекомендации сводятся к одной основной — обращать внимание на тормознутость своего ПК, что определяется по ощущениям или с помощью визуального анализа планировщика задач (Task manager в Windows или Activity monitor в MacOS), который отображает загрузку процессора для разных приложений и процессов. Однако эта рекомендация больше подходит для домашних пользователей, чем для корпоративных, не имеющих возможности отслеживать нагрузку процессора сотен и тысяч компьютеров. Поэтому попробуем взглянуть на проблему майнинга немного с иной стороны, а точнее с точки зрения так называемой цепочки kill chain, отображающей набор шагов, которые осуществляет нарушитель (свой пользователь, устанавливающий майнера к себе на ПК, тоже является таковым) в процессе запуска майнингового ПО у себя на узле. Если это свой пользователь, то обычно последовательность будет такой:
- посещение сайтов для майнинга
- скачивание ПО для майнинга
- инсталляция ПО для майнинга
- запуск ПО для майнинга
- майнинг
- взаимодействие с пулами майнеров для обмена информацией о полученных блоках и хешах
- получение вознаграждения.
Несанкционированная установка майнера на компьютер ничего не подозревающего пользователя выглядит немного иначе на первых и последних стадиях kill chain:
- поиск жертвы
- подготовка плацдарма (внедрение майнингового скрипта на сайт, создание майнингового ПО, внедрение майнингового ПО в какое-либо свободное или условно бесплатное или пиратское ПО, внедрение майнинговой функциональности в вредоносное ПО)
- «заражение» пользователя майнинговым ПО (через скрипт на сайте, путем скачивания его из Интернет, получением в виде вложения в почту или на флешке)
- запуск майнера
- майнинг
- взаимодействие с пулами майнеров или с командным центром для передачи получаемой в результате вычислений информации.
Помимо обычной загрузки майнера или включения майнинговой функциональности, например, в торрент-клиента, возможны и различные многоходовые схемы. Например, на компьютер пользователя сначала попадает невредоносное ПО (и поэтому оно может не детектироваться ни антивирусом, ни средствами защиты), которое подгружает специальный установщик (downloader), который и скачивает из Интернет майнера и скрытно инсталлирует его на компьютере ничего не подозревающего пользователя. Обратите внимание, что вместо скачиваемого файла это может быть и скрипт на посещаемом вами сайте (очень популярным является скрипт Coin Hive).
Менее популярным, но также возможным способом является попадание майнера на компьютер через вложение в e-mail или ссылку в письме, а также через рекламный баннер или фальшивую кнопку на сайте, нажатие на которые приводит к загрузке майнера на компьютер. Хочется опять обратить ваше внимание, что сам по себе майнер не имеет вредоносных функций. Более того, пользователь мог сам, легально его себе установить. Именно по этой причине, в традиционных антивирусах этот тип ПО не блокируется по умолчанию, а всего лишь может обнаруживаться (если у антивируса есть соответствующий набор сигнатур).
Еще одним важным моментом является то, что майнер не работает в одиночку. Он обычно является частью целой ботсети (пула майнеров), с командным центром которой он взаимодействует — получая команды или отправляя результаты своей работы. Поэтому майнер можно обнаружить не только по его активности на узле, но и в процессе сетевого взаимодействия — после отправки хешей или получении новых команд или данных для вычислений.
Как же предлагает бороться с майнинговым ПО компания Сиско? Мы, следуя нашей классической стратегии «ДО — ВО ВРЕМЯ — ПОСЛЕ», учитывающей жизненный цикл атаки или иной контролируемой активности, предлагаем разбить все мероприятия по контролю и защите на три части:
- ДО — предотвращения взаимодействия с сайтами для майнинга или попадания майнеров в сеть по различным каналам
- ВО ВРЕМЯ — обнаружение инсталляции и работы майнингового ПО
- ПОСЛЕ — проведение ретроспективного анализа поведения файлов, попадающих внутрь корпоративной или ведомственной сети.
На первом этапе, помимо стандартных рекомендаций по защите оконечных устройств от вредоносного ПО, мы советуем настроить сетевое оборудование, межсетевые экраны или средства контроля доступа в Интернет на блокирование доступа к адресам сайтов по майнингу. Например, к coin-hive.com или minergate.com. Это можно сделать с помощью Cisco ISR, Cisco Firepower, Cisco Web Security Appliance, Cisco Umbrella, Cisco ASA и т.п. Я не дам готового списка таких доменов, так как сегодня пулов для майнинга существует уже свыше тысячи и учитывая возрастающую сложность вычислительных задач их будет становиться все больше и больше. Поэтому я бы рекомендовал регулярно отслеживать рейтинги пулов для майнинга, которые свободно можно найти в Интернете. Назову только несколько имен:
- suprnova[.]cc,
- nanopool[.]org,
- zpool[.]ca,
- coinmime[.]pl,
- eth.pp[.]ua,
- zcash.flypool[.]org,
- dwarfpool[.]org,
- p2pool[.]org,
- bitclubnetwork[.]com,
- miningrigrentals[.]com,
- minergate[.]com,
- nicecash[.]com,
- hashing24[.]com,
- hashcoin[.]io,
- hashflare[.]io,
- eobot[.]com,
- antpool[.]com,
- pool.btcchina[.]com,
- bw[.]com,
- mining.bitcoin[.]cz,
- eligius[.]st,
- ghash[.]io,
- bitminter[.]com,
- bitfury[.]org,
- kncminer[.]com,
- 21[.]co,
- slushpool[.]com и т.п.
Отслеживать списки пулов можно на сайте btc[.]com и blockchain[.]info. Кстати, контроль доступа работников к последним двум доменам (можно реализовать через Firepower, Umbrella или Web Security Appliance с привязкой к учетным записям пользователей) позволит понять, кто из ваших пользователей интересуется тематикой майнинга и готов по своей воле попробовать свои силы в работе с криптовалютами, а это важная информация для усиления будущего контроля.
Блокирование доступа к описанным выше доменам позволить не только предотвратить загрузку ПО для майнинга (этап «ДО»), но и блокировать взаимодействие с пулами в случае, когда соответствующее ПО все-таки как-то попало на компьютер пользователя (через вложение в e-mail, через флешку, с помощью вредоносного ПО или функциональности в условно бесплатном ПО, в которой майнинг является незаметной «нагрузкой» или «ценой» за бесплатность) и пытается взаимодействовать с ними (этап «ВО ВРЕМЯ»).
К сожалению, надо признать, что исключить полное блокирование доступа к пулам для майнинга мы не можем — они появляются постоянно и отслеживать их бывает непросто (не забываем, что это не вредоносные ресурсы, контроль которых является первоочередной задачей для подразделения Cisco Talos). Кроме того, пользователь или вредоносное ПО могут использовать туннелирование (например, SSH) или иные методы коммуникаций (например, Tor) с соответствующими пулами. Поэтому мы должны уметь отслеживать работу майнеров в реальном времени (этап «ВО ВРЕМЯ»). Это можно сделать как с помощью вышеупомянутого отслеживания взаимодействия с соответствующими доменами, так и с помощью слежения за портами, которые использует ПО для майнинга для взаимодействия с пулами и командными центрами. К таким портам можно отнести:
- 3333 (bitcoin)
- 3336 (litecoin)
- 8333 (bitcoin)
- 8545 (Ethereum),
- 9333 (litecoin)
- 9999 (Dashcoin),
- 10034 (ypool.net)
- 22556 (Dogecoin),
- 30301 (Ethereum),
- 30303 (Ethereum),
- 45550 (bytecoin),
- 45560 (monero),
- 45620 (DigitalNote),
- 45570 (QuazarCoin),
- 45610 (Fantomcoin),
- 45640 (MonetaVerde),
- 45690 (Aeoncoin),
- 45720 (Dashcoin),
- 45750 (Infinium-8).
Обратите внимание, что это полный и не финальный список. Во-первых, часто майнеры используют стандартные порты 8080 и 8081 и поэтому мониторинга только портов недостаточно — нужно применять технологии анализа сетевого трафика (Cisco Stealthwatch), технологии инспекции HTTP (в рамках Cisco Firepower, Cisco Cognitive Threat Analytics, Cisco AVC) или DNS (в рамках Cisco Umbrella). Во-вторых, эти порты могут быть изменены в программном обеспечении для майнинга. В-третьих, взаимодействие по этим портам может означать не только наличие майнеров у вас в сети. Например, тот же троянец Zotob использовал коммуникации на порту 3333, который, как мы видим выше, используется и майнерами биткойнов. Срабатывание Cisco Firepower, Cisco ASA, Cisco Stealthwatch, Cisco ISR на порты из данного списка скорее является некоторым сигналом, который нужно сопоставлять с другими индикаторами, например, со списком доменов, с которыми идет взаимодействие из внутренней сети предприятия.
Помимо контроля портов, в решении Cisco Firepower присутствует возможность обнаружения протоколов, используемых майнерами, например, популярными Bitcoin и Litecoin. Достаточно создать правило для контроля взаимодействия по данным протоколам и вы будете всегда знать, кто в вашей сети занимается майнингом (осознанно или даже не зная, что его компютер участвует в пуле для майнинга), независимо от того, с каким узлами и по каким портам идет взаимодействие. Аналогичная функция присутствует и в Cisco ISR с функцией AVC (Application Visibility and Control), позволяющей распознавать и классифицировать больше тысячи приложений, включая и майнинговые.
Система обнаружения вторжений Cisco NGIPS тоже обладает рядом сигнатур для обнаружения работы как легальных майнеров, так и вредоносного кода, задействующего функции майнинга. Например, сигнатуры с номером SID 1–40840, 1–40841, 1–40842, которые позволяет отслеживать использование протокола Stratum для майнинга биткойнов. А сигнатуры с SID 1–31273 или 1–20057 позволяют, к примеру, ловить взаимодействие с командными серверами вредоносного ПО (CoinMiner или Win.Trojan.Vestecoin), занимающегося незаконным майнингом на зараженном компьютере. В конце концов никто не мешает написать самим сигнатуры для поиска ПО для майнинга. Например, она может выглядеть так:
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Possible Bitcoin/LiteCoin Mining"; flow:established; content:"|7B 22 70 61 72 61 6D 73 22 3A 20 5B 22|"; Depth:15; classtype:bad-unknown; reference:url,mining.bitcoin.cz/stratum-mining; sid:1000500; rev:1;)
или
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"ET TROJAN W32/BitCoinMiner.MultiThreat Subscribe/Authorize Stratum Protocol Message"; flow:established,to_server; content:"{|22|id|22|"; depth:10; content:"|22|method|22 3A| |22|mining."; within:100; content:"|22|params|22|"; within:50; pcre:"/\x22mining\x2E(subscribe|authorize)\x22/"; classtype:trojan-activity; reference:url,talosintelligence.com/; reference:url,www.btcguild.com/new_protocol.php; reference:url,mining.bitcoin.cz/stratum-mining; sid:1000501; rev:1;)
Кстати, упомянутые выше примеры использования туннелирования или иных методов коммуникаций для майнеров сами по себе должны стать триггерами для специалиста по безопасности. «Данный узел использует зашифрованное соединение с внешним Интернет-узлом? Зачем? Это действительно нужно?» Факт скрытия коммуникаций уже сам по себе должен вызывать подозрения и приводить к расследованию.
Для обнаружения майнеров, работающих в виде скрипта, можно применить Cisco Cognitive Threat Analytics, Cisco Umbrella или Cisco Web Security Appliance, которые способны контролировать взаимодействие пользовательского компьютера с внешним миром. Cisco Umbrella это сделает даже если пользователь находится за пределами корпоративной/ведомственной сети и его не контролируют МСЭ, IPS и другие средства защиты периметра. В настройках Umbrella работа с упомянутыми выше доменами реализуется в категории Potentially Harmful Domains.
Кстати, когда я писал эту заметку, то обратил внимание, что есть злоумышленники, которые эксплуатируют интерес пользователей к «легкому» заработку. Например, с помощью Cisco Umbrella Investigate я обнаружил в сети домен, похожий на coin-hive, но являющийся явно вредоносным и попадание на который по ошибке может привести к заражению пользователя:
Отследить работу майнера можно не только на сетевом уровне, но и на уровне узла, защищенного с помощью AMP for Endpoints, хотя это и не так просто. Это ПО, особенно если оно попало на компьютер нелегально и пытается остаться незамеченным, может маскироваться под различным легальные процессы — svchost.exe, chrome.exe или даже steam.exe (для игроманов). Но в том и заключается задача AMP4E, чтобы подсказать, какие процессы являются подозрительными, а какие нет.
Кроме того, в его базе существуют индикатор W32.Cryptocurrencyminer, который позволяет отслеживать широкий спектр майнеров. В тех случаях, когда существуют подозрения относительно файла, возможно участвующего в майнинге, можно проверить его с помощью внешнего сервиса Virus Total, просто направив соответствующий хэш и оперативно получив вердикт о «статусе подозреваемого». Кроме детектирования аномального поведения, AMP4E может быть настроен на обнаружение нового ПО, ранее не встречавшегося на компьютере пользователя. Это будет облегченный вариант «белого списка приложений» (application white listening, AWL) или «замкнутой программной среды», механизма, позволяющего контролировать загружаемое и используемое на ПК программное обеспечение. AMP4E можно настроить на обнаружение и известного майнингового ПО, но это не самый эффективный способ, учитывая возможность легкой замены названий файлов.
Последней линией обороны является этап «ПОСЛЕ», который позволяет нам обнаружить то, что каким-то образом все-таки смогло попасть в нашу сеть и на наши компьютеры и начало свою деятельность. Помимо обнаружения уже работающих майнеров способами, описанными выше, мы можем использовать песочницу Cisco AMP Threat Grid, которая позволяет анализировать все файлы, попадающие внутрь сети (через почту, через Web, через флешки, через файлшары, через FTP и т.д.), и анализируя их поведения по 700 с лишним поведенческих индикаторов детектировать вредоносную или аномальную активность. Помимо специализированных индикаторов cryptominer-detected, cryptominer-network-detected и cryptominer-pool-contacted, в AMP Threat Grid присутствует возможность распознавать майнеры и по другим признакам:
- взаимодействие с внешними Интернет-ресурсами
- оставленные на узле артефакты
- срабатывание известных сигнатур в антивирусах.
Все это классно, конечно, скажете вы. Но можно ли нажать одну магическую кнопку в ваших решениях и забыть об этой проблеме раз и навсегда? Увы. Повторю то, что я уже писал выше. Майнинговое ПО не является вредоносным — оно может быть вполне разрешено в той или иной компании и поэтому оно никогда не вносится по умолчанию в черные списки или базы сигнатур вредоносных программ. Более того, это активно развивающийся рынок, который приводит к тому, что постоянно появляются новые криптовалюты, новые протоколы и новые программы для майнинга, новые порты и новые адреса пулов. Нельзя составить такой список один раз и навсегда. Это постоянная работа по ручному или автоматизированному отслеживанию такой информации, которая затем заносится в индикаторы компрометации и распространяется по средствам защиты. У компании Cisco этой задачей занимается подразделение Cisco Talos, которое мониторит все происходящее в Интернет, классифицирует его и заносит в наши озера данных, на базе которых и создаются/обновляются сигнатуры атак, декодеры протоколы, репутационные базы, правила инспекции и иные индикаторы компрометации, которые на регулярной основе попадают в наши средства защиты, упомянутые в этом материалы — Cisco Firepower, Cisco Umbrella, Cisco Stealthwatch, Cisco Web Security Appliance, Cisco AMP for Endpoints, Cisco Cognitive Threat Analytics, Cisco AMP Threat Grid и другие.
И, конечно, в заключении надо сказать, что никто не отменяет базовых рекомендаций по борьбе с майнерами (легальными и являющимися частью вредоносного или условно бесплатного ПО)- настройте браузер для блокирования скриптов на неизвестных сайтах, установите нужные плагины (например, NoScript для Firefox, minerBlock или No Coin для Chrome), включите блокировщик рекламы (например, AdBlock), контролируйте доступ в серверные и иные помещения, в которых можно незаметно установить устройства для майнинга, которые будут пользоваться вашим электропитанием.