Determine qual processo está falando com uma porta remota no Windows Server

1

Eu peguei um produto de um empreiteiro no meu local de trabalho. A ferramenta coleta metainformation. A natureza exata das informações não é importante para a pergunta, mas existe como um arquivo simples e / ou em um banco de dados. De alguma forma, o contratado configurou alguma coisa no servidor para encaminhar os logs (como texto) para nosso redirecionador do Splunk. Nós não pensamos que ele está usando o Splunk Forwarder, já que não vemos nenhuma evidência de sua existência (seja instalado em qualquer lugar nas unidades, ou como serviços em execução).

Nós fazemos saber para qual porta remota o encaminhamento está indo, e nós vemos o tráfego do servidor Windows (no qual o aplicativo está instalado) para a porta remota .

Quando a conexão acontece parece ser aleatória e muito curta. Estou tentando capturar o que processo está fazendo essa conexão e onde ele mora no servidor Windows.

Eu escrevi o seguinte script para esse fim, mas não estou de forma alguma casado com a idéia de usar o Powershell se houver um método melhor:

$foundConnections = @()
$foundProcesses = @()

while($true)
{
    Start-Sleep -Milliseconds 100
    $connections = Get-NetTCPConnection -RemotePort 30117 -ErrorAction Ignore
    if($connections -ne $null)
    {
        if($connections.Count -ne $null -and $connections.Count -gt 1)
        {
            foreach($aConnection in $connections)
            {
                $foundConnections += $aConnection
                $process = Get-Process -Id $aConnection.OwningProcess
                Write-Output ($process)
                $foundProcesses += $process
                Add-Content -Path C:\Temp\procs.csv -Value ((Get-Date).ToString() + "," + $process.Name + "," + $process)
            }

        }
        else
        {
            $foundConnections += $connections
            $process = Get-Process -Id $connections.OwningProcess
            Write-Output ($process)
            $foundProcesses += $process
            Add-Content -Path C:\Temp\procs.csv -Value ((Get-Date).ToString() + "," + $process.Name + "," + $process)
        }

    }
}

... Que eventualmente identifica o tráfego, mas o csv produzido é assim:

08/11/2017 8:25:06 AM ,

11/8/2017 8:25:06 AM ,

11/8/2017 8:25:07 AM ,

11/8/2017 8:25:07 AM ,

11/8/2017 8:25:07 AM ,

11/8/2017 8:25:07 AM ,

11/8/2017 8:25:14 AM, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:14, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:15, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:15, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:15, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:15, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:15, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:15, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:15, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:16, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:16, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:16, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:16, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:16, ocioso, System.Diagnostics.Process (ocioso) 08/11/2017 08:25:16, ocioso, System.Diagnostics.Process (ocioso)

...

... Várias centenas de linhas disso.

Como posso determinar um processo em execução se souber a porta remota que está sendo usada, e a execução não parece se manter em um agendamento, e a conexão é muito curta?

    
por Nex Terren 08.11.2017 / 15:55

1 resposta

0

Você pode querer tentar usar uma ferramenta de captura de pacotes como o Netmon (também conhecido como Network Monitor). Use um filtro de captura que o manterá pequeno, filtrado com base na porta de destino & IP, deixe-o funcionar por algumas horas e você deve ver o processo. Em seguida, basta procurar o disco para esse exe. Netmon DL link O Netmon foi substituído pelo mais novo "Message Analyzer", que eu não usei tanto, algumas pessoas também gostam do Wireshark, mas não tenho certeza se o Wireshark chega ao nível do processo como as ferramentas de captura do MS.

Se eles estão sendo encaminhados por meio de uma tarefa agendada ... a visualização em árvore do agendador de tarefas pode ser entediante para pesquisas. Mas há também uma CLI para tarefas com powershell Get-ScheduledTask , que retorna todos os nomes de jobs e o caminho para a tarefa. Talvez valha a pena olhar isso.

    
por 13.11.2017 / 21:25