В этом анализе мы хотим рассказать об интересном семействе вредоносных программ Win32/Boaxxe.BE, которое используется злоумышленниками для направления трафика на рекламные сайты с использованием различных техник кликфрода. Таким образом злоумышленники получают материальную выгоду от рекламодателя, который платит за клики. Первая часть анализа освещает инфраструктуру партнерской сети, которая используется для распространения этой вредоносной программы, во второй части мы сосредоточимся на технических аспектах вредоносного кода.
Дистрибуция и получение прибыли
Win32/Boaxxe.BE распространялся с сайта партнерской программы partnerka.me, который начал свою работу в сентябре 2013 г. Владельцы или клиенты партнерки (партнеры) платят злоумышленникам за установки этой вредоносной программы на компьютеры пользователей. На скриншоте ниже представлена панель управления одного из партнеров (т. н. филиал партнерки), который фиксирует статистику, связанную с дистрибуцией вредоносного кода.
Раздел «Промо» указывает на вредоносную программу, которая должна быть дистрибуцирована через филиал.
Сам исполняемый файл с вредоносной программой доступен либо через прямое скачивание (Скачать), либо через специальный download URL (ссылка на скачивание), который имеет вид «web5.asia/promos/download?token=TOKEN&sub_id=SUB-ID». Параметр TOKEN представляет из себя значение размером 20 байт, которое идентифицирует филиал партнерки (партнера). Параметр SUB-ID также может быть использован для идентификации различных исполняемых файлов, которые распространяются этим филиалом.
В разделе «Промо», на той части веб-страницы, которая располагается ниже кнопок скачивания, показан рейтинг обнаружения файлов вредоносной программы со стороны антивирусных продуктов. Мы наблюдали смену бинарных файлов вредоносной программы каждый час, что позволяет избегать обнаружения со стороны антивирусных сканеров. Как это обычно бывает в подобного рода случаях, одна и та же вредоносная программа просто перепаковывается для того, чтобы убрать детект.
Не вдаваясь в технические подробности отметим, что исполняемые файлы вредоносной программы содержат идентификатор партнерской программы, позволяя C&C-серверу правильно сообщать о филиале, с которого была установлена вредоносная программа. Идентификатор филиала представляет из себя двухбайтовое значение, которое увеличивается на единицу для каждого нового зарегистрированного аккаунта в партнерской программе. За четыре месяца нашего мониторинга было зафиксировано создание сорока новых партнерских аккаунтов.
Страница со статистикой имеет вид.
Колонка Installs подсчитывает количество успешных установок вредоносной программы. Назначение колонки Blocked не совсем ясно поскольку мы не наблюдали ненулевые значения для нее. Для понимания других колонок нужно отметить, что Win32/Boaxxe.BE реализует два различных типа кликфрода:
Веб-сайт также предоставляет URL на объект JSON, который содержит вышеприведенную статистику для ее обработки непосредственно партнером. Интересно, что для доступа к этой статистике не используется аутентификация, таким образом нужно просто знать двадцатибайтный маркер филиала для получения к ней доступа. Например, мы получили статистику одного из партнеров, который использовал свой аккаунт в партнерской программе с 7-го декабря. В этом случае партнер получил более трех тысяч установок (3,332) с денежной прибылью (PPC Profit) в размере $50 и $200 за автоматический кликфрод (CPV Profit). Ниже показана статистика этого партнера.
Неудивительно, что за автоматически осуществляемые клики (CPV Actions) злоумышленники заработали больше чем за обычные клики, осуществляемые пользователем вручную. Автоматические клики генерируются непрерывно вредоносным кодом пока работает операционная система. Отношение CPV Actions / CPV Profit дает нам примерное значение $0.0005 за клик и Clicks / PPC Profit равен $0.015. Очевидно, что перенаправление реального пользователя является более прибыльным для злоумышленников.
Веб-страница панели управления содержит раздел оплаты и поддержки услуг через создание тикетов для партнера.
Ниже на рисунке наглядно представлена схема, которой пользуются злоумышленники.
Как мы уже объясняли, вредоносные файлы для заражения пользователей распространяются партнерами сети partnerka.me. После заражения пользователи будут вынуждены просматривать рекламные сайты либо в автоматическом режиме (скрытно), либо во время переходов по ссылкам в поисковой системе. Зараженные машины используют механизмы поиска дорвеев, которые для поискового запроса возвращают список рекламных сайтов. Поставляемые URL ссылки обычно запускают цепочку перенаправлений через сайты, которые связаны с собой отношениями рекламодатель-публикатор (каждый веб-сайт в цепочке платит предыдущему за полученный трафик).
В конце, рекламируемые сайты, среди которых могут быть и легитимные, платят обратно рекламной сети за трафик. Эти сети берут комиссию и выплачивают часть сервису дорвеев за полученные данные. Наконец, partnerka.me получает оставшуюся часть денег, берет свою долю и выплачивает часть партнерам (филиалам).
Мы полагаем, что владельцы партнерской сети не имеют отношения к созданию Win32/Boaxxe.BE, их сервис только используется для дистрибуции этой вредоносной программы. Были отмечены и другие версии Boaxxe in-the-wild, которые имели дополнительные функции в своем составе: защитные механизмы или иную реализацию существующих модулей, но при этом они используют перенаправления на те же рекламные сети.
Скриншот ниже показывает статистику ежедневных обнаружений Win32/Boaxxe.BE с момента открытия partnerka.me в сентябре 2013.
Интерес злоумышленников в этом вредоносном инструменте достаточно высок, что соответствует росту количества филиалов по его распространению. Пиковые показатели активности также соответствуют статистике отдельных филиалов, например, один из них начал массированную спам кампанию по распространению в конце декабря.
Вредоносные расширения браузеров для выполнения кликфрода
Процесс установки вредоносного кода Win32/Boaxxe.BE приведен ниже на рисунке. Этот процесс включает в себя три этапа.
Win32/Boaxxe.BE изначально может представлять из себя установщик (NSIS Installer), который содержит исполняемый файл и вспомогательный файл setup.dat. Задача установщика извлечь из себя оба файла и запустить исполняемый файл, который после проверок окружения ОС на предмет эмуляторов или отладчиков извлекает из себя BMP файл изображения. Пример изображения представлен ниже.
Данные этого якобы изображения затем расшифровываются уже в новый исполняемый файл, который запускается на исполнение. Такая техника используется для введения в заблуждение аналитиков и автоматические системы анализа вредоносных объектов, которые могут решить, что данный файл не предназначен для исполнения. При преобразовании файла «изображения» в исполняемый, он расшифровывается через RC4, а затем распаковывается с использованием aPlib. Наконец, в исполняемом файле настраиваются инструкции переходов CALL и JMP с использованием специального метода E8/E9.
На втором этапе Win32/Boaxxe.BE выполняет установку специальных расширений для браузеров, через которые в последующем он получит полный доступ к процессу браузера и будет осуществлять кликфрод. Метод получения доступа к браузеру различен для разного вида браузеров, например, как показано выше, для доступа к Google Chrome и Mozilla Firefox используется механизм расширений браузеров, а в случае с Internet Explorer для процесса браузера используются специальные перехваты в памяти. Ниже дается пояснение о том каким образом вредоносный код использует свои расширения для получения доступа к Chrome и Firefox.
Расширения для браузера Google Chrome обычно распространяются через подписанные. CRX файлы, которые могут быть установлены просто через открытие такого файла в браузере. Но для целей разработки также возможно установить т. н. «unpacked» расширение, это означает что можно скопировать файлы расширения в нужный каталог и модифицировать настройки Chrome для его загрузки. Именно этот метод и используется в Win32/Boaxxe.BE. Процесс начинается с расшифровки с использованием RC4 различных данных, которые содержатся в теле исполняемого файла.
Одним из таких блоков данных является манифест расширения, который представляет из себя объект JSON.
Имя расширения в манифесте будет выбрано на основе списка установленных в ОС приложений с использованием символов из значения, которое зависит от аппаратного обеспечения компьютера (hardware-specific). Таким образом на каждом зараженном компьютере файл расширения будет с новым именем. Этот манифест регистрирует два файла JavaScript. Первый «background» будет работать в контексте процесса расширения на протяжении всего времени его работы. Второй скрипт будет внедрен в каждую веб-страницу, URL которой соответствует параметру «matches» (в примере выше, он будет работать для всех веб-страниц). Параметр «permissions» задает необходимый уровень доступа к указанным веб-страницам (для всех) и Chrome API для управления браузером.
Сам код расширения находится в трех различных файлах. Первым является background скрипт, который состоит из около 100 строк обфусцированного кода и содержит основную логику работы расширения.
Вторым скриптом является content-script со следующим содержанием.
Он просто отправляет сообщение с текущим URL и referrer получающей стороне и исполняет ответ.
Еще одним файлом является объект JSON, называемый JSON_PAYLOAD, который состоит из четырех полей.
Перед сохранением файлов скриптов на диск, все параметры в форме переменных «@@STRING@@» в background-скрипте будут изменены на необходимые значения.
В конце, все три файла сохраняются в директории расширений Chrome.
Установка расширения в Chrome осуществляется через модификацию extensions.settings JSON объекта, который содержится в файле с установками, в каталоге установки Chrome. Этот файл содержит информацию обо всех установленных расширениях браузера. Win32/Boaxxe.BE для регистрации своего расширения вставляет туда следующие строки:
После всех этих операций необходимый для злоумышленников JavaScript код будет загружен в Chrome. Следует отметить, что Google объявила запрет на установку подобного рода расширений для браузера начиная с января 2014 г., если сам браузер не используется в режиме разработчика.
Ниже представлены файлы, ответственные за расширение для Firefox.
Для установки расширения в Firefox, вредоносный код предпринимает следующие операции в директории «Profile» браузера: регистрирует путь к расширению в файле «extensions.ini» и проверяет присутствие расширения с таким же идентификатором в базе SQLite «extensions.sqlite».
В случае присутствия такого идентификатора, вредоносный код обновляет таблицу таким образом, чтобы она указывала на новое расширение. Если такой идентификатор отсутствует, то расширение вставляется в таблицу.
Полезная нагрузка
На последнем этапе установки, Win32/Boaxxe.BE выполняет извлечение своей полезной нагрузки, которая хранится на удаленном сервере. Для ее загрузки используется отправляемое на сервер сообщение, которое представлено ниже.
Верхняя часть сообщения, выделенная красным, состоит из четырех полей:
Часть сообщения, выделенная синим, содержит следующую вспомогательную информацию.
Сообщение зашифровано через RC4 с использованием 244-байтного псевдо-произвольного ключа. Этот ключ дополнительно подвергается шифрованию с помощью публичного ключа RSA, который содержится в файле вредоносного кода. Далее этот зашифрованный ключ и само зашифрованное сообщение подвергаются дополнительному шифрованию с использованием base64.
Удаленный сервер отвечает html-страницей, которая содержит в своем теле данные, зашифрованные с использованием base64. После расшифровки мы получаем два исполняемых файла. Первый DLL1 представляет из себя библиотеку «трамплина», которая будет зарегистрирована через автозапуск для старта в контексте процесса regsvr32.exe. Ее основная цель заключается в расшифровке другой DLL и в поддержании своего присутствия в контекстах всех процессов системы. Второй файл DLL2 является фактической полезной нагрузкой Win32/Boaxxe.BE и будет храниться на жестком диске в зашифрованном виде (RC4). Ключ для шифрования через RC4 формируется через значения серийного номера диска и других аппаратно-зависимых данных. Иными словами, не обладая информацией об аппаратном обеспечении компьютера будет трудно расшифровать библиотеку (такой тип криптографического ключа также известен как ключ окружения, «environmental key»).
После операции запроса полезной нагрузки с сервера, столбец с количеством установок на статистике панели управления партнера сети partnerka.me увеличится на единицу. Но это произойдет только в том случае, если такой запрос поступает впервые с данного компьютера.
Следует отметить, что вредоносный код обнаруживает запущенные на компьютере AV-продукты через имена их процессов и затем отправляет эту информацию на сервер при получении файлов полезной нагрузки (параметр v). Это позволяет удаленному серверу применить вспомогательные механизмы, которые позволят снизить вероятность обнаружения полезной нагрузки. Например, в случае работы на компьютере антивирусного продукта ESET, полученная полезная нагрузка защищена через коммерческий протектор Themida.
Библиотека DLL1 всегда будет работать в системе в контексте процесса regsvr32.exe, она также регистрирует обработчик на сообщение WH_CALLWNDPROC. Таким образом эта библиотека, в дальнейшем, будет загружаться во все GUI-процессы, которые получают такое сообщение. Каждый раз загружаясь в адресное пространство нового процесса, DLL1 будет расшифровывать DLL2 и вызывать ее главную функцию. Эта DLL2 ответственна за выполнение различных функций, среди которых собственный кэш DNS, пользовательский модуль кликфрода и автоматический кликфрод.
Когда DLL2 загружается в адресное пространство процесса браузера (IE, Firefox, Chrome) он создает и поддерживает собственный DNS кэш, который хранит соответствия между названиями доменов и IP адресами. Основное назначение такого кэша заключается в том, чтобы избежать обнаружения активности вредоносного кода со стороны систем анализа трафика в сети. Сам кэш опирается на две структуры данных. Первая представляет из себя сам кэш DNS_CACHE, который состоит из записей фиксированной длины 0x60 байт. Пример такой структуры показан ниже.
Каждая запись содержит информацию, относящуюся к одному доменному имени, который может быть как легитимным (т. е. не относится к Boaxxe), так и вредоносным. Запись состоит из:
Следующая структура является более сжатой версией предыдущей.
Этот ассоциативный контейнер (map) имеет емкость в 256 элементов, каждый из которых размером в 24 байта. В качестве ключа выступает значение контрольной суммы (отмечен синим) имени домена, хранящегося в кэше, далее следует IP-адрес, ассоциированный с ним, и наконец два поля временной метки, которые описывают интервал времени, когда домен был активным. Вся структура хранится в определенном ключе реестра и регулярно обновляется из кэша DNS в памяти. Таким образом вредоносный код может накапливать информацию о сопоставлении доменов, сохранять ее на необходимое ему время и использовать по мере необходимости.
Когда DLL2 запускается в первый раз на компьютере, в контексте процесса regsvr32.exe, кэш DNS пуст. При этом набор из около пятисот легитимных доменов, в зашифрованном виде, хранится в библиотеке DLL2. Затем программа выбирает некоторое подмножество имеющихся доменов на основе аппаратно-зависимого значения для заполнения кэша. Таким образом на разных зараженных компьютерах будет производится разная выборка определенного количества легитимных доменов. В процессе загрузки DLL2 в адресное пространство процесса браузера, в первый раз, он добавляет в кэш несколько (обычно четыре) вредоносных доменов, в соответствие со значением идентификатора партнера (affiliate ID).
Вредоносная программа преследует определенные цели выбирая легитимные домены произвольно для конкретного компьютера. Это делается для того, чтобы вредоносный код невозможно было идентифицировать по одинаковым сериям DNS запросов в случае отслеживания трафика со стороны систем анализа. Таким образом, сложно построить надежное обнаружение Win32/Boaxxe.BE на основе шаблона DNS запросов.
Вредоносный код будет регулярно проверять каждую запись в своем кэше и обновлять ее в том случае, если с момента последнего обновления прошло 24 часа. Как и следовало ожидать, для обновления записи он использует DNS запрос, но полученный IP адрес не будет совпадать с тем, который используется вредоносным кодом в действительности. На самом деле последние три байта полученного IP-адреса будут зашифрованы с использованием RC4 и ключом «ANKS» для получения настоящего IP-адреса, связанного с доменом.
Рассмотрим пример: если вы выполните DNS запрос для домена thegreerfive.biz (вредоносный домен, используемый Win32/Boaxxe.BE), то получите IP адрес 31.240.6.70 в качестве ответа (1F F0 06 46 в шестнадцатеричном виде). Но настоящий адрес сервера, который ассоциирован с этим доменом равен 31.193.0.178 (1F C1 00 B2), поскольку применяя RC4 с ключом «ANKS» к байтам F0 06 46 дает нам C1 00 B2.
Как вы уже поняли, операторы, ответственные за управление инфраструктурой Win32/Boaxxe.BE, контролируют только настоящие IP адреса, т. е. адреса, полученные с применением алгоритма шифрования, который применяется к адресу из реальной записи DNS. Таким образом, простой анализ доменов, с которыми контактирует вредоносная программа совершенно бесполезен без ключа, с помощью которого можно получить настоящие адреса.
Реализация кликфрода
Инициированный пользователем кликфрод представляет из себя процесс перенаправления пользователей на нужные злоумышленникам веб-ресурсы, когда он выполняет поисковый запрос. Это позволяет Win32/Boaxxe.BE привлечь трафик для рекламных сайтов. Такое привлечение выполняется осмысленно для конкретного поискового запроса. Логика работы этой мошеннической схемы представлена ниже на рисунке. Синий текст указывает на действия пользователя, а красный на действия вредоносной программы.
На первом этапе пользователь выполняет поисковый запрос с использованием ключевого слова K и получает в качестве ответа список соответствующих этому слову сайтов. В то же время, Win32/Boaxxe.BE отправляет слово K в свою собственную поисковую систему, которая также возвращает список соответствующих сайтов. В случае отсутствия сайтов, относящихся к данному ключевому слову, перенаправление не выполняется. На втором этапе пользователь выполняет клик (переход) на выбранном сайте и получает содержимое соответствующей веб-страницы. Если у пользователя установлен Win32/Boaxxe.BE, то он осуществляет принудительный клик на соответствующей ссылке из возвращенного списка. На практике у пользователя нет времени, чтобы увидеть веб-страницу, на которую он перешел, вместо этого он попадает на веб-страницу, инициированную вредоносным кодом.
Как мы указывали выше, операции кликфрода, инициированные пользователем для Chrome и Firefox, реализованы в расширениях браузеров, а для Internet Explorer вредоносный код использует перехваты в памяти процесса.
Операции, используемые в расширениях, похожи для обоих браузеров, поэтому мы опишем этот процесс только для Google Chrome. Как мы упоминали выше, расширение для Chrome состоит из двух файлов JavaScript: фонового скрипта (background script), экземпляр которого будет всегда активен, и скрипт содержимого (content script), экземпляр которого будет работать для каждой веб-страницы.
При запуске фоновый скрипт будет расшифровывать JSON_PAYLOAD и вычислять его поле «с» (см. выше), в котором содержится логика работы расширения. Этот код объявляет массив, содержащий поисковые системы, поддерживаемые вредоносным кодом. Все они получают от пользователя ключевые слова в качестве параметров через запрос GET, который анализируется вредоносным кодом. Список поисковых систем, который использовался вредоносным кодом в декабре, приведен ниже.
Возьмем в качестве примера URL поискового запроса «www.google.com/search?q=cat», очевидно, что он будет соответствовать первой строке таблицы и ключевое слово «cat» будет извлечено вредоносным кодом из URL, а затем отправлено поисковому движку Win32/Boaxxe.BE, которым является searchpagex.com (searchpagex.org в случае с Firefox) в течение последних месяцев.
Кроме этого, вредоносный код поддерживает так называемый белый список сайтов: Wikipedia, Facebook, Twitter. В случае присутствия этих сайтов в GET запросе, пользователь не будет перенаправлен на домен Boaxxe. Такая возможность позволяет ему быть более скрытным, поскольку в случае перенаправлений с этими сайтами, пользователь сразу может заподозрить вредоносную активность в браузере.
Boaxxe регистрирует обработчики событий с использованием Chrome API для обработки каждого URL, посещаемого пользователем. С использованием этих обработчиков, которые содержатся в content script, вредоносная программа реализует логику перенаправлений. Ответом поискового движка Win32/Boaxxe.BE является JSON объект, который содержит адреса URL в виде «searchpagex.com/c?t=BASE64ID». При посещении одного из этих URL происходит цепочка перенаправлений с привлечением рекламной сети, которая заканчивается веб-сайтом, непосредственно относящимся к ключевому слову. Одновременно с этим процессом перенаправлений, расширение будет каждый час проверять URL, указанный в параметре «с» поля объекта JSON_PAYLOAD для запроса его новой версии.
Для реализации пользовательского кликфрода в Internet Explorer, Win32/Boaxxe.BE выполняет перехват следующих API функций: HttpAddRequestHeadersA, CreateWindowExW и DrawTextExW. Обработчики этих функций находятся в теле вредоносной программы и в дальнейшем предоставляют URL адреса, которые пользователь должен посетить, что выполняется в отдельном потоке Boaxxe.
Этот поток реализует аналогичную логику той, которую мы описывали в случае с расширением для Chrome. Он выполняет сопоставление поступающих URL адресов со списком поисковых систем и получает из запроса ключевые слова. Отличие состоит в том, что он посылает извлеченные ключевые слова не на собственный поисковый движок, а на вредоносный IP-адрес, который хранится в кэше DNS. Ответ от сервера зашифрован с использованием RC4 и имеет следующий вид.
Параметр «u» используется для идентификации URL, на который пользователь должен быть перенаправлен, а параметр «r» содержии информацию об источнике перенаправления (referrer). Этот URL источника перенаправления указывается поисковым движком Win32/Boaxxe.BE. Использование этого поля referrer позволяет операторам вредоносного кода получать выгоду от рекламной сети. Таким образом осуществляется имитация перехода пользователя с использованием поискового движка дорвея.
Автоматический кликфрод представляет из себя скрытное посещение веб-ресурсов вредоносным кодом без участия пользователя. Для выполнения этого действия код Win32/Boaxxe.BE, работающий в контексте regsvr32.exe, запускает на исполнение браузер Internet Explorer. Этот новый процесс невидим для пользователя из-за активного параметра «-Embedding», с которым запущен браузер.
Boaxxe изменяет различные параметры Internet Explorer, например, чтобы отключить навигационные звуки или снять ограничения на загрузку файлов. Он также создает поток, который постоянно отслеживает время своего исполнения и память, используемую процессом; если количество потребляемой памяти или время исполнения велики, то процесс принудительно завершается. Вредоносный код также перехватывает функцию MessageBeep, которая может использоваться для воспроизведения звуковых эффектов.
Кроме этого, Win32/Boaxxe.BE добавляет к собственному DNS кэшу новые записи, ассоциированные с идентификатором партнера. Затем он посылает одному из них запрос, используя при этом шифрование RC4/base64 и получает в качестве ответа информацию, необходимую для выполнения автоматического кликфрода. Пример ответа приведен ниже:
Описание важных параметров ответа дано ниже.
Исходя из сообщения, приведенного выше, процесс браузера посетит URL адрес, указанный параметром «u» с источником ссылки (referrer), который представлен параметром «r». Исходный URL для посещения начинает цепочку перенаправлений из четырех или пяти промежуточных ссылок (с помощью HTTP статуса 302). Каждая из посещаемых в цепочке страниц анализируется для извлечения из нее ссылок, на которые, в дальнейшем, будет осуществлено перенаправление. Глубина рекурсии или количество перенаправлений задается параметром «n».
В процессе выполнения этих операций поток периодически засыпает на определенное количество времени, указываемое параметром «t». Вероятно, это сделано для имитации человеческого поведения при посещении различных сайтов. После посещения рекламных страниц вредоносный код выполняет HTTP GET запрос к одному из легитимных известных сайтов (Google, Facebook, Twitter и т. д.). Это позволяет вредоносному коду более эффективно маскировать кликфроды в потоке сетевого трафика.
Заключение
Мы постарались в деталях описать работу вредоносного кода Win32/Boaxxe.BE, основным назначением которого является генерация кликов (кликфрод) с последующим извлечением злоумышленниками материальной выгоды от рекламодателя. Вредоносная программа содержит несколько механизмов для сокрытия своего трафика, включая его шифрование, использование запросов к легитимным веб-сайтам и использование своего кэша DNS.
SHA-1 семплов
Дистрибуция и получение прибыли
Win32/Boaxxe.BE распространялся с сайта партнерской программы partnerka.me, который начал свою работу в сентябре 2013 г. Владельцы или клиенты партнерки (партнеры) платят злоумышленникам за установки этой вредоносной программы на компьютеры пользователей. На скриншоте ниже представлена панель управления одного из партнеров (т. н. филиал партнерки), который фиксирует статистику, связанную с дистрибуцией вредоносного кода.
Раздел «Промо» указывает на вредоносную программу, которая должна быть дистрибуцирована через филиал.
Сам исполняемый файл с вредоносной программой доступен либо через прямое скачивание (Скачать), либо через специальный download URL (ссылка на скачивание), который имеет вид «web5.asia/promos/download?token=TOKEN&sub_id=SUB-ID». Параметр TOKEN представляет из себя значение размером 20 байт, которое идентифицирует филиал партнерки (партнера). Параметр SUB-ID также может быть использован для идентификации различных исполняемых файлов, которые распространяются этим филиалом.
В разделе «Промо», на той части веб-страницы, которая располагается ниже кнопок скачивания, показан рейтинг обнаружения файлов вредоносной программы со стороны антивирусных продуктов. Мы наблюдали смену бинарных файлов вредоносной программы каждый час, что позволяет избегать обнаружения со стороны антивирусных сканеров. Как это обычно бывает в подобного рода случаях, одна и та же вредоносная программа просто перепаковывается для того, чтобы убрать детект.
Не вдаваясь в технические подробности отметим, что исполняемые файлы вредоносной программы содержат идентификатор партнерской программы, позволяя C&C-серверу правильно сообщать о филиале, с которого была установлена вредоносная программа. Идентификатор филиала представляет из себя двухбайтовое значение, которое увеличивается на единицу для каждого нового зарегистрированного аккаунта в партнерской программе. За четыре месяца нашего мониторинга было зафиксировано создание сорока новых партнерских аккаунтов.
Страница со статистикой имеет вид.
Колонка Installs подсчитывает количество успешных установок вредоносной программы. Назначение колонки Blocked не совсем ясно поскольку мы не наблюдали ненулевые значения для нее. Для понимания других колонок нужно отметить, что Win32/Boaxxe.BE реализует два различных типа кликфрода:
- Инициированный пользователем кликфрод: пользователь вводит поисковый запрос в браузере и вредоносный код подставляет в релевантных результатах поиска рекламные сайты. Такая практика реализована в различных семействах вредоносных программ, например, Win32/TrojanDownloader.Tracur и Win32/Goblin (aka Win32/Xpaj). Статистика по этому виду кликфрода фиксируется в следующих столбцах:
- Active: количество компьютеров, зараженных Win32/Boaxxe.BE, и которые использовались для просмотра веб-страниц в этот день.
- Searches: количество ключевых слов, которые использовались в поисковом запросе.
- Clicks: количество совершенных перенаправлений пользователя (выполненных им кликов).
- PPC Profit: сумма, заработанная данным партнером через кликфрод.
- Автоматический кликфрод: Win32/Boaxxe.BE имеет в своем составе возможности по скрытному посещению рекламных сайтов без ведома пользователя.
- Live: количество зараженных компьютеров, которые выполняют кликфрод.
- CPV Actions: количество автоматических действий по кликфроду, выполненных вредоносной программой.
- CPV Profit: сумма, заработанная партнером через кликфрод.
Веб-сайт также предоставляет URL на объект JSON, который содержит вышеприведенную статистику для ее обработки непосредственно партнером. Интересно, что для доступа к этой статистике не используется аутентификация, таким образом нужно просто знать двадцатибайтный маркер филиала для получения к ней доступа. Например, мы получили статистику одного из партнеров, который использовал свой аккаунт в партнерской программе с 7-го декабря. В этом случае партнер получил более трех тысяч установок (3,332) с денежной прибылью (PPC Profit) в размере $50 и $200 за автоматический кликфрод (CPV Profit). Ниже показана статистика этого партнера.
Неудивительно, что за автоматически осуществляемые клики (CPV Actions) злоумышленники заработали больше чем за обычные клики, осуществляемые пользователем вручную. Автоматические клики генерируются непрерывно вредоносным кодом пока работает операционная система. Отношение CPV Actions / CPV Profit дает нам примерное значение $0.0005 за клик и Clicks / PPC Profit равен $0.015. Очевидно, что перенаправление реального пользователя является более прибыльным для злоумышленников.
Веб-страница панели управления содержит раздел оплаты и поддержки услуг через создание тикетов для партнера.
Ниже на рисунке наглядно представлена схема, которой пользуются злоумышленники.
Как мы уже объясняли, вредоносные файлы для заражения пользователей распространяются партнерами сети partnerka.me. После заражения пользователи будут вынуждены просматривать рекламные сайты либо в автоматическом режиме (скрытно), либо во время переходов по ссылкам в поисковой системе. Зараженные машины используют механизмы поиска дорвеев, которые для поискового запроса возвращают список рекламных сайтов. Поставляемые URL ссылки обычно запускают цепочку перенаправлений через сайты, которые связаны с собой отношениями рекламодатель-публикатор (каждый веб-сайт в цепочке платит предыдущему за полученный трафик).
В конце, рекламируемые сайты, среди которых могут быть и легитимные, платят обратно рекламной сети за трафик. Эти сети берут комиссию и выплачивают часть сервису дорвеев за полученные данные. Наконец, partnerka.me получает оставшуюся часть денег, берет свою долю и выплачивает часть партнерам (филиалам).
Мы полагаем, что владельцы партнерской сети не имеют отношения к созданию Win32/Boaxxe.BE, их сервис только используется для дистрибуции этой вредоносной программы. Были отмечены и другие версии Boaxxe in-the-wild, которые имели дополнительные функции в своем составе: защитные механизмы или иную реализацию существующих модулей, но при этом они используют перенаправления на те же рекламные сети.
Скриншот ниже показывает статистику ежедневных обнаружений Win32/Boaxxe.BE с момента открытия partnerka.me в сентябре 2013.
Интерес злоумышленников в этом вредоносном инструменте достаточно высок, что соответствует росту количества филиалов по его распространению. Пиковые показатели активности также соответствуют статистике отдельных филиалов, например, один из них начал массированную спам кампанию по распространению в конце декабря.
Вредоносные расширения браузеров для выполнения кликфрода
Процесс установки вредоносного кода Win32/Boaxxe.BE приведен ниже на рисунке. Этот процесс включает в себя три этапа.
Win32/Boaxxe.BE изначально может представлять из себя установщик (NSIS Installer), который содержит исполняемый файл и вспомогательный файл setup.dat. Задача установщика извлечь из себя оба файла и запустить исполняемый файл, который после проверок окружения ОС на предмет эмуляторов или отладчиков извлекает из себя BMP файл изображения. Пример изображения представлен ниже.
Данные этого якобы изображения затем расшифровываются уже в новый исполняемый файл, который запускается на исполнение. Такая техника используется для введения в заблуждение аналитиков и автоматические системы анализа вредоносных объектов, которые могут решить, что данный файл не предназначен для исполнения. При преобразовании файла «изображения» в исполняемый, он расшифровывается через RC4, а затем распаковывается с использованием aPlib. Наконец, в исполняемом файле настраиваются инструкции переходов CALL и JMP с использованием специального метода E8/E9.
На втором этапе Win32/Boaxxe.BE выполняет установку специальных расширений для браузеров, через которые в последующем он получит полный доступ к процессу браузера и будет осуществлять кликфрод. Метод получения доступа к браузеру различен для разного вида браузеров, например, как показано выше, для доступа к Google Chrome и Mozilla Firefox используется механизм расширений браузеров, а в случае с Internet Explorer для процесса браузера используются специальные перехваты в памяти. Ниже дается пояснение о том каким образом вредоносный код использует свои расширения для получения доступа к Chrome и Firefox.
Расширения для браузера Google Chrome обычно распространяются через подписанные. CRX файлы, которые могут быть установлены просто через открытие такого файла в браузере. Но для целей разработки также возможно установить т. н. «unpacked» расширение, это означает что можно скопировать файлы расширения в нужный каталог и модифицировать настройки Chrome для его загрузки. Именно этот метод и используется в Win32/Boaxxe.BE. Процесс начинается с расшифровки с использованием RC4 различных данных, которые содержатся в теле исполняемого файла.
Одним из таких блоков данных является манифест расширения, который представляет из себя объект JSON.
Имя расширения в манифесте будет выбрано на основе списка установленных в ОС приложений с использованием символов из значения, которое зависит от аппаратного обеспечения компьютера (hardware-specific). Таким образом на каждом зараженном компьютере файл расширения будет с новым именем. Этот манифест регистрирует два файла JavaScript. Первый «background» будет работать в контексте процесса расширения на протяжении всего времени его работы. Второй скрипт будет внедрен в каждую веб-страницу, URL которой соответствует параметру «matches» (в примере выше, он будет работать для всех веб-страниц). Параметр «permissions» задает необходимый уровень доступа к указанным веб-страницам (для всех) и Chrome API для управления браузером.
Сам код расширения находится в трех различных файлах. Первым является background скрипт, который состоит из около 100 строк обфусцированного кода и содержит основную логику работы расширения.
Вторым скриптом является content-script со следующим содержанием.
Он просто отправляет сообщение с текущим URL и referrer получающей стороне и исполняет ответ.
Еще одним файлом является объект JSON, называемый JSON_PAYLOAD, который состоит из четырех полей.
Перед сохранением файлов скриптов на диск, все параметры в форме переменных «@@STRING@@» в background-скрипте будут изменены на необходимые значения.
- Параметр «TOKEN» меняется на закодированную с помощью base64 и RC4 (с ключом «tokencryptkey») строку. Строка может принимать вид «u:14AB8569 w:1234 p:1 c:5b b:32 v:0».
- Параметр «LOGIC» меняется на закодированное через base64 и RC4 содержимое JSON_PAYLOAD с использованием предыдущего значения «TOKEN» в качестве ключа.
В конце, все три файла сохраняются в директории расширений Chrome.
Установка расширения в Chrome осуществляется через модификацию extensions.settings JSON объекта, который содержится в файле с установками, в каталоге установки Chrome. Этот файл содержит информацию обо всех установленных расширениях браузера. Win32/Boaxxe.BE для регистрации своего расширения вставляет туда следующие строки:
После всех этих операций необходимый для злоумышленников JavaScript код будет загружен в Chrome. Следует отметить, что Google объявила запрет на установку подобного рода расширений для браузера начиная с января 2014 г., если сам браузер не используется в режиме разработчика.
Ниже представлены файлы, ответственные за расширение для Firefox.
- install.rdf, представляет из себя манифест расширения
Поля «id», «name», «version» и «creator» будут заполнены значениями, которые зависят от оборудования (hardware-dependent). Для нашего примера эти поля будут принимать значения «id» как «{1234}» и «имя» как «Microsoft Office». - Файл chrome.manifest расшифровывается и представляет из себя следующие данные.
Этот файл объявляет код расширения JavaScript в первой строке («component»), а затем гарантирует, что расширение будет загружено и получит уведомление при запуске браузера. При записи содержимого файла скрипта на диск переменные типа @@STRING@@ подставляются соответствующими значениями. В конечном итоге на диск, в директорию с браузером, сохраняются три файла install.rdf, chrome.manifest и файла JavaScript.
Для установки расширения в Firefox, вредоносный код предпринимает следующие операции в директории «Profile» браузера: регистрирует путь к расширению в файле «extensions.ini» и проверяет присутствие расширения с таким же идентификатором в базе SQLite «extensions.sqlite».
В случае присутствия такого идентификатора, вредоносный код обновляет таблицу таким образом, чтобы она указывала на новое расширение. Если такой идентификатор отсутствует, то расширение вставляется в таблицу.
Полезная нагрузка
На последнем этапе установки, Win32/Boaxxe.BE выполняет извлечение своей полезной нагрузки, которая хранится на удаленном сервере. Для ее загрузки используется отправляемое на сервер сообщение, которое представлено ниже.
Верхняя часть сообщения, выделенная красным, состоит из четырех полей:
- поле контрольной суммы;
- размер полезной нагрузки;
- тип сообщения;
- ID партнера.
Часть сообщения, выделенная синим, содержит следующую вспомогательную информацию.
Сообщение зашифровано через RC4 с использованием 244-байтного псевдо-произвольного ключа. Этот ключ дополнительно подвергается шифрованию с помощью публичного ключа RSA, который содержится в файле вредоносного кода. Далее этот зашифрованный ключ и само зашифрованное сообщение подвергаются дополнительному шифрованию с использованием base64.
Удаленный сервер отвечает html-страницей, которая содержит в своем теле данные, зашифрованные с использованием base64. После расшифровки мы получаем два исполняемых файла. Первый DLL1 представляет из себя библиотеку «трамплина», которая будет зарегистрирована через автозапуск для старта в контексте процесса regsvr32.exe. Ее основная цель заключается в расшифровке другой DLL и в поддержании своего присутствия в контекстах всех процессов системы. Второй файл DLL2 является фактической полезной нагрузкой Win32/Boaxxe.BE и будет храниться на жестком диске в зашифрованном виде (RC4). Ключ для шифрования через RC4 формируется через значения серийного номера диска и других аппаратно-зависимых данных. Иными словами, не обладая информацией об аппаратном обеспечении компьютера будет трудно расшифровать библиотеку (такой тип криптографического ключа также известен как ключ окружения, «environmental key»).
После операции запроса полезной нагрузки с сервера, столбец с количеством установок на статистике панели управления партнера сети partnerka.me увеличится на единицу. Но это произойдет только в том случае, если такой запрос поступает впервые с данного компьютера.
Следует отметить, что вредоносный код обнаруживает запущенные на компьютере AV-продукты через имена их процессов и затем отправляет эту информацию на сервер при получении файлов полезной нагрузки (параметр v). Это позволяет удаленному серверу применить вспомогательные механизмы, которые позволят снизить вероятность обнаружения полезной нагрузки. Например, в случае работы на компьютере антивирусного продукта ESET, полученная полезная нагрузка защищена через коммерческий протектор Themida.
Библиотека DLL1 всегда будет работать в системе в контексте процесса regsvr32.exe, она также регистрирует обработчик на сообщение WH_CALLWNDPROC. Таким образом эта библиотека, в дальнейшем, будет загружаться во все GUI-процессы, которые получают такое сообщение. Каждый раз загружаясь в адресное пространство нового процесса, DLL1 будет расшифровывать DLL2 и вызывать ее главную функцию. Эта DLL2 ответственна за выполнение различных функций, среди которых собственный кэш DNS, пользовательский модуль кликфрода и автоматический кликфрод.
Когда DLL2 загружается в адресное пространство процесса браузера (IE, Firefox, Chrome) он создает и поддерживает собственный DNS кэш, который хранит соответствия между названиями доменов и IP адресами. Основное назначение такого кэша заключается в том, чтобы избежать обнаружения активности вредоносного кода со стороны систем анализа трафика в сети. Сам кэш опирается на две структуры данных. Первая представляет из себя сам кэш DNS_CACHE, который состоит из записей фиксированной длины 0x60 байт. Пример такой структуры показан ниже.
Каждая запись содержит информацию, относящуюся к одному доменному имени, который может быть как легитимным (т. е. не относится к Boaxxe), так и вредоносным. Запись состоит из:
- Имени домена, которому предшествует его длина в первом байте.
- Поле назначения домена «domain purpose» (отмечено красным) используется для отделения легитимных доменов от вредоносных.
- Поле IP-адреса (отмечен синим). Как мы объясним ниже, этот адрес фактически не совсем тот, который ассоциирован с доменом напрямую.
- Поле «уже отрезолвен» (отмечен зеленым).
- Временная метка (timestamp) последнего успешного резолва домена (отмечен черным) в формате Windows OLE x64.
Следующая структура является более сжатой версией предыдущей.
Этот ассоциативный контейнер (map) имеет емкость в 256 элементов, каждый из которых размером в 24 байта. В качестве ключа выступает значение контрольной суммы (отмечен синим) имени домена, хранящегося в кэше, далее следует IP-адрес, ассоциированный с ним, и наконец два поля временной метки, которые описывают интервал времени, когда домен был активным. Вся структура хранится в определенном ключе реестра и регулярно обновляется из кэша DNS в памяти. Таким образом вредоносный код может накапливать информацию о сопоставлении доменов, сохранять ее на необходимое ему время и использовать по мере необходимости.
Когда DLL2 запускается в первый раз на компьютере, в контексте процесса regsvr32.exe, кэш DNS пуст. При этом набор из около пятисот легитимных доменов, в зашифрованном виде, хранится в библиотеке DLL2. Затем программа выбирает некоторое подмножество имеющихся доменов на основе аппаратно-зависимого значения для заполнения кэша. Таким образом на разных зараженных компьютерах будет производится разная выборка определенного количества легитимных доменов. В процессе загрузки DLL2 в адресное пространство процесса браузера, в первый раз, он добавляет в кэш несколько (обычно четыре) вредоносных доменов, в соответствие со значением идентификатора партнера (affiliate ID).
Вредоносная программа преследует определенные цели выбирая легитимные домены произвольно для конкретного компьютера. Это делается для того, чтобы вредоносный код невозможно было идентифицировать по одинаковым сериям DNS запросов в случае отслеживания трафика со стороны систем анализа. Таким образом, сложно построить надежное обнаружение Win32/Boaxxe.BE на основе шаблона DNS запросов.
Вредоносный код будет регулярно проверять каждую запись в своем кэше и обновлять ее в том случае, если с момента последнего обновления прошло 24 часа. Как и следовало ожидать, для обновления записи он использует DNS запрос, но полученный IP адрес не будет совпадать с тем, который используется вредоносным кодом в действительности. На самом деле последние три байта полученного IP-адреса будут зашифрованы с использованием RC4 и ключом «ANKS» для получения настоящего IP-адреса, связанного с доменом.
Рассмотрим пример: если вы выполните DNS запрос для домена thegreerfive.biz (вредоносный домен, используемый Win32/Boaxxe.BE), то получите IP адрес 31.240.6.70 в качестве ответа (1F F0 06 46 в шестнадцатеричном виде). Но настоящий адрес сервера, который ассоциирован с этим доменом равен 31.193.0.178 (1F C1 00 B2), поскольку применяя RC4 с ключом «ANKS» к байтам F0 06 46 дает нам C1 00 B2.
Как вы уже поняли, операторы, ответственные за управление инфраструктурой Win32/Boaxxe.BE, контролируют только настоящие IP адреса, т. е. адреса, полученные с применением алгоритма шифрования, который применяется к адресу из реальной записи DNS. Таким образом, простой анализ доменов, с которыми контактирует вредоносная программа совершенно бесполезен без ключа, с помощью которого можно получить настоящие адреса.
Реализация кликфрода
Инициированный пользователем кликфрод представляет из себя процесс перенаправления пользователей на нужные злоумышленникам веб-ресурсы, когда он выполняет поисковый запрос. Это позволяет Win32/Boaxxe.BE привлечь трафик для рекламных сайтов. Такое привлечение выполняется осмысленно для конкретного поискового запроса. Логика работы этой мошеннической схемы представлена ниже на рисунке. Синий текст указывает на действия пользователя, а красный на действия вредоносной программы.
На первом этапе пользователь выполняет поисковый запрос с использованием ключевого слова K и получает в качестве ответа список соответствующих этому слову сайтов. В то же время, Win32/Boaxxe.BE отправляет слово K в свою собственную поисковую систему, которая также возвращает список соответствующих сайтов. В случае отсутствия сайтов, относящихся к данному ключевому слову, перенаправление не выполняется. На втором этапе пользователь выполняет клик (переход) на выбранном сайте и получает содержимое соответствующей веб-страницы. Если у пользователя установлен Win32/Boaxxe.BE, то он осуществляет принудительный клик на соответствующей ссылке из возвращенного списка. На практике у пользователя нет времени, чтобы увидеть веб-страницу, на которую он перешел, вместо этого он попадает на веб-страницу, инициированную вредоносным кодом.
Как мы указывали выше, операции кликфрода, инициированные пользователем для Chrome и Firefox, реализованы в расширениях браузеров, а для Internet Explorer вредоносный код использует перехваты в памяти процесса.
Операции, используемые в расширениях, похожи для обоих браузеров, поэтому мы опишем этот процесс только для Google Chrome. Как мы упоминали выше, расширение для Chrome состоит из двух файлов JavaScript: фонового скрипта (background script), экземпляр которого будет всегда активен, и скрипт содержимого (content script), экземпляр которого будет работать для каждой веб-страницы.
При запуске фоновый скрипт будет расшифровывать JSON_PAYLOAD и вычислять его поле «с» (см. выше), в котором содержится логика работы расширения. Этот код объявляет массив, содержащий поисковые системы, поддерживаемые вредоносным кодом. Все они получают от пользователя ключевые слова в качестве параметров через запрос GET, который анализируется вредоносным кодом. Список поисковых систем, который использовался вредоносным кодом в декабре, приведен ниже.
Возьмем в качестве примера URL поискового запроса «www.google.com/search?q=cat», очевидно, что он будет соответствовать первой строке таблицы и ключевое слово «cat» будет извлечено вредоносным кодом из URL, а затем отправлено поисковому движку Win32/Boaxxe.BE, которым является searchpagex.com (searchpagex.org в случае с Firefox) в течение последних месяцев.
Кроме этого, вредоносный код поддерживает так называемый белый список сайтов: Wikipedia, Facebook, Twitter. В случае присутствия этих сайтов в GET запросе, пользователь не будет перенаправлен на домен Boaxxe. Такая возможность позволяет ему быть более скрытным, поскольку в случае перенаправлений с этими сайтами, пользователь сразу может заподозрить вредоносную активность в браузере.
Boaxxe регистрирует обработчики событий с использованием Chrome API для обработки каждого URL, посещаемого пользователем. С использованием этих обработчиков, которые содержатся в content script, вредоносная программа реализует логику перенаправлений. Ответом поискового движка Win32/Boaxxe.BE является JSON объект, который содержит адреса URL в виде «searchpagex.com/c?t=BASE64ID». При посещении одного из этих URL происходит цепочка перенаправлений с привлечением рекламной сети, которая заканчивается веб-сайтом, непосредственно относящимся к ключевому слову. Одновременно с этим процессом перенаправлений, расширение будет каждый час проверять URL, указанный в параметре «с» поля объекта JSON_PAYLOAD для запроса его новой версии.
Для реализации пользовательского кликфрода в Internet Explorer, Win32/Boaxxe.BE выполняет перехват следующих API функций: HttpAddRequestHeadersA, CreateWindowExW и DrawTextExW. Обработчики этих функций находятся в теле вредоносной программы и в дальнейшем предоставляют URL адреса, которые пользователь должен посетить, что выполняется в отдельном потоке Boaxxe.
Этот поток реализует аналогичную логику той, которую мы описывали в случае с расширением для Chrome. Он выполняет сопоставление поступающих URL адресов со списком поисковых систем и получает из запроса ключевые слова. Отличие состоит в том, что он посылает извлеченные ключевые слова не на собственный поисковый движок, а на вредоносный IP-адрес, который хранится в кэше DNS. Ответ от сервера зашифрован с использованием RC4 и имеет следующий вид.
Параметр «u» используется для идентификации URL, на который пользователь должен быть перенаправлен, а параметр «r» содержии информацию об источнике перенаправления (referrer). Этот URL источника перенаправления указывается поисковым движком Win32/Boaxxe.BE. Использование этого поля referrer позволяет операторам вредоносного кода получать выгоду от рекламной сети. Таким образом осуществляется имитация перехода пользователя с использованием поискового движка дорвея.
Автоматический кликфрод представляет из себя скрытное посещение веб-ресурсов вредоносным кодом без участия пользователя. Для выполнения этого действия код Win32/Boaxxe.BE, работающий в контексте regsvr32.exe, запускает на исполнение браузер Internet Explorer. Этот новый процесс невидим для пользователя из-за активного параметра «-Embedding», с которым запущен браузер.
Boaxxe изменяет различные параметры Internet Explorer, например, чтобы отключить навигационные звуки или снять ограничения на загрузку файлов. Он также создает поток, который постоянно отслеживает время своего исполнения и память, используемую процессом; если количество потребляемой памяти или время исполнения велики, то процесс принудительно завершается. Вредоносный код также перехватывает функцию MessageBeep, которая может использоваться для воспроизведения звуковых эффектов.
Кроме этого, Win32/Boaxxe.BE добавляет к собственному DNS кэшу новые записи, ассоциированные с идентификатором партнера. Затем он посылает одному из них запрос, используя при этом шифрование RC4/base64 и получает в качестве ответа информацию, необходимую для выполнения автоматического кликфрода. Пример ответа приведен ниже:
Описание важных параметров ответа дано ниже.
Исходя из сообщения, приведенного выше, процесс браузера посетит URL адрес, указанный параметром «u» с источником ссылки (referrer), который представлен параметром «r». Исходный URL для посещения начинает цепочку перенаправлений из четырех или пяти промежуточных ссылок (с помощью HTTP статуса 302). Каждая из посещаемых в цепочке страниц анализируется для извлечения из нее ссылок, на которые, в дальнейшем, будет осуществлено перенаправление. Глубина рекурсии или количество перенаправлений задается параметром «n».
В процессе выполнения этих операций поток периодически засыпает на определенное количество времени, указываемое параметром «t». Вероятно, это сделано для имитации человеческого поведения при посещении различных сайтов. После посещения рекламных страниц вредоносный код выполняет HTTP GET запрос к одному из легитимных известных сайтов (Google, Facebook, Twitter и т. д.). Это позволяет вредоносному коду более эффективно маскировать кликфроды в потоке сетевого трафика.
Заключение
Мы постарались в деталях описать работу вредоносного кода Win32/Boaxxe.BE, основным назначением которого является генерация кликов (кликфрод) с последующим извлечением злоумышленниками материальной выгоды от рекламодателя. Вредоносная программа содержит несколько механизмов для сокрытия своего трафика, включая его шифрование, использование запросов к легитимным веб-сайтам и использование своего кэша DNS.
SHA-1 семплов