martes, 31 de mayo de 2011

Powershell

El proceso de intrusión (hacking/pentesting) en entonos Unix/Linux tradicionalmente ha sido diferente del mismo proceso en entornos Windows por algunas características particulares como las siguientes:
• Los entornos Unix suelen contar de serie con herramientas de compilación y los Windows no. De forma que los exploits y herramientas en Unix muchas veces se suben en forma de código fuente y se compilan en la misma máquina comprometida. Mientras que en Windows es necesario subir los binarios ya compilados.
• Los entornos Unix cuentan con herramientas de administración avanzadas que pueden ser utilizadas como herramientas de hacking. Mientras que los Windows no y es necesario subir todas las herramientas necesarias.
• En los entornos Unix suelen estar disponibles intérpretes de lenguajes como awk, perl o python e interfaces de shell con funcionalidades de scripting avanzadas (bash, csh, ksh) de forma que es sencillo realizar pequeños scripts para automatizar el proceso de hacking.

En Windows esto no era posible hasta hace poco ya que el scripting de la shell de comandos (ficheros BAT o PIF) es muy limitado.

Existe otro mecanismo de scripting común a la mayoría de Windows el llamado Windows Script Host, que permite realizar scripting mediante Jscript o VBscript. Estos lenguajes facilitan la ejecución de ciertas tareas avanzadas, pero siguen sin estar al nivel de lo que permiten las herramientas disponibles en los Unix.

Pero esto ya no es así. Microsoft está empezando a integrar de serie en Windows 7 y Windows 2008 un interfaz de scripting avanzado llamado Powershell. El lenguaje de scripting de esta Powershell es muy potente y permite integrar variables y funciones de .NET, dándole una versatilidad enorme.

A nivel de hacking podemos hacer casi cualquier cosa que pudiésemos hacer con una aplicación .NET. Por ejemplo:
• Ejecutar comandos e interactuar con procesos.
• Interactuar por red con sistemas remotos.
• Cargar librerías DLL e invocar funciones de las mismas.
• Incluso inyectar código en otros procesos.


Estas funcionalidades nos permiten poder disponer de un kit de hacking, para instalar en los sistemas objetivo, programado íntegramente en Powershell con las ventajas que esto aporta:
• Puede ser instalado (subido) fácilmente en cualquier equipo que cuente con Powershell.
• No necesita ningún binario propio en el equipo (podría funcionar incluso en sistemas que usan listas blancas para permitir ejecución).
• El código no requiere subir nada al sistema ni crear ficheros en disco (se ejecuta en memoria).
• El código se ejecuta dentro del proceso legitimo powershell.exe (menos sospechoso).
• Los scripts se pueden formular como un "one-line" (un comando de shell muy largo) o pegarse directamente en el prompt de powershell (no quedaría nada grabado en disco).

Estas características las hacen además ideales para comprometer equipos en entornos críticos o de alta seguridad, como puedan ser redes scada o sistemas de defensa, donde el uso de binarios externos o sospechosos está controlado.

No hay comentarios:

Publicar un comentario en la entrada