您被黑客入侵了,该怎么办?

发现网络攻击并阻止和恢复
    导读随着我们与Internet联系的日益密切,黑客的攻击对我们来说不再是遥远的传说,而成了实实在在发生在我们身边的事。作为一个网络管理员,我们最担心的事莫过于发现自己的网络被人攻击。从本文中,我们可以学到如何在受到黑客攻击时,尽快找出问题所在,并使一切恢复正常。

    终于到了星期五,您正准备前往您梦想的度假胜地度过一个3天的周末长假。就在您准备离开办公室的时候,有个用户抱怨说网络速度很慢,特别是访问 Internet的时候。您检查了一下,发现服务器和网络真的都慢得出奇。您检查了防火墙的通信量情况,注意到有非常大的Internet通信量。您在服务器上运行Netstat命令,发现服务器上有几个未经授权的连接,并且这些连接看起来都来自Internet。您检查服务器的注册表,注意到有几个陌生的程序被设置为自动加载。那么,现在取消您的旅行计划吧,您这个周末会有一大堆工作要做。您被黑客攻击了。     根据攻击性质的不同,有时并不容易判断出是否已受到黑客攻击。了解该检查哪些方面以及检查什么内容,能帮助您发现黑客的攻击,并且在这些攻击造成进一步破坏之前采取恢复措施。我将会告诉您从哪里查找可能会严重破坏您系统的恶意程序,我还会帮助您作出一个攻击恢复计划。我将会用三个案例来告诉您我是如何使用这些策略来帮助这些机构检测网络攻击、从攻击中恢复,并避免将来再受到攻击。
    要检查的内容
    很显然,您只有发现了黑客的攻击,才能采取措施阻止攻击并使之恢复。那么该从哪里入手呢?每一次的攻击都是独一无二的,但有些地方总是需要您首先检查的。以下是您开始搜索的关键位置。     注册表子项。如果您怀疑某台机器被黑客攻击,请首先检查它的注册表的“Run”子项。查找在这些子项中是否加载了任何陌生的程序。攻击者可以利用 “Run”子项启动恶意程序,入侵者还有可能通过这些子项启动病毒。这些子项适用于以下操作系统:Windows Server 2003、Windows XP、Windows 2000、Windows NT、Windows Me和Windows 9x。这些需要检查的子项包括:
• HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
   \CurrentVersion\Run 
• HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
   \CurrentVersion\RunOnce 
• HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
   \CurrentVersion\RunServices 
• HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
   \CurrentVersion\RunServicesOnce 
• HKEY_CURRENT_USER\Software\Microsoft\Windows
   \CurrentVersion\Run 
• HKEY_CURRENT_USER\Software\Microsoft\Windows
   \CurrentVersion\RunOnce 
• HKEY_CURRENT_USER\Software\Microsoft\Windows
   \CurrentVersion\RunServices 
• HKEY_CURRENT_USER\Software\Microsoft\Windows
   \CurrentVersion\RunServicesOnce      如果您运行的是Windows 2003、Windows XP、Windows 2000或Windows NT系统,您还需要检查“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion \Policies\Explorer\Run”子项。     任何您无法识别的程序都有可能是黑客程序。您可以用Google或者类似的搜索引擎在Internet上搜索程序名,以确定程序是否合法。您需要特别留意从“C:”、“C:\Windows”和“C:\Windows\System32”加载的程序。强烈建议您养成定期复查这些注册表项的习惯,这样您会熟悉自动加载到您计算机上的所有程序。     下面的一些子项较少被用来启动黑客程序,但您还是需要检查它们。这些子项适用于所有Windows操作系统。如果缺省的注册表项的值不是"%1" %*,那么这个程序很可能是个黑客程序。
• HKEY_CLASSES_ROOT\batfile\shell\open\command 
• HKEY_CLASSES_ROOT\comfile\shell\open\command 
• HKEY_CLASSES_ROOT\exefile\shell\open\command 
• HKEY_CLASSES_ROOT\htafile\shell\open\command  
• HKEY_CLASSES_ROOT\piffile\shell\open\command 
• HKEY_LOCAL_MACHINE\SOFTWARE\Classes\batfile
  \shell\open\command 
• HKEY_LOCAL_MACHINE\SOFTWARE\Classes\comfile
  \shell\open\command  
• HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile
  \shell\open\command  
