SPOOFING

спуф для DoS`а

Спецвыпуск Xakep, номер #021, стр. 021-044-1


Эй, перец, ты уже проникся DoS`ом, читая этот наш номер? Если да, то, наверное, уже догадался, что многие DoS-атаки работают только благодаря ip spoofing`у. Без спуфинга нельзя провести DoS-атаку с умножением, невозможно устраивать пакетные шторма в сети и т.д. Короче, спуфинг - штука очень важная, и не зная, что это такое, как работает и как реализуется, далеко не уедешь ни в одной области net security, в том числе и в DoS-атаках. Так что вникай - пригодится ;).

ЧТО ТАКОЕ IP СПУФИНГ?

IP - самый базовый протокол в стеке TCP/IP, все остальные протоколы являются надстройками над ним, поэтому вынуждены играть по его правилам. А по правилам протокола IP, пакет, передаваемый по сети, должен иметь поля source IP (адрес отправителя) и destination IP (адрес получателя). Врать не буду - точно не знаю, но если не все протоколы, то во всяком случае те из них, которые используются для клиент-серверных сеансов связи, в обязательном порядке должны придерживаться этой инструкции. Иначе ничего работать не будет: если нет адреса получателя, то неизвестно, куда такой пакет слать, если нет адреса отправителя - непонятно, зачем этот пакет пришел, так как невозможно на него ответить (некуда!). Итак, любое сетевое устройство (будь то получатель или что-нибудь промежуточное), получив пакет, всегда знает, от кого и к кому он идет. Подытожили, блин ;).

Теперь давай подумаем, а каким образом source IP и destination IP попадают внутрь пакета? Ну, они записываются в пакет программным кодом, который этот пакет формирует. А откуда они берутся? Destination IP задает пользователь (или приложение, или что-нибудь еще - вариантов куча, все не перечислишь), когда вводит, скажем, "telnet 127.0.0.1" (в данном случае - destination IP=127.0.0.1), а source IP берется автоматически из настроек системы. Ок, теперь мы знаем, что в каждом пакете есть destination IP и source IP, а также как они в этот самый пакет попадают. А теперь я скажу, что такое ip spoofing (да ты и сам, наверное, уже знаешь ;)). Ip spoofing - это подмена реально source IP в пакете на ложный. То есть комп шлет пакет (много пакетов), а в поле "адрес отправителя" ставит не свой IP, а чужой (или вообще не существующий). Вот тут-то и начинается веселье: Инет построен так, что проверить достоверность указанного в пакете source IP очень сложно. На этом и построено огромное количество разрушительных DoS-атак. Например, DoS-умножение и циклические пакетные шторма.

КАК ЭТО ДЕЛАЕТСЯ?

Хватит теории, давай перейдем к конкретным действиям :). Теоретически существует два способа подменить source IP в пакете: изменить IP своей системы на нужный, чтоб он автоматически добавился в пакет, когда тот будет формироваться, или сформировать пакет самостоятельно, записав в него какой угодно source IP. Второй способ значительно лучше, если не сказать, что первый вообще очень сомнительный. Дело в том, что, во-первых, IP, на который перенастраивается система, должен быть свободен, а во-вторых, ответы будут приходить на этот же IP, а он уже стал IP`шником нашей системы - это уже не спуфинг. Так что катит только первый способ. Но, как обычно бывает в таких случаях, он гиморный :(. Если делать все правильно, придется компилировать, программировать и т.д. Если это тебя не пугает, поищи на поисковиках следующие вещи: ipspoof.c, IP-spoof-2.txt, spoofit.h, spoof.c. Это исходники и библиотеки на сиях, реализующие спуфинг. Разобраться будет сложно, так как все эти проги ориентированы на спуфинговые атаки, при которых атакующий не просто отправляет пакеты не со своим родным IP внутри, но и продолжает поддерживать связь с атакуемым, постоянно выдавая себя за другого. При DoS-атаках это не требуется - достаточно просто отправить пакеты, не заботясь об их дальнейшей судьбе (главное - отправлять их постоянно и побольше ;)). Так что то, что лежит в этих исходниках, на порядок сложнее того, что нужно нам. Спрашивается: зачем себя мучить, ломая лишний раз голову над сложными проблемами, если можно воспользоваться уже готовыми тулзами? Согласен, разобравшись с spoofit.h и ipspoof.c один раз, всегда можно будет написать конкретную прогу для конкретных целей, и это будет правильнее, чем пользоваться уже готовыми тулзами. Но бошка ведь тоже не железная и имеет свойство раскалываться, если всегда все делать по максимуму правильно и дотошно :). Так что давай сделаем так: кодинг я оставлю на твое усмотрение, а сам тебе расскажу про проги, при помощи которых можно спокойно спуфить и устраивать злейшие DoS-атаки, особо не напрягаясь.

Содержание  Вперед на стр. 021-044-2