Внедрить пакет для разрыва TCP-соединения
-
18-09-2019 - |
Вопрос
Мне нужно написать программу, которая отслеживает сетевые пакеты (часть 1 — простая часть).
И мне нужно обновить программу (часть2), чтобы она могла разрывать соединения.
Конкретные требования:
Создайте необработанные пакеты, указав информацию об уровне канала передачи данных и сетевом уровне, включая соответствующие MAC-адреса источника и назначения и IP-адреса.Эти пакеты предназначены для разрыва соединения.Для этого вам следует использовать SOCK_RAW в качестве типа сокета, чтобы иметь возможность самостоятельно устанавливать информацию заголовка.
Кто-нибудь может подсказать мне какие-нибудь идеи по поводу второй части?
Стоит ли перехватить сессию, применить DoS-атаку на одного из пользователей?
Все, что мне нужно, это несколько советов о том, как разорвать соединение.Я использую язык программирования C, и это задание по курсу безопасности.
Решение
Зависит от того, что вы подразумеваете под прекращением соединений.Возможно, вы имеете в виду предоставление конечной точки для канала TCP или потока UDP.
Или вы можете иметь в виду отправку приемлемого RST в середине потока TCP, чтобы указать конец потока.Для этого вам, помимо прочего, необходимо знать порядковый номер, ожидаемый другой стороной.
В любом случае очевидно, что вы невнимательны на уроке.Похоже, что весь смысл задания — показать, что вы понимаете структуру IP-пакетов и, возможно, TCP/UDP.Я предлагаю вам купить учебник по этому предмету (без сомнения, рекомендованный вашим преподавателем) и/или прочитать Википедию.
Другие советы
Для этого задания я бы использовал pypacp, который представляет собой библиотеку захвата и внедрения пакетов Python.Pypcap использует необработанные сокеты для подделки пакетов.Если по какой-то странной причине вы вынуждены использовать C, этот проект будет сложнее.В этом случае вам следует использовать libpcap для анализа строки, а библиотека необработанных сокетов будет зависеть от платформы, на которой вы разрабатываете.
Вы можете прослушать строку в поисках идентификаторов последовательности TCP.На основе этого идентификатора вы можете подделать RST или FIN, чтобы разорвать одну сторону соединения.Сложнее всего будет попытаться поддерживать TCP-соединение с использованием необработанных сокетов.Поддерживать соединение на уровне приложения будет практически невозможно. HTTP будет более простым в обслуживании протоколом, но если бы это был http, было бы проще просто перехватить файл cookie.
Я не могу помочь вам с библиотеками C — это не моя сильная сторона, но кажется, что-то должно быть.
Но похоже, что во второй части вы пытаетесь предотвратить DOS, а не вызвать его!
Проверьте здесь:
http://en.wikipedia.org/wiki/Denial-of-service_attack
информацию о DoS-атаках.Как говорит ПП, существует ряд атак, связанных со злоупотреблением соединением, поэтому вы хотите выяснить, о какой из них идет речь - ту, которую вам нужно уточнить у своего профа.Например, на странице Wiki выше упоминается SYN Floods, но практически любой протокол, ориентированный на соединение, подвергается риску атаки, которая заполняет пул соединений слишком большим количеством запросов на соединение, а затем никогда не закрывает их.
Я предполагаю, читая задание, что ваша задача — придумать, как это исправить, закрыв соединения, которые открыл злоумышленник.Это означает, что вам обоим придется выяснить, как работает атака, а затем придумать, как от нее оправиться.
НАМЕКАТЬ:Попадание на сервер потока запросов на установление тесного соединения не является атакой.Это также не так уж и полезно, поскольку вы не обязательно закрываете открытые соединения.Но ущерб наносится запросами на открытие соединения.Глянь сюда:
http://en.wikipedia.org/wiki/SYN_flood
Для одного примера.
вы можете использовать libpcap для перехвата пакетов.libpcap был разработан командой tcpdump.