Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #90, ИЮНЬ 2006 г.

Глобальный отказ

Shturmovik

Хакер, номер #090, стр. 090-064-2


Однако не все такие глупые, поэтому зачастую для завершения атаки требуется поддерживать постоянный DoS-поток, поскольку, как только стрим левых запросов исчезнет, сервер вновь начнет обслуживать клиентов.

Так как же бомбить?

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

Можно также вспомнить баги в популярном софте, заюзав которые можно было легко зафлудить какого-нибудь домашнего пользователя. К примеру, несколько лет назад можно легко было задосить icq-пользователя, прислав ему в офлайн несколько тысяч смайликов.

SYN-наводнение

Наиболее простым способом проведения DoS-атак является SYN-наводнение. Происходит это по следующей схеме. Атакующий компьютер посылает SYN-пакет жертве и, соответственно, получает обратно SYN/ACK-пакет. Если атакующий подтвердит ACK-пакетом факт получения ответа, то машины посчитают, что соединение установлено. Однако если атакующий не будет подтверждать этот факт, а продолжит постоянно передавать SYN-пакет на соединение, то запись о незавершенной процедуре подключения будет добавлена в буфер жертвы до истечения тайм-аута ответа. Когда в буфере накопится достаточное количество запросов, произойдет переполнение. После этого жертва перестанет отвечать на пользовательские запросы. Вот, собственно, и вся схема атаки. Чтобы не быть голословным, приведу пример заголовка пакета при данной атаке:

sock.ip.version=4; // Версия

sock.ip.ihl=5; // Длина заголовка

sock.ip.tos=0; // Тип сервиса

sock.ip.tot_len=htons(40); // Общая длина

sock.ip.id=getpid(); // ID

sock.ip.frag_off=0; // Смещение фрагмента

sock.ip.ttl=255; // Время жизни

sock.ip.protocol=IPPROTO_TCP; // Используемый протокол

sock.ip.check=0; // Контрольная сумма

sock.ip.saddr=saddress; // Адрес источника

sock.ip.daddr=daddress; // Адрес назначения

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

Вот еще хороший пример нашей атаки. Нам потребуются, как минимум, два компьютера :). Мы посылаем пакет на порт 7 (echo) атакуемого хоста. При этом надо подменить адрес отправителя (кстати, об этом позже), который будет указывать у нас на порт 19 (chargen) другого хоста. Между двумя хостами произойдет процесс передачи информации постоянным потоком. То есть пакет, как феерический заяц-забегаец, начнет прыгать от одного хоста к другому, переключая все внимание серверов на себя. Таким образом, они буквально забомбят себя до состояния вантуза. Как итог — отказ в обслуживании.

Помнишь, я говорил про фрагментацию пакета? Так вот, такой вид атаки принято называть ICMP flood, и он заключается в посылке больших (64Кб), сильно фрагментированных пакетов. Обслуживание таких данных очень напрягает сервер, и он решает, что лучше уйти на покой. На сегодняшний день такими технологиями, конечно, пользуются, но редко. Это уже dDoS - распределенная атака на отказ в обслуживании. Чтобы провести такую пакость, потребуется усиливающая сеть, даже не обязательно потрояненная тобой. В этом-то самое сильное и заключается. Вот смотри. Есть у нас жертва и миллионы пользователей Интернета. Что будет, если этим миллионам пользователей послать echo-пакет от имени атакуемого хоста? Правильно, они ответят этому хосту. Все вместе. Сразу. Думаю, хосту будет легче застрелиться, чем получать эти ответы. Что, собственно, в результате с ним и произойдет.

Назад на стр. 090-064-1  Содержание  Вперед на стр. 090-064-3
Hosted by uCoz