Windows

Usuarios Windows

Unas tablas con los diferentes usuarios windows que nos podemos enfrentar en la esacala con sus privilegios explicados.

Administrators

Estos usuarios son los que tienen más privilegios. Pueden cambiar cualquier parámetro de configuración del sistema y acceder a cualquier archivo del sistema.

Standard Users

Estos usuarios pueden acceder al ordenador pero sólo realizar tareas limitadas. Normalmente, estos usuarios no pueden realizar cambios permanentes o esenciales en el sistema y están limitados a sus archivos.

SYSTEM / LocalSystem

Cuenta utilizada por el sistema operativo para realizar tareas internas. Tiene acceso completo a todos los archivos y recursos disponibles en el host, con privilegios incluso superiores a los de los administradores.

Local Service

Cuenta por defecto utilizada para ejecutar los servicios de Windows con privilegios "mínimos". Utilizará conexiones anónimas a través de la red.

Network Service

Cuenta por defecto utilizada para ejecutar los servicios de Windows con privilegios "mínimos". Utilizará las credenciales del ordenador para autenticarse a través de la red.

Comandos esenciales

Información del sistema

systeminfo # información del sistema
systeminfo | find ": KB" # obtener actualizaciones instaladas
set # variables del sistema
wmic logicaldisk get deviceid, volumename, description # listar los dirvers locales y network
systeminfo | findstr /B /C:"Domain" # domain controller
ipconfig /all
route print # ver las tablas de routing
netstat -ano # conexiones activas 
# para ver el estado del firewall y la configuración
netsh firewall show state
netsh firewall show config
net share # listar los network drives
ipconfig /displaydns # dns cache
dir /a # para listar archivos/directorios ocultos
sc query # ver los servicios existentes del sistema
whoami /priv # para saber que privilegios tiene tu usuario actual
find /s file # para buscar en el sistema con X nombre (user.txt | passwords.xml | *.txt)

Usuarios y grupos

Servicios

World Writable Folders

Buscar archivos del sistema

Ver papelera de reciclaje

Referencias de estas notas de la siguiente web:

Recolección de contraseñas en lugares típicos

Instalaciones desatendidas

Ejemplo de como puede encontrarse

Historial Powershell

Entrar en una terminal cmd.exe y ejecuta el siguiente comando

Credenciales guardadas de Windows

Windows nos permite utilizar las credenciales de otros usuarios. Esta función también da la opción de guardar estas credenciales en el sistema. El siguiente comando enumerará las credenciales guardadas:

Si bien no puede ver las contraseñas reales, si observa alguna credencial que valga la pena probar, puede usarla con el runascomando y el /savecredopción, como se ve a continuación.

Configuración IIS

Internet Information Services (IIS) es el servidor web predeterminado en las instalaciones de Windows. La configuración de sitios web en IIS se almacena en un archivo llamado web.configy puede almacenar contraseñas para bases de datos o mecanismos de autenticación configurados. Dependiendo de la versión instalada de IIS, podemos encontrar web.config en una de las siguientes ubicaciones:

  • C:\inetpub\wwwroot\web.config

  • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config

También hay otra manera más rápida de encontrar las passwords en la base de datos del archivo:

.NET versiones instaladas

Recuperar credenciales mediante Putty

PuTTY es un cliente SSH que se encuentra comúnmente en los sistemas Windows. En lugar de tener que especificar los parámetros de una conexión cada vez, los usuarios pueden almacenar sesiones donde la IP, el usuario y otras configuraciones se pueden almacenar para su uso posterior. Si bien PuTTY no permitirá que los usuarios almacenen su contraseña SSH, almacenará configuraciones de proxy que incluyen credenciales de autenticación de texto simple.

Nota: Simon Tatham es el creador de PuTTY (y su nombre es parte de la ruta), no el nombre de usuario para el que estamos recuperando la contraseña. El nombre de usuario del proxy almacenado también debería estar visible después de ejecutar el comando anterior.

Así como Putty almacena credenciales, cualquier software que almacene contraseñas, incluidos navegadores, clientes de correo electrónico, clientes FTP , clientes SSH, software VNC y otros, tendrá métodos para recuperar las contraseñas que el usuario haya guardado

Programas en ejecución

Puedes a veces encontrar password de servicios en ejecución en el registro.

Como por ejemplo servidores VNC, o versiones de FileZilla FTP que suele dejar las credenciales en un archivoXML en C:\Program Files\FileZilla Server\FileZIlla Server.xml o C:\xampp\FileZilla Server\FileZilla Server.xml

Añadir usuario como admin

net user <usuario> <pass> /add

net localgroup administrators <usuario> /add

Tareas programadas

Al examinar las tareas programadas en el sistema de destino, es posible que vea una tarea programada que perdió su binario o que está usando un binario que puede modificar.

Las tareas programadas se pueden enumerar desde la línea de comando usando el schtasksComando sin ninguna opción. Para recuperar información detallada sobre cualquiera de los servicios, puede utilizar un comando como el siguiente:

Ejemplo

Tipo de permisos

En este caso encontramos que la carpeta C:\task\schtask.bat\ tenemos acceso (F) y podemos crear lo que queramos dentro y ejecutarlo como root. Entonces vamos a meter este archivo en la tarea programada y así cuando se ejcute nos de una shell.

Ejecutamos la tarea

Nos tendría que dar una shell.

AlwaysInstallElevated

Windows installer files (también conocidos como archivos .msi) se utilizan para instalar aplicaciones en el sistema. Por lo general, se ejecutan con el nivel de privilegio del usuario que lo inicia. Sin embargo, estos pueden configurarse para ejecutarse con mayores privilegios desde cualquier cuenta de usuario (incluso las que no tienen privilegios). Esto podría permitirnos generar un archivo MSI malicioso que se ejecutaría con privilegios de administrador.

Este método requiere que se establezcan dos valores de registro:

Creamos un payload .msi con msfvenom:

Como se trata de un shell inverso, también debe ejecutar el módulo Metasploit Handler configurado en consecuencia. Una vez que haya transferido el archivo que ha creado, puede ejecutar el instalador con el siguiente comando y recibir el shell inverso:

Abusando servicios mal configurados

Windows Services

Para ver los servicios existentes del sistema

  • Los servicios de Windows son administrados por el Administrador de control de servicios (SCM), que se encarga de su estado y configuración.

  • Cada servicio tiene un ejecutable asociado que es ejecutado por el SCM cuando el servicio se inicia.

  • Los ejecutables de servicio deben implementar funciones especiales para comunicarse con el SCM.

  • Los servicios especifican la cuenta de usuario bajo la cual se ejecutan.

  • Usa el comando sc qc en el Símbolo del sistema para verificar la configuración de un servicio.

  • El parámetro BINARY_PATH_NAME especifica el ejecutable asociado con el servicio.

  • El parámetro SERVICE_START_NAME indica la cuenta de usuario utilizada para ejecutar el servicio.

  • Los servicios tienen una Lista de Control de Acceso Discrecional (DACL) que determina los permisos para varias operaciones,la DACL se puede ver utilizando herramientas como Process Hacker.

Ejemplo de propiedades de un servicio
  • Las configuraciones de los servicios se almacenan en el registro en HKLM\SYSTEM\CurrentControlSet\Services

El registro de el AppHostSvc
  • Cada servicio tiene una subclave con el ejecutable asociado y la cuenta de inicio.

  • Si se configura un DACL, se almacenará en una subclave llamada Security.

  • Modificar las entradas del registro de los servicios generalmente requiere privilegios de administrador.

Permisos inseguros en el ejecutable de los servicios

Si un ejecutable asociado a un servicio con unos permisos inseguros que permite que lo modificamos o lo remplacemos, podemos abusar de ello.

Primero tenemos que ver un ejemplo para ver como sería, encontramos una vulnerabilidad en el Splinterware System Scheduler.

  1. Primero vamos revisar la configuración del servicio con sc qc

  1. Como vemos el servicio vulnerable se ejecuta como el usuario svcuser1 que está asociado con el servicio C:\PROGRA~2\SYSTEM~1\WService.exe vamos a proceder a revisar los permisos del ejecutable:

Y tenemos algo interesante, el grupo Everyone tiene una (M) que significa que cualquiera puede modificar el ejecutable del servicio. Eso quiere decir que podemos escribir en el y poner por ejemplo que nos envie una reverse shell, o incluso crear un payload con msfvenom que sustituya el servicio original con el payload nuestro.

Lo descargamos desde la maquina victima desde una powershell

Y entonces movemos el servicio original a otro directorio y lo sustitumos por el payload que hemos creado nosotros con msfvenom

Una vez hecho el anterior proceso, abrimos un listener desde nuestra máquina atacante

Y entones paramos el servicio de windowsscheduler

Y una vez se reinicie nos dará una shell como el usuario propietario del servicio y habremos escalado de permisos.

Paramos el servicio y lo volvemos a iniciar
Nos da una shell con el usuario svcusr1

Unquoted Service Paths

Cuando no podemos escribir en los ejecutables directamente como en el anterior, hay otra posibilidad de forzar al que el servicio ejecute ejecutables arbitrarios mediante el uso de una característica.

Cuando trabajamos con los servicios de Windows, hay un comportamiento muy particular que ocurre cuando el servicio es configurado a tal punto que esta "unquoted". Cuando digo unquoted quiero decir que la ruta del ejecutable no está entre comillas correctamente para tener en cuenta los espacios en el comando.

Como ejemplo, veamos la diferencia entre dos servicios. El primer servicio utilizará unas comillas adecuadas para que el SCM sepa sin duda que tiene que ejecutar el archivo binario señalado por "C:\Program Files\RealVNC\VNC Server\vncserver.exe", seguido de los parámetros dados:

Y ahora veamos el otro servicio sin sus comillas

