阻击黑客利用第三方软件漏洞发起的攻击

  • 来源: 赛迪网 作者: 李祥敬   2009-03-16/14:16
  • 利用漏洞的攻击是让网管员非常头疼的一类攻击。该如何预防此类攻击呢?

    提高防范意识

    管理员通常比较注意微软发布的Windows漏洞,并会及时地为系统安装补丁程序,但系统上运行第三方的服务程序却常被忽略。比如前一段时间Serv-U服务远程溢出漏洞就让很多服务器成为黑客的“肉鸡”。

    系统中运行的远程访问或数据库服务等,都在不同程度上存在有漏洞,管理员应该同样关注这些第三方的服务程序,注意厂商发布的漏洞,并及时地安装补丁或升级服务程序。此外,还有一类漏洞存在于处理文件的应用程序中,如微软的Word文档、图形文件、Adobe的Pdf文档、Realplay的视频文件等。当管理员打开这些带有恶意溢出代码的文件时,系统就为黑客敞开大门了。

    对付这类漏洞,首先需要管理员提高防范意识,同时也要求普通用户不要轻易打开来历不明的邮件,并及时安装相应的补丁文件。

    一个简单有效的办法就是严格控制服务器上安装的程序,保证服务器的简洁性,关闭不需要的系统服务。

    注意异常连接和系统日志

    有种错误认识,认为系统安装了防火墙和防病毒程序就能有效地防御针对漏洞的攻击。但从TCP/IP分层结构来考虑,防火墙是工作在传输层的,而漏洞溢出攻击的代码往往是针对应用层的程序,因此对这类攻击是无法检测的。

    防火墙的特性是它能够对所有进出的连接加以控制,仅依赖防火墙的默认配置规则是不够安全的。管理员需要制定严格的访问规则,仅打开需要对外提供服务的端口。这样即使黑客能够通过漏洞打开系统的某个端口,但由于该端口受防火墙的阻挡,黑客也无法建立连接。

    还有些攻击程序是端口反弹型的,程序会在溢出后主动连接黑客计算机上的某个端口,这样黑客就能通过一个反向的连接来控制被攻击的计算机。一般情况下,防火墙对进站连接的控制较严,而对于出站连接的管理较松,因此,黑客常常能成功实施攻击。所以,当发现异常的出站连接时,管理员需要认真分析,找出发起连接的进程,检查进程的用户名和连接的目的端口(如使用Process Explorer程序),结合经验判断是正常的连接还是非法的反向连接。

    当发生溢出攻击时,服务程序会出现意外错误,管理员还可以通过检查应用程序的日志记录,了解错误发生的来源、频度、时间、类型等详细内容,依此判断是否遭受攻击。

    合理限制服务程序的权限

    当黑客利用漏洞成功溢出后,得到一个远程连接的Cmdshell,这个Cmdshell的权限往往继承了被溢出的服务程序的初始权限,而大部分服务都是运行在系统的System账户权限下的,该账户的权限甚至超过系统中的Administrator账户。也就是说,如果溢出成功,黑客将成为系统中的管理员。

    虽然很大一部分系统内置的服务程序需要以System账户权限启动,但也有不少服务程序可以选择启动时的用户账户。对于这样的服务程序,我们可以在系统中建立一个较小权限的账户,并使用该账户启动服务程序。这样即使出现了漏洞,黑客也只能得到一个较小权限的Cmdshell。

    修改应用程序的安全属性

    当黑客得到一个较小权限的Cmdshell,往往不会善罢甘休,可能通过上传一个本地溢出的攻击程序进一步扩大其权限。所以说,即使是较小权限的Cmdshell也是危险的。那么,我们该如何阻止黑客得到Cmdshell呢?

    我们可以从提供Cmdshell环境的“cmd.exe”文件入手,通过修改Cmd的安全属性来阻止黑客。

    在NTFS文件系统中,可以为不同账户设置不同的应用程序的权限,这里通过添加一个最小权限的账户来限制cmd命令的使用。

    (1)添加账户

    使用命令“Net user hidden$ /add”添加一个属于“users”组的“hidden”账户。同时为“hidden”账户设置足够强壮的口令。

    提示:在账户名后加“$”符号可以建立隐藏账户,该账户在命令“net user”下不显示。

    (2)修改cmd.exe的安全属性

    在Windows的System32目录下找到“cmd.exe”文件,右键单击文件,在文件的“属性”中选择“安全”栏目,删除如图1所示的所有用户具有的权限。然后添加“hidden”用户,并分配权限,如图2所示。

     

    图1

     

    图2

    这样,就只有隐藏的“hidden”用户才有权使用“cmd.exe”文件,黑客即使得到了System账户的权限也无法使用“cmd.exe”文件。

    这样,黑客就不能通过Cmdshell进行破坏了,但这并不能完全阻止他。

    高明的黑客可以在溢出程序的代码中添加以下指令“net user hack 123 /add ”、“net localgroup administrators hack /add”,当溢出成功后,黑客就为自己在管理员组中添加一个口令为“123”的“hack”账户。同样,黑客通过指令还能启动Telnet服务、终止杀毒软件进程或下载木马文件。因此,我们还需要用上面的方法修改System32目录下面的“net.exe”、“net1.exe”、“ftp.exe”、“tftp.exe”这些文件的权限。

    注意:为什么采用这种复杂的方法而不是直接将这些程序改名或删除呢?这是因为这些文件是受Windows系统保护的,用户无法直接删除,即便删除后系统也会重新生成。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多