POWERSHELL – BUSCANDO SOSPECHOSOS …

Hola amigos, hoy voy a hablarles de algunas herramientas de Powershell que nos pueden servir para buscar “sospechosos” en nuestra máquina, es decir programas que hayan podido haber sido instalados de manera malintencionada.

Para conocer los procesos que están corriendo en memoria utilizo el comando get-process. Si lo uso sin ningún parámetro obtengo el siguiente resultado:

 

PS-sospechosos-1

Aquí usé en realidad get-process | more para ver la salida por páginas.

get-process también tiene lo que se denomina aliases, es decir otros comandos que producen el mismo resultado, como gps o ps.

¿Cómo supe los aliases de get-process? Usando el comando get-alias:

PS-sospechosos-2

Siempre uso el inseparable | more para ver los resultados por páginas. Si le dan un vistazo a fondo a get-alias van a encontrar que es posible aprender los comandos de Powershell de una manera muy simplificada. Ahora bien, para encontrar los aliases de get-process hice lo siguiente:

PS-sospechosos-3

De verdad que get-alias es bastante útil.

Pero bueno, volvamos a nuestra idea inicial.

Con el siguiente comando voy a ver qué programas están en memoria y voy a ver otros parámetros que pueden ser de mucho interés, como por ejemplo el fabricante del programa.

Así se pueden empezar a rastrear programas que estén en memoria y que sean desconocidos.

Asumiendo que no hay rootkits en el sistema que hayan cambiado el script get-process, ps o gps podemos escribir lo siguiente:

 Get-Process | Select-Object name,fileversion,productversion,company

La salida es algo similar a lo siguiente:

PS-sospechosos-4

También puedo enviar dicha salida a un archivo plano, por ejemplo:

 Get-Process | Select-Object name,fileversion,productversion,company > archivo1

Y posteriormente hacer una búsqueda en un editor de texto como Notepad:

PS-sospechosos-5

Por lo menos en mi máquina no hay sospechosos…

Si se desea conocer toda la lista de parámetros que se pueden obtener aparte de la versión del archivo o del producto, o la compañía que hizo el programa que está en memoria se puede usar el comando:

 Get-Process | Get-Member

PS-sospechosos-6

Y como lo pueden ver, la lista es bastante amplia y hay bastantes opciones.

Una vez tengamos indicios de actividad sospechosa o de la presencia de programas no deseados en nuestro sistema podemos usar herramientas de sysinternals (http://technet.microsoft.com/en-US/sysinternals ) como Process Monitor para ver más detalladamente lo que pasa.

Por último, si quiero detectar actividad sospechosa en la red y no dispongo de herramientas sofisticadas como detectores de intrusos puedo empezar a usar herramientas como netstat, que si bien no es propiamente de Powershell, existe desde hace mucho tiempo y en realidad hace parte del stack de TCP/IP.

Rápidamente puedo usar el comando netstat –y para ver cómo están mis conexiones, es decir hacia dónde estoy conectado y quién está conectado a mi máquina:

 

PS-sospechosos-7

Si analizo las conexiones puedo observar cuáles son locales hacia mi máquina (Local Address), que en este ejemplo tiene la IP 192.168.0.4 y cuáles son hacia afuera (Foreign Address), por ejemplo 207.46.101.8, la cual se encuentra en un estado TIME_WAIT, que indica que un socket de conexión ya se cerró entre mi máquina y la IP en mención 207.46.101.8.

Todos estos estados de conexión se explican en el RFC 793

Ahora bien, si sospecho de una IP por ejemplo puedo consultar su origen y hacer un Whois para saber de dónde proviene, por ejemplo en el siguiente sitio http://whois.net/ip-address-lookup/

Bueno, esta fue una primera aproximación a una serie de comandos muy rápidos para ver si algo raro está pasando en nuestra plataforma.

¡Espero verlos en otra oportunidad!

Comments

  • Anonymous
    January 01, 2003
    Gracias al comentario de Ricardo Polo, quien me sugirió usar también sigcheck de Sysinternals... technet.microsoft.com/.../bb897441 para verificar la firma digital del archivo sospechoso.