jueves, marzo 26, 2020

Pentesting con Powershell sin tener Powershell en Windows

Por supuesto que Powershell es una herramienta de administración y gestión en el mundo IT poderosa, pero si estás leyendo este blog sabes que para los profesionales del Ethical Hacking también tiene un potencial excepcional en todas las fases, pero sobretodo para la fase de pos-explotación.

Figura 1: Pentesting con Powershell sin tener Powershell en Windows

Pero, ¿qué ocurre si estamos en un entorno que no es el ideal y no podemos tener acceso a esta poderosa herramienta? Muchas veces los pentesters o los equipos de Red Team no pueden ejecutar Powershell directamente, ya sea por permisos en el usuario actual o bien por que han aplicado una política de seguridad de fortificación tipo "Máxima Seguridad en Windows" para evitar la  ejecución de Powershell. ¿Qué podemos hacer frente a esta limitación ?

Figura 2: Máxima Seguridad en Windows Gold Edition

Es en este punto donde marca la diferencia el pentester, aquel que destaca con su creatividad y pensamiento lateral y consigue llegar donde otros no llegan. Es eso lo que para nosotros es un "hacker", que consigue inventar un camino nuevo y llevar la tecnología a un lugar más allá del que había estado antes. Por ese motivo, y en honor a los creativos, vamos a saltarnos esta limitación de no poder utilizar una powershell.exe para aún así poder ejecutar código en Powershell.

Figura 3: Relájate y be a good hacker

Tanto Powershell como C# son “frontends” para el framework .NET, por ello vamos a utilizar esto a nuestro favor. Utilizaremos los ejecutables de C# para llamar a la misma funcionalidad de .NET con la que accederíamos a través de Powershell, y así sacar el máximo provecho a esta herramienta con sus infinitas posibilidades.

Figura 4: Pentesting con Powershell 2ª Edición

Si quieres conocer lo que puedes hacer con ella, no puedo dejar de recomendaros el libro de nuestro compañero el gran Pablo González de "Pentesting con Powershell" si quieres descubrir todas sus posibilidades.

Preparando el entorno

El proceso que voy a describir, que es muy "hacker", viene muy bien explicado y detallado en el siguiente post de Brian Fehrman. Vamos a necesitar el uso de varias herramientas que vienen por defecto en cualquier entorno de Windows donde puede variar la ubicación donde encontrar dichas herramientas en función de su arquitectura y versión. Primero necesitamos crearnos nuestro pequeño código en C#:

Figura 5: Código en C#

Como se puede observar en el código lo que se va a ejecutar es el texto íntegro que tengamos en nuestro “Script.ps1”. Tenemos nuestro fichero "codigo.cs" y, ¿ahora qué? El sistema operativo Windows nos brinda una herramienta que nos permite compilar el código de C#. En esta prueba de concepto el compilador se encuentra en el siguiente directorio :
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe
Ejecutando el código anterior en una CMD, compilamos el fichero “codigo.cs” y obtenemos el binario “Poc.exe”. Podemos encontrarnos limitados también al no poder ejecutar una simple cmd.exe, que también es un proceso habitual de los que quieren tener Máxima Seguridad en Windows. En el caso de no poder ejecutar la consola, crearemos un acceso directo del ejecutable.

Figura 6: Compilación de codigo.cs con csc.exe

Abrimos después las propiedades del acceso directo que hemos creado y en el "target" o "destino" introducimos el comando anterior, salvo la parte de la ruta de nuestro codigo.cs, ya que también estamos limitados a cierto número de caracteres en este campo. Aplicamos los cambios y arrastramos nuestro "codigo.cs" dentro del acceso directo.

Figura 7: Configuración del acceso directo

De cualquiera de las dos formas conseguimos nuestro binario, pero podemos seguir limitados en la ejecución de binarios por no estar incluido en una lista blanca. No pasa nada. Hay que seguir resolviendo problemas y en este caso volvemos a tirar de otra herramienta del propio Windows:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe
Como en el caso anterior, crearemos un acceso directo en el escritorio que apunte a este ejecutable, en sus propiedades, modificaremos el “target” - para que ejecute el binario y hacer un volcado de todo el proceso resultado en un fichero de log - con el siguiente comando:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe
  /logfile=C:\Users\IEUser\Desktop\nps\log.txt /LogToConsole=false /U
Guardamos los cambios, arrastramos nuestro binario “Poc.exe” dentro del acceso directo y esto ejecutará nuestro Script.ps1, que en nuestro ejemplo es coo sigue en la imagen siguiente.

Figura 8: Script.ps1

Este script trata de descargarse la consola de nuestra querida iBombshell, que utilizamos en una entrada anterior del blog. Si abrimos el fichero “todo.txt” podemos ver que se ejecuta nuestro script y ha hecho la tarea que necesitábamos.

Figura 9: Hemos conseguido ejecutar iBombShell

Así podemos lanzar pequeños script para volcar información que queramos recopilar en un test de intrusión sin vernos limitados por no poder utilizar una PowerShell. Es un buen ejemplo de pensamiento lateral que todo pentester debe desarrollar y no conformarse con las limitaciones con las que se puede encontrar en sus auditorías.

Saludos,

Autor: Víctor Rodríguez Boyero, Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.

miércoles, marzo 25, 2020

Cómo extraer credenciales de Windows: Formas de hacer un minidump al proceso lsass.exe #pentesting #pentest

