Приветствую,
уважаемый читатель!
Недавно
возникла потребность в режиме реального времени проконтролировать с какими белыми
IP-адресами
соединяется конкретный процесс, обновляющий антивирус. Небольшой скрипт,
который решает данную задачу, приведен ниже.
Алгоритм
достаточно простой:
- Задаём
имя процесса, который хотим контролировать, и получаем его PID.
- Смотрим сетевую активность данного процесса каждую секунду.
- Как
только определили соединение с уникальным IP, добавляем его в массив и выводим в
консоль.
$mas=@()
while ($count
-le
1) {
$process_list =
Get-WmiObject -Class
Win32_Process |
select Caption,ProcessID | where Caption -eq "Up2Date.exe"
$remote
= Get-NetTCPConnection
| where LocalAddress -NE
"0.0.0.0" |
where OwningProcess
-eq $process_list.ProcessID
if((!($mas.Contains($remote.RemoteAddress))) -and
($remote)) {
'{0}
| {1} | {2} | {3} ' -f "Соединение с IP - " , $remote.RemoteAddress ,
$remote.RemotePort
, $remote.State
$mas
+= $remote.RemoteAddress
}
Start-Sleep
-Seconds 1
}
Вид из консоли:
Небольшой комментарий)
ОтветитьУдалить1. если процессов с таким именем несколько - то не работает)
Так заработает: where OwningProcess -In $process_list.ProcessID
Спасибо!
ОтветитьУдалить