• HKEY_LOCAL_MACHINE\SOFTWARE\Classes\htafila
  \shell\open\command 
• HKEY_LOCAL_MACHINE\SOFTWARE\Classes\piffile
  \shell\open\command 服务。对于所有的Windows操作系统,检查它们的“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services”注册表子项。这个子项下的项目指定了计算机上所定义的服务。我建议您直接在注册表中查看服务而不是使用Windows的“服务”图形界面来查看,因为一些服务(例如类型为1的服务)并不显示在“服务”图形界面中。同样,还是要检查您无法识别的程序。如果可能的话,请与一台您已知并未受到黑客攻击的机器的Services子项对比它的各项以及对应的值,看是否有任何不同之处。     “启动”文件夹。检查“C:\Documents and Settings\All Users\Start Menu\Programs\Startup”和“C:\Documents and Settings\

     DMZ中的IIS攻击
     我的一个客户打电话给我,他说用户无法访问Windows 2000 Server系统的某些文件夹。当我发现某些文件夹的全部权限都被去掉时,我怀疑有人攻击了系统。
     鉴别黑客攻击。我打开微软管理控制台(MMC)和“Active Directory用户和计算机”管理单元,并查看其中的用户账号。有人创建了恶意的用户账号并放在Administrators组中。我知道是有入侵者攻击了网络,因此我关闭所有外部连接,并开始查找被攻击了的计算机。没花多长时间我就找到了它。我的客户在非军事区(DMZ)有两台Web服务器。其中一台服务器上面放的是公司的网页,另一台运行计时软件。我检查了两台机器注册表的Run子项,并调查了它们C盘上可疑的批处理文件,发现运行计时软件的服务器被严重攻击了。它带有多个Root Kit的恶意FTP和SMTP程序。该服务器连接到LAN中的一台Microsoft SQL Server系统,只允许SQL Server的通信从DMZ传送到LAN。这台服务器运行的是Windows 2000和Server Pack 2(SP2),许多关键的Windows 2000更新都没有安装。
     修复破坏。我重新安装了这台服务器,将它移到了防火墙的LAN一侧,限制了对它的公共访问。然后我重新连接外部线路,并密切监测是否还有可疑的活动。 
     经验教训。在您把一台可被公共访问的服务器放在DMZ之前,请与软件供应商确认该服务器上运行的任何程序都是可以安全地被公共访问的。请将所有服务器(不仅仅是DMZ中的服务器)的Service Pack和关键补丁程序都保持更新。确保应用程序使用SQL服务器集成的安全性,并且不要在它们的代码中使用连接字符串与SQL服务器连接。如果在Web服务器的代码中嵌入连接字符串,将会直接将有效的用户名和密码提供给入侵者。要了解更多关于从Web服务器建立SQL服务器连接的信息,请参考微软知识库文章“Recommendations for Connecting to Databases Through InternetInformation Services”(http://support.microsoft.com/?kbid=258939)。请确保Microsoft IIS使用存储过程访问SQL服务器的数据,不要让IIS服务器运行SQL语句。这样做可以只对授权的用户赋予对特定的存储过程的执行权限,从而可以限制该用户在SQL服务器上运行任意的SELECT语句。

     VPN客户端攻击
     第二个客户是Exchange 2000 Server机器在收发邮件时遇到了备份问题,并且服务器性能很低。我到达现场后发现问题远远要比磁带机失效和服务器太慢严重得多。那台服务器有大量的磁盘活动,CPU利用率也很高。我打开Windows任务管理器并按照CPU利用率对进程进行排序。Store.exe占据了绝大部分的CPU时间。这个公司并没有很多的电子邮件用户,而且当时只有15个用户与服务器连接。在用户这么少的情况下,Exchange不应消耗如何之多的资源。我怀疑邮件存储被破坏了。
     鉴别黑客攻击。我启动了Exchange系统管理器(ESM),并选择“管理组”*“<管理组名>”*“服务器”*“<服务器名>”*“协议”*“SMTP”*“缺省SMTP虚拟服务器”*“当前会话”。我注意到有6个会话与SMTP虚拟服务器连接,并且连接时间超过了5分钟,这说明服务器出了问题。通常情况下,Exchange服务器的会话只会持续几秒钟,除非有个连接正在发送或接收很大的附件。我查看了缺省SMTP虚拟服务器上的队列,发现有超过50个队列,它们都处于不同状态(发送邮件或等待重试)。有人正在将该邮件服务器用作中继,但他是怎么做到的呢?该服务器已经装上了最新的Service Pack(Windows 2000 SP4和Exchange 2000 SP3)和最新的关键更新,所以我使用Open Relay Database(ORDB)的测试(http://www.ordb.org)来确保中继已被关闭,该测试可以检查所提交的主机系统是否开放了中继。
     每当我试图清除一个与缺省SMTP虚拟服务器的连接时,该连接都会重新出现,使用的是不同的域名但是有相同的IP模式。我用IANA跟踪这些IP地址,发现它们来自分配给中国某家ISP的地址段。在确认服务器并没有开放中继后,我得出了结论,有人可能通过了服务器的验证,从而用它发送邮件。备份失败的原因是它试图备份垃圾邮件者发送的所有邮件。我打开“Active Directory用户和计算机”管理单元,并删除所有无效的用户。我还注意到Administrators组中有未授权的用户,也把它们删除。然后我检查了注册表,并没有找到有任何黑客程序通过“Run”子项加载。我还对服务器运行了病毒扫描,服务器并未被感染。
     为了阻止垃圾邮件发送者继续发送消息,我将防火墙与Internet断开,然后删除Exchange服务器上的所有活动会话。我试图使用ESM删除邮件队列中的消息,但这样要花的时间太长。所以我停止了所有Exchange服务,打开命令提示符,用Del命令从D:\exchsrvr\mailroot\vsi 1\queue目录删除所有消息。在我停止Exchange服务的时候,服务器的性能马上大幅度提高了。尽管如此,删除10,000条排队的消息还是花了我1个多小时。然后我查看位于D:\exchsrvr\mailroot\vsi 1\badmail的badmail目录,并且用了8个多小时删除所有这些消息。最后,我更改了网络中所有用户的密码,并在防火墙上创建了一条规则,禁止所有来自那个垃圾邮件发送者所处的IP段的通信。在完成这些更改之后,我将防火墙重新连接到Internet上并对服务器进行监测。垃圾邮件连接没有再次出现。该网络有几个远程站点使用了VPN隧道。在其中一个远程站点,我发现了有台远程机器包含这些黑客程序:Bat.Mumu.A.Worm、Hacktool、W32.Valla.2048、W32.HLLW.Lovgate.J@mm、Bat.Boohoo.Worm和MSBlast。
     我的客户告诉我这台计算机24小时运行,并且VPN隧道一直保持活动状态。在这样的情况下,迟早都会有人对该机器进行黑客攻击。我始终建议将远程客户端放在防火墙的后面,特别是如果它们使用宽带连接的话。如果您运行的是Windows XP并使用拨号连接或无线连接,请确保在连接到Internet时,使用XP的Windows防火墙(以前叫做Internet连接防火墙——ICF)来保护您的计算机。修复破坏。我重装了这台工作站,把它放在SonicWALL的TELE3防火墙后面,让防火墙创建与公司办公室连接的隧道。这个客户算比较幸运了,因为入侵者只用他的服务器发送垃圾邮件,实际上入侵者有可能造成更大的破坏。
     经验教训。由于这次的黑客攻击,该公司不再允许客户端机器在宽带连接下,不使用防火墙就使用移动式的VPN客户端。如果您有远程站点使用VPN隧道和宽带连接,请安装防火墙,或者至少对用户进行培训,让他们在不使用计算机时关掉它。另外还要确保每位用户知道如何在不使用VPN隧道时取消激活它。

     Exchange服务器的SMTP AUTH攻击 
     第三个客户的Internet连接由于Internet通信量很大所以运行得很慢。而当我让所有用户与Internet断开后,通信量仍然很大。我查看了Exchange 2000 server上的外出队列,发现有100个以上的队列,每个队列中都有非常大量的消息。我用ESM随机检查了几个队列,发现这些消息的发送人或接收人都不是来自本地域的,这意味着邮件服务器很可能被用作邮件中继了。在缺省情况下,如果消息发送人能够成功通过Exchange 2000(或之后的系统)的验证,那么该邮件服务器是允许进行中继的。
     鉴别黑客攻击。黑客可以使用两种不同的方法来获得有效的用户名和密码。他们可以重复地猜测Guest账号或用户的密码,直到发现正确的密码;或者他们也可以发起黑客攻击,以获得有效的用户名和密码。垃圾邮件发送者只需要一个有效的用户名和密码就可以中继邮件,哪怕邮件服务器并没有开放中继。为了确定垃圾邮件发送者正在使用什么账号,我打开了ESM并单击“组织”*“管理组”*“组织单元”*“服务器”,然后用右键单击服务器名,选择“属性”。然后我选择“诊断日志”标签。在“服务”窗口中,单击MSExchangeTransport。然后在“类别”窗口中,我将以下类别的日志的级别增加到最大:路由引擎、分类器、连接管理器、队列引擎、Exchange存储驱动程序、SMTP协议和NTFS存储驱动程序。随后我检查了事件日志,查找来自外部邮件服务器或未知的邮件服务器的验证。失败的登录尝试将会显示在安全日志中,它的事件ID是680。我发现入侵者使用了非本地Exchange服务器账号的用户账号来对邮件服务器进行验证。
     修复破坏。当我找出了验证账号之后,我采取了下列步骤来保护Exchange服务器。
     1. 我更改了垃圾邮件发送者所使用的账号的密码。在类似的情况下,如果您认为垃圾邮件发送者可能有多个有效的用户ID和密码,那么更改您网络中所有用户的密码。我还禁用了Guest账号,并为启动服务器上的服务设置了专用的账号。不要使用管理员账号启动服务。如果一台机器被黑客攻击了,用来启动服务的账号可能也会不安全。
     2. 我禁用了对外的Exchange服务器上的验证。为了禁用它,我打开ESM,选择“组织”*“管理组”*“组织单元”*“服务器”*“<服务器名>”*“协议”*“SMTP”,然后用右键单击缺省SMTP虚拟服务器。我选择了“属性”,单击“访问”标签,然后单击“验证”。我保留了匿名访问的启用,但是清除了“基本验证”和“集成Windows验证”校验框。清除这些校验框从根本上对SMTP服务器禁用了Auth命令。 
     3. 我在其它的内部Exchange服务器上启用了中继,以确保它们可以向对外的Exchange服务器发送邮件。我打开ESM,用右键单击虚拟SMTP服务器,然后选择“属性”。在“访问”标签中,单击“中继”,选择“只允许以下列表”,并填入允许向对外服务器中继邮件的内部邮件服务器。
     4. 完成这些更改后,我彻底测试了一遍这些配置。我测试了发往Internet和从Internet发回邮件,以及发往机构内的所有邮件服务器和从这些服务器发出邮件。这些更改有可能会使服务器之间的邮件流通陷入混乱,因此您可能会希望等到周末才更改。另一个更好的办法是,在将这些更改应用到实际环境中之前,先在实验环境中进行测试。
     5. 在这一事件中,我发现一台机器被严重地攻击了,因此我将它完全重装了一遍。在您可能遇到的情况中,您需要找出所有已被攻击的机器,然后将它们修复或者重装。     6. 我检查了ORDB以确定该客户的邮件服务器是否被列入了开放中继的黑名单。很幸运,我在客户的邮件服务器被列入黑名单之前就发现并修复了黑客的攻击。如果一台邮件服务器开放了中继,或者该邮件服务器被认为大量发送垃圾邮件,它可能会被列入黑名单。有许多开放中继的数据库,您可以从http://dmoz.org/computers/internet/abuse/spam/blacklists查看到一系列这样的数据库。如果您的邮件服务器被列入黑名单,您可以发送请求来将服务器从黑名单删除,您也可以更改您邮件服务器的外部IP地址。如果您更改了邮件服务器的地址,您还必须更新邮件服务器的Mail Exchanger(MX)记录,否则发进来的邮件会被阻止。
     经验教训。要修复对Exchange服务器的SMTP AUTH攻击,并预防未来的攻击,强烈建议您使用我所采取的步骤。如果入侵者获得了有效的用户ID和密码来进行邮件中继,您的邮件服务器将被纳入许多邮件黑名单中。预防这些攻击所要花费的时间,比起排除邮件传递的故障、将服务器从黑名单删除,以及修补漏洞所要花费的时间要少得多。
    不要惊慌;随时做好准备     攻击恢复计划是任何合理的IT结构的一个组成部分。它能够帮助您有效地对网络攻击作出反应,而不是惊慌失措。请熟悉恶意入侵者所使用的工具和方法,并提前采取措施来防止他们对您的网络进行攻击。

,

分享到