首页 C语言木马源代码教程-木马查杀深度剖析

C语言木马源代码教程-木马查杀深度剖析

举报
开通vip

C语言木马源代码教程-木马查杀深度剖析疱丁解马-木马查杀深度剖析 目 录 一. 疱丁解马-木马查杀深度剖析之扫盲篇……………………………………………………(1) 二. 疱丁解马-木马查杀深度剖析之进程篇(一)……………………………………………(3) 三. 疱丁解马-木马查杀深度剖析之进程篇(二)……………………………………………(7) 四. 疱丁解马-木马查杀深度剖析之进程篇(三)……………………………………………(12) 五. 疱丁解马-木马查杀深度剖析之进程篇(四)……………………………………………(18) 六. 疱丁解马-木马查杀...

C语言木马源代码教程-木马查杀深度剖析
疱丁解马-木马查杀深度剖析 目 录 一. 疱丁解马-木马查杀深度剖析之扫盲篇……………………………………………………(1) 二. 疱丁解马-木马查杀深度剖析之进程篇(一)……………………………………………(3) 三. 疱丁解马-木马查杀深度剖析之进程篇(二)……………………………………………(7) 四. 疱丁解马-木马查杀深度剖析之进程篇(三)……………………………………………(12) 五. 疱丁解马-木马查杀深度剖析之进程篇(四)……………………………………………(18) 六. 疱丁解马-木马查杀深度剖析之自启动项篇(一)………………………………………(24) 七. 疱丁解马-木马查杀深度培析之自启动项篇(二) ………………………………………(30) 八. 疱丁解马-木马查杀深度培析之自启动项篇(三) ………………………………………(35) 九. 疱丁解马-木马查杀深度培析之自启动项篇(四) ………………………………………(41) 十. 疱丁解马-木马查杀深度剖析之文件篇(一) ……………………………………………(46) 十一.疱丁解马-木马查杀深度剖析之文件篇(二) ……………………………………………(52) 十二.疱丁解马-木马查杀深度剖析之文件篇(三) ……………………………………………(61) 疱丁解马-木马查杀深度剖析之扫盲篇 一、前言 在进入正文之前呢,容我先说几句废话。 在写此文之前,我曾写过一篇“高级木马的自我保护技术与查杀之策”,承蒙各位朋友的厚爱,被各网站所转载,亦曾有许多朋友来信求助。 由于该文是心血来潮后的随笔所写,所以并没有经过深思熟虑,也并没有脉络可循,至使有的朋友能看懂,有的却看不懂。而看得懂的呢,亦有很大一部分并不能真正的应用文中所提的查杀技巧。 故一直有心再写一篇文章,帮助深受木马毒害的朋友们了解木马是什么,又如何查杀。 本文适于下列人员阅读: 能熟练使用计算机的人 想自己动手解决问题的人 钱没有多到电脑一出问题就扔到电脑修理公司的人 适于下列人员参考: 电脑维修人员 微机管理人员 安全相关的程序开发人员 本文所要达到的目的是: 让菜鸟也可以了解系统安全自己来动手查毒杀马,由求助者变为帮助它人者。 在杀毒软件无能为力的情况下,借助本文的知识让你仍然能借助工具完成清理查杀的任务。 让您真正的明白一些看似神秘的、高深莫测的专用术语与技术的内幕。 让您了解Windows系统的底层知识。 本文以手动查杀为主,辅以必要的工具,文中用到的工具与测试用的仿木马小程序都提供了下载地址,供朋友们下载试用。 本文作者为MuseHero,您可在网络上任意转载,但请注明出处、作者并保持文章的完整性,谢谢。 二、木马知识扫盲篇 什么是木马呢?木马只是一类程序的名字,为实现特殊目的而制作并偷偷植入目的计算机中的程序的统称。 其名字源于古希腊神话《木马屠城记》,全名为“特洛伊木马”有兴趣的可以翻看相关 资料 新概念英语资料下载李居明饿命改运学pdf成本会计期末资料社会工作导论资料工程结算所需资料清单 ,很不错的一篇故事。 那什么又是程序呢?呵,即然是扫盲篇,我们就不能回避这些让人头都大的问题,先从最基本的开始,熟悉计算机的朋友们可以直接跳到第三章去。 我们先了解一些基本的概念: 概念一:计算机。就是我们的电脑了,指的就是一堆硬件,显示器、主机、键盘、鼠标等等,当然了,拆开主机还有一堆零碎。我们只需要了解其中几个后面会提到的就行了。 CPU:计算机的指令处理单元。所有的工作都是由它来做的,同一个CPU同一时间只能处理一条指令,就是说一旦CPU被某一程序占用,那在同一时刻内其它程序就肯定是空闲等待状态(双核的可以同时执行两条,以此类推)。 内存:内部存储器。CPU执行的指令都是由内存中读取的,所以,一个程序要运行首先要装入到内存中。 磁盘:外部存储器。存放文件数据的地方。计算机中所有的数据平时都是存在这里的,只有在需要执行或查看时,才读取到内存中。 但只有硬件,是不能使用的,还需要软件的配合,我们买电脑时电脑中大都安装了某一操作系统,主流的就是MSWindows系统了(还有其它的操作系统如Linux等,这里不做讨论)。这就是我们需要了解的也是以后要频繁出现的第二个概念了“系统”。 概念二:系统。系统其实在大多数情况下都指的是操作系统,也就是帮我们使用与管理硬件的软件系统,当我们按下机箱电源后,即由主板上的BIOS检测硬件、再交由硬盘中的引导程序启动操作系统,然后就出现了我们所熟悉的Windows主窗口(计算机在启动时做了些什么,我们会在后面详细的讲解),而以后我们的所有工作,看电影、听歌曲、玩游戏、上网浏览等等都是在这个窗口中进行。操作系统维持这个窗口的显示及一些常用功能的完成,而这些功能是由一系列的程序来实现的,这又引出了我们的第三个概念“程序” 概念三:程序。程序是什么呢?程序就是一组指令执行序列。呵,有点专业了是不?什么又叫指令执行序列呢? 举例来说:我管理着一个工厂,正常情况下我让工人们按这样来工作“先去原料仓库取原料---(进行初步加工---(进行精细加工--(进行零配件组装---(验收---(合格则送入成品库--(不合格则销毁”。这就是一个指令执行序列,当情况为正常时,工人们执行的是这个序列也就是这个“程序”。而在旺销的季节呢,我还有第二个程序“取原料----(进行初步加工----(组装----(进成品库”。当情况为供不应求时,我就执行第二个程序。还有第三个、第四个……等等,在不同的情况下,我让工人们执行不同的程序。 计算机程序也是一样的,跟据用户 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 的不同,执行不同的指令序列,比如您要画图,你可能会这么操作“点击开始菜单--(选择所有程序--(在所有的程序中选择附件--(再在附件中选择画图”,这就是你向操作系统下达的指令。操作系统得到您的指令后,则会执行画图程序,也就是实现画图目的的一系列指令,而这些画图的指令储存在“mspaint.exe”文件中。操作系统会将mspaint.exe中的指令装入到内存中交由CPU开始一条条的执行。 总结一下:程序是什么呢?说白了就是一个 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 书,里面记载了先做什么后做什么。好的程序是好的计划,坏的程序就是坏的计划,比如:“收集炸药--(买雷管--(制成炸弹-(放到张三的床下面-(引爆”,这就是一个坏计划,相对于计算机来说就是一个坏程序。坏程序有破坏作用吗?也就是说你写了个爆了张三的计划书就可以炸了张三吗?当然不可以,只有计划是不行的,还要去执行才能真正起到作用。所以,一个木马程序仅仅是存在于您的计算机中时并不可怕,可怕的是它执行起来。程序执行起来是什么呢?那就是我们要说的第四个概念“进程”--(执行中的程序。 概念四:进程。程序一旦进入内存中开始执行,就叫做进程(进程其实就是容纳指令与资源的容器)。也就是说,他已经开始工作了,开始买炸药、制炸弹了,等执行到引爆那一条指令时,张三也就完蛋了。所以,检查可疑进程,就是查杀木马的关键环节,也是重要的手段与方法。找到木马的进程,并结束它,在它执行到引爆这条指令之前,就停止它的执行,并将它的程序自计算机中删除掉,就是我们所要达到的目的。 说到这里,细心的读者们可能想到了一个问题,画图程序的执行,是因为我们向操作系统下达了画图的指令,所以操作系统才调入画图程序开始执行画图的指令序列。但是木马程序又是谁给操作系统下达的指令让木马的工作计划得到执行的呢?这就是我们下面要说的第五个概念“自启动程序” 概念五:自启动程序。顾名思义,自启动程序,也就是不用您自己动手它自己就可以启动起来开始执行的程序。这是些什么程序呢?为什么要允许程序这样做呢?难道是专为木马准备的?呵,当然不是。自启动程序有二大类,一是系统需要的;二是用户需要的。 系统需要的,是因为有些工作是无须经过用户同意,必须去做的。比如,鼠标驱动。为了能让用户使用鼠标,系统要自动加载鼠标驱动程序并执行。 用户需要的,一些重复性工作可能用户想让系统自动去做,而不是每天每时的重复这份工作。比如:用户可以设定多长时间无操作,就自动运行屏幕保护程序以便保护屏幕不被烧坏。这显然必须要屏幕保护程序能自动的运行,用户是不可能每次手动去执行这个程序的。 而木马就是利用了这些本来是为系统或用户提供方便的手段,来实现自动运行它们自己的目的。如:木马用自己来取代屏幕保护程序,这样,长时间无操作时,运行的就不再是屏幕保护程序而是木马了。 在系统中有很多地方或方法是可以让程序自动运行起来的,这个我们在后面将一一讲述。而清掉自启动项,让木马程序得不到执行,显然也就成为了我们查杀木马的重要手段之一。 而系统又是如何知道,哪一个程序应该在开机后就自动运行,无须等用户来操作呢?朋友们应该能猜到,系统肯定是把这些需要自动运行的程序都记录到了某一个地方,记录到哪里了呢?这就是我们要讲的第六个概念“注册表” 概念六:注册表。注册表是什么呢?是系统记录信息用的一个数据库,举例来说它就像公司档案柜一样,发工资时,财务人员要查阅档案,以确定哪个员工应该发多少钱。就像系统启动时查阅注册表,确定哪个程序应该自动启动起来一样。 这是一个非常宠大的数据中心,系统的关键信息都记录到那里,与现实中我们的档案柜一样,都很重要,一旦损坏将造成无可挽回的后果,所以微软公司不建议直接对注册表进行操作。当然了,木马的作者通常是不会理会微软的建议的。所以,木马通常都会将自己写入到注册表的某个自启动项中,以便开机时自动运行,而无须经过用户的同意。 讲到这里,又有一个不容回避的问题出现了,上面我们说了,木马程序其实就是一个计划书,而为了执行这份计划书,木马需要把自己写到注册表中的自启动程序序列中去。而问题就是,这份计划书是如何来的呢?如果得不到执行,它又如何将自己写到注册表的自启动程序中去呢?不放到自启动程序中它就得不到执行,而得不到执行,它也就无法起到作用也包括无法将自己写到注册表中去……晕了,这成了先有鸡还是先有蛋的问题了。那么木马是如何进入我们的计算机并获得首次执行的呢? 这就是我们要讲的第七个概念了“侵入” 概念七:侵入。侵入是什么呢?也就是侵略进入喽,侵略需要被侵略者同意吗?当然不需要。将木马程序放入您的计算机,并让它得到首次执行的过程就是侵入。 侵入的方法有很多种,我们将在后面主动防御一章中详细讲解。因为,相信现在朋友们最关心的并不是如何不让他进来,而是……我的电脑中现在是不是正在执行着木马程序呢?已经执行到了哪一步呢?是否马上就要引爆了呢?我关机后下次还能打开不? 好,接下来,就让我们进入下一章,一起来看看,电脑中正在执行的木马程序“木马进程”。 疱丁解马-木马查杀深度剖析之进程篇(一) 三、木马的查杀之进程篇 1、进程的查看 进程,我们上面说过了,狭义上讲就是正在执行中的程序。那如何来查看系统中都有哪些程序正在执行呢?(先看下图03-1:) 系统自带了一个“任务管理器”可以使我们看到系统中当前的进程,在桌面下方的任务栏按右键,选择“任务管理器”或同时按下“Ctrl Alt Del”三个键、或同时按下“CtrlShift ESC”三个键,都可以打开任务管理器程序,看到上面的窗口。 看到上面的图时,会不会有点发昏?20个进程,哪个是好的哪个是坏的呢?上面的信息又都是些什么意思呢? 不要着急,让我来教教你怎么来看这些信息。 首先,显示哪些信息,是可以自由选择的,看到最上面的菜单没?就是“文件、选项、查看、关机、帮助”。依次选择“查看”---(“选择列”并勾选里面的相应项就可以显示相应的信息。 举报帖子 我们关心的是前五个,即:映像名称、PID、CPU、CPU时间、内存使用,下面依次进行介绍。 l映像名称:即进程所对应的同名程序名字。其中有两个是例外,“System”代表的是系统,并没有对应的同名程序;“System Idle Process”代表的是空闲进程,同样没有对应的同名程序,它占据了CPU的空闲时间。 我们可以依据此栏,来找到进程对应的程序文件。 lPID:英文件缩写,即进程的ID,是一个唯一的数字,唯一的代表一个进程。 我们可以依据此栏来区分进程,尤其是同名的进程,比如:SVCHOST.EXE进程。 lCPU:即该进程当前消耗CPU的百分比,如果某个进程正在工作,那么CPU一列的数值就会是非零,工作量越大,其数值越高。例外的是“System Idle Process”进程,它的数值越高,说明当前的系统越是空闲,所有进程的CPU一栏的数值相加等于100%CPU占用。 我们可以依据此栏来查看,哪些进程正在工作,哪些进程是空闲的。上面我们说过,同一CPU在同一时间只能处理一个工作,所以如果某一进程长时间大量占用CPU,那么将会导致其它进程得不到或得到很少的CPU时间来处理,使系统反应速度严重迟缓。这种情况的出现,通常是程序出现了问题,我们就要考虑结束掉霸占CPU不放的进程,并尽量查明原因。 lCPU时间:自运行以来,该进程占用的全部CPU时间,此数值越大,代表该进程工作时间越长,注意,不是运行时间而是工作时间,如果运行后,进程只是等待,并没有工作,那么此时间也会很小。例外的仍然是“System Idle Process”进程,它占据了CPU全部的空闲时间。 我们可以据此来判断,哪些进程在一直的工作,而这一直工作的进程是不是应该工作的正常进程。比如我们一直在画图,那画图程序mspaint.exe的进程CPU时间很长,那就是很正常的;而如果我们在听音乐,从来没画过图,但这里却显示画图程序用了大量的CPU时间,那很可能就是某个黑客或木马或其它进程正在偷偷的使用画图程序呢。 l内存使用:标明了该进程使用的内存数量,要知道,系统中的内存数量是有限的,当某一个进程大量占用内存时,就会导至系统或其它进程可用内存量减少,而至使系统运行速度减慢。 在某些情况下,可以依此来找出系统变慢的原因,并尽量使用占用内存小的程序来提高系统的性能。虽然现在机器的配置都高了,内存也都大了,但在同等条件下,优先考虑使用占用资源少的程序也是有必要的。 要在这些进程中区分哪些是系统进程,哪些不是,用任务管理器显然很难做到,最好的办法是借助专业工具。(看下图:03-2) 上图是用反黑工具狙剑查看进程时的样子,狙剑程序的下载地址:http://www.zhulinfeng.com/Download/SnipeSword.rar下载后解压缩,运行里面的SnipeSword.exe 启动狙剑,并选择“进程管理” 就可以打开进程管理页面,与任务管理器相比,首先映像文件带了路径,使您可以直接定位到程序文件。 其次,多了父ID一栏,这个标明了该进程是由谁启动的,比如:smss.exe的进程ID是540,父ID是4 那么,我们就可以知道,smss.exe是由进程ID为4的system进程启动的,而smss.exe又启动了csrss.exe与 winlogon.exe,接着由winlogon.exe启动了lsass.exe与 services.exe。注意,有的进程并没有看到父进程,比如:Explorer.exe 它的父ID是:1216 但进程中并没有进程ID为1216的进程,这是因为系统在初始化时还有一个程序会自动运行,那就是Userinit.exe这个程序负责用户初始化工作,并负责启动Explorer.exe,而工作完成后,它就退出运行了,所以进程中并没有它。最近有个木马是通过感染Userinit.exe来启动的,由于Userinit.exe启动后就退出了,所以通过查看进程很难发现问题,这问题我们将在“自启动项”一篇中详细讲解。 以上就是系统启动的顺序,从System开始,依次启动了几个进程,正常情况下,上面这几个进程都是系统关键进程,结束它们的运行将导至系统出现问题。 有很多朋友对开机以后系统都做了些什么比较感兴趣,而这对系统不能启动时的故障查明也有帮助,可以通过判断系统停在了哪个环节来断定是哪个部分出了问题,在这里,我就对系统的启动过程进行一下简单的说明: 系统的启动过程: 1、当你按下开机键时,最早是由主板BIOS蕊片中的BIOS程序来执行硬件检测任务的,如果检查过程中发现关键硬件的故障,就会发出特定的响声通知用户,并停止启动。而BIOS程序是哪里来的呢?这是在主板出厂时固化在芯片中的一段程序。 2、当硬件没有问题时,BIOS程序就会读入硬盘的主引导记录,将下面的任务交给主引导记录代码去完成。而主引导记录又是哪里来的呢?这是在安装操作系统时对磁盘进行分区格式化操作时,写到硬盘中的。如果找不到主引导记录,会出错停止,告诉你这是非法的系统启动盘。 3、主引导记录代码的工作是读入磁盘主分区的根目录,在里面读出Ntldr文件,并装入内存,然后将控制权交给它。注意看一下,你的硬盘根目录下是不是有个Ntldr文件?这个文件的属性是隐藏、系统,所以查看时要选择查看所有,且不隐藏被保护的系统文件才可看到。这个文件是哪里来的?呵,当然是安装操作系统时拷贝到硬盘上的,下面提到的文件都是在安装操作系统时拷上去的。如果没能找到Ntldr文件,则会停止启动,显示Ntldr没找到的错误信息。 4、Ntldr又做了些什么呢?它会将系统由原来的16位实模式切换到32位保护模式或64位长模式。它的工作是读取根目录下的Boot.ini文件,显然引导菜单,在多操作系统的计算机中,可以看到这个菜单。接着它会清屏,并在Win2000下显示一个黑白的进度条,在XP下显示XP的标志图同时显示下面不断滚动的蓝色进度条,提示你它正在加载一些重要的文件。它在加载什么呢?它首先会加载Ntoskrnl.exe、Hal.dll,如果这两个文件找不到会出错停机,并显示找不到相应文件的信息。接着它读入注册表的SYSTEM键文件,从中找出自动启动的各类驱动程序,这是很关键的,因为有些内核级的木马就是在这时启动的。每加载一个屏幕上的进度条就滚动一下子。中间如果某个驱动出问题,也可能会导至系统蓝屏崩溃。 5、接下来的工作由Ntoskrnl.exe(或Ntkrnlpa.exe)来进行,这是内核程序,它做的工作实在是太多了,这里就不再细说了。它的最后一步工作就是创建会话管理子系统,也就是我们上面说过的,由System进程创建的Smss.exe进程。 6、Smss.exe进程负责创建用户模式环境,由用户模式环境向Windows提供可视的窗口界面。 它会运行BootExecute中定义的程序,正常情况下是Autochk,一个检查磁盘的程序。但有些杀毒软件会把自己的程序加到这里,来实现引导时杀毒,如果您的系统安装了江民类的杀毒软件,那么此时就会执行它的引导期杀毒程序,就是进入系统前出现的蓝底蓝字的病毒扫描窗口。 Smss.exe还会执行SessionManager中的文件删除、移动操作,也就是调用API:MoveFileEx并选择重启后移除文件的,就是在这个环节执行了。当前有很多号称可以删除一切文件的安全工具都使用了MoveFileEx来实现文件的删除,但是现在我们可以知道了,它的文件删除是在这个阶段执行的,而这时驱动程序已经加载了,所以用它们来清除驱动级的木马显然是不胜任的。 创建附加的页面文件。 加载Win32k.sys,这个东西又是做什么的呢?这是一个内核模式的系统驱动程序,它负责了窗口的显示、屏幕的输入、鼠标键盘和其它设备的输入及消息的传递等。所以也是由Win32k.sys将显示器的分辩率设置为默认值的,也就是这个时候,咱们的计算机屏幕才真正的细致起来,在此以前都是VGA模式,当然了视频驱动是上面装载驱动程序时就已经加载了的,现在只是起到作用而已。 再然后呢,就是启动我们上面说过的那两个进程了。就是Csrss.exe与Winlogon.exe进程。 启动完这两个进程后,Smss.exe就进入了无限的等待,它在等什么呢?它在等它创建的Csrss.exe与Winlogon.exe,等着看这两个进程什么时候死掉,一旦他们中有死掉的,Smss.exe马上罢工,让系统彻底崩溃。(在XP以后Csrss的死亡是由内核使系统崩溃的,而不是Smss.exe),所以千万不要结束系统进程。 Csrss.exe是做什么的呢?它负责的工作是创建或删除进程、线程,控制台与虚拟DOS机的支持等。它到此就开始工作了,不再参于后面的启动过程。但是Winlogon.exe还有很多工作要做呢,我们接下来看看后面的启动过程。 7、Winlogon.exe是做什么的呢?看它的名字应该看出个大概了吧。是的,它是与登录相关的,但现在还不到显示登录窗口的时候,它还要先启动Services.exe及Lsass.exe进程,然后读取注册表GinaDLL中标明的DLL,由这个DLL来显示一个登录对话话,也就是我们在进入系统时输入用户名与口令的窗口。 为什么要先启动Lsass.exe呢?因为,这是本地安全认证子系统,负责的就是本机系统的安全,用户名与口令的验证工作是由它来进行的。 还有一个我们上面提到过的进程也是这个时候由Winlogon.exe来启动的,是哪一个呢?就是那个Userinit.exe,这是在用户登录进系统后,Winlogon.exe启动此进程来进行用户初始化。你也可以自己加一个程序与Userinit.exe放在一起,那么,在这个时候Winlogon.exe会将那一位置的所有程序都启动起来。 当然了,相信你也想到了,这个还有那个GinaDLL也就成了木马启动的一个可选位置。 8、最后,由Winlogon.exe启动的Services.exe开始加载标明为自启动的各个服务,及标明为手动的却是有必要加载的服务(它所做的工作我们在后面细讲)。 9、而Userinit.exe呢,它在完成用户初始化后,就启动了Explorer.exe,并功成身退。 10、最后,Explorer.exe就成了我们的服务员,等待在那里静候我们的指令,听从我们的吩咐,进行相关程序的启动与功能的处理。 疱丁解马-木马查杀深度剖析之进程篇(二) 接着上面的一篇来讲: 看完系统的启动过程后,我们再回过头去看那个进程图,是不是明白了很多呢?除掉系统启动环节中启动的进程外,我们再看其它的进程,注意看一下儿,剩余的进程是不是都是由Services.exe或 Explorer.exe中的一个启动的。 Explorer.exe是系统的Shell程序,响应用户的请求,并执行对应的程序的工作就是由它来完成的,比如上面我们说过的,您想画图时,将画图程序启动起来的就是这个程序。你想上网时,将浏览器启动起来的也是它。当然了,一些用户的自动任务也是由它来完成启动过程的。(这些我们将在下面的自启动程序一章中详细讲解) Services.exe是系统的服务控制管理器,由它启动的进程称为“服务”,是一组特殊的进程。此类进程是开机自动运行的,不依赖于用户的交互,说白了就是不用您管,它自己就会运行并且开始自己的工作,工作过程也无须您的干预。 说到这里,您可能会想,这不就是木马所需要的么?不错,有很多木马是以服务进程的形式存在的。那我们可以管理这些服务吗?答案是肯定的,我们的计算机,我们当然有权力管理了。看下面的图03-3: 在桌面上“我的电脑”上面按右键,选择“管理”就可以打开如上图所示的窗口。依次选择:服务与应用程序----(服务 就可以看到上图右侧的服务列表。 最左侧的一列是服务的名称,需要注意的是这里列出的并非是对应的程序文件的名称,而仅仅是服务本身的名称。那我们又怎么知道这个服务对应的是哪个程序文件呢?如果我们想停止这个服务,并删除对应的程序文件,我们应该怎么做呢? 再看下图03-4: 在某一个服务上面按鼠标右键,选择“属性”,就可以打开此服务对应的属性页面,如上图所示。在这里,我们可以看到一些有用的信息,并对此服务进行启动、停止、禁用等操作。 最上面的是服务名称,第二列是显示名称,第三列是关于服务的描述,也就是这个服务是做什么用的。当然了,我们不能迷信这里的描述,因为木马可以自行设定这个描述。再下面就是可执行文件的路径,也就是对应的进程与程序文件。这时我们再返回头去看03-2那个图,看一看进程PID为968的进程是不是就是这个“svchost.exe–knetsvcs” 进程呢? 这时再注意一下,又会发现问题,首先,在03-2图中,Services.exe启动的服务一共是7个,而在图03-03中,已经启动的服务却有很多,远不止7个,再挨个儿的查看每个服务的属性,又会发现,有很多服务名称虽然不同,但对应的可执行文件路径(进程)都是一样的,都是“svchost.exe–knetsvcs”进程,这又是咋回事呢?这里我们要解释一下Svchost.exe这个进程了,这是一个特殊的进程。 从图03-1中我们可以看到名字为“SVCHOST.EXE”进程一共是五个,我们没办法区分它们有什么不同。而在图03-2中,我们再查看这五个Svchost.exe进程,却可以从参数上来区分它们了,虽然进程名字相同,但它们的参数却各不相同。对了,这就是区分他们的方法了,Svchost.exe是一个服务的宿主程序或者叫容器程序,它的里面是一组服务,而参数就标明了这一组服务的类型。如果英文不是太差,那么从它的参数上就可以看明白这一组服务是做什么用的了。 当然了,我们是来查杀木马的,当然不会满足于仅仅知道这是一组服务,这一组中是不是会藏着一个木马呢?所以,我们还要知道这一组服务都分别是哪一个,怎么来查看呢?再来看下图:03-5 上面的是什么呢?上面的就是我们在第一章中所提到的“注册表”。依次选择--(开始---(运行---(输入“Regedit.exe”----(确定。 就可以调用系统自带的注册表编辑器来打开注册表,再依次展开:HKEY_LOCAL_MACHINE---(SYSTEM---(CurrentControlSet---(Services,还记得上面03-4图中的服务名称么?对了就是那个“wuauserv”,在Services键下打开如上图所示的“wuauserv”再展开,选中其下面的“Parmeters”,看右边的窗口中,是不是找到了此服务所对应的程序文件了?就是那个C:\WINDOWS\system32\wuauserv.dll喽。 每一个Svchost.exe中的服务都可以通过这种方式找到其对应的程序文件。 看到这里,朋友们是不是头都大了?这么麻烦啊?查个进程居然这么麻烦,而且就算找到了,又怎么能知道C:\WINDOWS\system32\wuauserv.dll是正常的程序还是木马呢? 呵,不要着急,也不要怕。上面不是在教给你知识么,而且在当年,没有专业工具之前,我们可都是这么一个个来找的。当然了,现在有了各种专业工具,的确是没必要非手动去找了。 在狙剑的进程管理列表中(图03-2),选中Svchost.exe,然后按鼠标右键---(选择“查看模块”,就可以得到上图中的列表,注意被蓝条选中的那个是不是就是费半天劲所找到的那个:C:\WINDOWS\system32\wuauserv.dll呢? 找是找到了,可如何判断这是不是系统的服务模块呢?这一点微软为我们想的很周到,他将大多数的系统文件都进行了数字签名,我们只需要检查一下这个文件有没有系统文件的数字签名,就可以准确的判断,这是不是一个系统文件。 如何检查呢?在列表中按右键,选择“隐蒇微软签名项”就可以将所有系统文件隐藏起来,剩下的就是非系统的文件啦,简单不? 数字签名验证还可以应用在对进程的判断中,在图03-2中,列表中共有19个进程,这些个进程中哪些是系统的哪些又不是呢?我们仍然可以利用数字签名来判断,在列表中按右键,选择“隐蒇微软签名项”就可以将所有系统进程藏起来,剩下的就是非系统的进程。 上面也说过了,一共有5个SVCHOST.exe进程,那我们是不是需要在每个SVCHOST.exe进程上都重复一遍,查看模块----(隐藏微软签名项的过程呢?答案是不需要,在图03-2的进程列表中,按右键,里面的一个“扫描无微软签名模块”的选项,点击它一下,就可以列出所有进程中所有没有签名的模块了。 还有一个问题是,如果手头没有工具怎么办呢?就没有办法查看这些进程中的模块了吗?有的,仍然有办法,看下图03-7: 依次选择“开始”---(“所有程序”---(“附件”---(“系统工具”---(“系统信息”就可以打开上面的窗口。在窗口中选择“加载的模块”就可以看到左边窗口中的信息,看到没?我们找的那个wuauserv 就在里面。这里面列出了所有进程加载的所有模块,可以参考,但也仅仅是参考,更多的情况仍然尽量的使用专业工具来检查,会更方便更准确一些。 另外,有很多木马是可以隐藏的,对于这一类木马,用系统自带的工具是检查不出的。注意看上面的几张图,发现没有,图03-2比图03-1中的进程多出来了一个Hide.exe这就是下面我们要讲的“进程的隐藏了”。也许有朋友会说,是不是取图时这个进程已经关掉了呢?呵,没关系,我这里提供了Hide.exe程序的样本,您可以下载后运行一下试试,看是否可以在任务管理器的进程列表中看到它。 下载地址:http://www.zhulinfeng.com/bbs/dispbbs.asp?BoardID=3&ID=78&replyID=&skin=1 里面还附了隐藏进程的源代码,懂编程的朋友们可以参考一下,看一看隐藏进程是如何的简单。 疱丁解马-木马查杀深度剖析之进程篇(三) 2、进程的隐藏与自我保护 我们通过上面的讲解已经知道,进程是一个程序运行所必须的,因此检查进程也就成了查杀木马的关键环节,我们知道这一点,木马的作者们当然更知道,所以,如何隐藏自己的进程,就成了养马人处心积虑要实现的。 说到这里,有懂的朋友们可能要笑了,心里更可能在说“连无进程木马都不知道,还好意思在这里显摆呢”。 一个程序可以无进程么?可以吗?真的可以吗?我可以很负责任的告诉您,在Windows系统下一个程序一定、确定以及肯定的会有一个进程,没有进程是不可能的。 那所谓的“无进程木马”又是怎么回事儿呢? 第一种无进程木马是DLL注入型木马: 什么是DLL呢?DLL是动态链接库,当某一进程需要实现某一功能时,此功能可能是放在某一动态链接库文件中的,所以,当进程需要使用时就要将动态库文件加载到自己的进程中。举例来说,如果进程就是一个工厂,那么,调用DLL就是将工厂的某一部分工作外包给了DLL去做,而工作地点就在自己的工厂内。明白了吗?进程就是工作的厂地,即使外包出去了,也是需要地方干活的。“加载到自己的进程中”这一句是关键啊,并不是没有进程,而是用了其它程序的进程。像我们上面找了半天的那个服务:C:\WINDOWS\system32\wuauserv.dll,注意一下文件的扩展名,不就是DLL么,这就是一个典型的DLL文件,如果这是一个木马文件,那么,这就是一个典型的无进程木马,因为他没有自己的进程,我们在进程列表中看到的是Svchost.exe的进程。这个DLL是利用服务来加载的,在注册表中还有很多位置可以让一个DLL加载到其它进程中,这在后面自启动程序一节中我们要讲解。 但是,通过注册表来加载是可以的,但却不是唯一的,还可以通过另一个进程,来打开现有的进程,来将DLL注入到被打开的正常进程中,然后,执行注入的进程退出,这样,在进程列表中仍然看不到木马的进程。 第二种无进程木马是线程注入型的木马。 什么是线程呢?上面说了程序就像一个工厂工人工作的流程表,而进程就是将流程真正的运行起来,正式的开始动手取原料--(加工---(组装---(验收等等工作。但是,我们需要明白的一点是,工人们是可以分成小组后同时进行几个环节的,第一组工人负责取原料、第二组工厂人负责加工、而第三组工人负责组装、第四组……这样,可以分工合作同时进行形成流水线。而这工厂里的一组一组工人,相对于进程与线程而言,就是一个进程中的一个个线程。线程注入又是咋回事呢?线程注入,就是木马程序将一个恶意线程放到了正常进程的线程序列中去执行,就像在工厂中多增加了一组自己的工人负责制造炸弹,这一组工人与其它的正常的几组工人没有什么关系,但却借用了人家的工厂去从事着非法的勾档。 线程注入与DLL注入的区别是,线程注入只是增加了一组工人,这组工人是在以工厂的名义在工作,对外的名义也是工厂的名字,出了问题是由工厂负责的。而DLL注入呢,是外包,可能会增加一组工人也可能会增加多组,是以DLL自己的名义在工厂内工作的,出了问题是由DLL来负责的。当然了,如果问题大了,工厂也会受牵连的。看下面的图03-8: 在狙剑的进程列表中,选中一个进程按鼠标右键,选择“查看线程”就可以查看此进程中的每一个线程,也就是查看每组工人的情况,还可以对某个线程执行暂停运行、结束运行等操作。 我们注意看上面的线程列表,最后一列,显示了一些DLL的名字,还有一个是EXPLORER.EXE,EXPLORER.EXE就是进程名字,我查看的就是EXPLORER.EXE进程的线程列表。 明白我上面说的区别了么?ntdll有三组线程在工作,那是ntdll在完成外包业务所需要的自己的三组工人;EXPLORER.EXE有一组,那是工厂自己的工人,如果存在线程注入,那么就会多出一个EXPLORER.EXE线程。但是需要注意的是,有多个EXPLORER.EXE并不代表就一定有线程注入,因为一个工厂也可以同时存在多条流水线。但只有一个EXPLORER.EXE那么通常情况下就是没有线程注入,因为一个进程肯定会有至少一个线程的存在,也就是说,一个工厂必定至少要有一组工人,皮包公司在Windows世界是不允许的。 了解了什么是DLL注入型木马、什么是线程注入型木马后,查杀他们显然就很容易了。 DLL注入型的,查起来很简单,用上面说的方法“查看某一进程的模块列表---(再隐藏无微软签名的项”,就可以查出单个进程中被注入的模块;如果在全系统范围内查找,则使用“搜索无微软签名的模块”就可以将注入到其它进程中的模块找出来,而大多数工具都提供了“卸载模块”的功能,卸载后就可以删除了,或直接用“卸载后删除”的功能,但有一点是需要注意的,如果该木马使用了防卸载的技术,那么卸载此模块时就会发生异常,对此也不必担心,我们还有其它方法清掉它,比如:清除其自启动项,不让他有注入的机会;或直接删除其磁盘文件等。 相比较起来,查杀线程注入型的木马,就比较困难了,我们上面说了,线程注入的没有自己的文件,只是一段注入的代码。也就是说他只是混入工厂内的一组工人,并没有自己的工厂也没有自己招牌,想把他与正常的工人区分开,是很困难的。这里提供了一个线程注入的测试程序:http://www.zhulinfeng.com/bbs/dispbbs.asp?BoardID=3&ID=78&replyID=&skin=1 先试一试看看效果,运行后,会打开一个窗口,但你却在进程列表中找不到有新增加的进程,那窗口是如何来的呢?这就是由注入到Explorer.exe中的线程创建的。这时你再查看Explorer.exe的线程列表,会发现多出来了一个线程,而线程的“模块”那一列(图03-8)标的名字就是Explorer.exe,这时线程列表中已经有两个名字为Explorer.exe的线程了,但哪一个是好的,哪一个是后来注入的呢?通常情况下看“基址”那一列(图03-8),基址数值较大的那一个一般是起动起来较晚的,就是后来加入的了,选中那一个线程选择“结束线程”,发生了什么?是不是那个窗口被关闭了?(注意:如果是用狙剑查看的,那么在线程注入后,查看新线程时,要重新刷新进程列表,不然会发现不了新注入的线程) 当然了,上面只是做个试验,让朋友们亲身体会一下线程注入是怎么一回事儿。真正查杀起线程注入型的木马来,用上面的方法显然是不行的,首先,我们不知道他注入到了哪一个进程中。其次,即使一个进程中有多个以进程名为名字的线程我们也无法确定那多出来的线程就是木马线程。所以,我们仍然要从自启动项入手来禁止线程注入。 第三种无进程木马是纯驱动型木马 什么是驱动型木马呢?就是全部功能放到了驱动程序中去完成(当然了,纯驱动型的并不多见,大多驱动型木马都是配了一个程序。) 什么又叫驱动程序呢?驱动程序顾名思义就是驱使设备动起来的程序。^-^呵,可能不准确,但却很容易理解。其作用是让特殊的硬件和Windows操作系统可以交换数据,比如我们按下了键盘的A键,那键盘驱动就要告诉Windows系统“这家伙按下了A键,你看咋办吧”,它只是告诉一声,后面的工作就由系统来处理了,系统会根据不同的情况进行不同的处理,如果你是在打字,那就把A这个字符显示在你的输入页面中,如果你用的是五笔,显然直接显示个A是不行的,Windows系统就会把你输入A的这个信息转给了输入法程序……最终实现你按A的目的。 但驱动又怎么会与木马有了关系呢?这就要从头说起了,话说当年木马与驱动本来是分处于两个天地,互不相干的。但随着杀毒软件、安全工具等木马杀手对木马的围追堵截越来越是凶狠,木马终于感到有点穷途未路了,在最后关头,它盯上了驱动程序!为什么盯上了驱动呢?因为驱动程序由于其特殊性,使得它在系统中有着超越一切的权力,而且有着优先加载执行的优势,它是做为操作系统的一部分来运行的。详细情况涉及到系统权限的划分与优先级设定,有兴趣的可以查阅相关资料,这里只要明白一点就行“系统的权限分为两种R0与R3,一般的程序全部为R3权限,其行为受到了很多限制;而操作系统与驱动则为R0权限,拥有对整个计算机的全部权力,可以为所欲为”。 举例来说,杀毒软件就像一个公司的人力部,对员工的行为进行考核,发现不好的就给予惩罚或辞退。如果木马总是隐藏在员工群里,那么就会受到严格的检查与监管,一旦被查出有问题就会被立即辞退。而操作系统就是公司的董事会或股东大会,驱动程序是董事或股东,有着超出人力部门监管的权力。 为了逃脱追杀,开始有木马以驱动程序的身份出现,当然了,木马这个驱动是没有硬件设备的,呵,如果中一个木马它就附带一个设备,那么,哪怕它只是给一支鼠标,我也会冲天大喊“木马们,都到我这里来吧”。所以它们有一个好听且很容易听明白的名字“虚拟设备驱动程序”。 当木马成为公司的董事的时候,身为人力部门的安防程序开始感到郁闷,明明发现那家伙就有问题,但偏偏没权力辞退它。于是,杀毒软件开始谋求同样的身份,于是杀毒软件也开始挂驱动,使其有了董事的身份来兼人力监管,于是,新一轮的斗争开始了。而这一轮的斗争更是残酷,本来在员工层的斗争转到了高层,本来斗争的结果也就是员工被辞退,还不至于伤筋动骨涉及公司根本,但现在却是一不小心就让公司整个解体了。对应于我们这些可怜的用户来说,杀软与木马的斗争,一个不好惹来的就是蓝屏死机、系统崩溃。 OK,了解了驱动程序后,我们就要回到正题来了,我们如何知道系统加载了哪些驱动呢?又如何知道哪些驱动是正常的系统驱动,哪些是木马的驱动呢?看下图03-9: 在桌面我的电脑图标上按右键,依次选择“属性---(硬件---(设备管理器”就可以打开上面的窗口了,再勾选上“查看----(显示隐藏的设备”就可以看到“非即插即用驱动程序”。 除了非即插即用外,其它的同级项目都是您机器上的硬件及它们的信息、资源、驱动等,他们是根正苗红的正经设备。由于这些都与硬件有关,所以,木马动它们的可能性很小,必竟木马也不想你的机器崩溃啊。因此,大多数木马驱动都隐藏在“非即插即用驱动程序”下面,而这里面的则是那些虚拟设备了(注:非即插即用驱动程序并非就是虚拟设备驱动程序,这涉及到以前老版系统中的一些个问题,这里不再细说,您只需要明白,在当前的情况下,这里面大多都是虚拟设备驱动程序就可以了。) 选中某一个项点鼠标右键,再选属性,得到下图03-10: 一看到这张图,你最感兴趣的一定是“停止”这个按钮,但我不得不很遗憾的告诉您“是否能停止驱动程序的运行,还要看这个驱动程序是否愿意停止运行”,是不是失望了?呵,应该是意料中的,如果木马可以这么轻易的停掉,它们还混什么呐?从这里不要奢望得到额外收获,我们只需要了解一点就够了,这个驱动的状态是“已经启动”。 接下来要看的是“驱动程序详细信息”这一栏。点一下,得到下面的这张图03-11: 看到没?这里面的就是驱动程序对应的文件了,至于下面的提供商、版权什么的,参考一下也就得了,如果木马愿意,它可以说它是“天宫”出品,版权属于“玉皇大帝”,那这里会丝毫不打折扣的给它显示出来,你说能信吗? 按上面说的方法,你可以查看所有系统中加载的驱动程序,但很显然,这么做的确是很麻烦,那有没有省事点的方法呢?有,我们看下图03-12: 看到上面这张图是不是有点眼熟?对了,就是上面我们查找模块时用到的图,打开方式同上,向上翻就可以看到了。蓝条选中的那个,不就是与图03-11中显示的是一个么。这里面列出了所有的驱动程序,不用一个一个找了。 到这里是不是有朋友有点火大了?明明有简单的法子,却带着我们绕了这么大一个圈子。呵,上图中的系统信息,其实也就是系统自带的一个工具,属于专业工具范围内的,且并不是太好使,木马想在这里隐藏信息很容易,而且禁止这个的运行也很简单。我们需要多了解几个法了,以备不时之需,另外,我们需要的是尽量多的学一些知识,这才是根本,了解了原理、懂得了知识,才能真正的成为高手,高手绝非只会使用工具。 说到工具,那我们再看看专业工具对驱动程序的显示: 打开狙剑--(选择基本功能中的“内核模块”,看到没?dmload.sys不就在这里么。这么多,又如何来区分哪个是正常的哪个是可疑的呢?很简单,方法与我们筛选进程是一样的,按右键---(选择“隐藏微软签名项”,剩下的,就是非系统的驱动了。 这里同样提供了“停止运行”、“卸载模块”等功能,但我还得遗憾的告诉大家,卸载它也得它自己愿意才行,但想来木马是不会愿意被卸载吧,那我们就没办法了么?有,方法仍然与上面的相同,从自启动程序入手,禁止它的加载;或强制删除它的文件。 那驱动级木马是不是就是真正的无进程呢?进程列表中找不到任何一个驱动程序的进程,而它也不像模块与线程一样,在其它进程内能够找到,是不是真的可以无进程运行呢?当然不是,我前面已经说了,一个程序的运行,一定、确定以及肯定的会依托一个进程,那这些驱动在哪个进程里呢?那就是System进程,它们是做为系统的一部分来运行的。 疱丁解马-木马查杀深度剖析之进程篇(四) 第四种无进程木马就是利用技术手段隐藏进程的木马 这显然就不属于无进程了,上面说的三种,的确是没有自己的进程,只是利用了其它的进程。而利用技术手段隐藏进程的木马,则是有自己的进程,但是如果你破解不了他的隐藏技术,那你就看不到它的进程。就像上面我们拿出来的那个HIDE.exe一样,在任务管理器中看不到它的进程,而在狙剑中却能看到,这就是隐藏与破解隐藏后的结果了。 进程是如何隐藏的呢?这无可避免的会涉及到一些技术问题,下面我们尽量简单明了的说一说,详细的实现细节,请参阅相关资料。在这里,我所想达到的目的,并非是让您也同样写出一个能隐藏自身的木马,而是让您明白,什么样的手段可以隐藏木马的进程,木马又为什么会隐藏,而想破解这种解藏将它揪出来,又需要什么样的技术,好有针对性的选择一些专业工具。 同时,需要注意的是,隐藏进程的技术同样适用于隐藏DLL模块程序、隐藏驱动程序,下面为了描述方便,统一说为进程。 Windows系统给我们的开发人员提供了几种列出系统中所有的进程、模块、与驱动程序的方法,最常见的也是最常用的方法就是调用系统API:CreateToolHelp32Snapshot、EnumProcess、EnumProcessModules等,如果您不是开发人员,您不用关心这几个是什么东西,只需要明白,他们是获取进程列表的第一层手段,我们调用这几个其实就是在告诉系统,我们需要进程列表,然后系统就会将列表返回给我们。 而这几个API在接到请求后又做了什么呢?他们会调用ZwQuerySystemInformation,ZwQuerySystemInformation会调用KiSystemService切入内核进入R0权限,然后自SSDT表中查取得NtQuerySystemInformation的地址,并调用其指向的实际代码,而NtQuerySystemInformation的作用则是自系统的数据结构中取相应的数据,再顺原路返回去。 在中间任何一个环节进行拦截都可以实现隐藏进程的目的,这种拦截有一个名字叫做“HOOK”,在切入内核进入R0权限前进行HOOK,称为应用层HOOK,而在之后进行HOOK则是内核HOOK,后者需要用驱动才能实现了。 什么是HOOK?什么是SSDT?我们来举例说明: Windows操作系统就像一个为我们管理电脑的服务公司,而他的工作机制是逐级上报,各负其责的,他派了一个服务人员时刻的跟着我们,看我们都有什么要求。 当我们想查看系统中都有什么进程时,我们会告诉服务员,我们想了解当前都有哪些进程,那么服务员就会把我们的要求报上去,报给谁呢?他要先知道哪个部门负责哪个工作才行,SSDT表就是做这个的,SSDT表就像是一个路标,指明了什么样的工作应该由哪一个部门负责处理。通过查表得知负责的部门后,工作就被移交到了那个部门,工作完成后,部门会把工作结果交回给服务员,服务员再交给我们,而我们也就得到我们想要的结果了。 应用层HOOK呢,就像是服务员被木马偷偷的替换了,当我们提出要求时呢,他会检查是否对他有害,或将对他有害的信息去掉,比如我们想查看进程,那他在将结果交给我们时,却把木马的进程自结果中抹去了,这样,我们自然是看不到木马进程了。 而最常见的内核HOOK,则是HOOK-SSDT,上面说了SSDT就是一张表,标明了什么工作应该由什么部门负责。而SSDT HOOK也就是木马将表上的内容给改了,本来交给A部门负责的工作被改成了交给由木马负责,这样,服务员在上报我们的请求时,一查表发现查看进程的工作是由木马负责的,他就把这请求交给木马了,而木马呢?他可是知道表中原来的内容是什么的呀,他只是对请求进行一下过滤,发现没有对自己有害的,就直接转交给原部门了,对自己有害的,自然也就视情况滤掉或涂改了。 我们先看看SSDT到底是什么样子的,看下图(04-14): 依次选择狙剑---(扩展功能---(SSDT检查---(筛选可疑项,就可以看到上图,那就是一个SSDT表,从左到右依次是序号、当前地址、所在模块、HOOK类型、原地址、函数名。 上面都是狙剑自己对SSDT的HOOK,当前安全软件很多也用到了SSDT-HOOK技术来实现对系统的安全防护。 例如上面的第11号函数,所在模块是“D:\workspace\狙剑\SnipeSword.sys”,HOOK类型是“HOOK”,函数是“NtAdjustPrivilegesToken”。这是狙剑本身对SSDT的一个HOOK,用的技术就是HOOK,HOOK的函数是用于增加进程权限的。HOOK这个的目的是“在木马进程为自己增加权限的时候进行拦截,提醒用户注意”这在主动防御一章中会详细讲解。 每一个函数都实现了某一种功能,比如:结束进程是由NtTerminateProcess来完成的(上图中最后的那个257号函数),如果HOOK了这个,那么在进程结束前,就有机会更改结果了,可以拒绝被结束。看下图(03-15) 当你试图在任务管理器中结束狙剑的进程时,系统会拒绝你的操作,其实这并不是系统拒绝的,而是狙剑自己,由于狙剑HOOK了SSDT,所以,结束进程的工作服务员都交给他去做了,他一旦发现结束的就是他自己,那他直接告诉服务员这个进程不能结束,然后服务员就把这个结果给我们了,其实我们的这个请求并没有真的到达应该送交的部门。 而上面提到的查看进程用的NtQuerySystemInformation也在这里面,注意找一找就会发现了,如果想隐藏进程就可以把这个给HOOK了。 需要特别注意一下子“HOOK类型”,上面的显示是“HOOK”,还有一种是“Inline-HOOK”,什么是Inline-HOOK呢? 上面说过了,SSDT就像是一个标明了什么工作由哪个部门来做的表,SSDT-HOOK就是更改了这个表的指向。而Inline-HOOK呢?他并没有更改
本文档为【C语言木马源代码教程-木马查杀深度剖析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_555639
暂无简介~
格式:doc
大小:2MB
软件:Word
页数:50
分类:互联网
上传时间:2010-06-24
浏览量:18