![](https://habrastorage.org/storage2/68e/5ba/6bd/68e5ba6bde2ddb011e0d30102557e339.jpg)
Что же такое JS LOIC, это простейший и не очень хорошо написанный JavaScript размером в 50 строк, технические подробности работы его, и подобных, изложены ниже. Но его уникальность в том, что каждый браузер может стать источником атак, без инсталляции специальных программ и заражения вирусом. Во-первых, каждый школьник и домохозяйка совсем скоро смогут участвовать в атаках, не разбираясь ни в чем, просто получив ссылку и нажав кнопку на странице. Более того, нажимать кнопку не так уж и обязательно, любой массовый ресурс может стать носителем такого скрипта, внедренного в него владельцами или злоумышленниками (не столь важно), но свою цель такие запросы достанут.
Так как в кросс-доменные AJAX запросы в браузерах не работают в целях безопасности, то в JS LOIC используется простая техника — динамическая вставка на страницу тега с картинкой, вот строка из кода, по которой понятна вся техника:
img.setAttribute("src", targetURL + "?id=" + rID + "&msg=" + messageNode.value);
И эту возможность ни как нельзя выкинуть из браузеров, но при хорошо написанном сайте — такая особенность не очень страшна. В идеале, запрос не должен дойти ни до базы данных ни до скриптов, исполняемых динамически, ни до обращения к файловой системе. Это просто решается в Apache, nginx, IIS, на самом деле, фильтровать запросы можно многими способами: на этапе URL-реврайтига с помощью регулярных выражений, так же, в LOIC между вызовами не удаляются cookies (т.к. они создаются в рамках другого домена) — еще один фактор фильтрации, блокировка по IP — само собой, а учитывая, что многие атакуют через прокси — то все переадресованные запросы можно сразу отбрасывать. При этом, чиновники плачутся, что им мало выделили денег на оборудование, и их железо не выдержало атак. Низкобюджетные и кривые сайты органов украинской власти не выдержали атак, денюшки то были расхищены еще до разработки бесстыдными чиновниками.
Но вернемся к техническим аспектам, динамическая вставка картинок, айфреймов, скриптов, в html — далеко не единственный и не самый эффективный способ способ браузерных атак. Есть еще протокол JSONP — это спецификация безопасных кросс-доменных запросов, но для DDOS атак такая безопасная спецификация тоже подходит, вот пример:
<script type="text/javascript" src="http://targetdomain.com/somePath?parameter1=value1&jsonp=callbackProcName1">
</script>
Если сервер понимает JSONP и запрос выполнен успешно, то результат вернется в виде вызова функции callbackProcName1({«Result1»: «value1», «SomethingMore»: «anotherValue»...}). Но для атак — получение результата не столь важно.
![image](https://habrastorage.org/getpro/habr/post_images/931/c9f/651/931c9f65128de5f3db42b0e6d47be1d3.png)
Вас наверное интересует истинная причина вашего визита ко мне?
И теперь обратно к EX.UA и атакам в Украине. Что же в результате:
1. Сайты госорганов, милиция и даже спецслужбы Украины показали свою полную беспомощность и некомпетентность. Целых 3 дня все лежало, ни поднять в другом месте ни защитить оперативно не смогли.
2. Политикам и чиновникам скорее всего удастся получить пользу от случившегося — есть хорошая отмазка чтобы остановить развитие электронных средств взаимодействия общества с властью, электронных сервисов и т.д. но по правде, ни кто особо их и не развивал, это действительно замечательная причина совсем все прекратить.
3. Во время следующих выборов и Евро 2012 лежать будет все что может лежать.
4. EX.UA слишком лакомый кусочек, чтобы его просто закрыть насовсем, кто же будет уничтожать то, что способно генерировать хорошие деньги на рекламе, это не по украински, придется просто передоговариваться, переразделить прибыли с нужными людьми.
UPD: По поводу подгрузи картинок, вспомнился еще один хороший метод, очень даже применимый для атак:
images = new Array();
...
images[n] = new Image();
images[n].src = "http://targetdomain.com/images/img"+i+".jpg";
...
UPD2: Вообще красиво получается, пока высшие чиновники просто воровали — все молчали, но когда посягнули на святое, лишили фильмов — сразу война!
UPD3: Многих интересует, где брать исходники JS LOIC, можно их посмотреть, например тут: pastehtml.com/view/bmp0uzp8a.html (специально не оформляю как ссылку, чтобы случайно не кликнули)
UPD4: Самые простые способы защиты, доступные всем и внедряемые за 5 минут такие:
- Фильтрация по URL — одна строка в .htaccess решила бы проблему для Украины: RewriteRule .*msg=.* /staticHelloLOIC.html
- Фильтрация по полю {HTTP_REFERER} в .htaccess — это 5-6 строк с самыми распространенными хостингами JS LOIC
- И как крайняя мера, временно, можно было отфильтровать диапазоны IP основных провайдеров, от которых шли атаки, все это знает любой мало мальски практикующий админ.
Это бы предотвратило запуск скриптов и обращения скриптов в базу (основные причины нагрузки), не говоря уже, что запросы можно фильтровать на маршрутизаторе, но на оборудование денег в стране не хватило, это мы уже поняли.
И повторяю, лежали не сервера, а именно ПО, по другим портам сервера отвечали, а некоторые даже очень шустро отдавали страницу с «HTTP 502 Bad gateway». Такое бывает, например, когда nginx стоит как фронтенд, а на бэекенде Apache или другой сервер с ПО (который и упал, а фронтенд должен был его защищать и кешировать).