Хакер - Спецвыпуск журнала «Хакер» #47, октябрь 2004 г.
Neth – детище Forb’а. Отличный бэкдор! Написанный с использованием «сырых» сокетов, он не открывает TCP-портов, за счет чего не палится ни netstat’ом, ни удаленным сканером.
Практически все перечисленные мной программки можно скачать с сайта www.packetstormsecurity.nl.
Бэкдор – черный ход в систему.
Массу полезной информации и программ ты можешь найти на www.packetstormsecurity.nl.
Умный админ может регулярно считать MD5-хэши от всех файлов в системе. Он без труда может заметить изменения в системных утилитах.
Утилита cron поможет обхитрить администратора.
От удаленного сканирования может спасти только использование RAW-сокетов.
Не стоит забывать, что любой, даже самый хороший бэкдор может выдать свое присутствие огромным трафиком.
Перехват системных вызовов – самый уважаемый в хакерских кругах способ сокрытия бэкдора от утилит операционной системы.
DoS/DDoS / Атака грубой силы
Ермолаев Евгений aka Saturn ([email protected])
Популярность атак, направленных на отказ в обслуживании, растет с каждым днем. При этом о них опубликовано крайне мало действительно полезной информации. В основном доступны лишь поверхностные описания удачных атак или негодования пострадавших. Этот материал поможет тебе разобраться в DoS/DDoS-атаках.
ЦельОсновная цель DoS/DDoS-атак – вывести объект из рабочего состояния. Конечно, в большинстве случаев глобальная атака приводит к большим финансовым потерям со стороны атакуемого. Например, если какой-либо коммерческий сайт упадет на несколько часов, то это нанесет вред бизнесу, а если на неделю, то владелец ресурса вполне может разориться. Или взять локальные сети. Дело в том, что одним из эффектов популярных атак на Denial of Service (DoS) является огромный трафик, направляемый на жертву. Если для крупной западной фирмы это мелочь, то для небольшой отечественной домашней сети средняя атака может грозить разорением. Кроме огромного вреда, наносимого жертве, такие нападения отличаются простотой и огромной эффективностью. Против них нет стопроцентной защиты. Именно названные выше факторы привлекают к DoS внимание специалистов по сетевой безопасности и… DoS'еров.
Принцип работыДля того чтобы обнаружить, а уж тем более организовать DoS/DDoS-атаку, нужно разобраться в ее принципах. Эти атаки не направлены на получение доступа к ресурсам или к важной информации. Атака DoS делает ресурс недоступным для использования путем нарушения его нормальной работы. Атаку на отказ в обслуживании можно провести всего двумя способами: использовав уязвимости в программном обеспечении жертвы и при помощи отсылки большого количества определенно составленных сетевых пакетов (флуд). Первый способ состоит в том, чтобы, используя уязвимости типа переполнения буфера, отослать код, выполняющий DoS на сервере. Поскольку атака будет проводиться «изнутри», то через очень короткое время объект зависнет или будет отключен от интернета. Этот способ не требует больших вычислительных ресурсов нападающего, однако такая атака предполагает использование уязвимостей, что само по себе усложняет задачу. Поскольку никто не хочет излишне заморачиваться, в народе более популярен второй способ, которому мы и уделим основное внимание. Это пример применения простой грубой силы, которая практически не нуждается в приложении ума. Идея состоит в том, чтобы переслать как можно больше «кривых» запросов серверу (впрочем, не только «кривых»: от огромного количества нормальных пакетов, например GET-запросов для HTTP-сервера хосты падают с таким же успехом). Дело в том, что при получении сервером пакета данных происходит его обработка. Если приходит пакет, но сервер занят приемом или обработкой другого пакета, то вновь приходящий запрос ставится в очередь, занимая при этом часть ресурсов системы. При проведении DoS-атаки серверу отсылается большое количество пакетов определенного размера. При этом ответ сервера не ожидается (обычно адрес отправителя фальсифицируется – спуфинг). В результате, из-за того что сервер оказывается перегружен информацией, он либо отключается от интернета, либо зависает. В любом случае, нормальные пользователи некоторое время (иногда довольно продолжительное) не могут пользоваться услугами пострадавшего сервера. Просто и со вкусом :). Однако если сервер атакует одна «точка», он вполне может закрыться от нее фаерволом. Кроме того, для проведения качественной DoS-атаки необходима довольно высокая пропускная способность канала. Поэтому атака на отказ в обслуживании в большинстве случаев проводится сразу с нескольких машин. Атака, в проведении которой участвует много машин (обычно это затрояненные десктопы, их называют «зомби»), получила название DDoS (Distributed Denial of Service). Для сколь угодно мощного сервера всегда можно подобрать достаточное количество зомбиков (благо дырявых систем и ушастых юзверей по миру много развелось).
Есть несколько способов получения «зомби». Во-первых, это массовое внедрение трояна на компьютеры мирных пользователей. Самый популярный способ управления троянами – IRC, то есть организация ботнета. При посылке определенных команд троян активируется и мирный домашний компьютер (с широкополосным выходом в интернет) становится источником большого количества мусора, съедающего ресурсы атакуемого сервера.
Чтобы более детально разобраться в DoS-атаках, рассмотрим их наиболее известные разновидности. Выделяют пять наиболее популярных:
– TCP SYN Flood;
– TCP flood;
– Ping of Death;
– ICMP flood;
– UDP flood.
TCP SYN Flood и TCP flood
Основная цель этого вида атак – превысить ограничение на количество соединений, которые находятся в состоянии установки. В результате, система не может устанавливать новые соединения. После этого каждый дополнительный запрос еще сильнее увеличивает нагрузку. Для того чтобы достичь желаемого результата, при проведении атаки направляется большое количество запросов на инициализацию TСP-соединения с потенциальной жертвой. Такие атаки не нуждаются в обратной связи с атакующим, и поэтому можно не использовать настоящий адрес источника.
Ниже приведен пример установки заголовка IP пакета, который можно использовать в атаке типа «SYN Flood».
Листинг
packet.ip.version=4; // Версия
packet.ip.ihl=5; // Длина заголовка
packet.ip.tos=0; // Тип сервиса
packet.ip.tot_len=h_tons(40); // Общая длина
packet.ip.id=getpid(); // Идентификатор
packet.ip.frag_off=0; // Смещение фрагмента
packet.ip.ttl=255; // Время жизни
packet.ip.protocol=IPPROTO_TCP; // Протокол
packet.ip.check=0; // Контрольная сумма
packet.ip.saddr=saddress; // Адрес источника
packet.ip.daddr=daddress; // Адрес назначения
TCP flood – это вид атаки, при котором потенциальной жертве отправляется множество TCP-пакетов, что приводит к связыванию системных ресурсов.
Следующие виды DoS-атак основаны на совершенно другом принципе. При помощи таких атак можно переполнить сеть или отдельно взятую мишень абсолютно бесполезными ping-пакетами. Для реализации следующих видов атаки достаточно нескольких строк кода. Итак, это атаки, основанные на протоколе ICMP:
Ping of Death и ICMP floodБольшое количество DoS-атак основывается на протоколе ICMP. Некоторые его функции могут быть полезны для создания нападений такого рода.
ICMP flood – это далеко не новый вид атаки, который, тем не менее, не теряет популярности. Здесь используется ping. Ping изначально задумывался для проверки качества соединения с удаленным компьютером. Принцип работы следующий: программа отсылает некое сообщение, на которое удаленный компьютер автоматически отвечает. Вроде бы все нормально. Однако при атаке используются большие (64 кБ), сильно фрагментированные ICMP-пакеты. При получении таких пакетов удаленная машина зависает.
Ping of Death основывается на ICMP flood, однако усиливает атаку за счет того, что ping-запросы пересылаются по адресу широковещательной рассылки. Используемый в пакетах запроса адрес – это адрес атакуемого сервера. Получившие такие «посылки смерти» системы отвечают на них и забивают жертву. Это очень серьезный вид атаки, который, правда, требует длительной подготовки. Требуется много «зомби», необходимо собрать достаточное количество информации о жертве и посредниках.
UDP floodЭто наиболее опасный вид атаки. UDP-сервис одной машины генерирует последовательность символов для каждого получаемого системой пакета. Делается это в целях тестирования. Далее связывается с echo-сервисом другой машины, которая повторяет эти символы. В результате, передается большое количество UDP-пакетов с подделанным IP источника. Основная проблема для защиты состоит в том, что протокол UDP не устанавливает соединения и нет никаких индикаторов состояния, чтобы помочь межсетевой защите выявить нападение. Чтобы с большей долей вероятности избежать такой атаки, нужно удалить все ненужные UDP-сервисы, а остальным сервисам использовать механизм прокси-сервера.