Pull to refresh

«Софт за пределами морали». Глава третья «Состояние современных защит»

Lumber room
Опущу длинные и противоречивые вступления, кратко представлю вам сегодняшнего гостя — кодер undefined.
Широко известный в узких кругах, undefined написал большое кол-во андеграунд-софта — как зловредного, так и вполне безобидного и правильного, облегчающего тяжелый труд блек-сеошников, спецов по инвайту, а также людей, занимающихся раскруткой вполне осязаемых знаменитостей (речь идет об автоматизированной поставке контента на их личные страницы в социальных сетях).

Что ж, зададим undefined несколько вопросов.

— Расскажите про текущее состояние защит на сайтах от автоматизированных средств обработки, какова практическая польза от них?
— Ну в первую очередь, хочется сказать пару слов обо всем известной капче.
Для многих понимающих людей уже давно не секрет что капча неспособна защитить практически ни от чего.
Она может лишь задержать работу программы, но не более чем на 6 секунд — это максимальное время, которое уходит у работников спец. сервисов на ввод текста с картинки. При производственных масштабах работы с софтом, что нередкость сегодня, эта задержка практически неощутима.
Капча — это самый простой и самый бесполезный способ защитить свой сайт от так называемых ботов.

Чаще всего программы имеют следующие средства разгадки капчи — отправка на сервис, ручной ввод, разгадка через внешнюю программу.

Также, не следует полагаться на её разновидности — математическую капчу (типа 2 + 2 = ?) — это просто детский сад и ReCaptcha — единственное преимущество которой заключается в том, что благодаря ей частично распознаются тексты с неких книг. Рекапча парсится и разгадывается абсолютно также как и обычная капча и некие сложности с ней могут возникнуть лишь у школоты, либо кодера, столкнувшегося с ней впервые. После чего составляется стандартный алгоритм её разгадки, используемый во всех остальных проектах.

К слову о бесполезных защитах, вспоминается такой редкий метод, как установка секретной куки с помощью подгружаемой безобидной картинки. Обнаруживается на раз при первом же фейле с отправкой запроса, так как первое что сделает кодер — это сравнит полученные скриптом куки с куками, отправляемыми на сайт. Для этого достаточно простейшего браузерного сниффера.

— Хорошо. А встречались ли вам чересчур замороченные защиты? Возможно настолько безумные, что помимо защиты от спама, они также надёжно оберегали сайт от посетителей?

— Основная защита, оберегающая сайт довольно надёжно от всех, кто бы на него ни зашёл — это его кривость и тормоза.
Вспомним падение посещаемости Одноклассников, если не ошибаюсь, в период с октября 2008 по май 2009 года. Тогда же и кодерам, пишущим софт под данную социальную сеть было непросто отлаживать и фиксить свои творения.
Динамично меняющиеся субсервера в урле, идиотский ajax-интерфейс, в котором было сложно ориентироваться даже через месяц его использования — всё это надёжно защищало сайт от его массовой обработки.

Задержки датинг.ру между отправкой приваток в 20 секунд также надёжно оградили его от спама.
Но сомнительно, что большинство сайтов последует его примеру, т.к. увеличение задержек снижает скорость взаимодействия юзеров между собой, а это перекрывает кислород самому сердцу любой социальной сети.

Особое внимание заслуживает твиттер.
Старый интерфейс порой зависал, но новый не идет ни в какое сравнение. Возможно это я живу в аномальной зоне, где интернет густеет при температуре ниже 20 градусов, но как же чёрт побери сложно писать софт, когда сайт регулярно встает колом! На разработку функции логина в один запрос можно потратить десяток минут. Это тоже «хорошая» защита, возьмите её на карандаш.

— Ну а какие защиты действительно работают?
— Бан на 30 минут за два быстрых логина на тех же Одноклассниках, а также бан по айпи на пару часов за чек нескольких забаненных акков подряд. Пока не наберешься опыта, это действительно доставляет проблемы в разработке. Вероятно, это хорошо отсеивает некий слой дураковатой школоты, прочитавшей две главы из учебника по пхп и тут же доставших курл.