Durante estos días estamos viviendo experiencias nuevas, duras, pero con tiempo en casa para poder hacer muchas cosas en el tiempo que estamos ahorrando en los traslados de casa al trabajo y del trabajo a casa. Se puede aprovechar para avanzar en proyectos personales tecnológicos, ocio, deporte, etcétera, o proyectos familiares, para pasar más tiempo con la familia y aprovechar para ponerse al día en ciertas cosas que tal vez tuviéramos siempre en la lista de To-Do.

Figura 1: Cómo extraer credenciales de Windows:
Formas de hacer un minidump al proceso lsass.exe

En el artículo de hoy quería mostrar cómo llevar a cabo la extracción de credenciales de cuentas en sistemas Microsoft Windows que se encuentra en el proceso lsass.exe. Esto no es algo nuevo, y siempre que se habla de Hacking Windows: Ataques a Sistemas y Redes Microsoft, es un tema obligatorio, y que Microsoft ha intentado eliminar en Windows 10 con el uso de Credential Guard.

Figura 2: Hacking Windows: Ataques a Sistemas y Redes Microsoft

Hoy quería recopilar diferentes formas de hacer el volcado o dump de la memoria del proceso lsass.exe y aprovechar, por ejemplo, herramientas como Mimikatz para leer la información de dicho volcado de memoria.

Acceso físico: Create Dump File en el Task Manager

En primer lugar, vamos a ver la técnica más sencilla, que puede ser utilizada en un proyecto de Ethical Hacking. Si se tiene acceso al equipo, se puede hacer un volcado de la información del proceso lsass.exe desde el propio Administrador de Tareas (Task Manager). Esto tiene sentido cuando tenemos acceso físico a la máquina.

Figura 3: Solicitando un volcado de la memoria de lsass.exe desde el Task Manager

Cuando se genera el fichero de dump, éste se almacena en la ruta \Users\[nombre usuario]\AppData\Local\Temp. El volcado del proceso estará alrededor de los 40-43 MB y estará listo para ser “ojeado” por el pentester.

Figura 4: Libro de Ethical Hacking

En la Figura 3 se puede ver el "Task Manager" de un sistema Windows 7, aunque el proceso en un Windows 10 sería el mismo. Este proceso sirve para hacer volcados o minidump de procesos que se están ejecutando en la máquina.

Utilizando Mimikatz con minidump

Con Mimikatz podemos hacer uso de minidump para enlazar el dump del proceso lsass.exe con las instrucciones de sekurlsa. Lo que ocurre es un switch para las instrucciones de sekurlsa, para que operen sobre el volcado de memoria proporcionado bajo la instrucción sekurlsa::minidump [ruta al fichero DMP].

Figura 5: Mimikatz con instrucción skurlsa

En este momento, en cuanto hagamos uso de sekurlsa::logonpasswords u otras instrucciones que se pueden ejecutar y que hacen uso de lsass.exe. La imagen de la Figura 5 está sacada de un Windows 7.

Utilizando Procdump de Sysinternals

La herramienta Procdump de Sysinternals sirve para llevar a cabo un volcado de memoria de un proceso. Para llevar a cabo un volcado de proceso con procdump se debe ejecutar la siguiente instrucción:
procdump –ma lsass.exe lsass.dmp
El resultado es un volcado como el obtenido en el ejercicio anterior. El uso de procdump necesita de privilegios, pero se puede ejecutar a través de una shell remota, aunque previamente se debe subir el binario. Al ser un binario de SysInternals, no será detectado como algo malicioso.

Figura 6: Utilizando procdump.exe

El tema de la detección es interesante, ya que utilizar herramientas como PSExec o las PSTools ayudan a realizar acciones en el pentesting que no son tratadas como maliciosas.

Figura 7: Una vez conseguido el volcado. Mismo proceso.

Una vez obtenido el volcado del proceso se puede realizar la misma acción que hicimos con Mimikatz en el apartado anterior. El resultado es el mismo, como puede verse en la Figura 7.

Utilizando comsvcs.dll para hacer el volcado

De forma nativa, Windows 7, incluso Windows 10, permiten hacer el volcado de un proceso. Para llevar a cabo esta operativa lo vamos a ejemplificar en un Windows 10 y una Powershell 5.1, haciendo un poco de Penstesting con PowerShell.

Figura 8: Pentesting con PowerShell (2ª Edición)

Lo primero es listar el proceso lsass.exe y recoger el ID de este proceso. Por ejemplo, haciendo uso de get-process lsass en una Powershell. Después se puede ejecutar el binario:
rundll32.exe [ruta a comsvcs.dll], MiniDump [PID] [ruta almacenar el DUMP]
Tal y como puede verse en la imagen es algo sencillo y silencioso. Eso sí, necesitaremos privilegios previos.

Figura 9: Volcado de memoria con lsass.exe con PowerShell

Y, por último, cómo hemos hecho antes, ejecutamos Mimikatz en Windows 10. La sintaxis en Mimikatz es igual en todos los casos.

Figura 10: Usando Mimikatz para extraer las credenciales

Diferentes formas de hacer lo mismo y analizar el volcado del proceso. Técnicas que se deben conocer y que son útiles en un proceso de Ethical Hacking. Practica durante estas semanas, pasa el tiempo y aprovecha para mejorar tu conocimiento.
Recuerda, que durante este tiempo tienes la opción de adquirir los cursos y libros de 0xWord con un 10% de descuento, y que además puedes consultar a todas las cuentas de MyPublicInbox a mitad de Tempos.

Saludos,

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.  Para consultas puedes usar el Buzón Público para contactar con Pablo González

Figura 12: Contactar con Pablo González

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares