Назад | Перейти на главную страницу

Как изменить адрес источника TCP-пакета?

Можно ли изменить адрес источника любого TCP-пакета? Мне известно, что я не получу эти пакеты, если я изменю адрес, мне нужно только отправить запрос на сервер. Как это возможно ?

Вы можете изменить адрес источника любого IP-пакета. Это называется «спуфинг».

Однако для TCP это вам не поможет: TCP - это не протокол, ориентированный на дейтаграммы, а ориентированный на потоки. На практике это означает, что он предназначен для прозрачной имитации потокового канала связи с использованием дискретных пакетов. Для этого он будет собирать пакеты вместе, чтобы сформировать поток, но также имеет встроенный механизм для восстановления после потери пакетов и неправильного прибытия пакетов. Он также имеет механизм для управления статусом подключения.

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

Затем это число увеличивается на единицу для каждого пакета, отправленного одним концом соединения, и используется для проверки того, были ли пакеты отброшены или получены в неправильном порядке.

Поскольку вы не получите ответ на свой первый SYN-пакет (первый пакет в TCP-рукопожатии) и поскольку вам нужно знать порядковый номер, который содержится в этом ответе, прежде чем вы сможете завершить соединение и начать отправку данных, вы можете ' t просто подделать исходный IP-адрес в TCP-соединении.

Теперь, если вы находитесь где-то на пути между сервером и поддельным клиентом, вы можете сделать ответ жестким (даже если он не предназначен для вас), завершить соединение, используя правильный порядковый номер и отправить свой запрос (вы можете даже прочтите ответ. Это, однако, потребует, чтобы вы были подключены к одному из сегментов между клиентом и поддельным сервером И иметь возможность читать эти пакеты, когда они проходят через сегмент. Это условие довольно сложно достичь на практике за пределами последнего сегмента, и даже в этом случае вам необходимо использовать либо специальное оборудование (коммутатор, который может использовать порт в качестве порта для «мониторинга»), либо использовать отравление ARP на коммутаторе. Это не совсем тривиально и все равно позволит вам только подделать машина в вашем местном сегменте.