Saltar a contenido

Pivoting, Identity Verifiers & Network SQL Agent

Introduction

Esta unidad introduce la capacidad de ejecutar módulos de Core Impact desde un host previamente comprometido, lo que puede proporcionar acceso para evaluar una red que no es alcanzable directamente desde la consola de Impact.

TIP
La capacidad de ejecutar módulos de Core Impact desde otro host se conoce como pivoting, y se puede aprovechar en otros escenarios también. Por ejemplo, para realizar una evaluación de seguridad remota donde se le proporciona al usuario acceso a un host en la red objetivo. En lugar de instalar Core Impact en el host, se puede desplegar un OS Agent en el objetivo (por ejemplo, usando ssh si también está en otra plataforma) que luego se puede usar para ejecutar los módulos de Core Impact en la sesión.

Luego, un sistema de base de datos en una red interna de back-end es comprometido, lo que muestra la capacidad de Core Impact para interactuar con sistemas de bases de datos y potencialmente escalar dicho acceso para ejecutar un OS Agent en el host de la base de datos.

Features

  • Aprovechar un host previamente comprometido para ejecutar módulos de Core Impact desde ese sistema.
  • Explorar un sistema de base de datos comprometido con un Network SQL Agent.
  • Escalar desde el acceso a la base de datos hasta ejecutar un OS Agent en el host de la base de datos.
  • Generar un reporte de las vulnerabilidades descubiertas.

Highlighted Modules

  • Network Information Gathering RPT
  • Network Attack and Penetration RPT
  • Network Clean Up RPT
  • Network Report Generation RPT
  • Install PCAP Plugin
  • Refresh Network Interfaces
  • PostgreSQL Identity Verifier
  • SQL Shell
  • Install SQL Agent using credentials
  • Install OS Agent using SQL Agent

References

Walkthrough

Hosts

  • Microsoft Windows SMB Pool Overflow Remote Code Execution Exploit (MS17-010)
    • Hostname: WIN-0NVC5M7BAU7
    • IP Address: 10.27.34.43

Create a New Workspace

Sigue los pasos de la unidad anterior y crea un nuevo workspace (demo2).

Network Information Gathering

Ahora lanzaremos el módulo Network Information Gathering RPT para descubrir un host objetivo y determinar los servicios en ejecución para probar.

  1. Desde el RPT Pane, selecciona y haz clic en Network Information Gathering RPT para descubrir hosts en la red.

Network IG RPT Welcome

  1. Haz clic en Next.

Network IG RPT Discovery Method

  1. Haz clic en Next.

Network IG RPT IP Version

  1. Haz clic en Next.

Network IG RPT IP Range Selection

  1. Reemplaza el rango de red con la dirección del host objetivo: 10.27.34.43 y haz clic en Next.

Network IG RPT Scan Type

  1. Selecciona FAST y haz clic en Finish.

El módulo Network Information Gathering se lanzará, lo que permitirá descubrir y recopilar información sobre el host WIN-0NVC5M7BAU7 (10.27.34.43).

Network IG RPT Results

Network Attack and Penetration With Remote Exploits

Ahora lanzaremos Network Attack and Penetration RPT para usar exploits de Core Impact e intentar detectar y explotar vulnerabilidades para comprometer y controlar el host objetivo.

  1. Desde el RPT Pane, selecciona y arrastra & suelta el módulo Network Attack and Penetration RPT sobre el host WIN-0NVC5M7BAU7 (10.27.34.43), creado en la sección anterior.

Network AP RPT Welcome

  1. Haz clic en Next.

Network AP RPT Target Selection

  1. Haz clic en Next.

NOTA:
El host WIN-0NVC5M7BAU7 (10.27.34.43) ya estará seleccionado porque el módulo fue arrastrado y soltado sobre el objetivo. Si lanzas Network Attack and Penetration haciendo clic en el módulo, en este paso puedes usar el botón de elipsis (...) para seleccionar los objetivos del módulo.

