domingo, 31 de octubre de 2021

A la suite root mi querido eval()

 

En una máquina de HTB, en la fase de la escalada de privilegios me encontré un código en python que trabaja con la función: eval(), y que podían ser ejecutado como root.

Dicha función “eval()” sin entrar en definiciones académicas, evaluará el contenido de lo pasado, es decir, ejecutará lo que se le pase como parámetro.

Un ejemplo sencillo:

¡Ejecuta la suma!

Pero… ¿evalúa comparaciones?


¡Pues parece que sí!

Y si… ¿a la función “eval()” le metemos código de python?, ¿probamos a importar la librería “os”?

NOTA: la intención de solicitar una shell de bash.


¡Vaya!, no ha funcionado pero… no ha funcionado porque la sintaxis no es la correcta, no porque no se pueda.

 

La forma correcta de importar un librería cuando utilizamos la función: eval(), es: __import__(‘<librería>’)

Comprobemos:

 
 
¡Perfecto!, ahora ya sólo nos queda solicitar nuestra nueva shell de bash

¡¡Conseguido!!

Ok, probemos ahora a simular lo comentado antes, lo recordamos, ejecutamos un código de python con permisos elevados gracias a sudo.

¡¡Ahí esta!!

Como  conclusióna la hora de programar cuidado con lo que se hace, pero a la hora de elevar privilegios nunca te olvides de nuestro querido ascensorista.

 

En cualquier caso

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia

 

viernes, 3 de septiembre de 2021

Silver Ticket Attack

¿Qué es?

Este ataque se basa en construir un TGS (ticket Kerberos) válido para un servicio, una vez se ha obtenido el hash NTLM del propietario del susodicho servicio. De esta manera, es posible acceder a este servicio con un TGS personalizado que contenga los más elevados privilegios.

Ejemplo de este tipo de ataque

El siguiente ejemplo parte de una máquina de HTB (intelligence).

Paso 1.

Tenemos un usuario y su hash NTLMv2, que incluso ha sido posible crackear, pero esto último no es relevante en este caso.

Hash NTLMv2 del usuario Ted.Graves

Paso 2.

Comprobamos si existe algún servicio sobre el cual el usuario sea propietario.

Para comprobar esto se utilizará la herramienta: gMSADumper (https://github.com/micahvandeusen/gMSADumper), ya que la herramienta “impacket”, no trae ninguna herramienta para hacer esto. Al menos hasta dónde mi conocimiento llega.

***** NOTA: *****

Esta herramienta, busca Group Managed Service Accounts (gMSA), pero, ¿qué son?

Los gMSAs son cuentas de servicio que ofrecen una manera segura para ejecutar aplicaciones, servicios y tareas de manera automatizada. Fueron introducidas en Windows Server 2016 pero pueden ser aprovechadas en Windows Server 2012 y versiones anteriores

Las características de estas cuentas son que las contraseñas de las mismas son generadas aleatoriamente, cambian automáticamente y no es necesario que ningún usuario las conozca. Además, estas cuentas de servicio son “instaladas” únicamente en el servidor (por lo tanto será necesario utilizar una cuenta de máquina) que solicitara su uso al AD en tiempo de ejecución. Por lo dicho,

Las  gMSAs son un tipo específico de objeto dentro de Active Directory, concretamente: msDS-GroupManagedServiceAccount. Dentro de este objeto, la propiedad/atributo más importante es: msDS-ManagedPassword, este atributo contiene un BLOB con información de la contraseña actual

Bibliografía:

·         https://stealthbits.com/blog/what-are-group-managed-service-accounts-gmsa/

********************

El uso de la herramienta nos devuelve el siguiente dato:


Es decir, existe un servicio sobre el que el usuario Ted.Graves, tiene permisos.

Paso 3.

Procedemos a utilizar la herramienta de impacket: getST, para generar un ticket de servicio que nos permita elevar permisos sobre la máquina.

El resultado es:


Es decir, tenemos un problema de fecha/hora.

***** NOTA: *****

En un entorno de AD, es muy importante tener la hora sincronizada con el controlador de dominio, ya que Kerberos no funciona correctamente si la fecha y hora de nuestro equipo no va acorde con la fecha y hora del controlador de dominio/servidor

Para mejorar esto, necesitamos configurar el servicio NTP de nuestra máquina para que utilice el servidor NTP del servidor y así corregir el problema


Si tuvieras algún problema con ello, se recomienda seguir las siguientes instrucciones

********************

Repetimos la solicitud para generar un ticket de servicio, y conseguimos nuestro objetivo


Ahora sólo queda utilizar el ticket generado mediante Pass-The-Ticket

 

En cualquier caso

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia

viernes, 25 de junio de 2021

Picha!, pasame unas máquinas!

 

Una manera rápida de encontrar máquinas en un entorno de directorio activo, es preguntarle al directorio activo.

Para ello, se necesitará un usuario válido que tenga permisos para hacer consultas.

Si ya lo tienes, lo único que necesitas algún programita que te permita hacer dichas consultas, personalmente me gusta trabajar con el módulo de Windows ActiveDirectory.

Entre sus comandos tenemos: Get-ADComputer, por lo que mediante el siguiente comando podemos extraer todas las máquinas dadas de alta en el Directorio Activo, siempre y cuando se encuentren activas.

 

 Si queremos hilar un poquito más…




Y obtendremos

 

Ahora sólo nos queda obtener las direcciones IP, pero preguntando al servidor DNS lo tenemos resuelto

NOTA: Y cómo esto, tenemos todo el campo libre para obtener información sobre usuarios, grupos, etc. Ejemplos:

Grupos de seguridad global y universal que tiene el patrón “admin” en el nombre 

 


 

Todos los usuarios con todos sus datos

 

...

En cualquier caso

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia

 

 

domingo, 30 de mayo de 2021

Backmachine basada en búsquedas de Google

 

Buscando por Internet información sobre un reto de HTB, me encontré con esto:

 



Realmente el enlace dirige hacía un archivo de texto que contiene flags de los retos de HTB (enlace: hxxps://linguinielruso.com/Soplones/soplon_HTB_ALL.txt)

No intentes ir a la web, ¡no funciona!, pero aún así se puede extraer toda la información del documento… o se podía. ¿Por qué?

¡Porque Google ha/había cacheado el contenido del archivo .txt!, por lo tanto, podemos utilizar forks para recuperar toda la información del documento.

Ejemplos al respecto:

 


 

La fork es sencilla, no me hagas escribirla

Y antes de que vayas a sacar flags de HTB, comentarte que el contenido del documento no se encontraba muy actualizado. Pero, lo más importante y que ya se ha comentado

¡Google cachea el contenido de archivos con extensión .txt!

Y, ahora, ya puedes ir a por las flags… o no (el autor posteriormente a bloqueado a los spider).

 

 
 
Mis disculpas si ha molestado mi visita, no era mi intención. 
 
En cualquier caso
 
Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia