Содержание статьи
Чтобы превратить перехваченный трафик в коммерчески привлекательные списки конфиденциальных данных, ботоводу приходится применять разные техники майнинга. Одна из простейших техник — искать в запросах 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»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»