Как работает механизм блокировок со стороны Роскомнадзора

moder

moder

Администратор
Команда форума
-_413.jpg

Прошло чуть больше месяца с тех пор, как мы начали заниматься зеркалами блога Навального и борьбой с цензурой. Чего за это время только не было: нас и DDoSили, и писали жалобы на наши интернет-кошельки, и пытались подставить с придуманным компроматом, и пытались выставить вирусмейкерами, и банили зеркала большими пачками, а примерно полмесяца назад ещё и перестали удалять адреса зеркал из реестра, несмотря на то, что мы формально выполняем требования Роскомнадзора — убираем с попавших в реестр зеркал блог Навального. Не всей информацией, которую мы получаем в ходе нашей работы, мы можем сразу поделиться: всегда нужен кропотливый анализ, проверка и подтверждение фактами, сбор дополнительной информации, разведка. Но сегодня кое-что интересное мы вам поведаем.

Одной из наших задач было: выявить среди десятков тысяч посетителей зеркал того одного, который зашёл с целью выявить «противоправную информацию» и сообщить об этом в Роскомнадзор / добавить в «запретный реестр». Речь не просто о том, чтобы выявить тех, кто проверяет доступность информации и заблокировать их. Речь, по сути, о сборе разведывательной информации: каким образом они проверяют сайты — руками или автоматизированным скриптом; «щёлкают» ли они при проверке остальные страницы сайта на всякий случай, анализируя информацию на них; как часто они заходят на проверяемый сайт, в какое время; насколько они специалисты в техническом плане, где их слабые места и т.д. Мы знаем всё о том, как реализуется блокировка сайтов из реестра со стороны провайдеров, знаем сильные и слабые стороны этих механизмов (благодаря чему нами и была продемонстрирована возможность атаки заблокированным ресурсом), но вот механизм работы с реестром со стороны Роскомнадзора для нас был тогда чёрным ящиком. Тогда мы придумали как промаркировать всех пользователей: сделать wildcard-поддомен (т.е. ссылка любой.поддомен.fuckrkn.me приводила на актуальное зеркало).

Мы сделали, чтобы при заходе на «большую красную кнопку» пользователю генерировался новый, уникальный поддомен на *.fuckrkn.me, после чего в логах веб-сервера можно было легко найти пользователя по этому уникальному маркеру — поддомену, сгенерированному специально для него. Казалось бы, нам оставалось ждать, когда очередное зеркало попадёт в реестр, а потом смотреть логи. Но оставался один важный вопрос. Это был первый опыт, когда Роскомнадзору в теории нужно было «забанить» не один основной домен, а неограниченное кол-во поддоменов (не трогая при этом основной fuckrkn.me). Мы не знали как поступит РКН, знали только что текущий формат реестра не позволяет вносить в него «маски», можно вносить только конкретные URL-адреса. Но Роскомнадзор всё равно мог что-то придумать и разом «бахнуть» все поддомены, и тогда мы бы потеряли нашу возможность собрать ценную разведывательную информацию.

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

Как работает механизм блокировок со стороны Роскомнадзора

Как работает механизм блокировок со стороны Роскомнадзора, скриншот 2

Как работает механизм блокировок со стороны Роскомнадзора


А следом за ними и пользователи начали «создавать» свои поддомены-зеркала на нашем *.fuckrkn.me и пиарить их. Тем самым мы сильно уменьшили риск, описанный выше. Также у нас существовала проблема, что ТОПы постоянно постили в своих ЖЖ и твиттерах ссылки не на главную страницу с кнопкой зеркала (navalny.us), а на конкретное, уникальное для них зеркало (а-ля blablabla.fuckrkn.me). А благодаря вброшенной теме с «персонализированными зеркалами» (makarenko.fuckrkn.me, pekhtin.fuckrkn.me и т.д.), все посетители зеркала заходили не на одно зеркало, а на множество распиаренных. И тут уже шанс «затеряться в толпе» у «специалистов» Роскомнадзора становился гораздо меньше (что и случилось, например, с адресом зеркала makarenko.fuckrkn.me).

