资源预览内容
第1页 / 共57页
第2页 / 共57页
第3页 / 共57页
第4页 / 共57页
第5页 / 共57页
第6页 / 共57页
第7页 / 共57页
第8页 / 共57页
第9页 / 共57页
第10页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
网络特洛伊木马程序设计网络特洛伊木马程序设计 高平 信息与电子学院信息安全与对抗技术实验室1一、木马设计思想 木马一般结合C/S运行模式,构筑基于套接 字的通信程序模型,对C/S结构下的网络对 话程序和网络文件传输程序进行设计。 在此基础之上添加控制模块。2 Socket机制是美国伯克利大学研制,为TCP/IP网 络通信开发了一个专门用于网络通讯设计的API, 即Socket接口(套接字),在微软联合其它几家 公司共同制定了一套Windows下的网络编程接口 Windows Sockets规范后,由于在其规范中引入 了一些异步函数,增加了对网络事件异步选择机制 ,因此更加符合Windows的消息驱动特性,使网 络开发人员可以更加方便的进行高性能网络通讯程 序的设计。1-1 套接字3 套接字成为网络编 程接口的标准。用 户通常使用两种套 接字:流式套接字 和数据报套接字。4 1)流式套接字(Stream socket) 流式套接字提供双工的、有序的、无重复的 、可靠但无记录边界的数据流服务,它使用 TCP协议,即一种可靠的面向连接的数据传 输方法,它适合于处理大量的数据传输和对 数据传输可靠性要求较高的情况下。要求使 用流式套接字之前,必须在数据传输的发送 端和接收端建立连接。5 2)数据报套接字(Dgram socket) 数据报套接字支持双向通信,提供不可靠的 、非连接的数据报通信方式,它使用UDP协 议,具有向多个目标地址发送广播数据报的 能力。数据报套接字是无连接的,它不保证 接收端是否正在侦听。因此数据报并不十分 可靠,需要应用程序负责管理数据报的排序 和可靠性。6 一个TCP/IP运输层的连接通常主要由四个元 素构成的Socket确定,这四个元素为目的IP 地址、目的端口号、源IP地址和源端口号, 不管使用流式Socket还是数据报Socket,对 于用户通信来讲都是透明的。7 流式套接字的服务进程和客户进程在通信前 必须创建各自的套接字,使用socket函数用 于创建一个套接字,然后用bind函数绑定本 机的IP地址和端口。服务器端调用listen函 数监听等待客户端的请求,并调用accept函 数接收客户端的连接请求。客户端使用 connect函数用于请求与指定IP地址的服务 器的服务端口建立连接。连接建立后,客户 端和服务器端就可以用send和recv进行通讯 。最后使用closesocket函数关闭套接字连 接。8 木马一定是由两部分组成:服务器程序( Server)和客户端程序(Client)。 服务器负责打开攻击的道路,提供黑客资源 ;客户端负责攻击目标,两者需要一定的网 络协议来进行通讯(一般是TCP/IP协议)。1-2 木马设计原则9 首先是编程工具的选择。目前流行的开发工 具有C+Builder、VC、VB和Delphi,VC 虽然好,但GUI设计太复杂; C+Builder 选用可视化的BCB;Delphi也不错,但缺陷 是不能继承已有的资源(如“死牛崇拜”黑 客小组公布的BO2000源代码,是VC编写的 ,网上俯拾皆是);VB一般传一个1兆多的 动态链接库太大。10二、木马程序设计 木马程序的服务器端,为了避免被发现,多 数都要进行隐藏处理。 主要隐藏木马的服务器端,可以伪隐藏,也 可以是真隐藏。伪隐藏,就是指程序的进程 仍然存在,只不过是让他消失在进程列表里 。真隐藏则是让程序彻底的消失,不以一个 进程或者服务的方式工作。112-1 后门技术 后门是一种可以绕过安全性控制而获得对程 序或系统访问权的隐蔽程序或方法。利用来 建立隐蔽通道,甚至植入隐蔽的恶意程序, 达到非法访问或窃取、篡改、伪造、破坏数 据等目的。现在后门多指系统被入侵后被安 装的具有控制系统权限的程序,通过它黑客 可以远程控制系统。12 后门是将目标电脑作为服务器,通过网络 Telnet命令连接后门端口,在服务端开创一 个并得到cmd.exe进程,将攻击方的输入输 出和cmd.exe的输入输出联系到一起,建立 远程shell,实现对其控制与攻击。 主要完成如下工作: 1.开创cmd.exe进程; 2.把cmd.exe进程与客户端的输入联系起来 。 程序见提供学生的软件1314152-2 木马的自动启动模块分析 Windows在启动时,会自动执行系统盘符 下的“Documents and Settings开始菜单程序启动”中的文件,其中 是当前要登录的用户帐户名称 ,这里为当前用户专用的启动文件夹,许 多应用软件自动启动的常用位置 。16 Hkey_current_usersoftwaremicrosoft windows ntcurrentversion windows 建一个字符串名为load键值为自启动程序 的路径但是要注意短文件名规则,如 c:program files 应为c:program17 另一个注册表可以加启动项的位置 HKEY_LOCAL_MACHINESHOFTWAREM icrosoftWindowsNTCurrentVersionWinl ogon 里面的shell建值在Explorer.exe的后 面加上程序的路径 这样就可以随系统启动了 。 比如c:windowssystem32下有个hehe.exe 木马。18 接着再将自己拷贝一份到%System%目录下,例如, C:WindowsSystem,并修改注册表,以便启动时 自动加载: char TempPathMAX_PATH; /定义一个变量 GetSystemDirectory(TempPath ,MAX_PATH); /TempPath是system目录缓冲区的地址,MAX_PATH 是缓冲区的大小,得到目标机的System目录路径 19 SystemPath=AnsiString(TempPath); /格式化TempPath字符串,使之成为能供编译器使 用的样式 CopyFile(ParamStr(0).c_str(), AnsiString(SystemPath+“Tapi32.exe“).c_str() ,FALSE); /将自己拷贝到%System%目录下,并改名为 Tapi32.exe,伪装起来 Registry=new TRegistry; 定义一个TRegistry对象,准备修改注册表,这一 步必不可少 20 Registry- RootKey=HKEY_LOCAL_MACHINE; 设置主键为HKEY_LOCAL_MACHINE Registry- OpenKey(“SoftwareMicrosoftWindow sCurrentVersionRun“,TRUE); /打开键值 SoftwareMicrosoftWindowsCurrentV ersionRun,如果不存在,就创建之 21 try /如果以下语句发生异常,跳至catch,以避免程 序崩溃 if(Registry- ReadString(“crossbow“)!=SystemPath+“Ta pi32.exe“) Registry- WriteString(“crossbow“,SystemPath+“Tapi3 2.exe“); /查找是否有“crossbow”字样的键值,并且是否 为拷贝的目录%System%+Tapi32.exe 如果不是, 就写入以上键值和内容 22 catch(.) /如果有错误,什么也不做 FormCreate过程完成了,这样每次启动都可以自动 加载Tapi32.exe,并且在“关闭程序”对话框中看 不见本进程了,木马的雏形初现。232-3 木马对关联事件的利用 我们知道,在注册表HKEY_LOCAL_MACHINE SoftwareMicrosoftWindowsCurrentVersionR un下可以加载程序,使之开机时自动运行,类似 “Run”这样的子键在注册表中还有几处,均以 “Run”开头,如RunOnce、RunServices等。除 了这种方法,还有一种修改注册表的方法也可以 使程序自启动。24 具体说来,就是更改文件的打开方式,这 样就可以使程序跟随您打开的那种文件类 型一起启动。25 举例来说,打开注册表,展开注册表到 HKEY_CLASSES_ROOTexefileshell opencommand,这里是exe文件的打开方 式,默认键值为:“%1”%*。如果把默认 键值改为Trojan.exe“%1”%*,您每次运行 exe文件,这个Trojan.exe文件就会被执行 。木马灰鸽子就采用关联exe文件的打开方 式,而大名鼎鼎的木马冰河采用的是也与 此相似的一招关联txt文件。262-4 木马对设备名的利用 在Windows下无法以设备名来命名文件或文 件夹,这些设备名主要有aux、com1、 com2、prn、con、nul等,但Windows 2000/XP有个漏洞可以以设备名来命名文件 或文件夹,让木马可以躲在那里而不被发 现。27 具体方法是:点击“开始”菜单的“运行 ”,输入cmd.exe,回车进入命令提示符 窗口,然后输入md c:con命令,可以建立 一个名为con的目录。默认请况下, Windows是无法建立这类目录的,正是利 用了Windows的漏洞我们才可以建立此目 录。28 再试试输入md c:aux命令,可以建立aux 目录,输入md c:prn可以建立prn目录, 输入md c:com1目录可以建立Com1目录 ,而输入md c: ul则可以建立一个名为nul 的目录。29 在资源管理器中依次点击试试,您会发现 当我们试图打开以aux或com1命名的文件夹 时,explorer.exe失去了响应,而许多“ 牧马人”就是利用这个方法将木马隐藏在 这类特殊的文件夹中,从而达到隐藏、保 护木马程序的目的。30 我们可以把文件复制到这个特殊的目录下 ,当然,不能直接在Windows中复制,需 要采用特殊的方法,在CMD窗口中输入 copy muma.exe .c:aux命令,就可以把 木马文件muma.exe复制到C盘下的aux文件 夹中,然后点击“开始”菜单中的“运行 ”,在“运行”中输入c:aux muam.exe ,就会成功启动该木马。31 我们可以通过点击文件夹名进入此类特殊 目录,不过,如果您要试图在资源管理器 中删除它,会发现这根本就是徒劳的, Windows会提示找不到该文件。322-5利用AutoRun驱动 AutoRun不仅能应用于光盘中,同样也可 以应用于硬盘中(要注意的是, AutoRun.inf必须存放在磁盘根目录下才能 起作用)。 打开记事本,新建一个文件,将其命名为 AutoRun.inf,在AutoRun.inf中键入以下 内容:33 AutoRun Icon=C:WindowsSystemShell32.DLL,21 Open=C:Program FilesACDSeeACDSee.exe 其中,“AutoRun”是必须的固定格式,一个标准的 AutoRun文件必须以它开头,目的是告诉系统执行它下面几 行的命令; 第二行“Icon=C:WindowsSystemShell32.DLL,21”是给硬 盘或光盘设定一个个性化的图标,“Shell32.DLL”是包含很 多Windows图标的系统文件,“21”表示显示编号为21的图标 ,无数字则默认采用文件中的第一个图标 。34 第三行“Open=C:Pr
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号