— Скажите, undefined, с чем ещё приходилось испытывать трудности при разработке ботов?
— С нестандартными решениями.
Как пример — ЧПУ, используемый в друпале, когда к примеру, линки на страницы выглядят так: /news-about-something.html. Это конечно сложнее выпарсить, чем к примеру node?id=28.
Аплоад роликов на ютуб возможен лишь через flash-интерфейс. А сниффер его запросы не видит, поэтому приходится копаться в wireshark. А wireshark не видит карточки ноута atheros. Отсюда потери времени. Хотя это по-своему интересно.

Динамические id юзеров в Одноклассниках тоже заслуживают особого внимания.
Они исключают возможность сбора баз, затрудняют нахождение конкретного человека — всё приходится делать через поиск в течении одной сессии, так как после её завершения все собранные id становятся невалидными. Хотя с другой стороны, раз приходится писать больше кода, для обхода этих ограничений — и сам софт стоит дороже. А Одноклассники вообще лакомый кусочек, ввиду адекватности его юзеров, выделяющихся на фоне таких отстойников спама как ВК.

Что касается гугла, если ваш софт не обрабатывает редиректы при запросе автоматически на должном уровне — при работе с ним и его сервисами вы хапнете горя уже при логине. Логин состоит из шести редиректов, во время которых некоторые редиректы совершаются при помощи js и их необходимо парсить отдельно. Пара лишних кук, случайно выдранных с чужого поддомена — и гугл уже не пустит вас дальше. Поэтому приходится быть очень внимательным, кропотливо изучая логи сниффера.

— Что вы можете сказать об оплошностях допущенных разработчиками на их сайтах? Встречаются ли такие упущения, которые облегчают жизнь рядовому кодеру crimeware?

— Конечно встречаются, куда без них.
Назову суть этих упущений. Возможно, кто-то впоследствии обнаружит это в своём проекте, отснифает активность, связанную с ними и прикроет дыру.
Но на уже существующие указывать не стану.

Во-первых, это банально слабая проверка данных на стороне сервера.
Интерфейс позволяет юзеру добавить три фотки за раз. Скрипт посылает сотню полей photo[] и они все успешно загружаются. Интерфейс ограничивает юзера в изменении каких-либо данных до подтверждения аккаунта, а скрипт справляется с этим и без активации.

Во-вторых, некоторые сайты поддерживают так назвыаемые «ссылки авторизации».
Пройдя по ссылке — получаешь все куки залогиненного пользователя и работаешь с сайтом.
Соответственно, все фильтры, установленные на функцию логина идут лесом.

В-третьих, даже с капчей порой встречаются недопустимые косяки.
Страница, скажем входа, содержит изображение капчи и хидден-поле, содержащее некий хеш.
Разгадываем капчу руками и в скрипте посылаем всё время один и тот же хеш + одинаковый ответ на капчу. Вуаля, рега без разгадывания текста с картинки — данная капча жёстко связана с данным хешем.

Каждый случай уникален конечно, но подобное периодически встречается.

— Замечательно. А попадались ли интересные защиты в вашей практике? Защиты, заставляющие хорошенько подумать, прежде чем что-либо сделать.
— Несомненно. Любая индивидуальная и сложная, занимающая не меньше полудня, защита — для меня интересна. Обход таких защит — пожалуй одна из самых интересных граней моей деятельности.

— Приведите примеры.
— Первый пример, навскидку — это квип.ру.
Загляните в его регу и увидите 3 скрытых поля с рандомными именами.

Уж как разработчики только не ухищрялись чтобы сбить меня с толку!
И левый скрипт подгружали, который меняет эти поля местами, и затирали место подключения скрипта, не учтя однако что в исходном коде страницы это место всё равно останется.

Действительно, было приятно повозиться, отложив все другие дела в сторону. Такое затягивает так, что забываешь про еду и естественные потребности.

Рандомные поля маил.ру также заслуживают уважения.
Уж как кодеры наверное усложнили себе жизнь с их проверкой и валидацией.
А я просто выбрал их все по маске и заполнил нужными данными в порядке очередности.

Тройная капча майла — отнюдь не занимает втрое больше времени на разгадку.
12 строк кода склеивают три картинки в одну, после чего увеличивают контраст, для удобства распознавания, и отправляют на сервис.
Склеивать пришлось впервые, поэтому я остался доволен тем что у меня это получилось просто и изящно.

