039_线程插入木马
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
3 需求分析
3.1 任务目标概述
1. 木马的基本功能
主要实现木马的基本功能,如感染,控制主机等。
2. 线程插入
通过远程线程插入来感染宿主文件,以便躲过躲过杀毒软件的查杀,实现真隐藏。
3. 木马所应具有的的其他特点
①隐秘性 木马被引入了主机(这个过程称为 ”植入”),那么它首先要找到一个地方来隐藏起来,等待时机发作,在被植入的主机看起来就好像什么事情都没有。
②自动运行性 一个好的木马绝对不可能奢望对方来点击运行,也不能只执行一次,然后随着系统的关机而不再运行,这样的只发作一次的木马是没有什么作用的。木马往往具有自动运行性,也就是说要么随机子的启动运行而发作,要么等某个条件来触发,而这个触发条件应该是很常用的。
③危害性 如果一个木马没有什么危害,那么它也就失去了入侵的目的,一个木马的危害性主要表现在控制性上,木马的制作者通过植入木马,然后非法获取系统的较高控制权,达到最终控制对方机子的目的。
3.2 对功能的规定
首先,伪装过的木马要在用户毫无察觉的时候感染用户计算机,并自动开始运行,改写注册表启动项,使之能都够开机自动运行。在服务端感染宿主计算机后,建立一个线程在2048端口监听。用户将telnet作为客户端连接服务端,通过telnet向服务端发布命令以控制或破坏服务端计算机。结束后使用命令退出连接,服务端不关闭,还可再次连接。 copyright think58
[资料来源:THINK58.com]
3.3 运行环境规定
本系统的运行环境为WINDOWS2000以上的WINDOWS操作系统。
4 设计与实现
4.1 木马程序的总体设计
4.1.1 程序设计环境
本木马的程序设计的软硬件环境如下:
硬件环境:CPU 奔腾-M 1.6G ;内存 512 DDR。
软件环境:Windows XP SP2 操作系统,开发工具采用Visual C++6.0。
其中在系统目录的还添加了psapi.lib和psapi.h文件。 本文来自think58 [资料来源:THINK58.com]
4.1.2 木马结构
从本质上看,木马都是采用C/S模式(如图1),也就是说,在一个成功的木马中,有两个角色,一个承担服务器的功能,一个扮演客户端的角色。入侵者扮演的是客户端角色,而被侵入的主机则扮演服务器的角色。木马侵入完成后,一般会守侯在一个约定好的端口,然后入侵者经过网络通过这个端口给被侵入的主机发送命令,木马随着执行这些命令。不过此设计中的客户端功能又windows自带的telnet来完成。控制主机通过主动扫描一段IP的端口来发现受控者。 think58好,好think58
[版权所有:http://think58.com]
4.1.3 程序结构
木马程序的主体部分由两个文件组成,一个文件(ExcuteDLLTest.exe)完成远程插入的功能,将另一个DLL文件(dlltest.dll)插入到一个进程中去。而被插入的DLL文件则打开一个后门,并在2048端口监听。如图2
think58.com [资料来源:http://think58.com]
[版权所有:http://think58.com]本文来自think58
[版权所有:http://think58.com]
[资料来源:http://think58.com]
[资料来源:http://think58.com]
think58 [版权所有:http://think58.com]
ExcuteDLLTest.exe (图3)的组成。ExcuteDLLTest.exe由excutedlltest class 构成,主要源文件为excutedlltest.cpp 。由下面数个函数构成:
void CheckError(int iReturnCode, int iErrorCode, char *pErrorMsg)
错误处理函数,判断是否执行成功,不成功则进行清场处理。
int EnableDebugPriv(const char * name)
调整权限的函数,功能为打开DEBUG权限。
DWORD ProcessToPID(char *InputProcessName)
将进程名转化为进程ID的函数。
int zqd() 自启动模块,得到当前执行文件的文件名和路径并写入启动项里。
BOOL InjectDll(const char *DllFullPath, const DWORD dwRemoteProcessId)
完成远程线程注入的函数。
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow)
程序运行的主函数。
程序运行的流程如图4:
dllTest.dll(如图5)的组成。dlltest.dll由dlltest class 构成,主要源文件为dlltest.cpp 。由下面数个函数构成:
int cmdshell(SOCKET clientFD) 建立一个命令行shell。
int EnableDebugPriv(const char * name) 提升权限的函数。
BOOL TerminateProcessFromId(DWORD dwId) 根据进程ID结束进程的函数
DWORD WINAPI door(LPVOID lpParam) DLL的主要木块,实现了木马的主要功能,如锁定鼠标,显示本机进程等。
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call,
LPVOID lpReserved)
DLL入口,由其建立一个线程在2048端口监听。
char g_password[] 保存后门密码的数组。
char g_helpmess[] 保存帮助信息的数组。
think58好,好think58