Не нужно изобретать велосипед: брандмауэр Windows объединяет всё необходимое для блокировки трафика данных, генерируемого любой установленной программой, а также компонентами системы. Брандмауэр Windows позволяет блокировать как входящий, так и исходящий трафик, следя за тем, чтобы приложение не могло ни отправлять, ни получать один байт данных: что такое брандмауэр и как он работает?
Как заблокировать любое общение приложения, не полагаясь на Windows Firewall Control? Одним из решений было бы создание изолированной виртуальной машины с Virtualbox, VMware, Hyper-V или с другими решениями виртуализации.
В качестве альтернативы мы предлагаем ниже простое решение, основанное на использовании PowerShell.
Блокировать доступ в Интернет для всех исполняемых файлов в папке
Мы создали для вас два простых скрипта PowerShell, которые позволяют блокировать все входящие и исходящие сообщения для всех исполняемых файлов, содержащихся в указанной папке. Предположим, вы временно отключили доступ к сетевой карте (Ethernet или Wi-Fi), нажав комбинацию клавиш Windows + R, набрав ncpa.cpl , щелкнув правой кнопкой мыши и выбрав Отключить.
После установки интересующего вас приложения вам нужно будет записать путь, по которому оно установлено, затем нажать Windows + X и выбрать Windows PowerShell (администратор).
На этом этапе, замените C:\FOLDER полным путем к папке, содержащей файлы, подлежащие блокировке (исполняемые файлы, которые не должны иметь возможность отправлять и получать данные через Интернет), соответствующие правила будут автоматически созданы в брандмауэре Windows.
Чтобы заблокировать весь исходящий трафик для исполняемых файлов, содержащихся в указанной папке:
$d='C:\FOLDER'; Get-ChildItem -Path "$d\*.exe" -Recurse | Select-Object -ExpandProperty Name | ForEach-Object { New-NetFirewallRule -DisplayName "Заблокировано PowerShell $_ (out)" -Direction Outbound -Action Block -Profile Any -Enabled True -Program $d"\"$_ }
Чтобы заблокировать весь входящий трафик для исполняемых файлов, содержащихся в указанной папке:
$d='C:\FOLDER'; Get-ChildItem -Path "$d\*.exe" -Recurse | Select-Object -ExpandProperty Name | ForEach-Object { New-NetFirewallRule -DisplayName "Заблокировано PowerShell $_ (in)" -Direction Inbound -Action Block -Profile Any -Enabled True -Program $d"\"$_ }
Нажмите Win + R, затем наберите wf.msc и нажмите Ввод, вновь добавленные правила появятся в разделах «Исходящие правила» и «Входящие правила» брандмауэра Windows.
Если впоследствии вы захотите удалить различные правила, созданные без прохождения через окно брандмауэра Защитника Windows с повышенной безопасностью, просто откройте окно PowerShell с правами администратора и введите:
Get-NetFirewallRule | ? DisplayName -like 'Заблокировано PowerShell*' | Select-Object DisplayName | ForEach-Object { Remove-NetFirewallRule -DisplayName $_.DisplayName }
Следует иметь в виду, что последний скрипт, запущенный как есть, одним махом удалит все правила брандмауэра с префиксом «Заблокировано PowerShell» (обратите внимание на использование подстановочного знака*).
В обоих случаях для достижения поставленной цели мы сначала использовали конвейер PowerShell, извлекая имена исполняемых файлов, содержащихся в папке, указанной пользователем, а затем используя команду New-NetFirewallRule для создания нового правила брандмауэра (передавая во входную команду имя исполняемого файла для строки описания правила и полный путь для правил входящих и исходящих соединений).
Чтобы заблокировать программу, ограничивающую себя исполняемыми файлами, содержащимися в папке, указанной в переменной $d, а не в её подпапках, просто удалите параметр -Recurse.