Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 28.08.2017
Сообщений: 6
1

Блокировка прокси соединения Windows Filtering Platform (WFP)

28.08.2017, 22:18. Показов 2473. Ответов 11

Author24 — интернет-сервис помощи студентам
Блокирую ВСЕ соединения

C
1
FWPM_LAYER_ALE_AUTH_CONNECT_V4; FWPM_LAYER_ALE_AUTH_CONNECT_V6
но если установлен прокси или фаервол который редиректит содинения через себя (dwnetfilter.exe итп), то если разрешить проксирующему приложению доступ на коннект - все остальные приложения будут идти через него.

нашёл один способ, но он работает только на Windows 8 и выше, это создание ещё одного фильтра блокирующего те же уровни (layers), но с условием (condition)
C
1
2
3
4
5
// добавление условия фильтру
cond[0].fieldKey = FWPM_CONDITION_FLAGS;
cond[0].matchType = FWP_MATCH_FLAGS_ANY_SET;
cond[0].conditionValue.type = FWP_UINT32;
cond[0].conditionValue.uint32 = FWP_CONDITION_FLAG_IS_CONNECTION_REDIRECTED | FWP_CONDITION_FLAG_IS_PROXY_CONNECTION;
вопрос - можно ли блокировать прокси соединения другим способом (нужна поддержка Windows 7 и выше)? есть ещё layers
C
1
FWPM_LAYER_ALE_CONNECT_REDIRECT_V4; FWPM_LAYER_ALE_CONNECT_REDIRECT_V6
но они не срабатывают на прокси, то есть вообще не блокируются (или я не так создаю).
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// создание блокирующих фильтров
FWPM_FILTER filter = {0};
 
filter.displayData.name = <name>;
filter.displayData.description = <name>;
filter.flags = FWPM_FILTER_FLAG_PERSISTENT;
filter.providerKey = <provider>;
filter.layerKey = <layer>;
filter.subLayerKey = <sublayer>;
filter.action.type = FWP_ACTION_BLOCK;
 
filter.weight.type = FWP_UINT8;
filter.weight.uint8 = 0xd;
 
UINT64 filter_id = 0;
FwpmFilterAdd (config.hengine, &filter, nullptr, &filter_id);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.08.2017, 22:18
Ответы с готовыми решениями:

Windows Filtering Platform (WFP)
Добрый день. Читаю документацию. Общий смысл понятен. Но вот при попытке перейти к практике -...

Windows Filtering Platform Sniffer
На основе этой статьи пробую написать сниффер. Не отрабатывает классифицирущая функция Classify....

Краткий обзор Windows Filtering Platform
Здесь я постараюсь дать небольшой обзор WFP, а также затронуть некоторые технические моменты. Без...

Windows Filtering Platform blocking ports and adresses on the c#
Предистория: Недавно появилась необходимость блокировать порты и адреса под windows. В основном...

11
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
02.09.2017, 08:13 2
Цитата Сообщение от goodzone326 Посмотреть сообщение
Блокирую ВСЕ соединения
...
но если установлен прокси или фаервол который редиректит содинения через себя (dwnetfilter.exe итп), то если разрешить проксирующему приложению доступ на коннект - все остальные приложения будут идти через него.
А задача какая? Запретить всем, но разрешить dwmnetfilter.exe?
0
0 / 0 / 0
Регистрация: 28.08.2017
Сообщений: 6
02.09.2017, 13:28  [ТС] 3
Да, задача запретить соединения на стадии коннекта, но перед обработчиком редиректа (dwnetfilter.exe) - чтобы уведомления о блокировке (FwpmNetEventSubscribe) приходили не только на dwnetfilter.exe, а на всех кто пытается соединиться с сетью.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
03.09.2017, 22:35 4
Для этого нужно, чтобы твой фильтр в стеке перехвата сидел выше dwnetfilter.exe.
Других способов нет.
0
0 / 0 / 0
Регистрация: 28.08.2017
Сообщений: 6
10.09.2017, 18:51  [ТС] 5
Убежденный, если вы про вес (weight) фильтра, то это само собой разумеещееся, но wfp не определяет инициатора коннекта (кто соединяется с сетью), а только обработчика редиректа (к кому приходит обращение), и я думаю это неправильно с точки зрения сети.

