更快更强的Windows登录密码破解-Ophcrack

我们有各个各样的方法可以获得Windows系统的登录密码,有时获得的是明文,如这里,但更多时候,获得的是登录密码的hash值。早期,Windows采用LM-Hash,后来,改用更为安全的NTLM-Hash。这样的hash值当然可以用hashcat来破解,不过,还有更好的选择——更快更强的Ophcrack

hashcat很快,快在对硬件资源的充分利用上。Ophcrack更快,快在算法。Ophcrack在破解hash时,需要预计算的hash值作为辅助,存储这些预计算的hash值的文件被称为彩虹表。彩虹表并不是简单的原值-hash值对应表,Ophcrack也不是简单的查表破解hash值。因为简单的原值-hash值对应表过于庞大,超过了我们的存储极限,单纯的以空间换时间会发现空间不够用。彩虹表进行了一些预计算,但只保存了最为关键的部分运算结果,以减小空间消耗,同时在破解时也需要进行一些计算,来补全丢弃的部分,最终达到时间与空间的平衡。关于彩虹表的原理,详情可见什么是彩虹表?

彩虹表可以破解各种hash函数,每个hash函数,乃至不同的字符集(密码使用了哪些字符),都需要不同的彩虹表。Ophcrack专注于使用彩虹表破解两种hash:LM-Hash和NTLM-Hash。没错,它瞄准的就是Windows的登录密码。现在,让我们尝试用Ophcrack破解Windows7的登录密码的NTLM-Hash。

首先,我们需要获得Ophcrack。Ophcrack开源的,也是跨平台的,在它的官网可以下载到各个操作系统下的安装程序。Ophcrack具有图形界面,安装极为简单,Kali中也默认安装了Ophcrack。我打算在Ubuntu14.04里安装Ophcrack。

下载Ophcrack源码,得到压缩包ophcrack-3.7.0.tar.bz2,运行如下命令解压并进入Ophcrack源码目录:

    tar -jxvf ophcrack-3.7.0.tar.bz2
    cd ophcrack-3.7.0

运行如下命令编译安装:

    ./configure
    make
    sudo make install

直接运行上述命令可能会报缺少依赖的错误,为了解决这些错误,我总共安装了下面这些东西:

    sudo apt-get install libssl-dev
    sudo apt-get install libexpat-dev
    sudo apt-get install libsoqt4-dev

安装好这些依赖后再运行上面的编译安装的命令,便能够成功编译安装了。

然后,我们需要下载彩虹表,Ophcrack的官网提供了一些免费的彩虹表和更为高级的收费的彩虹表,点击这里查看详情。此外,网络中还可以找到许多其他彩虹表,如freerainbowtablesList of Rainbow Tables。我想破解的是NTLM-Hash,所以下载了官网的“All free Vista tables (11.9GB)”,寝室网速不好,下载了整整一晚上呢。

好了,现在我们有了Ophcrack,有了彩虹表,就差待破解的NTLM-Hash了。打开Windows7虚拟机,新建一个账户,设置密码,用SAMInside获取其NTLM-Hash。获取hash的具体过程在我的另一篇文章中有较为详细的叙述,这里不再重复。获取到的NTLM-Hash值为:

  9B4630AD526AF538FC26435476A9723F

终于可以开始破解了,在终端中输入命令ophcrack打开Ophcrack。第一次使用,需要先安装彩虹表,所谓安装彩虹表,实质上是指定彩虹表的文件路径。据说彩虹表必须放在名为tables的文件夹中才能被正确安装,至少我测试时是这样的。点击Ophcrack主界面的Tables按钮,进入彩虹表界面,点击彩虹表界面右下方的install安装彩虹表,安装彩虹表如下图(截图截的是Kali中的,和Ubuntu下没什么区别)所示。

安好后的界面如下图所示,选中的那列就是我刚刚安装的彩虹表。

回到Ophcrack主界面,点击Load按钮,选择Single hash,打开载入单个hash的界面,输入刚刚我们从Windows7中获得的NTLM-Hash,如下图所示。之所以输入两次,中间用冒号隔开,是为了格式上的正确,我们没有取LM-hash,就用NTLM-Hash代替。由于我们只关心NTLM-Hash是否被破解,故而这不会对结果有什么影响。

成功载入NTLM-Hash后,点击主界面的Crack按钮,开始破解。很令人惊讶,十几秒后,破解成功,如下图所示,成功得破解出了密码为:V5(3ja,耗时19s。

好吧,密码是很短,这是由于我预先知道免费的彩虹表能力有限,故而设置简单的密码,使得我能够成功破解。各个彩虹表对于的字符集、密码长度和破解成功率,官网上都写得很清楚,我这里就不再重复了。大概看了下,免费的彩虹表多少有些鸡肋,要想获得强悍地破解能力,还是需要付费购买专业版的彩虹表的。

接下来,我又下载了更多的彩虹表,尝试破解更多的NTLM-Hash,结果如下图所示,仅用一分多钟,就破解了全部5个密码。这一结果远超我预期,我以为其中会有几个密码是无法破解的。虽然这些密码还是比较弱,但某些偷懒的人设的密码也就这个强度。

我把用户名特意设为密码值,是为了有密码破解不出时便于观察,怎样的密码没有被破解。结果全部都被破解了,这一设置也就没有意义了。免费的彩虹表尚有如此威力,普通的密码,在付费的高级彩虹表面前岂不是毫无招架之力了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

13 − 8 =