13 KiB
Домашняя работа № 2 по предмету: «Безопасность вычислительных сетей»
Описание лабораторной работы
Цель лабораторной работы — получить непосредственный опыт работы с уязвимостями, а также с атаками на эти уязвимости.
В этой лабораторной работе вы проведете несколько атак на TCP:
- TCP SYN flood attack, and SYN cookies;
- TCP reset attack;
- TCP session hijacking attack.
В лабораторной работе четыре контейнера: три машины легитимных пользователей и одна машина атакующего.
Задача 1 «TCP SYN flood attack».
Код отправляет поддельные пакеты TCP SYN со случайно сгенерированным исходным IP-адресом, исходным портом и порядковым номером. Подождите хотя бы одну минуту, а затем попытайтесь подключиться к жертве с помощью Telnet. Получится ли у вас добиться успеха? Подключиться можно через хост машины Victim (все дальнейшие проверки следует проводить через нее).
Python-скрипт для атаки:
Задача 1.1
net.ipv4.tcp_syncookies=0 - SYN Cookies на жертве (Victim) отключены.
Выполнение задачи:
- Запустим скрипт на
seed-attackerи посмотрим наличие подключений наVictim.
Листинг seed-attacker:
Листинг Victim:
- Проверим возможность подключения к
VictimсHostB
В данном случае, мы видим успешный вывод приглашения. Можно предположить, что атака не удалась, но зная, что возможности очереди машины зависят от её характеристик, не будет лишним попробовать запустить сразу несколько экземпляров скрипта на seed-attacker добавив операнд & к команде запуска:
root@7552dc4712a7:/# ./volume/opt1.py &
- Запустим 15 экземпляров скрипта одновременно и проверим возможность подключения:
- Подключение выполняется, но с большими задержками (от 10 до 30 секунд), что является показателем успешной атаки. Атаку можно считать успешной.
Итог задачи 1.1
Атака при net.ipv4.tcp_syncookies=0 производится успешно!
Задача 1.2
net.ipv4.tcp_syncookies=1 - SYN Cookies на жертве (Victim) включены.
Время провести попытку с включенным механизмом syncookies. Для этого пересоздадим контейнеры установив значение строки net.ipv4.tcp_syncookies=1 в docker-compose.yaml
Выполнение задачи
- Перезапустим скрипты, воспроизводящие атаку и проверим наличие подключений на
Victim.
seeder-attacker:
Victim:
- Подключения на месте. Проверим возможность подключения по Telnet.
Проведя несколько попыток подключения и мгновенно увидев баннер Telnet можем сделать вывод, что в этот раз атака не удалась.
Итог задачи 1.1
Атака при net.ipv4.tcp_syncookies=1 производится неудачно.
Итог задачи 1.
Механизм TCP SYN cookies позволяет серверу генерировать специальные сокращенные версии TCP-заголовков (cookies) в ответ на входящие запросы SYN, сохраняя минимум информации о соединении. Когда сервер получает подтверждение от клиента (ACK-пакет), он может восстановить полную информацию о соединении из сокращенной версии TCP-заголовка, инициированной в SYN-пакете.
Этот механизм позволяет серверу обрабатывать и отвечать на большое количество входящих соединений даже в условиях атаки SYN flood, так как он не хранит информацию о незавершенных соединениях в памяти, а использует специальные cookie для отслеживания состояния соединения.
TCP SYN cookies - это один из методов защиты от атак на уровне TCP, который повышает устойчивость серверов к подобным атакам и обеспечивает непрерывность работы сетевых служб.
Задача 2. TCP reset attack
- Для выполнения атаки нам необходимо получить вводные данные. Для этого в момент подключения с
HostBкVictimбудем слушать трафик между ними с помощьюtcpdump
Выполняем подключение с HostB к Victim
"Слушаем" трафик с помощью tcpdump
В логах трафика нам необходимо получить данные для наполнения скрипта -- src, dst, sport, dport и seq.
| Параметр | Значение | Примечание |
|---|---|---|
| src | 10.3.0.3 | IP-адрес HostB |
| dst | 10.3.0.4 | IP-адрес Victim |
| sport | 40060 | Номер порта, с которого HostB устанавливает подключение |
| dport | 23 | Номер порта telnet на Victim |
| seq | 1838235189 | Номер следующей последовательности, который ожидает Victim от HostB |
- Подставим полученные данные в скрипт
opt2.pyдля проведения атаки.
4. Убедимся в наличии RST-пакета в tcpdump
5. Проверим состояние соединения путём нажатия Enter в подключении telnet
Согласно выводу, соединение было закрыто, атаку можно считать успешной.
Итог задачи 2.
TCP RST (Reset) атака - это форма атаки на уровне TCP, которая может быть использована для нарушения установленных TCP-соединений между клиентом и сервером.
Принцип работы атаки заключается в отправке поддельных RST-пакетов (пакетов сброса соединения) от имени одной из сторон (обычно от сервера) для преждевременного завершения установленного TCP-соединения. Это может привести к разрыву соединения и прекращению обмена данными между клиентом и сервером.
Несмотря на вышеописанное, подготовка к такой атаке является довольно сложной на практике, ведь злоумышленник должен иметь доступ к трафику внутри сети для правильного составления атакующего пакета.
Задача 3. TCP Session Hijacking attack
- Аналогично заданию 2 установим Тelnet-сессию между узлами
HostBиVictimи соберем исходные данные. Скелет кода похож на тот, который указан в задании 2, отличается лишь сегментом TCP и необходимостью добавления блока данных.
Основываясь на данных из tcpdump заполним нашу таблицу:
Таблица:
| Параметр | Значение | Примечание |
|---|---|---|
| src | 10.3.0.3 | IP-адрес HostB |
| dst | 10.3.0.4 | IP-адрес Victim |
| sport | 54402 | Номер порта, с которого HostB устанавливает подключение |
| dport | 23 | Номер порта telnet на Victim |
| seq | 4125627535 | Номер следующей последовательности, который ожидает Victim от HostB |
| ack | 2474120203 |
- Заполняем скрипт полученными данными
- Выполним атакующий скрипт
- Убедимся в наличии пакетов в tcpdump.
- Проверив состояние нашего соединения между хостами
HostBиVictimобнаруживаем, что соединение зависло и не реагирует на команды. Но как обстоят дела с папкой1337на хостеVictim?
Видим свежесозданную папку с именем 1337, сигнализирующую о том, что атака прошла успешно!
Итог задачи 3.
TCP Session Hijacking (взятие сессии) - это форма атаки на уровне TCP, направленная на захват установленной сессии между клиентом и сервером с целью несанкционированного доступа к данным или выполнения действий от имени атакуемого пользователя.
Принцип работы атаки заключается во вмешательстве в установленное TCP-соединение между клиентом и сервером путем введения поддельных TCP-пакетов или захвата существующих пакетов для манипуляции сессией. Атакующий может попытаться взять контроль над сессией, изменить данные, выполнить команды от имени пользователя или даже завершить сессию.
В целом атака очень похожа на TCP RST-атаку по необходимым вводным данным.
Для защиты от подобных атак могут применяться различные меры, такие как:
- Использование шифрования и цифровой подписи для защиты конфиденциальности и целостности данных во время передачи. (Например, использование SSHv2 вместо Telnet)
- Мониторинг сетевого трафика с целью обнаружения подозрительной активности или аномалий. (Сетевые снифферы с IDS, например PT Network Attack Discovery или Kaspersky Anti-Targetted Attack)
- Настройка сетевой защиты, включая файерволы, средства обнаружения вторжений и фильтрацию пакетов.
Итог лабораторной работы
На этом лабораторная работа окончена, файл отчет в формате pdf во вложении.
Выполнил: Харитонов Марат Русланович, студенческий билет №М235314.


