а за что тогда отвечают эти layer's FWPM_LAYER_ALE_CONNECT_REDIRECT_V4; FWPM_LAYER_ALE_CONNECT_REDIRECT_V6?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
10.09.2017, 21:11 6
Цитата Сообщение от goodzone326 Посмотреть сообщение
wfp не определяет инициатора коннекта (кто соединяется с сетью)
Не понял. А это тогда что:

FWPS_INCOMING_METADATA_VALUES0 structure
https://msdn.microsoft.com/en-... s.85).aspx
processId

The process ID for the process that owns the endpoint.
?

А еще есть FWPM_CONDITION_ALE_APP_ID, т.е. в теории можно настроить WFP-фильтр так,
чтобы блокировал все, кроме заданного приложения.
0
0 / 0 / 0
Регистрация: 28.08.2017
Сообщений: 6
11.09.2017, 09:57  [ТС] 7
Цитата Сообщение от Убежденный Посмотреть сообщение
Не понял. А это тогда что:
FWPS_INCOMING_METADATA_VALUES0 structure
https://msdn.microsoft.com/en-... s.85).aspx
это для kernel-mode, у меня user-mode приложение.

Цитата Сообщение от Убежденный Посмотреть сообщение
А еще есть FWPM_CONDITION_ALE_APP_ID, т.е. в теории можно настроить WFP-фильтр так,
чтобы блокировал все, кроме заданного приложения.
Да, я читал вашу статью Краткий обзор Windows Filtering Platform и не могу не сказать вам спасибо за такое простое описание архитектуры движка, и благодаря которой я написал самый простой, функциональный и настраиваемый файрвол использующий wfp, и он работает (повторюсь - в user-mode) так:

- 4 основных фильтра для блокирования входящих и исходящих (ipv4 & ipv6) безо всяких condition, с весом 0xC (lowest)
- фильтры которые разрешают доступ приложению в сеть по FWPM_CONDITION_ALE_APP_ID, с весом 0xD (middle)
- и все остальные фильтры обеспечивающие безопасность и работоспособность компьютера в сети, с весом 0xE, 0xF (high & highest)

вот только у меня нет и не будет callout'ов которые обрабатывают запросы, потому что они в этом случае не нужны.

вопрос в следующем, как заблокировать прямые и прокси соединения на стадии коннекта в 1-ом шаге и разрешить использование прямых и прокси соединений во 2-ом шаге.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
11.09.2017, 15:29 8
Мне думается, эта проблема вообще не имеет универсального и хорошего решения.

Дело в том, что редирект соединений обычно выполняется на самых высоких уровнях сетевого стека,
вплоть до того, что приложение может похукать сетевые функции типа connect/WSAConnect/WSPConnect/
ConnectEx во всех процессах и прямо "на месте" менять адрес remote endpoint на свой локальный
прокси, не связываясь вообще с драйверными WFP/TDI-редиректами.

Твой фильтр в этом случае увидит от исходного приложения только коннект на localhost (типа 127.0.0.1),
все остальное пойдет в сеть уже от прокси. А localhost у тебя наверняка разрешен. Например, здесь:
"все остальные фильтры обеспечивающие безопасность и работоспособность компьютера в сети, с
весом 0xE, 0xF (high & highest)".

В WFP, кстати, фильтры на редирект-layer тоже срабатывают раньше, чем connect-layer, поэтому сначала
отрабатывает редирект, и только потом обработка коннекта. В принципе, можно было бы попробовать блочить
доступ прямо на редирект-layer, но насколько я знаю, это не работает. А на еще более высоких уровнях,
таких как resource assignment, т.е. до редиректа и коннекта, еще нет информации об удаленном IP/порте.