Aquí viene el problema, cuando el SCM intenta ejecutar el binario asociado ya que hay espacios en la carpeta de "disk sorter enterprise" el comando se vuelve ambiguo, y el SCM no entiende cual de los siguientes comandos que queremos ejecutar:

Comando
Argumento 1
Argumento2

C:\MyPrograms\Disk.exe

Sorter

Enterprise\bin\disksrs.exe

C:\MyPrograms\Disk Sorter.exe

Enterprise\bin\disksrs.exe

C:\MyPrograms\Disk Sorter Enterprise\bin\disksrs.exe

Esto tiene que ver con la forma en que el cmd analiza un comando. Por lo general, cuando envía un comando, los espacios se usan como separadores de argumentos a menos que formen parte de una cadena entrecomillada. Esto significa que la interpretación "correcta" del comando sin comillas sería ejecutar C:\\Myprogram\\Disk.exe y tomar el resto como argumentos.

  1. Primero, busca C:\\MyPrograms\\Disk.exe. Si existe, el servicio ejecutará este ejecutable.

  2. Si este último no existe, entonces buscará C:\\MyPrograms\\Disk Sorter.exe. Si existe, el servicio ejecutará este ejecutable.

  3. Si este último no existe, entonces buscará C:\\MyPrograms\\Disk Sorter Enterprise\\bin\\disksrs.exe. Se espera que esta opción tenga éxito y, por lo general, se ejecutará en una instalación predeterminada.

A partir de este comportamiento, el problema se hace evidente. Si un atacante crea alguno de los ejecutables que se buscan antes que el ejecutable del servicio esperado, puede obligar al servicio a ejecutar un ejecutable arbitrario.

Si bien esto suena trivial, la mayoría de los ejecutables del servicio se instalarán bajo C:\Program Fileso C:\Program Files (x86)por defecto, que no es escribible por usuarios sin privilegios. Esto evita que cualquier servicio vulnerable sea explotado. Hay excepciones a esta regla: - Algunos instaladores cambian los permisos en las carpetas instaladas, lo que hace que los servicios sean vulnerables. - Un administrador puede decidir instalar los archivos binarios del servicio en una ruta no predeterminada. Si tal ruta es de escritura mundial, la vulnerabilidad puede ser explotada.

En nuestro caso, el administrador instaló los archivos binarios de Disk Sorter en c:\MyPrograms. Por defecto, hereda los permisos del C:\directorio, que permite a cualquier usuario crear archivos y carpetas en él. Podemos verificar esto usando icacls:

El BUILTIN\\UsersEl grupo tiene privilegios AD y WD , lo que permite al usuario crear subdirectorios y archivos, respectivamente.

Creamos un msfvenom y transferimos a la maquina victima:

Ahora lo movemos a C:\MyPrograms\Disk.exey le ponemos permisos de ejecución como Everyone.

Una vez que el servicio se reinicia, se debería ejecutar el payload que nosotros hemos creado y darnos una shell:

Shell como svcusr2

Insecure Service Permissions

Si fuera el caso de que el DACL esta bien configurado y/o el servicio tiene una ruta correcta, aun tenemos oportunidad de explotar de los servicios. Si el DACL no te deja modificarlo aun puedes intentar reconfigurarlo. Esto le permitirá apuntar a cualquier ejecutable que necesite y ejecutarlo con cualquier cuenta que prefiera, incluido el propio SISTEMA.

Para verificar que esto es posible se puede utilizar un programa llamado Accesschk que esta en la suit de sysinternals.

Ejemplo de ejecutar el Accesschk

Podemos ver como en BUILTIN\Users tiene el permiso SERVICE_ALL_ACCESS que eso significa que los cualquier usuario puede reconfigurar el servicio.

Antes de cambiarlo vamos a utilizar msfvenom para volver a cambiar el servicio original para que nos de una shell como el usuario propietario del servicio:

Una vez hecho, hacemos lo de antes lo pasamos a la maquina victima a través de un servidor python y una vez en la maquina victima le damos permisos Everyone para poder ejecutar el payload.

Nos ponemos en escucha por el puerto 4447

Ahora reconfiguramos el servicio existente el cual lo ejecutaremos con LocalSystem por qué es el usuario con mayores privilegios disponibles en la máquina, pero podriamos utilizar cualquier usuario que este en Everyone.

Reiniciamos el servicio

Abusando de privilegios peligrosos

Lista de privilegios peligrosos en este proyecto de github

Abusando de programas vulnerables

Unpatched Software

Herramientas automatizadas

En versiones antiguas como Windows Server 2003 no funciona el JuicyPotato, pero hay el churrasco.exe que funciona en estos casos, paso un artículo que lo explica todo:https://binaryregion.wordpress.com/2021/08/04/privilege-escalation-windows-churrasco-exe/

Aquí dejo un artículo que explica muy bien como funciona el JuicyPotato:

Aquí dejo un artículo que es explica muy bien cómo funciona el rottenpotato

También hay un módulo en metasploit que hacre algo parecido multi/recon/local_exploit_suggester

Contenido adicional

Last updated