Данный инструментарий предоставляет методы для тестирования эффективности DPI систем путем симуляции различных техник обхода. Разработан для исследователей безопасности, сетевых инженеров и разработчиков DPI систем для оценки устойчивости систем проверки пакетов. Выполнен в виде С++ класса для простой интеграции в любое С++ приложение.
Скачать версию с реализованной эмуляцией атаки на DPI анализирующий трафик к сервисам youtube, osu.direct, catboy.best, api.nerinyan.moe - зеркала для загрузки Osu! карт и текстовых каналов dicord можно по ссылке
- Тестирование возможностей детектирования DPI систем
- Исследование методов обхода проверки пакетов
- Образовательные цели в области сетевой безопасности
- Разработка и валидация контрмер для DPI систем
Инструмент работает на уровне сетевого драйвера с использованием WinDivert для перехвата и модификации исходящих TLS пакетов. Реализованы несколько техник модификации TLS рукопожатий для тестирования устойчивости DPI систем.
Отправляет поддельный Client Hello пакет с SNI www.google.com перед реальным соединением. Тестирует базовые системы проверки первых пакетов.
Отправляет несколько (по умолчанию: 6) поддельных Client Hello пакетов. Оценивает системы, анализирующие несколько начальных пакетов.
Дробит полезную нагрузку TLS пакета и отправляет по частям. Тестирует способность DPI систем собирать и проверять фрагментированный трафик.
Гибридный подход: несколько поддельных пакетов + фрагментация с добавлением мусорных данных. Тестирует продвинутые DPI системы с глубокой проверкой пакетов.
Тестируйте вашу DPI систему против реализованных, популярных техник обхода
bypasser.AddBypassRequiredHostname("www.youtube.com", BypassMethod::SSF_FAKED_SPLIT);
bypasser.AddBypassRequiredHostname("googlevideo.com", BypassMethod::SIMPLE_SNI_FAKE);
...Учитывайте, что проверяется не только сам домен, но и производные от него.
- Добавьте новый enum в BypassMethod:
enum class BypassMethod {
NON = 0,
SIMPLE_SNI_FAKE = 1,
MULTI_SNI_FAKE = 2,
SSF_FAKED_SPLIT = 3
//...
};- Реализуйте метод в классе DPIBypasser:
class DPIBypasser {
...
void YourNewMethod();
...
};- Добавьте обработку в метод Bypass():
case BypassMethod::YOUR_NEW_METHOD:
YourNewMethod();
return;- Используйте ваш метод:
bypasser.AddBypassRequiredHostname("test.com", BypassMethod::YOUR_NEW_METHOD);Перед сборкой установите драйвер WinDivert:
windivert_install.bat(Запустите от имени администратора)
Убедитесь что файлы WinDivert64.sys, WinDivert.dll, WinDivert.lib и windivert.h находятся в папке проекта. Соберите с помощью CMake:
mkdir build && cd build
cmake ..
cmake --build . --config ReleaseИспользование
Убедитесь, что файлы tls_clienthello_www_google_com.bin и WinDivert.dll находятся рядом с DPIbypass.exe Запустите программу от имени администратора:
DPIbypass.exe- Авторизованного тестирования безопасности
- Академических исследований
- Разработки и оценки DPI систем
- Образовательных целей
- Несанкционированного вмешательства в сетевую инфраструктуру
- Обхода законных средств контроля безопасности
- Незаконной деятельности
Всегда убеждайтесь в наличии надлежащих разрешений перед тестированием любых сетевых систем.