Mac OS X Lion 的登录密码漏洞

Defence in Depth 发现了一个 Mac OS X Lion 下的安全漏洞,使得任何能接触到已经登录的 Lion 的人都可以通过一个简单的命令更改当前用户的登录密码,且这一过程并不需要输入任何密码。

密码,改起来是如此的简单

通常情况下我们要修改 Lion 中用户的登录密码都需要进入“系统偏好设置”中的“用户与群组”,点击“更改密码”并输入旧密码以进行更改,这(在一定程度上)保证了账户安全。而现在只要登录后在终端中输入如下命令:

dscl localhost -passwd /Search/Users/[当前用户名]

之后就会提示输入新密码,只要是更改当前用户的密码,这一过程并不需要输入旧密码。

破解,可能并不困难

此外,Defence in Depth 还发现通过以下方法可以提取任意一个用户的登录密码的 SA512 hash 和 Salt,并提供了一个很便捷的 python 脚本可以用于配合字典进行密码破解(汗):

  1. 在终端中运行以下命令:

    dscl localhost -read /Search/Users/[用户名]
    
  2. 同样,在不提示输入任何密码的情况下(即使不是当前用户!),会得到类似这样的输出:

  3. 在其中搜索 dsAttrTypeNative:ShadowHashData,可以找到类似下面的一段数据:

    62706c69 73743030 d101025d 53414c54 45442d53 48413531 324f1044 74911f72 3bd2f66a 3255e0af 4b85c639 776d510b 63f0b939 c432ab6e 082286c4 7586f19b 4e2f3aab 74229ae1 24ccb11e 916a7a1c 9b29c64b d6b0fd6c bd22e7b1 f0ba1673 080b1900 00000000 00010100 00000000 00000300 00000000 00000000 00000000 000060

    其中的绿字和红字部分就分别是以 SHA-512 加密的该用户的登录密码的 hash 和 salt。

  4. 以上只是了解下原理,由于 SHA-512 是单向加密的,所以要破解就需要密码字典了,把 Defence in Depth 提供的 python 脚本保存为 lion_crack.py ,在终端中运行:

    python lion_crack.py [用户名] [字典]
    

    这个脚本会自动将对象密码的 SHA-512 与字典中密码的 SHA-512 进行比对,命令中不加字典时,脚本会和一个在线的字典进行比对。如果对象的密码不是很复杂,破解起来就相当简单。

如何防范这一漏洞?[1]

  • 等待苹果的安全更新修正这一漏洞:这无疑是治本的方法
  • 禁用自动登录:可在“系统偏好设置”->“安全性与隐私”->“通用”选项页中设置
  • 开启睡眠和屏保密码:可在“系统偏好设置”->“安全性与隐私”->“通用”选项页中设置
  • 禁用客人用户:可在“系统偏好设置”->“用户与群组”选项页中设置
  • 启用家长控制:利用家长控制可以限制用户对“终端”等程序的使用,可在“系统偏好设置”->“用户与群组”选项页中设置
  • 使用强度高的密码:像是 12345 这种弱爆的密码还是不要用了。

更新(2011-9-23):

由于这个漏洞是利用了 /usr/bin/dscl 这个命令的权限较低,因此可以通过更改其权限来达到防止被人恶意运行的目的。只需在终端中运行以下命令即可(需要输入管理员密码):

sudo chmod go-x /usr/bin/dscl

这样没有管理员权限的用户运行 dscl 命令时就会提示权限不足了[2]

Lucifr

Read more posts by this author.

Beijing, China http://lucifr.com