Как подделать IP-адрес с помощью сокета?

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

Руководство по обычному использованию сокета можно найти здесь, но Если я хочу подделать ip, мне придется как-то отредактировать заголовок ip. Это делается на уровне сокета или в .Net есть другой, более глубокий уровень, который позволит мне это сделать?


person Arsen Zahray    schedule 18.10.2012    source источник


Ответы (2)


Вы больше не можете, так как доступ к необработанным сокетам был ограничен в настольных версиях Windows:

В Windows 7, Windows Vista, Windows XP с пакетом обновления 2 (SP2) и Windows XP с пакетом обновления 3 (SP3) возможность отправки трафика через необработанные сокеты ограничена несколькими способами:

  • Данные TCP не могут быть отправлены через необработанные сокеты.
  • Дейтаграммы UDP с недопустимым исходным адресом не могут быть отправлены через необработанные сокеты. Исходный IP-адрес для любой исходящей дейтаграммы UDP должен существовать на сетевом интерфейсе, иначе дейтаграмма будет удалена. Это изменение было внесено, чтобы ограничить способность вредоносного кода создавать распределенные атаки типа «отказ в обслуживании» и ограничить возможность отправки поддельных пакетов (пакетов TCP/IP с поддельным исходным IP-адресом).
  • Вызов функции bind с необработанным сокетом для протокола IPPROTO_TCP не допускается.
    Примечание Функция bind с необработанным сокетом разрешена для других протоколов (IPPROTO_IP, IPPROTO_UDP или IPPROTO_SCTP, Например).

(Из Центр разработки — Рабочий стол — Необработанные сокеты TCP/IP)

Вы можете довольно легко создать необработанный сокет:

Socket s = new Socket(ip.AddressFamily, SocketType.Raw, ProtocolType.Ip); 

В этот момент вы должны построить соответствующую дейтаграмму (что было бы отдельным вопросом, если у вас нет документации о том, как это сделать)

person PhonicUK    schedule 18.10.2012
comment
означает ли это, что доступ к необработанным сокетам включен в серверных версиях Windows? - person Arsen Zahray; 19.10.2012
comment
Да, только серверные версии позволят вам подделать источник пакетов (поскольку серверам, возможно, придется делать это для целей маршрутизации). - person PhonicUK; 19.10.2012
comment
Можете ли вы привести пример, который будет работать на сервере Windows 2008? - person Arsen Zahray; 19.10.2012
comment
Обновил мой ответ. Однако вам нужно выяснить, как создать пакет отдельно. - person PhonicUK; 19.10.2012

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

Если вы ищете необработанные решения для спуфинга, в которых IP-адрес не нужно назначать хосту для целей тестирования, вы можете рассмотреть инструменты тестирования производительности сети, особенно решения на основе шасси, от таких компаний, как Spirent и Ixia. Эти сетевые решения также могут генерировать десятки тысяч уникальных фиктивных MAC-адресов, которые при необходимости можно использовать с фиктивными IP-адресами.

person James Pulley    schedule 25.01.2013