Я думал, я буду первым сегодня рассуждать про Информационную Безопасность, но тутАлексей Зарихин меня опередил. Продолжу. Только прошу. Не думайте, что я рекламирую эту статью Сергея Черепанова. Увы, хотя предлагаемая им система может использоваться для решения описанной мною проблемы, я не готов ставить ради этого решение из маркета и давать внешнему серверу доступ к таким страшным вещам, как чёрные и белые списки. Продукт хорош, но не мой. Могу объяснить в личке, если кому нужно. Надеюсь, Сергей меня поймёт без лишних слов. 8)
ПРИМЕЧАНИЕ В статье не затронуты моменты 2 факторной аутентификации, сертификатов, закрытия доступа по HTTPS и т.п. Это работает. Но это более сложная тема и начинающие разработчики с этим не справятся. А статья ориентирована на широкий круг читателей.
[spoiler]
Недавно пришла в голову занятная идея объединить статистику по имеющимся попыткам брутфорса административных разделов сайтов на 1С-Битрикс, где есть модуль проактивной защиты, ведётся журналирование не менее чем на 30 дней и у меня есть доступ. Идея возникла не на пустом месте, а после смутного ощущения, что очередного злоумышленника я явно где-то встречал. Как выяснилось, это не простое совпадение. В таблице приведены исходные данные журналов событий 4 сайтов по попыткам авторизации. Из журнала не удалены логи ошибок авторизации легальных пользователей и «спам-ботов», хотя нас интересуют только попытки брутфорса. скачать (бесплатно, без смс)
Список логинов, фигурирующих в таблице (если указано число после логина, то данный логин фигурирует в нескольких вкладках)
admin - 3
admin1
admin2
administrator - 3
adm
bitrix - 3
director
manager - 3
master - 3
redactor
root - 2
site - 3
user - 3
web - 3
webmaster - 2
www - 2
Сразу следует оговориться, что брутфорс по логину admin на самом деле встречался на всех 4 сайтах. ADMIN – вообще самый распространённый для попыток брутфорса логин. Просто эти данные оказались в данном случае вне пределов месячного журнала. Аналогично и другие логины так же периодически проявлялись на других сайтах, однако в рамках статьи мы этим фактом пренебрежём.
Например, с IP 188.186.4.245 многократно в течение краткого промежутка времени пытались проникнуть на сайты Z и L под логином webmaster. В то же время под логином manager попытки проникновения заметны разного характера. с IP 188.186.4.245 на всё тех же Z и L, а вот на сайте Б были предприняты одиночные попытки с IP 111.63.14.245 и 198.100.167.13. Последние 2 адреса всего лишь "случайно ошиблись адресом"? Давайте посмотрим!
Сайт Б ИП 111.63.14.245
20.10.2013 18:29:11 попытки авторизации под логинами administrator (дважды), manager, admin (дважды), bitrix
20.10.2013 13:26:51 одиночные попытки авторизации под логинами admin, administrator
Неплохая производительность для "случайной ошибки"
Тот же сайт Б ИП 109.238.189.252
20.10.2013 18:29:12 попытки авторизации под логинами adm и admin (дважды)
В то же время замечены в схожем поведении ИП адреса:
50.195.155.97
117.218.65.153
124.248.205.27
116.228.55.184
202.22.232.141
198.100.167.13
120.202.249.196
и многие другие
Сложно сказать были ли это 2 разных злоумышленника или 1. Важно лишь, что в данные случаи иллюстрируют 2 принципиальных схемы, которыми пользуются десятки (если не сотни) потенциальных взломщиков. Разберём обе схемы по шагам:
Схема 1 – брутфорс
Парсим список сайтов на 1С-Битрикс.Данный этап может быть пропущен, поскольку базу сайтов, объединённых 1 признаком (например принадлежностью к CMS 1С-Битрикс) можно легко купить у людей, занимающихся именно сбором такой информации.
Собираем базу будущего «словаря» (по сути это 2 колонки: логин и пароль). База может состоять как всего из 1 логина (например, admin), так и из нескольких наиболее подходящих, по мнению автора, для использования «по умолчанию». Естественно, список логинов может быть составлен вручную. Список потенциальных паролей зачастую получают, взломав какой-нибудь форумный движок и слив из него базу пользователей в незашифрованном виде.Безусловно этот этап так же может быть пропущен, поскольку такие базы есть в продаже.
Запускаем брутфорс базы сайтов по базе «словаря». Самыми распространёнными на данном этапе являются аренда виртуального сервера в «абузоустойчивых» странах (т.е. у хостера, игнорирующего жалобы приходящие извне на клиентов) или запуск на локально машине (Да-да! Некоторые даже не пользуются ни Proxy, ни VPN, хотя такие вопиющие случаи конечно сходят на нет). Вариант с запуском брутфорса из распределённого ботнета или с чужого (предварительно взломанного) сервера возможен, однако редок – для этого требуется либо больше материальных вложений, либо большая профессиональная подготовка. И то и другое позволяют производить гораздо более разрушительные целенаправленные атаки.
Как правило, брутфорс каждого конкретного сайта происходит незначительное время, перебираются несколько десятков-сотен (иногда тысяч) пар логин-пароль, после чего атака переключается на следующую жертву. Конечно, бывают исключения, как недавний всплеск DDoS из-за попыток брутфорса сайтов на движке WordPress, когда злоумышленники вели атаку настолько активно, что приводили к ошибке отказа оборудования! Однако через один или несколько дней (иногда неделю или более) злоумышленник может повторить попытку. Происходит ли при этом брутфорс по следующей части словаря или атакующий надеется «а вдруг они там поставили логин-пароль попроще» я затрудняюсь сказать. Иногда повторная атака производится с того же IP адреса, иногда он изменяется.
Достаточно эффективным средством борьбы с такими злоумышленниками становится их выявление и блокировка по IP адресу. При получении в течение длительного времени только сообщений об ошибке злоумышленник может и удалить ваш сайт из своей базы – зачем тратить зря ресурсы, если есть такое большое количество жертв вокруг.
Схема 2 – брутфорс с использованием Proxy/Socks Схема отличается только последним этапом:
Парсим список сайтов на 1С-Битрикс.
Собираем базу будущего «словаря».
Собираем (а чаще покупаем) базу Proxy/Socks серверов. Как правильно используются платные базы, содержащие анонимные прокси сервера. Такие базы необходимо часто обновлять, поскольку они быстро устаревают и сервера в них входящие перестают функционировать.
Запускаем брутфорс базы сайтов по базе «словаря» с использованием Proxy/SOCKS. Т.е. фактически атака идёт «пачками» запросов. И каждая такая «пачка» идёт через свой Proxy/Socks сервер, получая новый IP адрес. Размер пачки зависит только от базы, поскольку размер её значительно меньше списка комбинаций логин-пароль, имеющихся в «словаре». Правда можно использовать каждый из прокси серверов для каждой жертвы.
Данный способ медленнее, поскольку все запросы идут через промежуточное звено, посредника, однако и значительно более сложный для отражения – вся «пачка» запросов с 1 Proxy может успеть пройти за 1 секунду и состоять всего из нескольких запросов, что делает невозможным ручную фильтрацию и затрудняет автоматическую фильтрацию. В простейшем случае (если у вас сайт-визитка) можно противопоставить атакующем закрытие админки по IP (т.е. создание белого списка IP адресов с которого доступ возможен). Однако ИНОГДА этого будет недостаточно, если у вас есть форма авторизации – так можно атаковать не только админку, но и любую форму авторизации. Если же это не помогает… Надо думать и искать способ, брать за образец методы борьбы с DDoS (по сути это тоже разновидность), идеи есть!..
Резюме Чем бы мне хотелось закончить эту статью?
Мне было очень интересно исследовать базу логов с 4 сайтов за 30 дней почти на 30К записей с неудачными авторизациями (большинство из которых попытки брутфорса)
Я выражаю свою искреннюю просьбу тем злоумышленникам, которые узнали в персонажах этой статьи себя – свяжитесь со мной. Я вам расскажу на каких сайтах можно тренироваться, но не стоит трогать в реальной эксплуатации. Это я про сайты, с которыми я работаю, потому что:
Ни на одном из 4 приведённых сайтов нет и не было ни одного привилегированного пользователя с логином, который брутфорсился.
Те из сайтов, которые заказали у меня услугу «Администрирование Безопасности» имеют лог короче, чем он мог быть, поскольку злоумышленники банятся.
Те из сайтов, которые НЕ заказали у меня услугу «Администрирование Безопасности» имеют лог длиннее, чем он мог бы быть, поскольку за поведением злоумышленников я наблюдаю лишь изредка из «научного» интереса.
Будьте, аккуратны, чистоплотны, не забывайте про Информационную Безопасность и не используйте логинов для привилегированных пользователей:
admin
admin1
admin2
administrator
adm
bitrix
director
manager
master
redactor
root
site
user
web
webmaster
www
И другие простые логины. Особенно admin!
Переводя рекомендации в понятную каждому аналогию – Мойте руки перед едой, чистите зубы после еды и посещайте стоматолога раз в полгода!
UPD 28.10.2013 - поправлены 2 ссылки и добавлен оригинал файла с данными UPD 28.10.2013 - по итогам данного небольшого исследования родилось несколько идей. 2 из которых оформил на сайте ИДЕЯ 1С-Битрикс:
я не готов ставить ради этого решение из маркета и давать внешнему серверу доступ к таким страшным вещам, как чёрные и белые списки.
В общем-то опасения понятны, когда нет возможности заглянуть в исходный код. Из АнтиБота по умолчанию умышленно исключены возможность отправки жалобы на нового Бота, и возможность отправки данных на анализ (посимвольный разбор логина,email и ФИО). Умышленно как раз во избежание напрасных опасений и возможных обвинений. Решение отправляет лишь EMAIL, с которым пользователь пытается зарегистрироваться, и этот email лишь проверяется по базе 100%-ых проверенных email-адресов ботов.
В полноценной версии модуля есть возможность разрешить в настройках отправлять ФИО, логин и email на разбор с анализом - возвращается % вероятности, и в соответствии с заданными настройками либо пропускается либо не пропускается. Но это оставлено лишь в полноценной версии для коммерческих пользователей, которые по сути создают (наполняют) базу, и оплачивают её содержание и развитие, а вместе с тем понимают преимущества совместного (с другими участниками) формирования такой базы. Банковские системы, органы государственной власти, а с этого года ещё и отделы компьютерных преступлений пользуются базой АнтиБота. Никогда не поверю, что банки и органы власти сунули код в свои системы без его предварительной проверки.
Модуль в МП в исходном коде, из которого сразу понятно, что модуль не отправляет ничего лишнего и не отвечает ни на какие входящие запросы. Проверку на совпадение логина с составляющими ФИО производится прямо в модуле, без отправки куда-либо.
События, обработанные модулем пишутся в общий журнал событий с типом "ошибка регистрации", возможны две записи: - Введены ненастоящее имя, фамилия или email (при совпадении хотя двух из оных), результат проверки самим модулем без отправки куда-либо; - Регистрация с таким Email невозможна - если email 100% зафиксирован как email Бота - результат проверки на удаленном сервере.
Установите, посмотрите код - один единственный исполняющий файл include.php и полтора десятка строчек кода, полтора десятка только потому что соблюден CodeStyle.
Касаемо проблемы, описанной в статье, да, проблема имеет место быть и уже давно, на столько давно, что в полной (платной версии) АнтиБота есть проверка и по IP. При наличии IP в таблице стоп-листа (на сервере Веб-сервиса) вместо формы авторизации и регистрации выводится сообщение о том, что очередную попытку ввода логина и пароля можно повторить не ранее чем через такое-то время и таймер с обратным отсчетом.
Добавляются IP В удаленный стоп-лист - проектами, где была зафиксирована попытка брутфорса с этого IP, а удаляются автоматически по истечении периода блокировки. Продолжительность блокировки IP адресов выбирается коллективно, решение участники проекта могут менять в любой момент, при этом берется время среднее арифметическое из всех предложенных участниками вариантов. Например, на данный момент 13 минут и 42 секунды, вчера утром было 16 минут11 секунда, в течение дня изменилось дважды, к вечеру стало 41 минута 24 секунды.
Я некоторое время назад создал идею, но интереса со стороны разработчиков нет, партнеры тоже не поддержали. Мой интерес от реализации этого в штатном функционале - снижение нагрузки на Веб-сервис, так как блокировка по IP в Битриксе была бы уже штатной, без обращения на Веб-сервис, а значит количество запросов в БД при обработке запроса Веб-сервисом уменьшилось бы в два раза, по крайней мере для запросов от сайтов на БУС. Но увы, судя по всему свободе брутфорса на Битрикс-сайтах БЫТЬ! Ну или "Вэлкам в клуб пользователей Веб-сервисов от WacsGroup".
Но увы, судя по всему свободе брутфорса на Битрикс-сайтах БЫТЬ!
Не то что "быть". ЕСТЬ! Вот специально в начале статьи добавил ссылку на ретроспективу, в том числе на статью про старые сайты на битриксе, где присутствует юзер "admin" и в том числе у известной студии он был (хотя и оперативно кончился).
Сергей, я же потому и упомянул ваше решение, что я внимательно посмотрел, сходил глянул платную версию, обдумал, но тут вновь стоит обратиться к ретроспективе, которую я устроил в начале статьи.
Нет однозначного решения доверять или нет. Описанные в статье методики имеют важную особенность - они используют ПРОКСИ. Т.е. злоумышленник просто меняет проксю и продолжает работу. А если он пользуется белыми прокси серверами, то мы баним на время (или навсегда) сервис, которым могут пользовать наши клиенты. Это неправильно. Собственно поэтому я в конце статьи и добавил ссылки на свою идею. В противовес вам я предлагаю не чёрные списки, а белые. Одно другого не исключает - каждому овощу свой салат. Но это расширяет возможные сценарии применения.
Т.е. проблем в том чтобы "просто взять" ваше решение 2:
код надо смотреть. Очень внимательно. Весь.
Приходящие от вас данные не могут быть приняты "на веру".
Сергей, при всём моём личном уважении, вы же понимаете, что эти проблемы они "для всех". Т.е. конкретно я может быть смогу вам "поверить" и взять "как есть". Но не мною же единым. =(
Увы, проблему кода решить централизованно может только сертификация ФСТЭК. А вот вторую проблему... даже не знаю...
Задойный Алексей, согласен, тут комплексный подход важен, не иначе. Но увы лично я не готов раздавать все ресурсы Soap на безвозмездное использование. Поделился лишь тем, что не в убыток. Более того - раскрытие всех алгоритмов проверки очень быстро сделает весь комплекс малоэффективным, так как нас читают те с кем боремся. Рассказал минимум, который вполне реально, и при имеющемся функционале продукта не сложно, реализовать штатно, и лично мое мнение - реализовать штатно дополнительные возможности блокировки по IP, которые я описал в идее, как-то вполне естественно. Идея есть - дело за "1С-Битрикс", но в данный период времени особый интерес у вендора вызывает только функционал электронной коммерции...
Сергей я разве предлагаю что-то кому-то бесплатно отдавать? 8) Я просто объяснил почему ваше (безусловно хорошее) решение для широкого использования может не подойти. Вам оно подходит ИДЕАЛЬНО. Тем, кому нужно просто формально какие-то проблемы решить - тоже. Но увы для большинства параноиков путь только один - повторить ваш путь!
Про тех, кто нас читает. Читают, я думаю. Есть такое ощущение. Потому я к ним обратился в конце. Пусть связываются с фейковых аккаунтов, я им честно скажу какие сайты для подобных "широковолновых" методик бесполезно использовать - они же сами и ресурсы сэкономят. С другой стороны, буду рад, если на этих самых сайтах они новые свои идеи обкатывать будут - я же буду в первых рядах. Но это конечно фантазии - вряд ли кто решится. Они ведь параноики не меньше нашего...
Но увы для большинства параноиков путь только один - повторить ваш путь!
Почти тезис! Хотя если бы в свое время были решения ну его к черту проходить весь этот путь... Время как ресурс цены не имеет.
Они ведь параноики не меньше нашего...
А это в точку! Когда только начали использовать свой сервис запустили такую штуку - при попытке зарегистрироваться с Email-ом уже попавшим в базу выдавали сообщение, мл так и так, Ваш email в черном списке, по такой-то причине, предлагаем Вам сотрудничество, Вы обходите барьер - мы платим деньги. Ни одного желающего!
Почти тезис! Хотя если бы в свое время были решения ну его к черту проходить весь этот путь... Время как ресурс цены не имеет.
Сергей, вы же с госами работаете - знаете же как они трепетно к этому относятся. У них даже если своей паранои не хватает, то они должностными инструкциями добивают!
А это в точку! Когда только начали использовать свой сервис запустили такую штуку - при попытке зарегистрироваться с Email-ом уже попавшим в базу выдавали сообщение, мл так и так, Ваш email в черном списке, по такой-то причине, предлагаем Вам сотрудничество, Вы обходите барьер - мы платим деньги. Ни одного желающего!
Не удивительно. В описанных мною выше схемах (а для спама они идентичны) нет места ручной регистрации ВЛАДЕЛЬЦЕМ сервиса. Они просто не в курсе. А вот когда с ними напрямую общаешься на том же ачате - гораздо спокойнее всё проходит. Некоторые - очень душевные люди!
Процентов 30% Ботов осуществляется ручной регистрацией. В некоторых банках стали усложнять каптчи, так например один из банков издеваясь над пользователями требовал ввода пропущенного в предложенной пословице слова! Эксперимент правда не удался, так как количество Ботов не уменьшилось, банк вернулся к набору символов. Однако эксперимент показал, что регистрация Ботов происходит в ручном режиме, а вот запуск их на заполнение форм - 100% автомат, за единичными случаями.
Ручной ввод осуществляется не самими спамерами, а с использованием сервисов под лозунгами - РЕАЛЬНЫЙ ДОХОД В ИНТЕРНЕТ, платят по паре центов за каждую регистрацию, разумеется ввод каптчи осуществляется вручную. Дополнительные скрытые поля ботов удерживают все меньше и меньше + те кто автоматом регистрируется, ведут базы по сайтам и CMS - какие поля заполнять надо, а какие нет. У нас же нет возможности менять идентификаторы полей формы авторизации и регистрации. А была бы такая возможность можно было бы задавать идентификаторы типа: "JHGS&*6sfts8", вот тогда ни один автоматический Бот не смог бы распознать какое поле надо заполнять а какое нет. У меня команда сейчас трудится над модулем, который будет генерировать идентификаторы полей в форме, при этом неверное заполнение после обновления страницы кроме сообщения об ошибке будет генерировать форму с совсем другими идентификаторами. В общем-то механизм уже есть, сейчас работаем над корректной динамической подменой штатной формы при активности модуля, без дополнительных телодвижений в виде замены шаблонов, компонентов, настроек и прочих танцев с бубнами. У себя в течение недели тестировали - автоматику не пропускает подмена идентификаторов, а ручные регистрации не пропускает АнтиБот (в полной версии, а решение из МП может и пропустить, если мыла в списке нет).
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».