К счастью, ждать результатов пришлось недолго — в реестр начали один за другим попадать адреса зеркал на *.fuckrkn.me. К ещё большему нашему счастью, Роскомнадзор не догадался о wildcard-поддомене и внёс в реестр уникальные адреса зеркал, на которые заходили только они. Тем самым мы получили полную информацию как они заходят на сайты, которые планируют забанить, что на них делают, что смотрят, откуда переходят и т.д. Для большей достоверности, мы подождали относительно долгое время, чтобы как можно больше таких зеркал попало в реестр и мы сравнили логи. Теперь мы можем говорить со 100%-ой уверенностью: по всем тем забаненным зеркалам были абсолютно идентичные заходы с одних и тех же IP, в одном и том же порядке, и т.д. Эти заходы присутствовали в логах всех забаненных зеркал.

Итак, как же был устроен процесс выявления и проверки «плохих» сайтов с обратной стороны, со стороны Роскомнадзора в нашем примере?

В логах всех забаненных зеркал содержалась одна и та же последовательность действий. Первое обращения шло на адрес navalny.us с IP-адреса 109.188.125.89 (Yota). По заголовку User-agent было видно, что человек заходит с мобильного браузера Safari, с айфона. Примечание: в логах время стоит «как на сервере». Чтобы получить московское время, просто прибавьте 4 часа к времени, указанному в логе.
Код:
109.188.125.89 - - [03/Apr/2014:07:32:10 +0000] 3zcb.fuckrkn.me "GET / HTTP/1.1" 412 223166 "http://navalny.us/" "Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D167 Safari/9537.53" "-"
Спустя некоторое количество секунд (обычно порядка 30), на адрес зеркала заходили уже с IP-адреса 194.165.23.2. Этот IP-адрес принадлежит подсети Главного радиочастотного центра — это подведомственное предприятие Роскомнадзора.
Код:
194.165.23.2 - - [03/Apr/2014:07:32:26 +0000] 3zcb.fuckrkn.me "GET / HTTP/1.1" 302 356 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
Дальше начинается самое интересное: вал запросов с IP-адреса 77.37.208.110. Самый первый из этих запросов — получение WHOIS-данных адреса зеркала через сервис http://1whois.ru/ (это нужно, чтобы определить на кого зарегистрирован домен, получить контактные e-mail-адреса владельца и отослать ему требование об удалении информации).
Код:
77.37.208.110 - - [03/Apr/2014:07:48:42 +0000] 3zcb.fuckrkn.me "GET / HTTP/1.0" 200 110960 "http://1whois.ru/?url=3zcb.fuckrkn.me" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
Следующие запросы с этого же IP-адреса особенно странные:
Код:
77.37.208.110 - - [03/Apr/2014:07:48:43 +0000] 3zcb.fuckrkn.me "GET //web.config HTTP/1.0" 404 6673 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:07:48:43 +0000] 3zcb.fuckrkn.me "GET //kreotonsystems.php HTTP/1.0" 404 6697 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:07:48:44 +0000] 3zcb.fuckrkn.me "GET //wp-login.php HTTP/1.0" 404 6679 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:07:48:44 +0000] 3zcb.fuckrkn.me "GET //favicon.ico HTTP/1.0" 200 5663 "http://1whois.ru/?url=3zcb.fuckrkn.me" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:07:48:44 +0000] 3zcb.fuckrkn.me "GET //scripts/drupal.sh HTTP/1.0" 404 6700 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:07:48:45 +0000] 3zcb.fuckrkn.me "GET // HTTP/1.0" 200 7359 "http://1whois.ru/?url=3zcb.fuckrkn.me" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:07:48:45 +0000] 3zcb.fuckrkn.me "GET //joomla.xml HTTP/1.0" 404 6673 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:07:48:45 +0000] 3zcb.fuckrkn.me "GET //libraries/joomla/index.html HTTP/1.0" 404 6736 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
По запросам понятно, что автоматизированный скрипт пытается определить на каком движке стоит сайт. Зачем это нужно, какой практический смысл несёт определение движка сайта в ситуации с блокировками — непонятно. Ещё через некоторое количество секунд на адрес зеркала заходят уже одновременно с двух IP-адресов: 188.254.8.42 (это провайдер Ростелеком, через который ходит в интернет Радиочастотный центр) и через VPN с IP-адреса 85.114.141.191 (после того, как мы это выявили и забанили их VPN, они начали на этом этапе заходить на адрес зеркала через сервис hidemyass.com). Причём как видно по логам, обращения чередуются друг за другом с этих двух адресов (т.е. человек смотрит, что заблокировано для российских пользователей, а что доступно остальным и сравнивает):
Код:
188.254.8.42 - - [03/Apr/2014:07:50:54 +0000] 3zcb.fuckrkn.me "GET / HTTP/1.1" 302 356 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
85.114.141.191 - - [03/Apr/2014:07:51:13 +0000] 3zcb.fuckrkn.me "GET // HTTP/1.1" 200 47178 "http://" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "4.79"
188.254.8.42 - - [03/Apr/2014:07:52:37 +0000] 3zcb.fuckrkn.me "GET / HTTP/1.1" 302 356 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0" "-"
85.114.141.191 - - [03/Apr/2014:07:52:44 +0000] 3zcb.fuckrkn.me "GET //navalny/__rpc_ctxpopup?user=&userid=0&userpic_url=http%3A%2F%2Fl-userpic.livejournal.com%2F44724520%2F10064515&mode=getinfo&_=1396511562609 HTTP/1.1" 200 2755 "http://" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
188.254.8.42 - - [03/Apr/2014:07:53:59 +0000] 3zcb.fuckrkn.me "GET / HTTP/1.1" 302 356 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0" "-"
Дальше снова происходит запрос с IP-адреса 77.37.208.110 на получение WHOIS-данных:
Код:
77.37.208.110 - - [03/Apr/2014:08:01:26 +0000] 3zcb.fuckrkn.me "GET / HTTP/1.0" 200 110960 "http://1whois.ru/?url=3zcb.fuckrkn.me" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
Потом снова попытка определить движок сайта:
Код:
77.37.208.110 - - [03/Apr/2014:08:01:27 +0000] 3zcb.fuckrkn.me "GET //web.config HTTP/1.0" 404 6673 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:08:01:27 +0000] 3zcb.fuckrkn.me "GET //kreotonsystems.php HTTP/1.0" 404 6697 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:08:01:28 +0000] 3zcb.fuckrkn.me "GET //wp-login.php HTTP/1.0" 404 6679 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:08:01:28 +0000] 3zcb.fuckrkn.me "GET //wp-admin/ms-users.php HTTP/1.0" 404 6712 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:08:01:28 +0000] 3zcb.fuckrkn.me "GET // HTTP/1.0" 200 7358 "http://1whois.ru/?url=3zcb.fuckrkn.me" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:08:01:29 +0000] 3zcb.fuckrkn.me "GET //scripts/drupal.sh HTTP/1.0" 404 6700 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
77.37.208.110 - - [03/Apr/2014:08:01:29 +0000] 3zcb.fuckrkn.me "GET //joomla.xml HTTP/1.0" 404 6673 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
Напоследок снова заходит с рабочего компьютера:
Код:
188.254.8.42 - - [03/Apr/2014:08:03:06 +0000] 3zcb.fuckrkn.me "GET / HTTP/1.1" 302 356 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36" "-"
Дальше обращения к зеркалу (конкретно по данному адресу, в приведённом примере это 3zcb.fuckrkn.me) прекращаются и через несколько часов или день это зеркало попадает в реестр Роскомнадзора. И так было и есть со всеми забаненными зеркалами. Одна и та же последовательность.

Подробнее: http://ruslanleviev.livejournal.com/34401.html
 
Сверху