Глобальный отказ 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-пакет от имени атакуемого хоста? Правильно, они ответят этому хосту. Все вместе. Сразу. Думаю, хосту будет легче застрелиться, чем получать эти ответы. Что, собственно, в результате с ним и произойдет. |