У сайтов, занимающих не самые топовые позиции из первой тысячи, посещаемость бывает порядка 10 000 – 80 000 уникальных хостов в сутки, а иногда и выше. Для хакеров подобные ресурсы привлекательны тем, что, с одной стороны, сайты имеют высокую посещаемость, а с другой – низкий уровень защиты (обычно, вообще никакого), поскольку владельцы подобных сайтов часто не уделяют должного внимания вопросам безопасности (не знают, не умеют, не хотят). Например, ресурс с посещаемостью 85000 уникальных хостов в сутки может работать на Wordpress с уязвимыми версиями плагинов. Получается, что соотношение затрат на взлом к “профиту” от него для данной категории сайтов максимально, и это лакомый кусок, которым, как минимум, один злоумышленник да воспользуется. В теории все вроде бы логично, но хотелось бы в этом убедиться на практике, поэтому я решил просканировать большой массив топовых ресурсов (например, первые 50 000 сайтов Alexa в зоне .ru) на предмет взлома/заражения, редиректов и других проблем безопасности. Что из этого получилось – ниже в статье.
Чтобы сэкономить время читателей, сразу приведу результаты: примерно 2% сайтов (если быть точным, 971 сайт) оказались “больны”. Среди проблем был полный набор: редиректы на загрузку зараженных apk и exe файлов, скрытые мобильные редиректы на wap-click партнерки, фишинг и даже два дефейса. Несмотря на то что процент проблемных сайтов вроде бы небольшой, опасность оказалась существенной, так как скрытые редиректы обнаружились на популярных сайтах с посещаемостью 60K хостов в сутки.
Для более эффективного обнаружения вредоносного кода я использовал несколько индикаторов заражения, поскольку зловреды не всегда возможно определить только по сигнатурам или только с помощью поведенческого анализа. Для анализа в совокупности учитывались:
- редиректы при открытии страниц с различными параметрами User Agent+Referer,
- сигнатуры вредоносных скриптов (регулярными выражениями),
- присутствие домена или фрагмента URL в базах опасных, подозрительных или вредоносных,
- наличие сайта в “черных списках” поисковых систем (safe browsing) и антивирусных сервисов (по базе virus total)
Для минимизации числа ложных срабатываний применялись «белые списки» доменов и фрагментов URL. Например, не учитывались редиректы при клике с баннеров и баннерных плагинов, редиректы на мобильные версии сайтов и т.п. При проверке каждого сайта отправлялась серия запросов к стартовой странице, производилась навигация на слинкованные страницы, на которых выполнялись некоторые действия, как если бы на сайт заходили реальные посетители с различными параметрами (браузер, реферер, платформа, и пр). После чего результат по всем страницам объединялся и формировался общий отчет. И так для каждого из 50 000 проверяемых ресурсов. Стандартный phantomjs для подобной задачи не подошел из-за ограничений на некоторые readonly объекты DOM, которые мне нужно было переопределять, поэтому пришлось их вместе с WebKit'ом хорошенько «допиливать».
Анализ большого массива сайтов выявил некоторые общие паттерны заражения и типичные способы внедрения зловредов в код скриптов и страниц (например, частое использование сервиса сокращения ссылок, наподобие goo.gl, vk.cc для сокрытия адреса скриптов, добавление кода в начало или конец jquery*.js файлов, семейство недобросовестных тизерных/рекламных партнерских сетей и т.п).
Детали покажу на паре примеров. Первым будет ресурс, находящийся на 750 позиции рейтинга ru сайтов Alexa. Это достаточно популярный торрент. У него закономерно высокая посещаемость – чуть больше 60 000 уникальных посетителей в сутки (согласно счетчику liveinternet).
Попробуем открыть сайт с мобильного: вбиваем адрес сайта в поисковой строке Google, переходим в подраздел и кликаем по кнопке загрузки в тексте страницы. Вместо загрузки .torrent файла нас начинает редиректить на сторонние сайты, и в итоге нам предлагают загрузить и установить .apk файл по имени download.apk.
Чтобы оперативно проверить файл на «вредоносы», загружаем его на Virustotal и получаем вполне ожидаемый результат – SMS.Agent (т.е. смс шпион):
Если повторить эксперимент еще несколько раз, то иногда появляется предложение скачать ускоритель загрузки, который, как вы уже, наверное, догадались, ускоряет разве что перехват ваших смс:
Чтобы вредоносный код обнаружили как можно позднее, хакер всячески старается его замаскировать: внедряет код динамически и использует многоэтапную проверку в рантайме. По этой причине поймать редирект, не зная всех нюансов, автоматизированными сканерами чрезвычайно сложно. В данном случае редирект обладал следующими свойствами:
- вредоносный инжект находился в подгружаемом скрипте scrolltop.js
- код отрабатывал у посетителя 1 раз в 4,5 месяца (ставились куки)
- код внедрялся динамически только если посетитель пришел с поисковой системы
- сам редирект срабатывал только при клике по определенным ссылкам
- загрузка .apk стартовала, если посетитель зашел с android устройства (проверялось в цепочке редиректов на вредоносный ресурс)
Ниже приведен фрагмент кода, который внедрял загрузчик:
Если не выполнится хотя бы одно из перечисленных условий, то перенаправления не произойдет. Несмотря на составное условие возникновение редиректа, сканером удалось вычислить вредонос по характерной сигнатуре и инжекту скрипта с подозрительного домена:
Можно примерно оценить «масштаб бедствия» для этого сайта. При взломе и заражении ресурса с посещаемостью порядка 50-60K в среднем приходит где-то 400-500 посетителей с мобильных устройств. На вскиду, сотня посетителей может загрузить зараженный .apk файл.
Рассмотрим еще один «топовый» пример из списка зараженных. На этот раз это фитнес-портал, занимающий примерно 450 место (то есть еще более посещаемый). Этот «пациент» перекидывал поочередно то на сервис платных подписок, то на софт, предлагающий ускорение android.
При очередном редиректе ради любопытства нажал кнопку “Продолжить просмотр” и тут случилась магия: меня автоматически подписали на платный контент, о чем незамедлительно пришло уведомление по смс. Никаких вопросов или подтверждений, что я хочу это сделать, никаких дополнительных телодвижений не потребовалось.
Проверил в списке подключенных услуг в личном кабинете МТС – действительно появилась платная подписка за 20 руб. Отписался.
Что интересно, на момент генерации страницы с кнопкой “продолжить просмотр” скрипт уже знает ваш номер телефона, поскольку смс-подписка делается с «благословения» самого мобильного оператора, который предоставляет необходимый интерфейс и информацию об абоненте.
Так что процесс подписки до нельзя автоматизирован. И если не следить за смс-уведомлениями, можно попасть на несколько десятков рублей в день просто посещая различные порталы (это без учета clickjacking’а, где вы сами того не ведая кликните в нужное место и одобрите подписку или загрузку вредоноса).
Механика внедрения на этом сайте проще: в один из javascript файлов хакер добавил следующий фрагмент:
Этот код загружал скрипт с домена yadro24.ru, а тот, в свою очередь, перенаправлял пользователей на wap-click портал при условии, что посетитель был подключен через 3G/LTE интернет (по javascript-коду видно, какие возможны редиректы).
Если же мобильный посетитель сайта пришел через WI-FI, никаких редиректов на wap-click партнерки не происходило. Это, кстати, большая проблема для определения wap-click редиректов онлайн-сервисами, поскольку все запросы требуется отправлять через 3G/LTE определенных сотовых операторов.
Аналогичные варианты заражения были обнаружены и на других сайтах из топа Alexa. Иногда внедряют код в начало скриптов, иногда в конец.
Рассмотренные примеры – это явный целевой взлом сайтов и внедрение кода хакерами. Но среди проверенных сайтов часто встречался и другой вариант: добровольное размещение виджета со скрытыми редиректами или тизерной партнерской сети, которая выполняет перенаправление мобильных пользователей на опасные сайты или wap-click партнерки. При этом владельцы сайтов или не в курсе того, что происходит, или, в погоне за высоким заработком, закрывают на это глаза.
Сводная статистика по различным категориям заражения получилась такой:
Любопытный факт: большинство ресурсов, которые попали в список “проблемных” (те, которые выполняют загрузку вредоносных файлов или перенаправляют посетителей на опасные сайты и wap-click партнерки) не отмечены в Yandex/Google Safe Browsing как «malware» или даже «unwanted». То ли поисковики не успевают их проверять, то ли не обнаруживает, хотя последнее вряд ли. Правда, некоторые сайты все же удалены из результатов поисковой выдачи мобильного поиска.
Ну а напоследок хотел бы посоветовать две вещи:
- Если вы посетитель подобных популярных ресурсов – не стоит надеяться, что все они безопасны. Даже если у вас установлен антивирус, он не спасет от таких проблем, как wap-click редиректы на смс-подписки, потому что это не вирус (вас просто незаметно подписывают на платную услугу и снимают ежедневно по 20 руб) Да и, откровенно говоря, от drive-by атак антивирусы защищают далеко не в 100% случаев, особенно на Android’е. Поэтому хорошая практика — самостоятельно проверять подобные сайты специализированными сервисами, если возникает какое-то подозрение.
- Если вы владелец подобных ресурсов и еще не задумывались о безопасности сайта, или вам кажется, что вас не взломают – самое время провести полную диагностику сайта: просканировать файлы на хостинге на предмет хакерских веб-шеллов, бэкдоров (для этого есть утилиты AI-BOLIT, ClamAv, Maldet), возможно даже сделать пентест проекта, а также проверить доступными сервисами проблемы безопасности (например, с помощью rescan.pro, quttera.com, sitecheck.sucuri.net). А еще, не поленитесь перейти из результатов поисковой выдачи на свой сайт с мобильного устройства через 3G/LTE подключение, прокликайте выборочно ссылки сайта, загляните в код, проверьте, нет ли каких аномалий.
Стоит отметить, что некоторые ресурсы к моменту написания статьи уже справились с заражением и в настоящий момент не несут угрозы, но остается достаточно большая часть посещаемых сайтов, у которых даже спустя 10 дней ситуация не изменилась:
Комментарии (15)
daocrawler
26.05.2016 13:58По какому списку определялись «вставки с blacklist-доменов»?
revisium
26.05.2016 14:21+1Часть списка формировалась вручную, часть в автоматическом режиме. Собирал базу недобросовестных рекламодателей (например, которые выполняют скрытые редиректы), базу блеклист-доменов, размещающих вредоносное ПО (которые выявлялись при лечении сайтов или загружались с мониторинговых сервисов типа clean-mx). За год накопилась приличная база, которую, правда, нужно постоянно освежать.
saboteur_kiev
26.05.2016 15:35+2Отличная статья. Даже не знал про уязвимости типа wap-click.
P.S. Еще одна причина для меня не лазить по инету с телефона, все равно или дома или на работе у экрана.kintastish
28.05.2016 17:34У меня вот выбора нет и приходится дома в интернет через 3G модем ходить. С ним тоже можно легко на подписки попасть, особенно, если человек слабо разбирается. Да и сам разок влетел, но вовремя очухался.
Теперь вот узнал что еще и wap-click существует.
Пара вопросов для ликбеза:
1. Можно ли попасть на wap-click пользуясь 3G/4G-модемом?
2. Что может сделать пользователь компьютера или мобильного устройства, чтобы обезопасить себя от этой уязвимости?BarakAdama
01.06.2016 22:17Не сочтите за рекламу, но в прошлом году я писал на Хабре о технологии в Браузере, который блокирует все страницы с wap-click (распознает по домену оператора): https://habrahabr.ru/company/yandex/blog/273385/
Примерно 40 тыс. человек в сутки спасаем.
LifeKILLED
27.05.2016 01:18Спасибо за описание процесса тестирования и набор полезных прог. Буду и свой сайт иногда проверять. Такая проблема в интернете действительно есть. Из-за кликанья по таким ссылкам каждый знакомый уже «попал» на СМС-ки, включая меня. Некоторые молчали по полгода (потому что деньги могли и вообще без СМС-ок снимать). Эту опцию надо вообще выпилить из всех услуг сотовых операторов. Встретить бы хоть одного в тёмной подворотне.
fend
28.05.2016 17:38+1Для этого можно еще встретить их в их же салоне и очень настойчиво попросить подключить бесплатную слугу под названием типа «стоп-контент» (от оператора к оператору название меняется). Они могут артачиться и делать вид что не знают что вы от них хотите, но немного настойчивости тут поможет)
vagonovozhaty
28.05.2016 17:33Подключение контентного счета для номера снимает 99% проблем с подписками.
esnote
28.05.2016 17:35Как посмотреть топ 5000 по России? У меня только топ 500 показывает на алексе.
alekssamos
28.05.2016 17:36Да, платные подписки особенно актуальны.
Очень много раз я и несколько моих знакомых попадались на такое.
А теперь опишу более подробнее:
один раз мне прислали сообщение вида «пожалуйста вступи в мою группу в вк vk… cc / qwerty» (qwerty как пример), я нажал на ссылку,
Далее произошло перенаправление на:
http: / / initsubscribe .com/lp/filegeneratornet/?hash=c83dc...769&return_url=http%3A%2F%2Fs1.wb-con.com%2Ftele2%2Fmt%2Fredirect&ext_id=525...963&cscdsbtrf=1
Затем Location на:
http: / / gate .initsubscribe .com/subscription/create/?u=http%3A%2F%2Fs1.wb-con.com%2Ftele2%2Fmt%2Fredirect&e=...&h=009fd...7b56&tf=1&s=ltorg&p=790048****7&d=2016-05-20…
* где *** там мой настоящий номер телефона, который был получен автоматически без всяких запросов и предупреждений.
И после этого, там было ещё несколько редиректов на s1 .wb-con .com, наконец, произошёл Location на страничку https: / / vk .com / club******
* т.е. обычная ссылка на группу в ВК и с виду, всё прошло незаметно и какбуд-то никакой подписки и не было и я даже сам сначало удивился, пока не посмотрел логи.
* И да, мой оператор Tele2, если что.
Но на самом деле мне сразу же активировалась сплатная подписка на какой-то filegenirator за 30 рублей в сутки, который я отключил через ЛК ( my .tele2 .ru ).
Затем я написал операторам Tele2, полностью, почти также объяснил ситуацию и спросил: «каким образом сайт может получать мой номер телефона?»
Мне ответили: «Да, вы правы, это происходит через редиректы на мошеннические сайты, где вам и активируется платная подписка, наши специалисты уже в курсе о данной проблеме и стараются её как можно быстрей её решить. Поставьте антивирус и не переходите по незнакомым ссылкам и будьте осторожнее при посещении незнакомых или мало известных сайтов...»…
Но антивирусы тут не помогают, не справляются, хоть ччто бы ты там не ставил…
Я ещё раз спросил: «Какое право сайты без моего ведома получают мой номер телефона и могут делать с ним всё, что захотят?»
Получил ответ: «Я не в курсе мошеннических схем, по которым действуют злоумышленники и ничего не могу вам сказать по этому поводу...»… «досвидания.». Вот и всё.
И да, я сказал верните мне 30 рублей, они ответили да, вернём, ждите, да так ничего и не вернули.
P.S. Зайдите с телефона (именно с телефона, а не с планшета или компьютера с модемом ) через интернет Tele2 (с другими операторами не знаю как там) на сайт ask.fm и попользуйтесь им в течение 20 минут, всё, поздравляю, держите подписку… И так уже недели четыре происходит с ним, если не больше. Вообще уже…
Ещё можно иногда встретить подписку на сайте prime-music .net, но не сразу, а через несколько дней пользования этим сайтом…
* просто здесь просили привести примеры сайтов, вот я и привёл.
И да, вот ещё интересный факт, если загуглить по слову nashasetkacom или initsubscribe, то можно найти большое количество жалоб на эти подписки, а также некоторые технические подробности и даже javascript код, который на это направляет…
gezakht
А можно привести пример конкретного посещаемого сайта из топа, который заражен?
revisium
Например, финансовый портал с посещаемостью 25K в сутки — вот результат скана. У него в двух .js файлах инжект скрипта с редиректом на wap-click. Перешел сейчас из результатов поиска google на сайт с андроид-телефона через 3G подключение MTC, средиректило на http://moipodpiski.ssl.mts.ru.
BarakAdama
Доброго вечера.
Жаль, раньше не заметил этот пост. Этот сайт известен нам с 20 апреля и не показывается в выдаче для пользователей мобильного интернета. Со стороны поиска мы уже год как защищаем пользователей от таких угроз: https://habrahabr.ru/company/yandex/blog/257043/
Со стороны Яндекс.Браузера с прошлого года действует защита от всех страниц с wap-click. Писал о ней на Хабре: https://habrahabr.ru/company/yandex/blog/273385/