日前笔者像往常一样打开计算机,却发现总是有人连接笔者的计算机,防火墙图标总是闪个不停。打开防火墙的日志文件一看,发现如下的连接请求:
[11:15:47]从10.X.X.X:3342接收TCP数据包,对应的本机地址为61.148.163.X:139,拦截
[11:16:16]从 10.X.X.X:4774接收TCP数据包,对应的本机地址为61.148.163.X:139,拦截
仔细观察,发现对方IP的TCP请求端口随机产生,请求连接的端口为本机的139端口,根据TCP/IP协议的分配,139端口对应的是文件与打印机共享服务。很显然对方想连接本机的共享文件,可机器中并没有共享文件呀。根据对方频繁的连接以及电脑中并无共享文件的现象,可初步判断对方不一定是在恶意攻击。那么到底是怎么回事呢?
首先用Ping 10.X.X.X命令Ping了一下对方,发现有数据包回传,证明网络通畅,然后运行NBTSTAT-NA 10.X.X.X命令,发现域名为工作组,网卡号为XX-XX-XX-XX,这一步是为了证实对方身份。然后用右键点击“网络”在查找计算机里输入对方IP,一下子找到对方(因为局域网中一台主机有路由列表,所以一下子找到了)。点击“开始”菜单中的“运行”,在“打开”栏中输入\\10.X.X.X\c$,发现对方C盘文件都列了出来。初步分析结果表明对方中了共享蠕虫病毒,病毒改写了注册表,造成硬盘被共享。
那么,共享蠕虫是怎么做到令对方浑然不知硬盘已被共享呢?大家知道,把一个目录设置为共享的时候,如果在共享名后面加上$符号,那么这个目录将变成一个隐含的共享目录,即对方的机器上看不见这个共享目录。但是如果对方知道共享目录名,仍然是可以访问的,只要在这个目录后面加上$符号就可以了。
虽然对方看不见这个共享目录,但自己是可以看见的。而共享蠕虫的狡猾之处就在于:不光是对方看不见这个共享目录,而且连本机也是看不见这个共享目录,这样就可以做到神不知,鬼不觉了。当共享蠕虫被执行后,机器就会全部被共享,而机器的主人却不知道!
要做到对方看不见很容易,只要在共享目录名后面加上$符就可以了;而共享蠕虫程序是怎么做到连自己也看不出来的呢?其实道理也是很简单的。
运行Regedit,打开注册表,找到下面的子键:
HKEY_LOCAL_MACHINE\SoftwarekMicmsoft\Windows\CurrentVersionkNetworkkLanMan\C$,在屏幕的右边,可以看见下面的内容:
“Hags”=dword:00000302//共享标志
“Parmlenc”=hex:000000000//共享目录的完全共享密码
“Parm2enc”=hex:000000000//共享目录的只读访问密码
“Path”=“C:\\”,//共享驱动器的路径,就是C:,D:等等
“Remark”=“Remark By Fwnl”//用户共享说明,可以写入一些注释信息,比如“您的硬盘被共享了”
“Type”=dword:00000000//类型属性
关键就是Flags这个参数,其键值决定了共享目录的类型。共享有如下几种类型:
(1)只读共享,无密码,Flags=Ox191(Ox表示16进制数);
(2)只读共享,需要密码,Flags=Ox101;
(3)完全共享,无密码,Flags=Ox102;
(4)完全共享,需要密码,Flags=Ox102;
(5)根据密码访问共享(只读),需要密码,与2一样;Flags=Ox103:
(6)根据密码访问共享(完全),需要密码,与4一样;Flags=Ox103。
(7)根据密码访问共享(只读和完全),须设置不同密码。Flags=Ox103;
(8)完全共享,无密码,不显示共享,Flags=Ox302。
请大家注意(5)和(6)在注册表中设置的标志与(2)和(4)不一样。
用户访问共享资源时,根据不同的情况拥有不同的访问权限。以上前7种共享,在设置之后,目录图标会发生变化,变成一个具有一只托手的图标。而第8种则不会有任何显示!
由以上分析可知,共享分类完全是由Flags标志决定的,其键值决定了共享目录的类型,当Flags=0x302时,重新启动系统,目录共享标志消失。共享蠕虫,就是利用了此特性。
Parmlenc和Parm2enc属性项是加密的密码,系统在加密时采用了8位密码分别与“35 9a 4b a6 53 a9 d4 6a”进行异或运算,要想求出密码再进行一次异或运算,然后查ASCII表可得出目录密码。由此,大家不难看出,共享密码是非常脆弱的,只要有人有机会接触您的电脑,您的共享密码就不保密了。