Что такое IP спуфинг? (IP SPOOFING)

IP – самый базовый протокол в стеке TCP/IP, все остальные протоколы являются надстройками над ним, поэтому вынуждены играть по его правилам. А по правилам протокола IP, пакет, передаваемый по сети, должен иметь поля source IP (адрес отправителя) и destination IP (адрес получателя).

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

Image result for ip spoofing

Теперь давай подумаем, а каким образом 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-умножение и циклические пакетные шторма.

КАК ДЕЛАЕТСЯ IP СПУФИНГ?

Хватит теории, давай перейдем к конкретным действиям :). Теоретически существует два способа подменить source IP в пакете: изменить IP своей системы на нужный, чтоб он автоматически добавился в пакет, когда тот будет формироваться, или сформировать пакет самостоятельно, записав в него какой угодно source IP. Второй способ значительно лучше, если не сказать, что первый вообще очень сомнительный. Дело в том, что, во-первых, IP, на который перенастраиваеться система, должен быть свободен, а во-вторых, ответы будут приходить на этот же IP, а он уже стал IP-шником нашей системы – это уже не спуфинг.

Так что катит только первый способ. Но, как обычно бывает в таких случаях, он проблемный. Если делать все правильно, придется компилировать, программировать и т.д. Если это тебя не пугает, поищи на поисковиках следующие вещи: ipspoof.c, IP-spoof-2.txt, spoofit.h, spoof.c. Это исходники и библиотеки на сиях, реализующие спуфинг.

Image result for ip спуфинг

Разобраться будет сложно, так как все эти проги ориентированы на спуфинговые атаки, при которых атакующий не просто отправляет пакеты не со своим родным IP внутри, но и продолжает поддерживать связь с атакуемым, постоянно выдавая себя за другого. При DoS-атаках это не требуется – достаточно просто отправить пакеты, не заботясь об их дальнейшей судьбе (главное – отправлять их постоянно и побольше ;)). Так что то, что лежит в этих исходниках, на порядок сложнее того, что нужно нам.

Спрашивается: зачем себя мучить, ломая лишний раз голову над сложными проблемами, если можно воспользоваться уже готовыми тулзами? Согласен, разобравшись с spoofit.h и ipspoof.c один раз, всегда можно будет написать конкретную прогу для конкретных целей, и это будет правильнее, чем пользоваться уже готовыми тулзами. Но бошка ведь тоже не железная и имеет свойство раскалываться, если всегда все делать по максимуму правильно и дотошно :). Так что давай сделаем так: кодинг я оставлю на твое усмотрение, а сам тебе расскажу про проги, при помощи которых можно спокойно спуфить и устраивать злейшие DoS-атаки, особо не напрягаясь.

SING-1.1

Что нужно, чтоб организовать DoS-умножение? Правильно, отправить какой-нибудь пинг на широковещательный адрес здоровенной сети, подменив в нем source IP на айпишник жертвы. Стало быть, нужна такая прога, которая умеет отправлять ICMP-пакеты, подменяя в них адрес отправителя. Такая прога есть :). Называется sing и имеет текущую версию 1.1. Скачать можно тут: http://download.sourceforge.net/sing/. После даунлода архивчик надо распаковать, а полученный исходник отконфигурировать (./configure), откомпилировать (make) и проинсталлировать (make install) – если тебя все это парит, скачай какую-нибудь rpm-ку (или какой у тебя там дистриб линя?).

Теперь прогу можно вызвать, набрав в командной строке “sing”. Sing – это сетевая тулза, умеющая формировать практически любые ICMP-пакеты, спуфить адрес в них и даже определять удаленную ОС (последнее вряд ли может пригодиться, так как есть nmap, который великолепно справляется с этой задачей). Итак, sing установлен: первым делом ввожу:

Отлично, пропинговалось. Теперь попробую поспуфить:

Вроде все хорошо – спуфенный пинг прошел (пакеты вернулись, т.к. я пока использую loopback). Но мне хочется проверить, все ли ОК. Давай я запрещу файрволу пропускать любые пакеты с 127.0.0.1, попробую пропинговаться обычным ping-ом (который, естественно, все будет слать с 127.0.0.1), а потом попробую пролезть через файрвол sing-ом, меняя 127.0.0.1 на 127.0.0.2. Ввожу:

и вижу, что теперь все пакеты с 127.0.0.1 отбрасываются.
Пингую обычным ping-ом:

Восемь пакетов ушло, вернулось – ноль. Естественно, ведь файрвол все блокирует.
Теперь то же самое, но sing-ом и со спуфом:

Опппа!!! Все получилось! Sing обдурил файрвол, прикинувшись, что пакеты идут с 127.0.0.2, а не с 127.0.0.1, который блокируется!
А пакеты вернулись потому, что я использовал loopback: моя система слала ответы на 127.0.0.2, но они пришли к ней же обратно, так как это, как и 127.0.0.1, тоже ее петлевой адрес. Хорошо, теперь попробуем проделать то же самое с удаленной системой. Я буду иллюстрировать все на примере сервака m-net.arbornet.org (да не обидятся на меня его админы ;)). Сначала просто пингую (ping-ом или sing-ом без спуфа – все равно):

Сервак отвечает – все хорошо.

А теперь отправляю серваку несколько пакетов, типа от него же самого (так вызываются циклические ICMP-штормы: сервак получает пакеты вроде как от себя, отвечает на них самому же себе, и так много раз, пока не наступит 3.14zDoS):

Отправлено одиннадцать пакетов, вернулось – ноль. Естественно, сервак отвечал на мои пакеты самому себе, поэтому мне ничего не пришло. И не надо :).

Как видишь, все сработало :). Можно досить спуфом, не ковыряясь во всяком коде! Не думаю, что мои пакеты могли нанести arbornet-у какой-либо ущерб – во-первых, их было слишком мало, во-вторых, на арборнете сидят грамотные админы, и они, наверное, догадались настроить ДДоС защиту так, чтоб она не отвечала на свои собственные ICMP-пакеты ;). Тем не менее, мы с тобой, приятель, разобрались в довольно гиморном вопросе. До новых встреч, и удачных тебе экспериментов в net security!!!

Рейтинг материала
[Голосов: 1 Рейтинг: 5]
14 декабря 2015, 19:03

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *