jueves, 29 de mayo de 2008

Las profundidades de Windows



“¿Por qué se guardarán estas cosas en las profundidades de Windows?” dice uno de los comentaristas de esta entrada en el blog de Schneier.

Si ayer hablábamos de las herramientas de Sysinternals, algo que uno debe tener en su disco-duro-con-utilidades-siempre-a-mano (como una caja de herramientas, yo tengo algo así, ¿vosotros?), estas son también de obligado conocimiento. Nos solemos (me incluyo) quejar de que en Windows no se encuentran las mismas utilidades que en otros sistemas, etc etc, pero hay que reconocer que muchas veces es por absoluto desconocimiento de cómo funciona, lo cual debería dar(me) vergüenza.

Sabemos utilizar las herramientas gráficas, pero para el común de los mortales, el command prompt es un completo desconocido. Muchos de los comandos que gustan a los linuxeros tienen su equivalente en Windows, o al revés. En caso de que haya sospechas de que haya entrado un bicho en nuestro sistema, podemos tirar de ellos. Aquí va una serie que he encontrado en los enlaces que nos presenta Schneier hoy, y que han sido recopilados por Ed Skoudis. Esta entrada os está presentando, traducido y un poco acortado, lo mismo que él nos escribe (referencias al final).

1 – WMIC: Windows Management Instrumentation Command-line

Es una interfaz para la API Windows Managemente Instrumentation. Está, al menos, en XP y Vista (y seguro que en todos los demás, pero ahora mismo no lo puedo comprobar). Utilizándolo, se puede saber muchísimas cosas de tu sistema, como por ejemplo:
  • wmic process: la lista de procesos en ejecución. Si se agrega además los parámetros list brief, el resultado se presenta en formato resumido. Si los parámetros son list full (por defecto), entonces devuelve como resultado el formato ampliado. Estos mismos se pueden aplicar a todos los demás comandos.
  • wmic startup: los procesos que se arrancan en el inicio del sistema.

2 – El comando net

de toda la vida, también devolverá montones de información útil. Ejemplos:
  • net user: la lista de usuarios del sistema
  • net localgroup administrators: usuarios administradores del sistema.
  • net start: la lista de servicios en ejecución. ¡Un atacante podría crear su propio servicio en el sistema!.

3 – openfiles: lista de ficheros abiertos

Este comando genera muchísima información, por lo que no se puede utilizar directamente. Hay que activar previamente la recopilación de información que muestra, lo que se hace con el comando
  • openfiles /local on -- después hay que reiniciar el sistema.
A continuación ya se podrá utilizar el comando
  • openfiles /query /v -- para poder ver la lista de los ficheros abiertos en el sistema.
  • openfiles /local off -- para volver a desactivar esta funcionalidad.
4 – netstat

comando para mostrar datos sobre la red, como las conexiones activas o estadísticas de uso de un determinado protocolo, por ejemplo icmp (al parecer, hay backdoors y otros tipos de malware que usan el payload de los mensajes icmp echo request para comunicarse).

5 – find

la búsqueda en cadenas de texto (el “grep” de Linux).

Combinándolo con otros comandos, se puede hacer búsquedas en los resultados, por ejemplo:
  • wmic process list brief /every:1 | find "cmd.exe"

6 – tasklist: gestión de procesos

Con este comando, se puede saber no sólo que procesos se están ejecutando (podíamos hacer eso con WMIC), sino otras cosillas más difíciles, como la lista de bibliotecas DLL que se están invocando en cada proceso (tasklist /m) entre otras.

7 – reg: leer y actualizar el registro de Windows

Por ejemplo, con la opción query permite leer una clave del registro. Eso sí: ¡hay que conocerla!. Por ejemplo, la siguiente consulta

reg query hklm\software\microsoft\windows\currentversion\run

dirá cuáles son los programas que arrancan con el inicio de sesión. Otras opciones: export, import, add…

8 – ipconfig

Entre otras cosas, Ed Skoudis nos enseña que se puede usar para ver el contenido de la caché DNS, es decir, para saber cuáles han sido las últimas peticiones realizadas, mediante el parámetro /displaydns.

9 – bucles

se puede hacer algo de programación shell y generar un bucle, de forma que se repita el mismo comando una y otra vez. Por ejemplo:

for /L %i in (1,1,10) do @echo %i



Hay muchas más posibilidades usando Powershell.

10 – invocar utilidades gráficas de administración desde línea de comandos

Por ejemplo:
  • secpol.msc: el gestor de directivas de seguridad local.
  • services.msc: la interfaz de control de servicios
  • control: el panel de controlThis command brings up the overall control panel set of tools.
  • taskmgr.exe: el gestor de tareas gráfico.
  • explorer.exe: el explorador.
  • eventvwr.msc: el visor de eventos.
Textos originales: 1 y 2.

Slds!

No hay comentarios: