Каков наилучший способ имитации атаки DDoS TCP SYN Flooding? - PullRequest
0 голосов
/ 28 марта 2020

Я хочу смоделировать сеть, которая находится под атакой DDoS TCP SYN Flooding, оценить производительность нового решения и сравнить его с другими решениями. Я планировал сделать это с помощью NS3, но я где-то прочитал в inte rnet, что я не могу сделать это хорошо с помощью сетевого симулятора событий descret (NS3 - это симулятор сетей событий descret), я хочу знать, почему? и какая лучшая альтернатива?

1 Ответ

1 голос
/ 28 марта 2020

К сожалению, DoS-атаки не могут быть смоделированы в ns-3 . Кроме того, DDoS-атаки также не могут быть смоделированы.

Как работает DoS-атака?

Чтобы понять, почему ns-3 не может имитировать DoS-атаку, нам нужно сначала понять, как работает DoS-атака. Как вы упоминаете, переполнение TCP SYN является одним из способов имитации DoS-атаки. Почему это работает? Ну, любой компьютер имеет ограниченное количество ресурсов, например, память и дисковое пространство. Когда компьютер получает SYN, он создает сокет для облегчения связи. Учитывая, что существует конечное количество ресурсов, может быть создано только конечное количество сокетов. Итак, атака DoS работает, перегружая компьютер в сети с помощью SYN, заставляя компьютер выделять много сокетов, которые не будут использоваться. В какой-то момент компьютер должен просто отказаться от любого подключения, даже законного подключения. Это когда DoS-атака прошла успешно.

Почему ns-3 не может имитировать это?

В ns-3 не существует понятия Node, имеющего конечное число ресурсы, скажем так. Queues в Nodes может иметь конечный размер, но нет способа ограничить количество активных соединений на Node. Er go, нет возможности симулировать DoS-атаку.

A (Потенциальное) решение

Внести вклад в ns-3! Посетить gitlab repo и попробуйте добавить желаемую функциональность.


Ответ на комментарий (комментарии)

TCP в ns-3

Я использовал «количество активных соединений» как эквивалент «количества сокетов». Эти термины не совсем эквивалентны, но для целей этого ответа все в порядке.

В потоке SYN количество полученных пакетов составляет , а не . Скорее проблема в том, что каждый полученный SYN порождает полуоткрытый сокет, и на компьютере может существовать только конечное количество сокетов.

Вы предлагаете насыщать Queue, который получает пакеты. Вы могли бы послать кучу пакетов для насыщения этого Queue, и это будет нарушать экстент от Node до некоторого , но это не будет имитировать поток SYN. Переполнение SYN работает, потому что порождается слишком много полуоткрытых сокетов, а не потому, что очередь пакетов заполнена.

Опять переполнение SYN работает, потому что реальный компьютер может иметь только конечное число сокетов. В ns-3, нет ограничения на количество гнезд на Node.

Модель ns-3

It Возможно, вы не знакомы с моделью ns-3 . Я не виню тебя; есть крутая кривая обучения. В ns-3 Node является эквивалентом компьютера / сервера / маршрутизатора в сети. К Nodes прикреплены Applications. В свою очередь, Applications создает Sockets для облегчения связи по сети.

Давайте теперь посмотрим на TcpSocket, подкласс Socket. TcpSocket поддерживает свое состояние с помощью TcpTxBuffer, TcpRxBuffer и других переменных класса. Buffers - это буферы classi c, используемые TCP для обеспечения надежной, упорядоченной и проверенной доставки / приема данных. Размер этих Buffers ограничен, однако нет ограничений на число TcpSockets, прикрепленных к Application, и нет ограничения на число Applications, прикрепленных к Node . Если бы существовал такой предел, это помогло бы имитировать использование памяти, но в ns-3 такой модели не существует.

Эта запись в ns-3 Группах Google также описывает, почему вы не можете смоделировать потоки SYN без изменения исходного кода. Найдите в этой группе Google больше сообщений о DoS-атаках. В связанном посте описывается, как вы можете имитировать другие типы DoS-атак, но потоки SYN явно не поддерживаются.

...