У меня в любой момент на моем компьютере открыто много программ, многие из которых подключаются к Интернету, а я даже не осознаю этого. Если я хочу знать, какие из этих программ подключаются к внешнему миру через порт 443, защищенный HTTPS, который шифрует все входящие и исходящие данные, как мне это сделать?
NetStat — это команда Windows -строка, отображающая активные сетевые подключения, порты, которые прослушивает локальный компьютер, статистику Ethernet, таблицу маршрутизации и т. д. С помощью переключателя -b в окне командной строки с повышенными привилегиями я могу найти исполняемый файл, участвующий в создании каждого подключения, и порт прослушивания.
NetStat -b
Но это трудно фильтровать вывод, чтобы узнать, что именно я ищу.
Get-NetTCPConnection, двоюродный брат NetStat PowerShell, также получает текущие TCP-соединения с дополнительными параметрами фильтрации, доступными прямо из коробки.
Чтобы получить список установленных подключений к удаленному порту 443,
Get-NetTCPConnection -RemotePort 443 -State Established
Единственная проблема, он не сообщает мне, какая программа использует какое соединение в списке.
Нам понадобится помощь от командлет Get-Process . Чтобы отобразить имя процесса, используйте следующее.
(Get-Process -id $ id) .ProcessName
Если вам нужен полный путь к месту, где находится исполняемый файл используйте это вместо этого.
(Get-Process -id $ id) .Path
Теперь, поскольку Select-Object поддерживает вычисленные properties на лету, мы можем определить переменную, которая вычисляет свойство из исходного свойства OwningProcess из командлета Get-NetTCPConnect . Благодаря совету PowerTips.
В следующем скрипте перечислены все программы, которые подключаются к Интернету по протоколу HTTPS.
$ Process = @ {Name = 'Process' Expression = {# return process path (Get-Process -Id $ _. OwningProcess -ErrorAction SilentlyContinue) .ProcessName}} # получить все подключения к порту 443 (HTTPS) Get-NetTCPConnection -RemotePort 443 - Государство установлено | # и разрешите IP и идентификатор процесса Select-Object -Property $ HostName, RemotePort, OwningProcess, $ Process
Если вы хотите перечислить все программы, которые подключаются к Интернету, независимо от того, какие порты они проходят, удалите -RemotePort 443 из командлета Get-NetTCPConnection .
И если вы хотите увидеть, у вас есть какая-либо программа, использующая небезопасное HTTP-соединение, замените в команде 443 на 80. Вы можете получить сообщение об ошибке, в котором говорится, что CIM не обнаружил подходящих объектов MSFT_NetTCPConnection, что является хорошим признаком того, что у вас не было никаких программ, использующих небезопасное HTTP-соединение.