Posted on 2008-07-30 08:34
wxwk 阅读(531)
评论(0) 编辑 收藏 引用
"成功"的恶意SSH登录企图
在上面的部分中,我们分析了对于没有成功的恶意SSH登录企图数据的记录。这些数据可以使我们进一步理解这些攻击者如何操作,但是还有很多问题没有解决,其中之一是这些攻击中是否使用了工具软件。
7月2日,有一名攻击者通过猜测出一个SSH上的有效帐户名/密码成功地侵入了蜜罐。在这一事件中捕获的数据揭示了这些问题的答案。
首先我们观察了该黑客成功入侵蜜罐后进行的操作。确定了有效的帐户名/密码后,该黑客通过SSH登入蜜罐并继而下载了一个SSH扫描工具。在下面一节将更详细地介绍该工具,这里我们先将其总结为一个可以允许其使用者通过猜测密码的尝试识别并入侵其它SSH服务器的工具。这一工具安装后立刻被用来从我们的蜜罐中扫描B类网络。由于Roo honeywall对于向网络外部的连接施加的限制,该SSH扫描工具并未发现任何SSH服务器。
在最初的扫描后,攻击者继续下载并安装一个IRC僵尸(IRC Bot)。IRC僵尸是可以在远程通过IRC聊天通道控制一个被入侵的系统的工具,其中被入侵的系统被设定为可以通过该通道被监听。使用IRC来控制一个被入侵的系统比直接使用SSH要隐蔽得多,因为此时攻击者不再需要直接登入系统。此外,它还使得攻击者可以同时控制多个这样的系统(它们被称为Zombies,还魂尸)。
IRC通道中的会话表明,Zombies被用于使用类似于被下载到我们的蜜罐上那样的SSH扫描工具扫描B类网络。在几个小时的时间里,有4个B类网络被来自不同IRC僵尸的SSH扫描工具扫描。一次扫描大约需要700秒的时间完成。此外,我们还目睹了一个帐户名/密码列表与160,324个不同的帐户名/密码组合之间的信息交换。这些帐户名与密码的结构与对我们的蜜罐系统进行攻击时使用的那些非常相似,但比它们范围更广。
分析总结
从这些被我们的蜜罐记录的数据中我们可以得到什么?SSH是一种可以通过安全、加密的方式在网络中访问一台电脑的方法,已经被广泛接受。然而,尽管其在安全方面名誉很好,在一台电脑上操作SSH仍然会面临威胁。如我们在本文中所示的那样,密码猜测显然是威胁之一。仅SSH服务器正在运行并可经互联网连接这一事实就吸引了23次来自独立IP的攻击,在22天内我们的蜜罐共受到6,899次登录企图。这相当于大约平均每天1次攻击、约300次登录尝试。一些攻击者的攻击非常执着,在每次攻击中执行了上百次登录尝试。
扫描工具的数据记录显示有非常强有力的工具被使用。它们十分灵活并且可以使用用户定制的帐户名/密码列表进行攻击。如果一个攻击者想攻击一个特定的域,他们或许可以通过社会工程获取帐户名,然而将这些帐户名于将在攻击中使用的标准密码组合。通过观察一个IRC僵尸通道,我们发现攻击者们将扫描工具与IRC僵尸计数结合来通过Zombies(攻击者通过远程通道控制的被入侵的系统)进行扫描。
与一系列IRC僵尸结合后,一个攻击者只需要525个Zombies就可以在1天内扫描当今公共互联网的整个IP4。如果你有一个可以被公开访问的SSH服务器,你很可能就会成为这些攻击的目标。
安全建议
有很多简单的方法可以防范这些攻击。最显而易见的方式就是关闭在很多系统中被默认安装的daemon服务。如果一个计算机系统被作为桌面电脑,很可能没有必要用通过SSH的远程访问登入该电脑。如果该方式对你不适用,还有很多其他的选择:
·使用大多数Unix和Linux系统中的/etc/hosts.allow和/etc/hosts.deny文件限制对特定主机的daemon访问。
·安装一个防火墙以限制只允许指定的电脑与网络访问SSH服务器。这在来自内部网络一台电脑的管理员必须对该电脑远程操作时尤其适用。
·限制SSH服务器只允许经过验证的特定用户和组登录。
·将SSH服务器监听端口从22调整到其他未被使用的端口。尽管这样做不会阻止攻击者连接到服务器并开始猜测密码,但它会显著降低发现你的SSH daemon的可能性,因为黑客使用的是标准SSH客户端而且假定SSH服务器的攻击工具是运行于标准的22端口上的。
·除了简单的密码外使用其他验证方法。下面有关于这点的更多介绍。如果你无法选择这一方法,确保正在使用的密码或验证短语安全程度高而且是比较复杂的。
SSH提供了另一种可以成功地减少密码猜测攻击的验证方法。这一验证方法是基于密钥的,或者说是所谓的私钥与公钥。公钥被置于服务器端作为访问你的帐户的用户锁。该锁只能被对应的私钥开启。一旦你提供了该私钥,你就可以获得访问权限。由于攻击者无法猜测或生成这一私钥,密码猜测攻击将失败。所有流行的SSH服务器默认状态下都被设置为支持这一验证方法。然而,它们通常在提供的私钥错误时重新回到基于密码的验证过程,这再次为密码猜测攻击提供了方便。为使这一降低风险的策略成功,这些服务器需要被重新设定为只接受基于密钥的验证。
建立使用密钥的SSH十分简单,只需要几分钟的时间。先前Brian Hatch的文章已经谈及了关于个人用户和SSH服务器间安全访问的SSH用户身份。SSH主机密钥保护一文中提供了关于每台服务器所生成的主机密钥的更多信息。如果使用SSH密钥,读者可能希望获得更多SSH于ssh-agent的例子以便更快更容易地通过SSH登录。
在一些例子中,对一个SSH服务器基于密码的验证或访问无法被禁用。在这种情况下,需要采用其他措施。我们已经看到攻击者猜测帐户名并且对现有系统的帐户以及在通常的计算机系统中的帐户了如指掌。如果该攻击者可以猜到系统中存在的一个帐户名——对于我们的蜜罐,在Redhat蜜罐系统中96.30%的默认帐户名被猜到——则该攻击者已经在该电脑的门口踏入了一步。因此,我们建议不要使用很容易被猜到的帐户名,例如那些常见的姓氏。不要使用"Peter"、"Ian"、或"Mark",而是建立包括有姓和名的组合的帐户名,例如"seifer_chr"。这可以通过控制帐户名分配的管理员做到。
此外,我们已经看到"root"帐户是在攻击中使用最多的帐户名,因为它通常都存在于计算机系统中。我们建议禁用该帐户的远程访问权限,取而代之的是管理员应该先通过一般用户帐户再使用"su"(超级用户指令)获得该root帐户的权限。
攻击者经常试图猜测在大多数系统上默认存在的长湖,例如ftp和mysql。如果shell外壳与这些帐户关联,那么只有通过这些帐户才能访问外壳。对于ftp或mysql这样其存在只为运行电脑上某服务的帐户,外壳是不需要的并且应该被禁用,这可以有效地阻止通过SSH使用这些帐户远程登录。
除了使用无法被猜到的帐户名外,使用安全性强的用户密码也是很重要的。我们已经看到在攻击中使用的密码通常与帐户名相同或者是帐户名加上一些数列。我们推测攻击者们选择这些密码因为它们在恶意登录企图中是最"成功"的。这表明至少有些用户将他们的密码设置为这些很容易被猜到的字符串。系统管理员阻止用户选用这样的密码的唯一方法是通过安装各种工具软件(例如passwd )强制用户使用安全性高的密码。
攻击者们正在使用工具进行密码猜测和登录尝试,例如被记录的扫描工具、QT和55hb。然而,尽管有这些工具存在,由于SSH服务器端内置的对于失败登录企图的故意延迟以及各种网络延迟,登录尝试的最短平均时间也需要约2秒。尽管这提供了对于暴力攻击的防范,对于安全性差的帐户名和密码只需要少数几次尝试与猜测就可以侵入系统。以上所描述的安全措施应该被安装以保证安全工作的广泛与深入。
未来的工作
我们的分析是基于我们的蜜罐捕获的数据进行的。我们无法确定这些攻击对于网络上可以找到的系统成功的概率有多大。为了确定成功率,我们需要将这些攻击中使用的帐户名/密码组合与在真实系统中存在的帐户名/密码组合进行比较。此外,我们提出了将SSH服务器监听端口改到其他未占用的端口。我们需要建立这样配置的系统以评估其有效性。
关于作者
Christian Seifert是新西兰Honeynet联盟的成员。
致谢
感谢Jamie Riden提供降低密码猜测风险的策略以及对实际SSH密码猜测工具的参考。