В Powershell есть команда, которая по аналогии с netstat, выводит список сетевых подключений. Эту команду можно использовать во множестве направлений, например для мониторинга подключений нового приложения. На примере описанной в этой статье будет показано, как с помощью команды Get-NetTCPConnection и других встроенных методов Powershell, можно получить ip, имя хоста, процесса и порт. Конечно, список можно расширить ограничиваясь фантазией.
Для начала получим стандартный вывод команды в Powershell:
Get-NetTCPConnection | Select-Object -Property LocalPort, State, OwningProcess
На примере выше выведены свойства: локальный порт, состояние и идентификатор процесса. Добавим свойства: удаленный порт, удаленный ip адрес и локальный адрес, на случай если будем выполнять команды на удаленном компьютере с Powershell.
Get-NetTCPConnection -State Established | Select-Object -Property LocalAddress, LocalPort, RemoteAddress, RemotePort, State | ft
Немного дополним для вывода DNS имени и имени процесса:
Get-NetTCPConnection -State Established |
Select-Object -Property LocalAddress, LocalPort,
@{name='DNSName';expression={(Resolve-DnsName $_.RemoteAddress).NameHost}},
RemoteAddress, RemotePort, State,
@{name='Process';expression={(Get-Process -Id $_.OwningProcess).Name}}, CreationTime |
Format-Table -AutoSize
Теперь мы можем увидеть все сетевые взаимодействия. Такой небольшой скрипт можно бесконечно дополнять. Например я бы добавил колонку, где вместе с номерами портов писалось и название протокола, так как я их не помню. Можно добавить путь, откуда запущен процесс, так как на рабочих компьютерах процессы запущенные вне Program Files и Windows всегда вызывают подозрения.
...
Подписывайтесь на наш Telegram канал
Теги: #powershell