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

Чтобы превратить перехваченный трафик в коммерчески привлекательные списки конфиденциальных данных, ботоводу приходится применять разные техники майнинга. Одна из простейших техник — искать в запросах POST переменные с именами вроде username и password и считывать их значения. Или искать имена переменных, характерных для номеров кредитных карт, вроде cc_number, которые обычно используются в приложениях онлайн-банкинга.

Чтобы извлекать и собирать эти данные, ботоводу требуются значительные вычислительные ресурсы. Ему приходится раскошеливаться на аренду серверов. Выгоду он оценивает по соотношению X/Y, где X — стоимость конфиденциальных данных, а Y — стоимость аренды серверов. Когда это соотношение пересекает определенный нижний порог, ботоводу твое веб-приложение становится неинтересным.

Поэтому суть кодинга, устойчивого к ботнетам: разрабатывать веб-приложения, в которых соотношение X/Y держится на стабильно низком уровне. Я предлагаю три метода такого кодинга: простой, средний и сложный. Эта градация установлена исходя из накладных расходов на сервер, где обитает твое веб-приложение, и сложности реализации метода.

 

Проще простого

Самый простой метод направлен на обман парсера ботнета:

  • заменить распространенные имена переменных вроде CVV, username, password и address на неочевидные;
  • добавить в форму скрытые поля с выдуманными данными.

Обычный пользователь эти поля даже не увидит, а ботовода они заставят попотеть.

Пример такого метода
Пример такого метода

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

 

Чуть сложнее: фокус с функциями JS

Методы этой категории предполагают использование модулей JS для создания путаницы в запросах POST. Многие популярные ботнеты, например ZeuS и его преемники, сканируют только запросы POST. Запросы GET их не заботят. Это можно использовать для передачи через GET ключей шифрования и функций обфускации JS, не попадая при этом под радар ботнета.

Когда пользователь зараженного компьютера, заполнив какую-нибудь форму, нажимает «отправить», все параметры формы запутываются при помощи функции обфускации, доставленной через GET, и затем отправляются на сервер через POST в скрытом поле формы. Остальные поля формы остаются незаполненными, либо в них вносятся фальшивые данные.

Такое запутывание значительно усложняет серверу C&C извлечение конфиденциальных данных. С этим методом тебе придется вставить в серверную часть своего веб-приложения функцию деобфускации, которая будет оттягивать на себя часть вычислительных ресурсов твоего сервера.

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

Пример такой функции
Пример такой функции

В следующем листинге представлен еще более изощреннный пример обфускации: цифра 5 заменяется символом #, а цифра 2 — символом %.

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


Первый запрос POST запутывает данные. Затем он берет поле с именем cc_number и вставляет туда произвольную строку, которая для ботовода оказывается бесполезной.

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

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


Владимир Карев

Инженер с 50-летним стажем. Окончил ТУСУР в 73-м. Карьеру свою начинал с работы на алтайском военном заводе РОТОР, где разрабатывал навигационную электронику для бортового вооружения подлодок. С вычислительной техникой имею дело ещё с тех пор, когда она была ламповой. Свой первый ZX Spectrum спаял самостоятельно. Если есть вопросы, не стесняйтесь писать в комментариях. А ещё лучше на электронную почту: vladimir.tech@mail.ru.

Check Also

Хакеры.RU. Глава 0х00. Миссия первая

Меня попросили рассказать эту историю очень уважаемые люди — и я не смог им отказать. Этот…

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии