Es bien conocido que un proceso de post-explotación se basa principalmente en llevar a cabo una buena enumeración del sistema, así como saber analizar e interpretar la información obtenida. Evidentemente, dependiendo del sistema el procedimiento puede ser distinto desde un punto de vista técnico, pero desde una perspectiva funcional la metodología aplicada es en esencia la misma. En este post se hablará de algunos comandos útiles en un sistema Windows que se pueden ejecutar desde una consola con privilegios limitados, una situación bastante habitual después de completar la etapa de explotación del sistema.

Gestión de claves en el registro.

Una de las primeras cosas que hay que entender de Windows es que muchas de las características más potentes del sistema operativo se gestionan por medio del registro, esto significa que es especialmente interesante poder manipular las claves que se encuentran almacenadas en él. Para ello se puede utilizar el comando “reg”, powershell, desde una sesión meterpreter generada con Metasploit, con Koadic o incluso con Pupy. Existen múltiples alternativas para hacer esto. En el caso de contar con una shell simple en el sistema comprometido posiblemente la mejor alternativa sería utilizar el comando “reg” el cual es sencillo y tiene la siguiente sintaxis:

Consultar una clave: C:\> reg query [\\IP|DOMINIO\]\[Clave] /v [NombreValor]

Añadir una clave: C:\> reg add [\\IP|DOMINIO\]\[Clave]

Exportar una clave: C:\> reg export [\\IP|DOMINIO\]\[Clave] [Fichero.reg]

Importar una clave: C:\> reg import [Fichero.reg]

Por ejemplo, para consultar la tan conocida clave “Winlogon”, se podría ejecutar el siguiente comando.

Manipular las claves que se leen por parte del sistema operativo durante el arranque del sistema o inicio de sesión de algún usuario es útil para establecer persistencia en el sistema.

Saber moverse por el registro y manipular sus valores es una de las primeras cosas que se podrían hacer en post-explotación, aunque evidentemente algunas de las claves requieren permisos administrativos para poder consultarlas o cambiar sus valores, un usuario regular puede realizar algunas operaciones que pueden ayudar en la elevación de privilegios. También puede ser útil para aplicar ADS (Alternate Data Streams) tal como se indica el proyecto LOLBas.
Algunas instrucciones útiles para encontrar claves sensibles en el registro incluyen:

reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s

En donde “password” representa una cadena que podría ser interesante, también se podría buscar algo como “creds”, “user”, “passwd” o cosas similares.

Uso de WMIC

Windows Management Instrumentation ha sido uno de los mecanismos más utilizados en la administración de sistemas de este tipo. Permite crear scripts o rutinas simples para consultar información sobre el sistema operativo y administrar su configuración. Es muy potente y muchos administradores de Windows lo utilizan frecuentemente. Dadas sus características viene bien para labores de post-explotación y recolección de información local en el sistema comprometido. La sintaxis del comando WMIC es la siguiente:

C:\> wmic [alias] [filtro] [verb]

En donde el “alias” representa la unidad o elemento que se desea administrar y sus posibles valores se pueden consultar con el comando wmic /? no obstante algunos de los alias más útiles son: process, service, nicconfig, startup, useraccount y qfe aunque hay bastantes más y depende de los privilegios con los que cuente el usuario. Por ejemplo:

La segunda parte del comando permite aplicar un filtro, similar a una clausula WHERE en SQL, la cual admite especificar valores para los atributos que devuelve el alias indicado y aplicar condiciones lógicas habituales (and, or, !=, ==, etc).

Finalmente la sección correspondiente al “verb” permite ejecutar algún tipo de acción después de filtrar los resultados del alias con la instrucción where. Algunas de las clausulas “verb” más comunes incluyen: list [full|brief], get [atributo2,atributo2, atributoN], call [mótodo], delete

Para listar atributos y métodos “invocables”, se puede ejecutar wmic [alias] get /?  y wmic [alias] call /? respectivamente.

Resulta útil consultar la ayuda con /? para ver los elementos disponibles y luego realizar consultas más concretas que permitan recolectar información del sistema.

Información sobre procesos y servicios.

En sistemas Windows obtener este tipo de información es sencillo y puede ser útil para detectar posibles vías de elevar privilegios, por ejemplo detectando un servicio en ejecución que tiene vulnerabilidades conocidas, procesos o servicios vulnerables a DLL hijacking o servicios cuyo binario puede ser susceptible a ataques de Unquoted Service Path.
Es posible utilizar binarios disponibles en el sistema operativo propiamente dicho o por medio de frameworks como Metasploit, Koadic, Pupy, Empire, etc. Si se cuenta con una shell simple contra el sistema las utilidades tasklist y sc serán suficientes para enumerar y descubrir los casos indicados previamente.

Lista de todos los procesos en ejecución

Lista de todos los procesos en ejecución y las DLL que cada proceso tiene cargadas

Lista de todos los procesos que utilizan una librería concreta.

Lista de todos los procesos que se ejecutan en el sistema como servicios.

El comando sc en Windows también resulta muy útil para consultar información sobre los servicios del sistema operativo, incluso con éste comando también es posible crear, modificar o eliminar servicios si se cuenta con los privilegios adecuados. También es posible usar sc para iniciar/detener/reiniciar servicios.

Consulta de servicios con sc

Obtener el detalle de un servicio existente con sc

Se trata de instrucciones sencillas y directas, las cuales informan sobre el estado del sistema y permiten obtener indicios de posibles malas configuraciones e incluso alternativas para elevar privilegios.

Un saludo y Happy Hack!
Adastra.