Network AP RPT Attack Method

  1. Haz clic en Next.

Network AP RPT Attack Configuration

  1. Haz clic en Next.

Network AP RPT Additional Settings

  1. Haz clic en Finish.

El módulo Network Attack and Penetration se lanzará, y después de probar los exploits disponibles para el sistema operativo y los servicios identificados, debería poder detectar y explotar la vulnerabilidad EternalBlue y desplegar un OS Agent.

Network AP RPT Results

Installing the PCAP Plugin

En el OS Agent desplegado, configuraremos el plugin PCAP, que proporciona al agente capacidades adicionales para capturar e inyectar tráfico de red en el host comprometido, lo que permite ejecutar métodos más fiables de recopilación de información de red.

  1. Desde la vista de lista, haz clic derecho en el OS agent desplegado y selecciona Install pcap plugin para sondear las interfaces de red disponibles y realizar un IG más fiable.

Install PCAP Plugin Context Menu

  1. En el Executed Modules pane, abre el módulo PCAP Plugin Install y selecciona el módulo Refresh Network Interfaces.

El Module Output del módulo Refresh Network Interfaces muestra que el host tiene dos interfaces, en dos redes separadas:

  • 10.27.34.0/24 (Netmask: 255.255.255.0)
    • Esta es la red donde también se encuentra la VM de Impact Client y a través de la cual descubrimos y comprometimos el host.
  • 10.27.35.0/24 (Netmask: 255.255.255.0)
    • Esta es una red interna, que no es alcanzable desde la VM de Impact Client.

Refresh Network Interfaces Results

NOTA:
Las network interfaces disponibles en el host se almacenan en las propiedades del OS Agent y se muestran en el Quick Information pane al seleccionarlo.

Perform Network Information Gathering on Unreachable Network

Ahora confirmaremos que la segunda red que acabamos de

descubrir no es alcanzable desde la VM de Impact Client.

Ejecuta los pasos para lanzar Network Information Gathering de la unidad anterior, pero reemplazando el network range con 10.27.35.50/29.

Después de que el módulo Network Information Gathering RPT se lance y complete su ejecución, el módulo no habrá podido encontrar (y agregar) nuevos hosts.

Network IG RPT Results on 10.27.35.50/29

Perform Network Information Gathering From Compromised Host

Aprovechando el OS Agent en el host comprometido WIN-0NVC5M7BAU7 (10.27.34.43), realizaremos Network Information Gathering en la red interna.

Para ejecutar módulos de Core Impact desde el host comprometido, configuraremos el agent(0) como el source agent.

  1. Haz clic derecho en la entidad agent(0) y selecciona Set as source.

Set source agent

  1. Desde el RPT Pane, selecciona y haz clic en Network Information Gathering RPT para descubrir hosts en la red interna.

Network IG RPT Welcome

  1. Haz clic en Next.

Network IG RPT Discovery Method

  1. Haz clic en Next.

Network IG RPT IP Version

  1. Haz clic en Next.

Network IG RPT IP Range Selection

  1. Reemplaza el rango de red con la dirección de la red interna: 10.27.35.50/29 y haz clic en Next.

Network IG RPT Interface Selection

  1. Haz clic en el botón de elipsis (...) y selecciona la network interface con la dirección IP (10.27.35.47) en la red interna, y haz clic en OK.
  2. Haz clic en Next.

Network IG RPT Scan Type

  1. Selecciona FAST y haz clic en Finish.

El módulo Network Information Gathering se lanzará, lo que permitirá descubrir el host 10.27.35.53. Si se selecciona el host, se puede ver que el host está ejecutando un servicio de base de datos PostgreSQL.

Network IG RPT Results

NOTA:
Observa que el Executed Modules pane muestra en la columna Source que los módulos se han ejecutado en el agent previamente configurado como source.

Run Dictionary Attack on PostgreSQL Service to Find Weak Credentials

