Платформа фильтрации Windows для фильтрации HTTPS из управляемого кода

Я хочу разработать брандмауэр на базе хоста для Windows, в основном для фильтрации URL-адресов, начиная с HTTPS! Я знаю, что Microsoft представляет WFP в качестве замены устаревшим устаревшим методам, таким как перехват брандмауэра / фильтра, NDIS, TDI, WSA и Winsock 2 (LSP). Но WFP в настоящее время не поддерживает фильтры с именем хоста или URL. Кроме того, WFP есть только в C / C ++, и в .NET нет доступных оболочек C #.

Я пробовал @basil WinDivert веб-фильтр демонстрационного приложения, который анализирует пакеты в исходящем трафике для IPv4 на TCP-порту 80 (по умолчанию HTTP), сбрасывает соединение с сервером (TCP RST) и отправляет HTML-ответ клиенту (браузеру), а затем TCP FIN в случае, если URL-адрес совпадает с любым из занесенные в черный список записи, указанные в текстовом файле в качестве аргумента командной строки, и в противном случае их повторное внедрение …

 handle = WinDivertOpen(
"outbound && "              // Outbound traffic only
"ip && "                    // Only IPv4 supported
"tcp.DstPort == 80 && "     // HTTP (port 80) only
"tcp.PayloadLength > 0",    // TCP data packets only
WINDIVERT_LAYER_NETWORK, priority, 0
);

Мой вопрос: могу ли я изменить этот код для поддержки HTTPS (изменить порт по умолчанию 443), а также IPv6? Если это так, я готов написать класс-оболочку P \ Invoke для вызова его из управляемого кода C #.

Дополнительно: это решение можно обойти с помощью SSH-туннелирования, есть ли другой способ его обойти?

1

Решение

HTTPS использует шифрование для предотвращения перехвата и изменения потока HTTP третьими лицами. Таким образом, короткий ответ «нет».

В принципе, вы можете использовать WinDivert для запуска атаки «человек посередине», чтобы получить доступ к незашифрованному потоку HTTP. Однако это будет обнаружено, и веб-браузер строго предупредит пользователя о том, что он подвергся атаке, и не будет продолжать.

4

Другие решения


По вопросам рекламы [email protected]