Кодинг теневого софта — мной воспринимается в первую очередь как искусство.
Это не штамповка серых сайтов визиток на унылом фреймворке, не просиживание штанов за очередной валидацией две тысячи третьего поля с Именем и Фамилией глупого посетителя…

— Пожалуйста, продолжайте.
— Да. Об интересных защитах.
На одном из сайтов я встречал rsa-хеширование пароля яваскриптом перед отправкой на сервер.
К сожалению то был не мой заказ, ко мне лишь обратились за помощью, но я не располагал тогда временем для его обработки, да и сам сайт где-то потерялся, однако помню что с налёту это решить не получилось. Если мне не изменяет память, там использовались хитрые операции, вплоть до побитового смещения, а человеку, не знакомому со столь мудрёными алгоритмами, потворить это на другом языке непросто.

Также, не поддался мне реггер яху.ком.
Возможно я был тогда ещё неопытен, возможно уровень защиты действительно очень высокий.
При фокусе в каждом поле формы — яваскрипт подсчитывает некую контрольную сумму, которая затем отправляется вместе с данными при регистрации. Понять принцип её подсчета мне тогда к сожалению не удалось.

Что ещё сказать. Возможно кому-то интересно будет узнать что на мамбе стоит автоматический фильтр загружаемых фотографий, которые проверяются на уникальность. При отсутствии оной аккаунт незамедлительно банится.
Универсальная функция в наборе моих инструментов легко меняет у фотографии размеры (+- несколько пикселей), качество, контраст, имя файла и тому подобные мелочи. Соответственно, защита сходит на нет.

— Спасибо за информацию, undefined.
И в завершении нашего скромного интервью, задам последний вопрос — приходилось ли наблюдать какую-либо реакцию со стороны админов и кодеров ресурсов, для которых писался софт. Всё-таки вы поддерживаете его в рабочем состоянии довольно долгое время, следите за изменениями сайтов.

— Кодеры сопротивляются, но довольно вяло.
Потому что им за это не платят. Я сам работал на контору, у них просто нет такой галочки в текущих расходах. Ну да кому я рассказываю.

Из достойных ресурсов, хочу отметить промодиджей.ру. Мне нравится их сайт, интерфейс, подход к реализации задачи.
Написав свой первый реггер для этого сайта, я за сравнительно небольшое время зарегал около 400 аккаунтов. На следующий же день было введено ограничение на кол-во регистраций с одного айпи. Ограничение присутствует до сих пор.

Порой, сайты защищались довольно нелепо.
Поле формы называлось message, теперь оно назыается message12. Вот и сломали софт, молодцы.
Но такое бывает очень редко.

В основном все поломки софта происходят из-за модернизации сайта.
Улучшается сайт — улучшается и софт. Мы словно подталкиваем друг друга вперёд.

У каждой стороны свои ограничения, свои преимущества.
Я не имею доступа к их коду и защитам, приходится действовать лишь проверенными методами.
Они не могут делать резких движений, так как любые ограничения в первую очередь сказываются на юзерах самого сайта.

Реал-статус мамбы и Лайв-статус Лавпленета.

Их действие на меня, как на кодера — уже практически не ощущается.
Заказчики затариваются реал-акками также легко как и раньше покупали неподтвержденные.

А вот со стороны юзера — совсем иная картина.
Я пробовал побыть «не-реал» юзером. Доступны анкеты лишь каждого десятого, заполнить в анкете практически ничего нельзя. Сайт фактически стал совершенно неюзабелен, если ты не имеешь свободный, не использованный для активации ранее, мобильник и не можешь получить заветный код в смске.

А из добротных улучшений, я больше всего рад за наших Одноклассников.
В последние месяцы они убрали субсервера из урла, упростили интерфейс, убрали требование первых двух букв фамилии при поиске, что значительно облегчило сбор юзеров с сайта.

Все их улучшения также сказались и на разработке софта — писать стало значительно приятнее и проще.
Так держать, парни!

— Дикс и undefined / 12.2010
Tags:
Hubs:
Total votes 34: ↑32 and ↓2 +30
Views 339
Comments Comments 29