《第5章 特洛伊木马.ppt》由会员分享,可在线阅读,更多相关《第5章 特洛伊木马.ppt(126页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5章 特洛伊木马(Trojan horse)刘功申上海交通大学网络空间安全学院School of Cyber Science and Engineering特洛伊木马电影图片本章的学习目标掌握特洛伊木马的概念了解木马技术的发展趋势掌握木马开发实例理解木马的关键技术掌握木马攻击的方法掌握木马防范方法主要内容木马的介绍木马的介绍定义、分类、进展定义、分类、进展木马的关键技术木马的关键技术植入技术植入技术通信技术通信技术隐藏技术隐藏技术木马实例木马实例BO2K-开源木马木马检测、清除、防范木马检测、清除、防范关键技术、实用工具、防范关键技术、实用工具、防范怎样才能使计算机更安全?怎样才能使计算机更
2、安全?木马的介绍概念特洛伊木马(TrojanHorse):是一种与远程计算机之间建立起连接,使远程计算机能够通过网络控制用户计算机系统并且可能造成用户的信息损失、系统损坏甚至瘫痪的程序。木马的组成硬件:控制端、服务端、Internet软件:控制端程序、木马程序、木马配置程序连接:控制、服务端IP,控制、服务端Port基本特征1、隐蔽性是其首要的特征木马和远程控制软件的最主要区别不产生图标不出现在任务管理器中。2、它具有自动运行性启动文件、启动组、注册表3、木马程序具有欺骗性名字方式:字母“l”与数字“1”、字母“o”与数字“0”相同文件名但不同路径常用图标:Zip4、具备自动恢复功能(高级技术
3、)5、能自动打开特别的端口6、功能的特殊性搜索缓存中的口令、设置口令、扫描目标机器的IP地址、进行键盘记录、远程注册表的操作、以及锁定鼠标等功能7、黑客组织趋于公开化木马的分类 1、远程控制型木马BO和冰河2、发送密码型木马3、键盘纪录型木马4、破坏型木马5、FTP型木马远程控制、木马与病毒木马和控制软件目的不同有些木马具有控制软件的所有功能是否隐藏木马和普通病毒传播性(木马不如病毒)两者相互融合木马程序YAI采用了病毒技术“红色代码”病毒已经具有木马的远程控制功能木马的发展趋势 跨平台性模块化设计更新更强的感染(传播、植入)模式即时通知更强更多的功能木马的关键技术技术进展历史上概括为4个阶段
4、:第一阶段主要实现简单的密码窃取、发送等功能,没有什么特别之处。第二阶段在技术上有了很大的进步,主要体现在隐藏、控制等方面。国内冰河可以说是这个阶段的典型代表之一。第三阶段在数据传递技术上做了不小的改进,出现了基于ICMP协议的木马,这种木马利用ICMP协议的畸形报文传递数据,增加了查杀的难度。第四阶段在进程隐藏方面做了非常大的改动,采用了内核插入式的嵌入方式,利用远程插入线程技术嵌入DLL线程,或者挂接PSAPI实现木马程序的隐藏。即使在WindowsNT/2K下,这些技术都达到了良好的隐藏效果。相信,第五代木马的技术更加先进。木马的关键技术植入技术植入技术升级植入:打补丁是目前内核及功能升
5、级重要途径。由于升级包发布途径不严格且非常复杂,因此,这将成为传播木马的一个有效途径。网站(网页)植入:网站挂马是传播木马的最佳途径之一。把木马连接潜入到网站上,当用户访问该网站时,把木马自动种植到用户的计算机上。在辅助以附加手段的前提下,该方法也可以实现定点植入。漏洞植入:木马通过操作系统的漏洞直接传播给计算机,其中间桥梁是诸如局域网、Internet、WiFi、蓝牙、红外等网络连接。U盘植入:木马先寄宿在计算机或U盘上。当U盘和计算机连接时,相互传播。该方法利用了U盘介质的移动性。程序绑定:传播木马的最佳途径之一。把木马和常用的共享软件绑定在一起,当用户下载了免费共享软件并安装或使用时,木
6、马就种植到其计算机上。网站挂马网页挂马就是攻击者通过在正常的页面中(通常是网站的主页)插入一段代码。浏览者在打开该页面的时候,这段代码被执行,然后下载并运行某木马的服务器端程序,进而控制浏览者的主机。存在两种网页挂马方式:传统的直接挂马和新的间接挂马方式。传统方式黑客直接在被入侵网站上挂马。影响群体为直接访问这个网站的用户。网页挂马的新方式被挂马网站是第三方知名“统计网站”编写的用于收集统计用户浏览网页数据信息的代码。黑客正是利用了这些统计网站进行挂马,从而使得所有使用了该统计代码的网站全部都被间接挂马。网页挂马的关键技术框架挂马js挂马图片伪装挂马网络钓鱼挂马伪装挂马框架挂马攻击者利用ifr
7、ame语句,加载到任意网页中。是最早也是最有效的的一种网络挂马技术。代码如下:原理:在打开插入该句代码的网页后,也就打开了http:/ 接下来就是启动Server端的Socket来接收客户端的命令。Port777核心代码:pSocket-Receive(lpBuf,1000);/接收客户端数据if(strnicmp(lpBuf,CMD:,4)=0)ExecuteCommand(lpBuf,FALSE);/执行远端应用程序elseif(strnicmp(lpBuf,!SHUT,5)=0)SendText(Exitprogram!,pSocket);OnExit();/退出木马程序将要实现的功能:
8、CMD执行应用程序!SHUT退出木马FILEGET获得远端文件EDITCONF编辑配置文件LIST列目录VIEW察看文件内容CDOPEN关CDCDCLOSE开CDREBOOT重启远端机器Server端功能修改配置Autoexec.bat和Config.sys代码:_chmod(c:autoexec.bat,S_IREAD|S_IWRITE);_chmod(c:config.sys,S_IREAD|S_IWRITE);fwrite(content,sizeof(char),strlen(content),fp);/写入添加的语句,例如deltree-yC:或者formatqC:Server端功能
9、实现list命令CFileFindfinder;BOOLbWorking=finder.FindFile(*.*);while(bWorking)/循环得到下一层文件或目录bWorking=finder.FindNextFile();if(finder.IsDots()|finder.IsDirectory()strResult=Dire:;elsestrResult=File:;strResult+=finder.GetFileName();strResult+=n;SendText(strResult,pSocket);/返回Return_Text变量的内容Server端功能实现View命
10、令intRead_Num=fread(temp_content,1,300,fp);/从目标文件中读入前300个字符while(Read_Num=300)strResult+=(CString)temp_content;/strResult的内容加上刚才的字符for(inti=0;iSend(void*)m_msg,m_msg.GetLength();从服务器端获取反馈信息ReceiveResult(m_msg);断开Socket通讯的代码如下:m_ptrComSocket-Close();代码及演示简单木马实验(实验五)【实验目的】掌握木马病毒的基本原理。【实验平台】WindowsXP操作系
11、统VisualStudio6.0编程环境【实验步骤】(1)复制实验文件到实验的计算机上(源码位置:附书资源目录ExperimentSimpleHorse)。其中,SocketListener目录下是木马Server端源代码,SocketCommand目录下是木马Client端源代码。(2)用VisualStudio6.0环境分别编译这两部分代码编译。(3)运行SocketListener应用程序,也就是启动了木马被控制端。(4)运行SocketCommand应用程序,也就是启动了木马的控制端,可以在控制端执行命令来控制被控制端。木马的关键技术隐藏技术隐藏技术反弹式木马技术反弹式木马的原理:利用
12、防火墙对内部发起的连接请求无条件信任的特点,假冒是系统的合法网络请求来取得对外的端口,再通过某些方式连接到木马的客户端,从而窃取用户计算机的资料同时遥控计算机本身。反弹式木马访问客户端的80端口,防火墙无法限制。例如,“网络神偷”防范:使用个人防火墙,其采用独特的“内墙”方式应用程序访问网络规则。隐藏技术用ICMP方法隐藏连接TCPUDP木马的弱点:等待和运行的过程中,始终有一个和外界联系的端口打开着。原理:由于ICMP报文是由系统内核或进程直接处理而不是通过端口,这就给木马一个摆脱端口的绝好机会。木马将自己伪装成一个Ping的进程,系统就会将ICMP_ECHOREPLY(Ping的回包)的监
13、听、处理权交给木马进程。一旦事先约定好的ICMP_ECHOREPLY包出现(可以判断包大小、ICMP_SEQ等特征),木马就会接受、分析并从报文中解码出命令和数据。即使防火墙过滤ICMP报文,一般也不过率ICMP_ECHOREPLY包,否则就不能进行Ping操作了。因此,具有对于防火墙和网关的穿透能力。隐藏技术隐藏端口为了隐藏端口,采用两种思路:寄生和潜伏寄生就是找一个已经打开的端口,寄生其上,平时只是监听,遇到特殊的指令就进行解释执行。潜伏是说使用IP协议族中的其它协议而不是TCP或UDP来进行通讯,从而瞒过Netstat和端口扫描软件。一种比较常见的潜伏手段是使用ICMP协议。其他方法:对
14、网卡或Modem进行底层的编程。隐藏技术NT进程的隐藏进程和端口联系在一起的方法很常见。因此,需要隐藏进程来达到隐藏木马的目的。实现进程隐藏有两种思路:第一是让系统管理员看不见(或者视而不见)你的进程;第二是不使用进程。能否使用第一种方式?在Windows中有多种方法能够看到进程的存在:PSAPI(ProcessStatusAPI);PDH(PerformanceDataHelper);ToolHelpAPI。如果我们能够欺骗用户和入侵检测软件用来查看进程的函数(例如截获相应的API调用,替换返回的数据),我们就完全能实现进程隐藏。但是存在两个难题:一来我们并不知道用户和入侵软件使用的是什么方
15、法来查看进程列表;二来如果我们有权限和技术实现这样的欺骗,我们就一定能使用其它的方法更容易的实现进程的隐藏。用欺骗的方法隐藏进程示例修改任务管理器的显示显示控件和窗口用Spy+获知窗口:32770控件:Syslistview32演示代码:guangpannewshooklist使用第二种方式最流行。DLL是Windows系统的另一种“可执行文件”。DLL文件是Windows的基础,因为所有的API函数都是在DLL中实现的。DLL文件没有程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调用的。假设我们编写了一个木马DLL,并且通过别的进程来运行它,那么无论是入侵检测软件还是
16、进程列表中,都只会出现那个进程而并不会出现木马DLL,如果那个进程是可信进程,(例如资源管理器Explorer.exe,没人会怀疑它是木马吧?)那么我们编写的DLL作为那个进程的一部分,也将成为被信赖的一员而为所欲为。用DLL实现木马功能用DLL实现木马功能,然后,用其他程序启动该DLL.有三种方式:最简单的方式最简单的方式RUNDLL32特洛伊特洛伊DLL线程插入技术线程插入技术最简单的方式最简单的方式RUNDLL32Rundll32DllFileNameFuncNameRundll32.exeMyDll.dllMyFunc程序演示(参见:.othercodetestdll)比较高级的方式特
17、洛伊比较高级的方式特洛伊DLL特洛伊DLL(欺骗DLL)的工作原理是使用欺骗DLL替换常用的DLL文件,通过函数转发器将正常的调用转发给原DLL,截获并处理特定的消息。函数转发器forward的认识。VisualStudio7命令提示符dumpBin-Exportsc:windowssystem32Kernel32.dll|more演示程序实现/FunctionforwarderstofunctionsinDllWork#pragmacomment(linker,/export:ForwardFunc=Kernel32.HeapCreate)演示(参见:.othercodetestdll源代码
18、)实现描述我们知道WINDOWS的Socket1.x的函数都是存放在wsock32.dll中的,那么我们自己写一个wsock32.dll文件,替换掉原先的wsock32.dll(将原先的DLL文件重命名为wsockold.dll)我们的wsock32.dll只做两件事,一是如果遇到不认识的调用,就直接转发给wsockold.dll(使用函数转发器forward);二是遇到特殊的请求(事先约定的)就解码并处理。特洛伊DLL的弱点:system32目录下有一个dllcache的目录,这个目录中存放着大量的DLL文件,一旦操作系统发现被保护的DLL文件被篡改(数字签名技术),它就会自动从dllcac
19、he中恢复这个文件。有些方法可以绕过dllcache的保护:先更改dllcache目录中的备份再修改DLL文件利用KnownDLLs键值更改DLL的默认启动路径等同时特洛伊DLL方法本身也有一些漏洞(例如修复安装、安装补丁、升级系统、检查数字签名等方法都有可能导致特洛伊DLL失效),所以这个方法也不能算是DLL木马的最优选择。最高级方式最高级方式动态嵌入技术动态嵌入技术DLL木马的最高境界是动态嵌入技术,动态嵌入技术指的是将自己的代码嵌入正在运行的进程中的技术。多种嵌入方式:窗口Hook、挂接API、远程线程。隐藏技术远程线程技术远程线程技术指的是通过在另一个进程中创建远程线程的方法进入那个进
20、程的内存地址空间。通过CreateRemoteThread也同样可以在另一个进程内创建新线程,新线程同样可以共享远程进程的地址空间。HANDLECreateRemoteThread(HANDLEhProcess,PSECURITY_ATTRIBUTESpsa,DWORDdwStackSize,PTHREAD_START_ROUTINEpfnStartAddr,PVOIDpvParam,DWORDfdwCreate,PDWORDpdwThreadId);一个地址DWORDWINAPIThreadFunc(PVOIDpvParam);HINSTANCELoadLibrary(PCTSTRpszLi
21、bFile);两个函数非常类似需解决的问题:第一个问题,获取LoadLibrary的实际地址。PTHREAD_START_ROUTINEpfnThreadRtn=(PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT(Kernel32),LoadLibraryA);第二个问题,把DLL路径名字符串放入宿主进程。使用:VirtualAllocEx,VirtualFreeEx,ReadProcessMemory,WriteProcessMemory等函数。操作步骤做一个归纳:1)使用VirtualAllocEx函数,分配远程进程的地址空
22、间中的内存。2)使用WriteProcessMemory函数,将DLL的路径名拷贝到第一个步骤中已经分配的内存中。3)使用GetProcAddress函数,获取LoadLibraryA或LoadLibratyW函数的实地址(在Kernel32.dll中)。4)使用CreateRemoteThread函数,在远程进程中创建一个线程,它调用正确的LoadLibrary函数,为它传递第一个步骤中分配的内存的地址。5)使用VirtualFreeEx函数,释放第一个步骤中分配的内存。6)使用GetProcAddress函数,获得FreeLibrary函数的实地址(在Kernel32.dll中)。7)使用
23、CreateRemoteThread函数,在远程进程中创建一个线程,它调用FreeLibrary函数,传递远程DLL的HINSTANCE。看代码及演示(参见:.othercodeinjlib和Imgwalk)木马的关键技术其他技术远程屏幕抓取如果键盘和鼠标事件记录不能满意时,需要抓取被控制端屏幕,形成一个位图文件,然后把该文件发送到控制端计算机显示出来。输入设备控制通过网络控制目标机的鼠标和键盘,以达到模拟鼠标和键盘的功能。使用技术:Keybd_event,mouse_event/模拟A键按键过程keybd_event(65,0,0,0);keybd_event(65,0,KEYEVENTF_
24、KEYUP,0);/模拟按下左键GetCursorPos(&lpPoint);SetCursorPos(lpPoint.x,lpPoint.y);mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);远程文件管理操作目标机文件的方式通常有两种:一种是共享目标机的硬盘,进行任意的文件操作;另一种是把自己的计算机配置为FTP(FileTransferProtocol,文件传输协议)服务器。使用函数CInternetSessionGetFtpConnectionGetFilePutFile共
25、享硬盘数据Windows2000/NT/XP:HKEY_LOCAL_MACHINESYSTEMControlSet001ServiceslanmanserverSharesWindows9x:HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionNetworkLanManFlags/类型Path/目录Remark/备注TypeParm1encParm2enc服务器端程序的包装与加密一个试验:text.txt,其内容为“Thisisfortest!”C:typetext.txtTest.exe运行Test.exe演示(参见:.otherc
26、oebindexe)木马会把一些配置信息放在exe文件的最后。例如,冰河木马其他的其他技术:首先是程序的大小问题;还有启动方式的选择;木马的功能还可以大大扩充;杀掉防火墙和杀毒软件;针对来自反汇编工具的威胁;自动卸载等。木马实例BO2KBO(BackOrifice)是典型的远程访问型木马。这种木马借着远程控制的功能,用起来非常简单,只需先运行服务端程序,同时获得远程主机的IP地址,控制者就能任意访问被控制的计算机。这种木马可以使远程控制者在本地机器上任意的事情,比如键盘记录、上传和下载功能、发送一个截取屏幕等等。BO2K的代码分析接上页BO2K的功能(精简)Ping:给一台计算机发个数据包看它
27、能否被访问Query:返回服务器上的BO的版本号RebootMachine:重启动服务器Lock-upMachine:冻住服务器,要他重启动ListPasswords:取得服务器上的用户和密码GetSystemInfo:取得MachineName-机器名、CurrentUser-当前用户、Processor-CPU型号、Operatingsystemversion(SPversion)-操作系统版本号(补丁版本)、Memory(Physicalandpaged)-内存(物理内存和虚拟内存)、Allfixedandremotedrives-所有的固定存储器和远程驱动器LogKeystrokes:
28、把按键记录到一个文件里,要指定一个文件存储输出结果EndKeystrokeLog:停止记录按键ViewKeystrokeLog:察看按键记录文件DeleteKeystrokeLog:删除按键记录文件SystemMessageBox:在服务器的屏幕上显示一个有文本框的窗口,窗口的标题和文本可定制MapPort-OtherIP:把服务器上一个端口的网络流通数据重定向到另一个IP地址和端口MapPort-TCPFileReceive:从一个指定的端口收取文件,要指定端口号和文件名,详细路径BO2K演示木马的检测、清除、防范已知木马的端口列表(简略)木马名称端口木马名称端口BO jammerkilla
29、hV121Remote Grab7000NukeNabber139NetMonitor7300Hackers Paradise456NetMonitor 1.x7301Stealth Spy555NetMonitor 2.x7306Phase0555NetMonitor 3.x7307NeTadmin555NetMonitor 4.x7308Satanz Backdoor666Qaz7597Attack FTP666ICQKiller7789AIMSpy777InCommand9400木马检测及清除实验示例程序利用开放主机端口号和各个木马程序使用端口的对应关系,判断主机是否已中木马,中了何种木
30、马(目前能查找一百余种),并能根据所中木马的类型,对其中的二十几种进行杀灭。此外,用户可自行追加数据库,增加能查找病毒的种类。开始读取保存开放端口文件,判断中何木马是否能打开木马数据库文件NoYes结束Scan开放的端口,结果保存到文件此 木 马能 否 被杀灭调用函数杀除木马YesNo关键数据结构本程序的数据文件Trojan.txt使用了TROJAN结构来保存木马的名称,对应打开端口号和查杀代码字段名称字段类型字段说明nPort数字该木马所使用的端口号。TroName字符串该木马的名称。nKillno数字该木马的查杀号,杀除函数调用。pnext指针用于构成链表结构指针木马名称 木马使用特征端口
31、号查杀号在Trojan.txt中,每行为一个木马项,格式为使用端口扫描方法查看有那些端口开放该方法存在问题:无法应对隐藏端口没采用多线程扫描消除木马进程的步骤第一步:提升权限提升本程序权限得目的是,使其能够杀除木马进程,主要是通过AdjustTokenPrivileges函数来完成。BOOL AdjustTokenPrivileges(HANDLE TokenHandle,/用于修改权限的句炳 BOOL DisableAllPrivileges,/修改方式 PTOKEN_PRIVILEGES NewState,/修改后的值 DWORD BufferLength,/修改值的长度 PTOKEN_P
32、RIVILEGES PreviousState,/修改前状态 PDWORD ReturnLength/返回长度);第二步:枚举进程,获得木马进程的进程号码。首先通过EnumProcesses函数来枚举系统中所有运行的进程。当获得所有进程的进程号以后,枚举每一个进程所包含的模块,这里使用EnumProcessModules函数:通过返回的模块信息,我们可以利用GetModuleFileNameEx来取得此模块调用文件的文件名。第三步:终止木马进程。如果取得文件名和木马的名称一样,则调用TerminateProcess函数终止木马进程。第四步:清除木马文件。在终止木马的进程以后,就可以删除木马文件
33、,删除注册表项和删除文件中的自启动项的操作了,其中涉及到几个注册表操作函数。RegOpenKeyEx:用来打开注册表项RegQueryValueEx:用来查询特定注册表项中的键值RegDeleteValue:当我们查找到的键名和其含有的键值与木马添加的内容一致时,就可以调用该函数删除此键对于木马文件,调用DeleteFile函数来删除。木马病毒清除实验(实验七)【实验目的】掌握木马病毒清除的基本原理。【实验平台】Windows32位操作系统VisualStudio7.0编译环境【实验步骤】从网上下载文件中复制实验文件到实验的计算机上(源码位置:附书资源目录ExperimentAntitroja
34、n)。文件Antitrojan.sln为工程文件。使用VisualStudio7.0编译该工程,生成Antitrojan.exe可执行程序。执行Antitrojan.exe观察执行效果。【注意事项】程序的设计思路参考下载文件(文档位置:解压缩目录ExperimentAntitrojandoc设计文档.doc)。实验结果木马防治实用工具个人防火墙Windows自带个人防火墙第三方个人防火墙工具天网ZoneAlarmPro木马专杀工具360木马专杀木马克星木马清道夫QQ木马专杀大多数杀毒软件都具有防范木马的能力其他工具进程/内存模块查看器在Windows下查看进程/内存模块的方法很多,有PSAPI、PDH和ToolHelperAPI。http:/