Intentaremos comprometer el servicio PostgreSQL comprobando si se han configurado weak credentials, lo que se puede determinar ejecutando un dictionary attack usando los Identity Verifiers de Core Impact.

En este escenario, el administrador de la máquina puede haber asumido que no serían necesarias credenciales más fuertes, ya que no hay acceso directo desde la red local al servidor.

  1. Desde el RPT Pane, selecciona y arrastra & suelta el módulo Network Attack and Penetration RPT sobre el host postgresql-10-5.internal.cloudapp.net (10.27.35.53), creado en la sección anterior.

Network AP RPT Welcome

  1. Haz clic en Next.

Network AP RPT Target Selection

  1. Haz clic en Next.

Network AP RPT Attack Method

  1. Desmarca la opción de lanzar exploits y marca la opción para lanzar identity verifiers, y haz clic en Next.

Network AP RPT Attack Configuration

  1. Haz clic en Next.

Network AP RPT Additional Settings

  1. Marca la opción Identity verifier protocol selection para limitar los protocolos en los que probaremos identity verifiers, y haz clic en Next.

Network AP RPT Identity Attack Selection

  1. Haz clic en Uncheck All y luego marca la opción PostgreSQL.
  2. Haz clic en Finish.

Network Attack and Penetration comenzará y después de un tiempo encontrará una weak credential, que se utilizará para configurar un Network SQL Agent en el host objetivo.

TIP:
Observa que un Network SQL Agent es diferente de un OS Agent. Este agente permite al usuario ejecutar comandos SQL suplantando al usuario asociado con las credenciales válidas encontradas por el módulo Identity Verifier.

Network AP RPT Results

Interact With the Database Server Through the Network SQL Agent

Ahora vamos a ejecutar consultas SQL en el servidor de base de datos PostgreSQL comprometido, para obtener información sobre las bases de datos en el servidor y buscar información sensible.

  1. Haz clic derecho en la entidad SQL Agent (0) y selecciona SQL Shell.
  2. Ejecuta el siguiente comando para listar las bases de datos disponibles:

  3. select datname from pg_catalog.pg_database

SQL Shell - List Databases

  1. Cierra la shell ejecutando el comando exit.

Como PostgreSQL no proporciona comandos para cambiar a otra base de datos (como el comando USE DATABASE en SQL Server), configuraremos un nuevo Network SQL Agent para conectarse a la base de datos northwind.

Necesitaremos las credenciales utilizadas para desplegar el Network SQL Agent anterior, que se pueden ver en la vulnerability configurada en el host, selecciona la identidad disponible y verás que el nombre de usuario es postgres y la contraseña es admin.

PostgreSQL Identity

  1. En el Modules pane, abre la carpeta 10-Post Exploitation > Agents y selecciona el módulo Install SQL Agent using credentials.
  2. Arrastra & suelta el módulo sobre el host postgresql-10-5.internal.cloudapp.net (10.27.35.53).
  3. Configura los parámetros del módulo:

  4. Database engine: PostgreSQL

  5. User: postgres
  6. Password: admin
  7. Database: northwind

Install SQL Agent using credentials Module Parameters

  1. Haz clic en OK.

Ahora debería estar configurado otro Network SQL Agent, que ejecutará declaraciones SQL en la base de datos especificada (`northwind

`).

Ahora obtendremos información sobre la base de datos ejecutando el módulo Get databases schema.

  1. En el Modules pane, busca el módulo ingresando su nombre, y luego arrástralo & suéltalo en el nuevo Network SQL Agent.

Puedes ver el log del módulo mientras progresa en la obtención del esquema de la base de datos ejecutando declaraciones SQL. Cuando el módulo termine, las tablas de la base de datos se mostrarán en el Module Output pane.

Get database schema

Ahora podemos aprovechar la información del esquema de la base de datos y recuperar los contactos en la tabla Contacts.

  1. Haz clic derecho en la entidad SQL Agent (1) y selecciona SQL Shell.
  2. Ejecuta el comando: select "ContactName" from "Contacts".

