Rust, Хакинг на Rust

Курс — Хакинг на Rust. #19 Инструменты хакера на Rust. Сетевые атаки. Работа с сокетами: TCP/UDP, raw sockets

Здравствуйте, дорогие друзья.

Сокеты — основа сетевого взаимодействия. В Rust они реализуются через стандартную библиотеку (std::net) и низкоуровневые крейты (socket2, pnet).
Преимущества Rust:

  • Безопасность: Нет утечек памяти даже при работе с сырыми сокетами.
  • Скорость: Нулевые накладные расходы для высоконагруженных задач.
  • Контроль: Возможность манипуляции пакетами на уровне байтов.

TCP-сокеты: Надёжное соединение

TCP гарантирует доставку данных и порядок пакетов. Используется для HTTP, SSH, передачи файлов.

Пример TCP-сервера:

Пример TCP-клиента

UDP-сокеты: Быстрая доставка без гарантий

UDP используется для потокового видео, DNS, игр.

UDP-сервер

UDP-клиент

Raw Sockets: Низкоуровневая магия

Raw sockets позволяют отправлять и принимать сырые пакеты (IP, ICMP, TCP). Требуют прав суперпользователя.

Создание raw сокета

Для работы с сырыми сокетами используйте крейт socket2:

Пример ICMP-пинга:

Генерация TCP SYN-пакетов (SYN-сканирование)

SYN-сканирование позволяет обнаружить открытые порты без установки полного соединения.

Пример с pnet:

Обработка ошибок и безопасность

  • Проверка прав: Raw sockets требуют sudo или CAP_NET_RAW.
  • Обработка ошибок: Используйте ? для пропагации ошибок
  • Безопасное использование unsafe: Инкапсулируйте опасные операции.

Инструменты и библиотеки

  • socket2: Гибкая настройка сокетов (таймауты, буферы).
  • pnet: Работа с низкоуровневыми протоколами.
  • tokio/net: Асинхронные сокеты для высоконагруженных приложений.

Этические аспекты

  • Только в рамках закона: Raw sockets могут использоваться для DDoS-атак (например, SYN-flood).
  • Защита: Анализируйте свой трафик снифферами для обнаружения аномалий.

Задание для самостоятельной работы:

  1. Реализуйте UDP-флудер с ограничением скорости.
  2. Модифицируйте пример SYN-сканера для обработки ответов (SYN-ACK).
  3. Напишите сниффер ICMP-пакетов с использованием pnet.

Итог:
Rust сочетает контроль над сетевым стеком с безопасностью, что делает его идеальным выбором для создания инструментов сетевого взаимодействия. Понимание сокетов — основа для MITM-атак, фаззинга и анализа уязвимостей.

Хакинг на языке программирования Rust

На этом все. Всем хорошего дня!

Цикл статей по курсу — «Хакинг на Rust».