Cómo saber qué programas se están conectando a Internet a través de ciertos puertos en Windows

Tengo muchos programas abiertos en cualquier punto de mi computadora, muchos de los cuales se conectan a Internet sin que yo me dé cuenta. Si quiero saber cuáles de estos programas se conectan fuera del mundo a través del puerto 443, un HTTPS seguro que encripta todo lo que entra o sale, ¿cómo lo haría?

NetStat es una línea de comandos de Windows que muestra las conexiones de red activas, los puertos que escucha la computadora local, las estadísticas de Ethernet, la tabla de enrutamiento, etc. Con el conmutador -b ejecutándose en una ventana de símbolo del sistema elevado, puedo encontrar el archivo ejecutable involucrado en creando cada conexión y su puerto de escucha.

NetStat -b

Pero es difícil filtrar la salida para descubrir qué estoy buscando exactamente.

Get-NetTCPConnection, el primo de PowerShell de NetStat, también obtiene conexiones TCP actuales con opciones de filtrado adicionales disponibles de inmediato.

Para obtener una lista de las conexiones establecidas al puerto remoto 443,

Get-NetTCPConnection -RemotePort 443 -State Established
imagen 23 600x303 - Cómo saber qué programas se están conectando a Internet a través de ciertos puertos en Windows

El único problema es que no me dice qué programa está utilizando qué conexión en la lista.

Necesitaremos ayuda del cmdlet Obtener-proceso. Para mostrar el nombre del proceso, utilice lo siguiente.

(Get-Process -id $id).ProcessName

Si necesita la ruta completa de donde reside el ejecutable, use esto en su lugar.

(Get-Process -id $id).Path

Ahora desde Seleccionar objeto admite propiedades calculadas sobre la marcha, podemos definir una variable que calcule la propiedad a partir del original Proceso de propiedad propiedad de la Get-NetTCPConnect cmdlet. Gracias a la punta de PowerTips.

En conjunto, el siguiente script enumera todos los programas que se conectan a Internet a través del protocolo HTTPS.

$Process = @{
    Name="Process"
    Expression={
        # return process path
        (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName
        }
}
 
# get all connections to port 443 (HTTPS)
Get-NetTCPConnection -RemotePort 443 -State Established | 
  # and resolve IP and process ID
  Select-Object -Property $HostName, RemotePort, OwningProcess, $Process 

Si desea enumerar todos los programas que se conectan a Internet independientemente de los puertos por los que pasen, elimine -RemotePort 443 fuera de Get-NetTCPConnection cmdlet.

Y si desea ver si tiene algún programa que utilice la conexión HTTP insegura, reemplace 443 con 80 en el comando. Puede terminar con un mensaje de error que indica que CIM no ha encontrado ningún objeto MSFT_NetTCPConnection coincidente, lo cual es una buena señal que le indica que no tenía ningún programa utilizando la conexión HTTP insegura.

Deja un comentario