Вопрос

Мне нужно написать программу, которая отслеживает сетевые пакеты (часть 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top