恶意SSH登录企图出现在一些管理者的日志中已经有几年的时间了。本文回顾了使用"蜜罐"(honeypot)对恶意SSH登录企图进行分析的方法,并提出了我们可以从这一活动中学到的东西。接着本文给出了关于如何使自己的系统安全面对这些攻击的建议。
使用honeypots进行研究
新西兰Honeynet(蜜罐网络)联盟是Honeynet联盟的一个成员研究机构,它致力于通过使用蜜罐技术研究黑帽子黑客(black hat hackers,指那些恶意入侵计算机或计算机网络并尽其所能进行破坏的黑客)的行为、策略和工具来提升计算机系统和网络安全。蜜罐的价值在于它们是可以公开接受攻击并被攻入的开放计算机系统,这使得研究者可以分析该系统上的恶意行为。
我们已经在惠灵顿的维多利亚大学建立起这样的系统来研究发生于新西兰大学网络上的恶意行为。该系统是一个高度互联的蜜罐,一个攻击者可以像在网络的任何其他系统上一样与之联系。在攻击者可知的范围内,蜜罐与其他计算机系统应该没有可分辨的差别。然而,所有流入和流出蜜罐的网络流量都通过Honeynet联盟的Roo honeywall严密监控。此外,系统事件也被蜜罐自身通过其日志功能进行记录。
蜜罐上运行的是标准RedHad 9服务器配置版本,带有可以通过公共互联网访问的安全外壳(Secure Shell,简称SSH)服务器。SSH是可以使得一个用户在网上通过加密通道登录到另一台电脑的程序。在过去的配置下遭遇到恶意SSH登录企图后,我们重新编配了我们的蜜罐以使其可以收集更多的数据。我们对SSH服务器打了补丁以同时记录在登录企图中使用的帐户名和密码。该蜜罐在2006年7月11日上线,在22天后的2006年8月1日下线。在这期间,该蜜罐受到了无数次的SSH登录企图攻击。我们进一步观察这些数据以确定攻击者的策略并提出提高 SSH安全水平的建议。
在该蜜罐在6月28日到7月4日运行的另一个配置上,我们增加了可以在系统被攻入后记录攻击者键盘操作的Sebek模块。我们设置了若干具有常用密码的用户帐户。几天后,一个攻击者成功进入了这一系统。在本文中给出了对这一攻击及后续攻击的分析,并提供了对恶意SSH登录企图如何被用于攻入系统的进一步分析。
对SSH登录企图的分析
这一部分分析了7月11日到8月1日我们的蜜罐捕获的数据。该分析完全基于蜜罐的系统日志文件,尤其是"messages"日志。"messages"日志记录了对SSH服务器的验证请求。它记录了日期、时间、登录企图发生的IP地址、请求的结果(失败或成功)以及验证使用的帐户名和密码。下面是两个"messages"的日志示例条目:
|
首先,我们分析了用于登录企图的用户名。在取样时间内,系统日志总共记录到2741 个不同的帐户名,包括从常见的姓氏、系统帐户名和常用帐户名到短的字符串。在这些帐户名中,15个使用频率最高的帐户名被列于表1。该表格显示有一个系统上通常存在的帐户(root,mysql)、可能存在的帐户(guest、test)以及常见的姓氏(paul)。随后图1给出了所使用过的有效与无效帐户名的分布。
所使用的无效帐户名远多于有效帐户名并不奇怪,但是我们注意到在蜜罐上存在的所有默认帐户名中96.30%都被攻击利用。
(Number of Account Names Used in Attack:攻击中使用的帐户名数量;
Number of Account Names on System:系统中的帐户名数量
Existing Account:有效帐户
Invalid Account:无效帐户)
"成功"的恶意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密码猜测工具的参考。