И я бы не советовал особо надеяться на присутствие флагов 'IS_CONNECTION_REDIRECTED' и 'IS_PROXY_CONNECTION', а
также на соблюдение всеми компонентами сети техники 'proxied connection tracking' (Win8+). Многие, особенно
антивирусы, на такие вещи просто кладут болт.

----

Короче говоря, тут можно действовать по ситуации. Например, узнать программно, какие порты в процессе
локального прокси открыты на прослушку. И блочить всем приложениям туда коннекты.
1
0 / 0 / 0
Регистрация: 28.08.2017
Сообщений: 6
25.09.2017, 09:06  [ТС] 9
Цитата Сообщение от Убежденный Посмотреть сообщение
А localhost у тебя наверняка разрешен. Например, здесь:
"все остальные фильтры обеспечивающие безопасность и работоспособность компьютера в сети, с
весом 0xE, 0xF (high & highest)".
Нет, только разрешение loopback и правила для работоспособности ipv6 сети не разрешающие прямые подключения.

Цитата Сообщение от Убежденный Посмотреть сообщение
И я бы не советовал особо надеяться на присутствие флагов 'IS_CONNECTION_REDIRECTED' и 'IS_PROXY_CONNECTION', а
также на соблюдение всеми компонентами сети техники 'proxied connection tracking' (Win8+). Многие, особенно
антивирусы, на такие вещи просто кладут болт.
Пока это единственное рабочее решение. Антивирусы которые были протестированы (drweb, comodo) ловятся этими флагами. Нужно будет ещё тестировать, особенно категории "K".

Спасибо.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
25.09.2017, 09:52 10
Цитата Сообщение от goodzone326 Посмотреть сообщение
А localhost у тебя наверняка разрешен.
Цитата Сообщение от goodzone326 Посмотреть сообщение
Нет, только разрешение loopback
Так loopback - это и есть localhost

Цитата Сообщение от goodzone326 Посмотреть сообщение
Пока это единственное рабочее решение. Антивирусы которые были протестированы (drweb, comodo) ловятся этими флагами. Нужно будет ещё тестировать, особенно категории "K".
Последний раз, когда я занимался этой темой, проверял где-то на 50 разных антивирусах и
прочих программах: фаерволы, родительский контроль, спам-фильтры, VPN и т.д.
С совместимостью было все не очень хорошо, примерно 10-20% программ вместе с
моей работать не хотели (обычно отваливался интернет).
1
0 / 0 / 0
Регистрация: 28.08.2017
Сообщений: 6
25.09.2017, 17:34  [ТС] 11
Цитата Сообщение от Убежденный Посмотреть сообщение
Так loopback - это и есть localhost
loopback разрешён для работоспособности локальной сети и ipc некоторых приложений и на выход в интернет не влияет, даже если прокси установлен в localhost.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
25.09.2017, 17:53 12
Цитата Сообщение от goodzone326 Посмотреть сообщение
loopback разрешён для работоспособности локальной сети и ipc некоторых приложений и на выход в интернет не влияет
Влияет. Но не напрямую, а косвенно.
Если у тебя приложения ходят в интернет через прокси, который крутится на локалхосте,
то запрет для них доступа на локалхост эквивалентен запрету доступа в интернет.
Ну и наоборот...
0
25.09.2017, 17:53
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.09.2017, 17:53
Помогаю со студенческими работами здесь

Windows Filtering Platform траблы с портом из Fixed Value
Взял пример inspect из 8.1 из сборника Убежденного, читаю его статью здесь. Осваиваю WFP. Прописал...

Windows Filtering Platform и сниффинг пакетов в соединении типа Мост
Можно ли с помощью Windows Filtering Platform получать/модифицировать сетевые пакеты, когда...

Обсуждение "Краткий обзор Windows Filtering Platform"
Статья классная! Она еще актуальна на данный момент? И было бы здорово ссылочку на финальную версию...

Аналог ShellExecute() в C++/Cx, WinRT, Windows 10, Universal Windows Platform
Делаю программку для десктопа, но поскольку речь идет об Universal Windows Platform, то концепция с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции. / / . . .
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru