Donde puede ejecutar shellcode dentro de un proceso ordinario, ¿cuál es una manera sigilosa de aprovechar eso para obtener el código ofensivo de Powershell que se ejecuta?

4

En este momento, el uso ofensivo de Powershell es uno de los temas más candentes en infosec. Los scripts de Powershell a menudo se consideran apropiados para la fase "posterior a la explotación" de una penetración. Esta pregunta sigue un poco en ese sentido, excepto que implica dar un paso hacia el uso de Powershell un poco antes de lo habitual: cuando el punto de apoyo only que ha llegado hasta ahora ha sido el de obtener una aplicación para ejecutar shellcode de su elección (Llámelo "post-explotación muy temprana" si lo desea.) Entonces:

Supongamos que se encuentra en una situación en la que ha adquirido la capacidad de ejecutar shellcode de conjunto (sin límite de tamaño ni restricciones de caracteres) dentro de un proceso determinado en una máquina con Windows. Desea aprovechar esa capacidad para no ejecutar directamente un montón de código de bajo nivel, sino hacer algo muy diferente: para crear un entorno de ejecución dentro de ese proceso donde puedes ejecutar el código de Powershell.

El razonamiento detrás de esa elección es bastante simple: configurar un entorno de ejecución de Powershell le permite aprovechar todas las Herramientas, Tácticas y Procedimientos cada vez mayores que utilizan Powershell que la comunidad de seguridad ha producido / está produciendo. Y configurar ese entorno dentro de un proceso que ya se está ejecutando le permite evitar iniciar un nuevo proceso para ejecutar el código de Powershell (y especialmente evitar el inicio de powershell.exe, cmd.exe o wscript.exe) como la mayoría de los evaluadores de lápiz de habilidad inferior y los malos lo harán, algo que puede ser muy, muy sospechoso para un defensor que está monitoreando los registros de eventos o está usando un software HIDS / HIPS bien configurado. El objetivo general es replicar algunas de las capacidades y el sigilo de algunos atacantes de alto nivel sin tener que realizar muchos trabajos de programación personalizados en lenguajes de programación de bajo nivel, en lugar de aprovechar el universo de scripts / herramientas de Powershell que ya existen.

Sé que el concepto general de lo que me interesa hacer aquí funciona porque he podido probarlo utilizando (por ejemplo) Metasploit, específicamente con un dllinject carga útil que comienza desde el código de shell generado por msfvenom-- junto con una dll reflexiva (de Empire , por ej.) para que un agente de Powershell esté funcionando correctamente sin crear un nuevo proceso en una serie de situaciones de prueba. Pero, para ser sincero, estoy un poco nervioso acerca de la idea de usar cualquier cosa que se base en las cargas útiles o en las comunicaciones de Metasploit para algo que podría ser utilizado (con suerte) durante un enfrentamiento real contra un defensor con HIDS, HIPS, NIDS, etc. .

¿Existen herramientas / métodos alternativos que podrían ser más silenciosos al mismo tiempo que logran el mismo resultado: hacer que el código de Powershell se ejecute en un destino donde ya tenga ejecución de código y sin crear un nuevo proceso que pueda detectarse fácilmente? Estoy abierto a considerar casi cualquier cosa que no requiera escribir muchos códigos personalizados en el ensamblaje. (Aunque, por supuesto, siempre es preferible una implementación más sencilla).

    
pregunta mostlyinformed 16.12.2016 - 13:15
fuente

1 respuesta

2

Si entendí correctamente lo que quieres, podrías intentar mapear una página de escritura, escribir código en ella, cambiarla a ejecutable, y luego simplemente ejecutarla (y puede ser tu PS o cualquier otra cosa). Use VirtualAlloc en lugar de Malloc para obtener permisos de escritura de memoria con PAGE_EXECUTE_READWRITE. No olvide establecer el indicador de ejecución usando VirtualProtect después de escribir en la memoria pero antes de ejecutarlo finalmente. Tal táctica debería funcionar para su objetivo y no implica ningún proceso nuevo.

    
respondido por el Overmind 09.01.2017 - 14:51
fuente

Lea otras preguntas en las etiquetas