来自:http ://seclists.org/fulldisclosure/2009/Jul/0388.html
如果我从以下帖子中理解得最好:http: //news.ycombinator.com/item ?id= 723798 Matasano 的人离开了 sshd 互联网 - 任何建议的解决方案(从编程的角度来看)?
来自:http ://seclists.org/fulldisclosure/2009/Jul/0388.html
如果我从以下帖子中理解得最好:http: //news.ycombinator.com/item ?id= 723798 Matasano 的人离开了 sshd 互联网 - 任何建议的解决方案(从编程的角度来看)?
Matasano 是如何被黑的?
从帖子中的信息到完全披露,这是不可能回答的。然而,推测总是很有趣,因为他们确实提供了一些信息 -
他们
th3_f1n41_s01ut10n
针对连接到 ssh 端口的 Matasano 的服务器运行二进制“”。它通过一些未知的方式找到一个有效的非 root 用户,并且输出的其余部分被编辑。使用找到的用户名再次运行二进制文件,该用户名登录并连接回其服务器的 3338 端口(希望没有以他们的名义注册......)。
他们可能暗示他们对这个内核有一个 0 天,当你考虑这家公司的股票交易时,这个内核已经很老了。
哎呀-突然间,用户现在是root用户。他们在 /tmp 中有一个本地权限提升漏洞,这可能是他们提到的 0-day。
所以这里至少有两个漏洞利用——OpenSSH漏洞利用在系统上获取一个有效的非root用户,并以该用户身份登录,然后是本地权限提升。
考虑到 OpenSSH 自 4.5 版以来存在一些已知的安全问题:
从OpenSSH 的安全页面:
~/.ssh/rc
对于命令已被 sshd_config(5) ForceCommand 指令覆盖的会话,OpenSSH 4.9 和更高版本不会执行。这是一个记录在案但不安全的行为(在 OpenSSH 4.9 发行说明中描述)。我猜想拥有这个较旧的 Linux 内核和较旧的 SSH 守护程序为他们做了。此外,它在他们的 www 服务器上运行,该服务器可用于 Internet,在我看来,这是一件非常有信心的事情。闯入的人显然是想为难他们。
如何防止这些攻击?
这可以通过主动管理来防止——确保任何面向互联网的服务都得到修补,并限制可以连接的人数,而不是允许人们从任何地方连接。这一事件进一步说明了安全系统管理是困难的,并且需要业务部门的奉献精神来为 IT 提供时间来保持修补 - 实际上,这不是一件容易发生的事情,至少在较小的公司中是这样。
最好使用带大括号的方法 - 使用公钥身份验证、在 ssh 守护程序上列入白名单、双因素身份验证、IP 限制和/或将所有内容置于 VPN 之后是锁定它的可能途径。
我想我知道我明天要在工作中做什么。:)
人们喜欢在此基础上创建 FUD,但似乎他们知道用户 adam 已经在那里并且也知道他的密码(可能通过蛮力或其他方法)。然而,他们想要看起来很酷,并到处制造这种大惊小怪。
另一件有趣的事情是用户 adam 已经有一年多没有登录到那个盒子了:
(最后一个日志的输出)
所以他可能会保留那个密码(也许是一个坏密码)一段时间。
*如果他们真的有一个通过 SSH 发现用户名的工具,他们本可以使用所有其他用户来获得远程访问权限,但他们使用了该框中最常见的用户名(很容易猜到)。
为什么要从编程的角度尝试解决这个问题?
相反,您应该从智能服务器管理员的角度来解决它。您发布的链接的评论中有一些很棒的建议,例如使用白名单。
我还想补充一点,因为你在这里问,你很可能绝不是安全专家,你想写的任何东西只会增加更多的漏洞。这根本不是一个编程问题。
保护您的软件免受 0-day 攻击……这是不可能的。
也许一种好方法是声称您的软件是不可破解的,这将导致白帽尝试并完全公开所有内容,从而减少漏洞。Oracle 10 有此声明,然后在第二天发现了 9 个新漏洞。它现在相当安全。
最有可能的是,黑客滥用了完美软件的配置
让我大吃一惊的是,他们在那台机器上有这么多使用 shell 的用户。这就是他们肯定被拥有的方式,其他一切都是为了分散注意力。其中一个很可能将他们的 ssh 客户端安装在其他 shell 机器上,然后游戏就结束了。给每个人提供 shell 帐户并让 sshd 世界可以访问只是懒惰和愚蠢。