Внедрить пакет, чтобы разорвать соединение TCP - PullRequest
1 голос
/ 09 марта 2010

Мне нужно написать программу, которая анализирует сетевые пакеты (часть1 - простая часть).
И я должен обновить программу (часть 2), чтобы она могла разорвать соединения.
Особые требования:

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

Кто-нибудь может дать мне несколько идей по второй части?
Должен ли я захватить сеанс, применить DoS-атаку к одному из пользователей?

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

Ответы [ 4 ]

1 голос
/ 09 марта 2010

Для этого назначения я бы использовал pypacp , который является библиотекой захвата и внедрения пакетов Python. Pypcap использует необработанные сокеты для подделки пакетов. Если по какой-то странной причине вы вынуждены использовать C, тогда этот проект будет более сложным. В этом случае вы должны использовать libpcap для перехвата строки, и необработанная библиотека сокетов будет зависеть от платформы, на которой вы разрабатываете.

Вы можете прослушать строку, ища идентификаторы последовательности TCP. На основе этого идентификатора вы можете подделать RST или FIN, чтобы разорвать одну сторону соединения. Трудная часть будет пытаться поддерживать TCP-соединение, используя необработанные сокеты. Поддерживать соединение на уровне приложений будет почти невозможно, HTTP будет проще поддерживать, но если бы это был http, было бы проще просто перехватить cookie.

1 голос
/ 09 марта 2010

Зависит от того, что вы подразумеваете под разрывом соединений. Вы могли бы иметь в виду предоставление конечной точки для канала TCP или потока UDP.

Или вы могли бы иметь в виду отправку приемлемого RST в середине потока TCP, чтобы указать конец потока. Чтобы достичь этого, вы должны знать порядковый номер, ожидаемый другой стороной, среди прочего.

В любом случае очевидно, что вы не обращали внимания на занятия. Похоже, весь смысл назначения состоит в том, чтобы показать, что вы понимаете необработанную структуру IP-пакетов и, возможно, TCP / UDP. Я предлагаю вам купить учебник по этому предмету (без сомнения, рекомендованный вашим лектором) и / или прочитать Википедию.

0 голосов
/ 09 марта 2010

вы можете использовать libpcap, чтобы помочь с анализом пакетов. libpcap был разработан командой tcpdump.

0 голосов
/ 09 марта 2010

Я не могу помочь вам с библиотеками C - не моя сильная сторона, но, похоже, что-то там должно быть.

Но похоже, что в части 2 вы пытаетесь предотвратить DOS, а не вызвать его!

Проверьте здесь:

http://en.wikipedia.org/wiki/Denial-of-service_attack

для вещей на DoS-атаках. Как говорит PP, существует ряд атак, связанных с неправильным использованием соединений, поэтому вы хотите выяснить, о чем идет речь в вашем назначении - то, которое вам нужно проверить у своего проф. Например, на странице Wiki выше упоминается SYN Floods - но почти любой протокол, ориентированный на соединение, будет подвержен риску атаки, которая наполняет пул соединений слишком большим количеством запросов на соединение и затем никогда не закрывает их.

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

СОВЕТ: попадание на сервер с потоком запросов на закрытое соединение не является атакой. Это не так полезно, так как вы не обязательно закрываете открытые соединения. Но ущерб причинен запросами открытого соединения. Смотрите здесь:

http://en.wikipedia.org/wiki/SYN_flood

Для одного примера.

...