第11章Windows系统攻击 第11章Windows系统攻击11.1NTFS11.2系统口令攻击11.3SMB/NetBIOS协议攻击11.4WindowsNT/2000权限提升11.5攻击SQL服务器11.6WindowsNT/2000溢出攻击11.7WindowsNT/2000日志删除11.8小结第11章Windows系统攻击 11.1NTFS11.1.1创建ADS创建ADS的语法相对比较简单和直接。比如说创建和文件myfile.txt相关联的ADS,只需简单的用冒号把文件名和ADS名分开即可。D:\204echoThisisanADSmyfile.txt:hidden这样我们就创建了一个和文件myfile.txt(不管是否存在myfile.txt文件)相关联的交换数据流hidden,要查看文件流hidden的内容可以使用more命令来实现。第11章Windows系统攻击 D:\204moremyfile.txt:hiddenThisisanADS此外,ADS也可以用另外一个文件的内容来创建。D:\204echoThisisatestfiletest.txtD:\204typetest.txtmyfile.txt:hidden然后,用记事本去查看一下是否能看到交换数据流hidden的内容,命令如下:D:\204notepadmyfile.txt:hidden不管是用dir命令还是用资源管理器去查看,都看不出原文件有任何变化,也没有任何可用的转换工具和系统设置来检测这种新建的ADS的存在。第11章Windows系统攻击 ADS还可以与目录列表相关联,而不是与一个文件关联。后面我们将介绍这种特性的重要性。D:\204echoThisADSistiedtothedirectorylisting:hidden这种类型的ADS也可以通过type和notepad命令来创建。ADS文件的内容并不只限于文本(text)数据,任何二进制信息的流都可以组成一个ADS文件,而且ADS也就是一个文件而已。可执行的东西也能够相当容易地隐藏在ADS中,例如:D:\adstyped:\winnt\notepad.exemyfile.txt:np.exeD:\adstyped:\winnt\system32\sol.exemyfile.txt:sol2.exe第11章Windows系统攻击 同样,像图片文件、声音文件或任何其他的数据流都可以隐藏在ADS中。昀后,WindowsExplorer还提供了一种手段来创建特殊的ADS。用户打开资源管理器,选择一个文件,然后用鼠标右击该文件,选择“属性”→“摘要”标签,如图11-1所示。第11章Windows系统攻击 图11-1属性对话框的“摘要”标签第11章Windows系统攻击 图11-1中各属性实际上也都是以交换数据流的方式存在的。你可以添加任何内容到这些属性当中,而原文件大小始终都不变。因此,ADS是依附在其他文件之上,并没有自己的属性。一般来说,如果某个用户没有写文件的权限,那么他就不能在该文件上添加ADS。此外,Windows文件保护功能可以防止系统文件被替换,但是它不能阻止有适当权限的用户在这些系统文件上添加ADS,系统提供的工具SystemFileChecker(sfc.exe)可以检查受保护系统文件是否被覆盖,但它不能检测ADS。第11章Windows系统攻击 11.1.2检测、查看和利用ADS如前所述,微软并没有提供工具来检测ADS的存在。因此,我们只有使用第三方工具来检测ADS。昀好的工具是由FrankHeyne()编写的Lads.exe。这个工具现在的版本是4.00,它是一个命令行工具,如图11-2所示利用lads工具检测ADS的存在。第11章Windows系统攻击 图11-2利用lads工具检测ADS的存在第11章Windows系统攻击 lads.exe不仅可以显示ADS的存在,还可以显示ADS的路径和大小。和myfile.txt相关联的五个文件,其中,以很像扑克牌中黑桃形状的ASCII码开头的和另外一个(在花括号中有一大串数字和字母的那个文件)就是用图11-1所示方法创建的。1.查看ADS要查看ADS文件的内容可以使用记事本(notepad)工具,但是必须注意ADS的扩展名。例如,用以下命令可能得不到我们希望的结果。D:\204notepadmyfile.txt:hidden第11章Windows系统攻击 执行这个命令时,notepad会询问你是否创建一个新文件,虽然myfle.txt:hidden已经早就创建了。为了保证执行的结果是我们所希望的,应该输入下面的命令:D\204echoThisisanotherADSmyfile.txt:hidden.txtD:\204notepadmyfile.txt:hidden.txt也就是说,文件名后增加的扩展名必须是notepad能认识的,才能打开ADS,这种方法同样也适用于其他的ADS,例如(看到的内容来自二进制文件nopetad.exe):D:\204notepadmyfile.txt:np.exeADS是NTFS文件系统的特征,所以带有ADS的文件如果被移动到其他的文件系统,比如FAT,FAT32或者ext2上,ADS就会被删掉,因为这些文件系统都不支持ADS,如果是在NTFS分区(包括映射的NTFS驱动器)之间移动,ADS就会被保留下来。第11章Windows系统攻击 2.删除ADS删除ADS相对简单,用下面的命令即可(假定文件myfile.txt带有交换数据流):D:\204typemyfile.txtmyfile.batD:\204delmyfile.txtD:\204renmyfile.batmyfile.txt如果ADS关联的是一个目录,那么上述方法就不适用了。例如,如果需要删除c:\Windows:harmful.exe,可以使用下述技巧来实现(如果使用的是NT5.x,那么请从NT4拷贝一个Notepad.exe!)。第11章Windows系统攻击 (1)用Notepad打开ADS,即D:\NT4Tools\Notepad.exed:\Windows:harmful.exe;(2)删除ADS的全部内容;(3)关闭notepad,它会提醒你“是否保存改变?”;(4)回答YES;(5) Notpad会告诉你文件是空的,ADS已经被删除。现在用lads.exe检查一下,可以看到所有的ADS都不见了。第11章Windows系统攻击 3.执行ADS前面的例子中,我们已经把可执行的代码藏在ADS中,这个看起来好像没什么用处,除非代码可以自动执行。其实,start命令就可以用来执行这些代码。现在我们再来创建ADS。D:\204typed:\winnt\notepad.exemyfile.txt:np.exe在NT系统上,只要执行下述命令就可以了:D:\204startmyfile.txt:np.exe但在Windows2000上执行时会出现错误,这是因为我们提供的路径信息不够。所以,我们应该指明路径,不管它是绝对路径还是相对路径。例如,下面的任何一个命令都可以。第11章Windows系统攻击 D:\204startd:\204\myfile.txt:np.exeD:\204start.\myfile.txt:np.exe是不是出现了记事本?当执行这条命令后,我们查看所运行的进程情况会发现一个比较有意思的现象。例如,运行pslist.exe()查看所运行进程,结果如图11-3所示。第11章Windows系统攻击 图11-3plist.exe执行结果第11章Windows系统攻击 其中,出现了进程名为myfile.txt的进程。从Windows任务管理器中也能发现该进程,但是都隐藏了真正的原进程名字,如图11-4所示。第11章Windows系统攻击 图11-4任务管理器中的myfile.txt进程第11章Windows系统攻击 用来隐藏文件流的另一种方法是快捷方式(Shortcut)。先在桌面上创建一个快捷方式,项目位置填入d:\myfile.txt。假设创建的数据流文件是sol2.exe(也就是用命令typed:\winnt\system32\sol.exemyfile.txt:sol2.exe创建的),现在到创建的快捷方式的属性里修改,让快捷方式指向d:\myfile.txt:sol2.exe,观察一下快捷方式的图标变化。双击这个图标,就可以执行这个文件了。执行后的结果如图11-5所示。第11章Windows系统攻击 图11-5利用快捷方式启动ADS第11章Windows系统攻击 还有一种比较简便的方法是,在注册表中的run键或者Windows启动目录下添加数据流文件的完整路径:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run这样下次系统启动时就会自动运行该隐藏文件。对于使用perl的管理员,可用下面的代码执行ADS:my$file='d:\204\myfile.txt:sol2.exe';`$file`;第11章Windows系统攻击 把文件存为ads.pl,用下面的命令即可执行:d:\perlads.pl其实用Windows的WSH(微软脚本宿主程序,Windows2000自带)也可以执行ADS:d:\204echoMsgBoxVBSfiletotestADSsads.vbsd:\204wscriptads.vbs//弹出对话框然后,创建ADS:第11章Windows系统攻击 d:\204typeads.vbsmyfile.txt:ads.vbsd:\204wscriptmyfile.txt:ads.vbs//弹出对话框或为D:\adsstart.\myfile.txt:ads.vbs//弹出对话框执行结果如图11-6所示:第11章Windows系统攻击 图11-6WSH脚本程序启动第11章Windows系统攻击 如果隐藏在ADS的脚本不是以 .vbs作为扩展名的,WSH将提示你没有处理该扩展名的引擎。例如:d:\204typeads.vbsmyfile.txt:ads.txtd:\204wscriptmyfile.txt:ads.txt//执行该命令导致出错消息这种情况下,可以使用wscript.exe的开关项,来控制程序的运行。例如输入wscript/?可以得到该命令的帮助信息,如图11-7所示。第11章Windows系统攻击 图11-7wscript/?帮助信息第11章Windows系统攻击 其中“//E”开关允许用户指定要使用的脚本执行引擎。因此,我们可以使用下述命令来解决上述问题:d:\204wscript//E:vbsmyfile.txt:ads.txt下面我们可以把各条命令组合成一个perl脚本程序了。我们以图11-2中名为“SummaryInformation”的ADS为例,通过程序代码产生ADS并执行它。下述Perl代码就可以做到这点:my$file=d:\\204\\myfile.txt:.chr(5).SummaryInformation;第11章Windows系统攻击 my$src='d:\\204\ads.vbs';`type$src$file`;`wscript//E:vbs$file`;11.1.3ADS利用实例分析1998年在低版本的IISWeb服务器上发现了$DATA漏洞,它允许入侵者查看感兴趣的目标网站上文件的源代码。例如,你想获取