SQL Shell - Contacts

  1. Cierra la shell.

Escalate the Network SQL Agent and Deploy an OS Agent

Si la base de datos y las credenciales utilizadas para desplegar el Network SQL Agent lo permiten, podemos intentar escalar desde ese agente (que nos permite ejecutar solo declaraciones SQL) e intentar desplegar un OS Agent para tener funciones tipo shell en el host.

Antes de hacerlo, necesitamos ir al OS Agent de pivot que estamos usando en 10.27.34.43 y cambiar la dirección del host que Core Impact está configurado para usar desde ese host, y elegir una de las otras direcciones IP disponibles en el host.

NOTA:
Esto es necesario para desplegar el OS Agent en el host PostgreSQL, porque el módulo creará un proceso que intentará conectarse al agente de pivot, y la dirección IP a la que se conecta está configurada por la dirección IP actual en esa entidad. Debido a que el tráfico desde/hacia las diferentes redes está restringido, el host PostgreSQL no podrá conectarse de vuelta a 10.27.34.43, pero podrá conectarse a su dirección IP en la red 10.27.35.0/24, 10.27.35.47.

  1. Ve al host 10.27.34.43, selecciona el OS Agent configurado en el host, haz clic derecho y elige la opción Select host address....
  2. En el cuadro de diálogo de parámetros, selecciona el botón de elipsis (...) después de seleccionar editar el valor del parámetro ADDRESS.
  3. Selecciona la dirección IP 10.27.35.47.

Select Host Address

  1. Haz clic en OK para seleccionar la dirección.
  2. Haz clic en OK para lanzar el módulo y cambiar la dirección del host.

  3. La dirección IP del host en la vista de red debería haberse actualizado para reflejar la dirección IP seleccionada.

Ahora intentaremos desplegar el OS Agent a través del Network SQL Agent.

  1. Ve al Modules pane, y en la carpeta 10-Post Exploitation > Agents selecciona el módulo Install OS Agent using SQL Agent.
  2. Arrastra & suelta ese módulo en el primer Network SQL Agent (SQL Agent(0)) configurado en el host PostgreSQL, que tiene acceso de admin y permitirá que el OS Agent se despliegue.

Debería desplegarse un OS Agent en el host PostgreSQL.

Install OS Agent using SQL Agent

  1. Haz clic derecho en el nuevo OS Agent y lanza un shell o file browser para inspeccionar el sistema donde se aloja la base de datos.

Inspect PostgreSQL host - Shell
Inspect PostgreSQL host - File Browser

Perform Clean Up of Deployed OS Agents

Ahora limpiaremos los agentes desplegados en los hosts comprometidos, usando el paso Clean Up RPT.

TIP:
Esto solo desinstalará OS Agents, que se ejecutan en los sistemas objetivo. Network SQL Agents solo se conectan al sistema objetivo siempre que se ejecute un módulo (para ejecutar declaraciones SQL), y cuando el módulo se completa, ya no hay una conexión ni un proceso en ejecución en el sistema.

  1. Desde el RPT Pane, selecciona y haz clic en Network Clean Up RPT.

Network Clean Up RPT Welcome

  1. Haz clic en Next.

Network Clean Up RPT Confirm

  1. Selecciona la opción para confirmar la desinstalación de los OS Agents conectados.
  2. Haz clic en Finish.

Cuando el módulo se complete, verás que los OS Agents en el host PostgreSQL y en el host Windows utilizado para pivotar y llegar a ese host han sido desinstalados.

NOTA:
El módulo determina el orden de desinstalación para asegurarse de que un pivot agent no se desinstale antes de que se desinstale un OS Agent al que se accede a través de él.

Network Clean Up RPT Results

Generate Vulnerability Report

Una vez más, puedes generar un Vulnerability Report para documentar las vulnerabilidades encontradas en el workspace de esta sesión de pentesting siguiendo los pasos en la sección Generate report of vulnerabilities de la unidad anterior.

Network Report Generation RPT Results