Outra maneira de ver as comunicações de aplicativos

Boa tarde, colegas. Como você sabe, existe um utilitário muito útil - sysmon . Em poucas palavras, permite coletar e "registrar" eventos que acontecem no Windows. Um desses eventos é uma tentativa de estabelecer uma conexão de rede. Assim, você pode tentar descobrir para onde vão seus aplicativos. Para isso, precisamos:



Em princípio, precisamos de um pouco de fantasia. Sysmon grava eventos no log Microsoft-Windows-Sysmon/Operational . Então, precisamos tirá-los, desmontá-los e exibi-los. Algo assim:


 $ids = Get-WinEvent -LogName Microsoft-Windows-Sysmon/Operational | ? {$_.id -eq 3} $commObjects = $ids | % { New-Object psobject -Property @{ RuleName = $_.Properties[0].value UtcTime = $_.Properties[1].value ProcessGuid = $_.Properties[2].value ProcessId = $_.Properties[3].value Image = $_.Properties[4].value User = $_.Properties[5].value Protocol = $_.Properties[6].value Initiated = $_.Properties[7].value SourceIsIpv6 = $_.Properties[8].value SourceIp = $_.Properties[9].value SourceHostname = $_.Properties[10].value SourcePort = $_.Properties[11].value SourcePortName = $_.Properties[12].value DestinationIsIpv6 = $_.Properties[13].value DestinationIp = $_.Properties[14].value DestinationHostname = $_.Properties[15].value DestinationPort = $_.Properties[16].value DestinationPortName = $_.Properties[17].value SourceString = "$($_.Properties[4].value)`:$($_.Properties[3].value)" DestinationString = "$($_.Properties[14].value)`:$($_.Properties[16].value)" } } $g = New-Graph -Type BidirectionalGraph $commObjects | % { Add-Edge -From $_.SourceString -To $_.DestinationString -Graph $g | Out-Null } Show-GraphLayout -Graph $g 

Infelizmente, os valores na Properties Propriedades são uma lista, apenas valores, sem chaves. Portanto, para vinculá-los, tive que agir com grosseria. Por fim, simplesmente pegamos esses valores de cada entrada de log, convertemos em objetos e, em seguida, os adicionamos ao gráfico como vértices e os exibimos.


É importante lembrar que um processo com o mesmo "caminho" pode ser executado várias vezes. Por outro lado, um vértice com o mesmo nome não é adicionado duas vezes. Portanto, para representar exclusivamente cada processo no gráfico, modificamos levemente o conjunto de valores original, adicionando dois novos. Isso nos permite identificar com precisão o processo, pois seu identificador é um valor relativamente único.


  SourceString = "$($_.Properties[4].value)`:$($_.Properties[3].value)" DestinationString = "$($_.Properties[14].value)`:$($_.Properties[16].value)" 

É assim que pode acabar procurando


sysmonlognetgraph


Espero que isso seja útil para alguém

Source: https://habr.com/ru/post/pt425375/


All Articles