Scrambled

Scrambled es una máquina mediana con Windows Active Directory. Al enumerar el sitio web podremos intuir las credenciales del usuario "ksimpson". En el sitio web, también se indica que la autenticación NTLM está deshabilitada, lo que significa que se debe utilizar la autenticación Kerberos. Al enumerar las cuentas de usuario normales, se encuentra que la cuenta SqlSvc tiene un Nombre principal de servicio (SPN) asociado. Utilizaremos esta información para realizar un ataque conocido como "kerberoasting" y obtener el hash de "SqlSvc". Después de descifrar el hash y adquirir las credenciales para la cuenta SqlSvc, un atacante puede realizar un ataque de silver ticket para falsificar un ticket y hacerse pasar por el usuario Administrador en el servicio MSSQL remoto. La enumeración de la base de datos revela las credenciales del usuario "MiscSvc", que se puede usar para ejecutar código en la máquina remota mediante la comunicación remota de PowerShell. La enumeración del sistema cuando el nuevo usuario revela una aplicación .NET, que está escuchando en el puerto 4411. La ingeniería inversa de la aplicación revela que está utilizando la clase insegura Binary Formatter para transmitir datos, lo que permite al atacante cargar su propia carga útil y obtener la ejecución del código como nt Authority\system.

20240314100150.png

Enumeración

Iniciaremos con la enumeración de los puertos abiertos

Conociendo los puertos abiertos enumeraremos los servicios y versiones que corren en los puertos abiertos que encontramos.

Puerto 80

En el sitio web encontraremos con un sitio web que tiene tres apartados: Home, Reports y IY Services

20240314111834.png

Revisando IT Services encontraremos con la siguiente información que nos dice que el servicio NTLM se encuentra deshabilitado

20240314111913.png

En otro nos informa que al restablecer nuestra contraseña podemos loegearnos con el el nombre de usuario haciendo de contraseña

20240314111956.png

Luego encontraremos con un usuario que es ksimpson

20240314112025.png

Enumeración por ldap

Enumerando con ldap encontraremos con el name services

20240314120908.png
20240314120938.png

Enumeración con SmbClient

Teniendo en cuenta las credenciales de ksimpson, haremos uso de impacket-smclient.pyarrow-up-right para seguir enumerando los recursos compartidos.

20240319224722.png

Al intentar acceder a los recursos compartidos tenemos un error, esto es debido a que el servicio NTLM esta deshabilitado. Tenemos que usar la autenticación por kerberos con el parámetro -k

20240319224836.png

Luego de acceder a los recursos compartidos, encontraremos con un archivo pdf que se hace uso de kerberos

20240319224924.png

Explotación

Kerberoasting attack

Teniendo en cuento el anterior documento y las credenciales de ksimpson

20240320232529.png

Vemos que el usuario sqlsvc es kerberoasteable y lo que haremos será obtener el hash

20240320215433.png

Encontraremos con un usuario que es kerberoasteable por lo que procederemos a crackear el hash que encontramos

Luego de crackear con la herramienta john tendremos las siguientes credenciales:

SQL - Server

Luego de obtener las credenciales lo que intentaremos ingresar a la base de datos

20240320220249.png

Vemos que tenemos un error debido a que el servicio NTLM esta deshabilitado. Haciendo uso de las credenciales y generando el TGT intentaremos ingresar al servicio sql server

sqlsvc

20240320223616.png

ksimpson

20240320223635.png

En ambos intentos serán fallidos

Silver Ticket Attack

Ahora lo que haremos será un Silver Ticket Attack, pero antes debemos de entender como funciona la autenticación de kerberos

20240320223350.png

Para realizar este ataque necesitaremos el hash NTLM, dimain SID y el SPN

NT hash

Haciendo uso de la credencial de sqlsvc generaremos el hash NTLM en https://codebeautify.org/ntlm-hash-generatorarrow-up-right

Domain SID

Ahora haciendo uso de getPac podremos obtener el domain SID del usuario administrador

20240320230527.png

SPN

Cuando usamos GetUsersSPNs vimos el SPN Service Principal Name

20240320232529.png

Tenemos que el SPN es:

TGS

Ahora que tenemos todo y haciendo uso de ticketer generaremos el TGS, así debemos de obtener un archivo administrator.cache que haremos uso para autenticarnos con el servicio de SQL Server

20240320233342.png

Ahora usaremos la variable KRB5CCNAME

Una vez definida la variable, usaremos msssqlclient para autenticarnos

20240320233443.png

Sql Server - TGS

Haciendo uso del sitio web de hacktricks:

Enumeraremos la base de datos con los siguientes comandos

Vemos que podemos ejecutar comandos dentro de Sql Server

20240320234230.png

Para obtener una revershell seguiremos los siguientes pasos:

  1. Configuración de Invoke-PowerShellTcp.ps1 :

20240321002652.png
  1. Iniciamos un servidor web con Python en el directorio donde descargamos Invoke-PowerShellTcp.ps1

  1. Ponemos a la escucha con ncat

  1. Ahora ejecutamos el comando en el Sql Server

Si seguimos los pasos deberíamos de obtener una revershell.

Escalada de privilegios

Usuario : miscsvc

20240321002455.png

Luego de obtener la revershell, seguiremos enumerando la base de datos

Enumeramos las bases de datos que se tiene en el sql server

20240322132133.png

Enumeramos la base de datos ScarmbleHR y encontraremos la tabla UserImport

20240322132257.png

En la tabla UserImport encontraremos un usuario y contraseña.

20240322132344.png

Teniendo estas credenciales y haciendo uso de RunasCs para obtener un shell con el usuario MiscSvc

Para usar RunasCs.exe subiremos este a la maquina victima con la herramienta de certutil

Ahora ejecutamos RunasCs.exe haciendo uso de las credenciales del usuario miscsvc

Usuario - miscsvc

20240322134454.png

Luego de obtener una shell y seguir enumerando encontraremos un .exe y una dll

20240322151826.png

Descargaremos a nuestra maquina atacante para analizarlo mejor.

  • Subimos nc.exe para hacer uso y compartirlo a nuestra maquina atacante.

ScrambleClient.exe

  • Maquina victima:

  • Maquina atacante:

ScrambleLib.dll

  • Maquina victima

  • Maquina atacante

dnSpy

Haciendo uso de dnspy podremos hacer reversing del binario

20240322222119.png

Enumerando encontraremos y vemos que al iniciar sesión o intentar autenticarnos con el servicio se genera un archivo log.

20240322222238.png

Vemos que hace uso de Deserialización en base64

20240322222312.png

Además, vemos que haciendo uso del usuario scrmdev podremos autenticarnos y lograr ingresar

20240322222604.png

Haciendo uso del usuario podremos ingresar.

20240322225720.png

Vemos que podemos generar una nueva orden y generaremos una.

20240322225732.png

Como vemos en el código del binario vimos que genera un archivo ScrambleDebugLog.txt el cual revisaremos. Encontramos un apartado donde esta serializado en base64 y nos da una idea de poder explotar de esto.

Haciendo uso de ysoserial.net podremos generar el contenido y así poder explotar el servicio

20240322232746.png

Luego generaremos el payload para hacer uso, pero antes debemos de poner un UPLOAD_ORDER; como vimos en el archivo log

  • Ingresamos al servicio con telnet

  • Insertamos el payload

20240322232842.png

Usuario - Administrator

Antes de enviar el payload debemos de ponernos a la escucha y debemos de obtener una shell con el usuario administrator.

20240322232908.png

Last updated