Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Самая привлекательная цель для злоумышленника — это онлайновый банкинг, и решающую роль в успехе вирусных атак на него играют ботнеты. Но чтобы выудить из перехваченных с их помощью данных ценную информацию, злоумышленнику нужно потрудиться. Сегодня я расскажу, как усложнить жизнь ботоводам и защитить свое приложение от нападок.
Чтобы превратить перехваченный трафик в коммерчески привлекательные списки конфиденциальных данных, ботоводу приходится применять разные техники майнинга. Одна из простейших техник — искать в запросах POST переменные с именами вроде username
и password
и считывать их значения. Или искать имена переменных, характерных для номеров кредитных карт, вроде cc_number
, которые обычно используются в приложениях онлайн-банкинга.
Чтобы извлекать и собирать эти данные, ботоводу требуются значительные вычислительные ресурсы. Ему приходится раскошеливаться на аренду серверов. Выгоду он оценивает по соотношению X/Y, где X — стоимость конфиденциальных данных, а Y — стоимость аренды серверов. Когда это соотношение пересекает определенный нижний порог, ботоводу твое веб-приложение становится неинтересным.
Поэтому суть кодинга, устойчивого к ботнетам: разрабатывать веб-приложения, в которых соотношение X/Y держится на стабильно низком уровне. Я предлагаю три метода такого кодинга: простой, средний и сложный. Эта градация установлена исходя из накладных расходов на сервер, где обитает твое веб-приложение, и сложности реализации метода.
Самый простой метод направлен на обман парсера ботнета:
CVV
, username
, password
и address
на неочевидные;Обычный пользователь эти поля даже не увидит, а ботовода они заставят попотеть.
Пример такого метода
Подобные методы подходят для серверов, у которых нет достаточной пропускной способности, чтобы задействовать более ресурсоемкие методы обфускации. Изменения в исходном коде, которые нужно сделать для реализации этого простейшего метода, минимальны. В коде серверной части веб-приложения вообще никакие изменения не потребуются.
Методы этой категории предполагают использование модулей JS для создания путаницы в запросах POST. Многие популярные ботнеты, например ZeuS и его преемники, сканируют только запросы POST. Запросы GET их не заботят. Это можно использовать для передачи через GET ключей шифрования и функций обфускации JS, не попадая при этом под радар ботнета.
Когда пользователь зараженного компьютера, заполнив какую-нибудь форму, нажимает «отправить», все параметры формы запутываются при помощи функции обфускации, доставленной через GET, и затем отправляются на сервер через POST в скрытом поле формы. Остальные поля формы остаются незаполненными, либо в них вносятся фальшивые данные.
Такое запутывание значительно усложняет серверу C&C извлечение конфиденциальных данных. С этим методом тебе придется вставить в серверную часть своего веб-приложения функцию деобфускации, которая будет оттягивать на себя часть вычислительных ресурсов твоего сервера.
Используя простейшие функции обфускации, ты превратишь конфиденциальные данные, проходящие через твое веб-приложение, в «движущуюся цель». Ботоводу будет намного сложнее извлекать их. Особенно если функции обфускации генерируются твоим сервером динамически при каждом сеансе.
Пример такой функции
В следующем листинге представлен еще более изощреннный пример обфускации: цифра 5
заменяется символом #
, а цифра 2
— символом %
.
Теперь, когда у тебя есть несколько функций обфускации, тебе надо активировать их при отправке формы. Соответствующий код будет запускаться в обработчике события onclick
для кнопки отправки формы.
Первый запрос POST запутывает данные. Затем он берет поле с именем cc_number
и вставляет туда произвольную строку, которая для ботовода оказывается бесполезной.
У такого метода есть некоторые накладные расходы на стороне сервера: на деобфускацию и хранение функций обфускации, однако они невелики. А вот ботоводу для их преодоления приходится затрачивать непропорционально большее количество вычислительных ресурсов. Добавление поддельных данных раздувает логи, собираемые ботоводом, и создает ему больше проблем. Соответственно, рентабельность его усилий понижается.
Источник: xakep.ru