我是如何破解你的WINDOWS密码的 ?(2)
介绍
在这个系类的第一部分中,我们揭示了windows创建和储存密码的机制。我们也涉猎了一点两种加密方法的弱点和破解的方法。在这系列的第二篇也是最后一篇文章中,我会实战用网上免费的工具一步一步的来破解一次密码给你看。
注意!以下这些技术只为学习目的,请勿用于非法用途!
获取密码HASH
为了破解密码你应该先获取密码在windows中储存的位置,这些hash储存在windows在SAM文件中,这个文件在C:\Windows\System32\config不过在windows启动时这个文件是不能被读取的,这个文件同样也储存在HKEY_LOCAL_MACHINE\SAM中不过在windows启动时,这个文件也是不能读取的。
下面几种方法可以审计你的机器,用哪种方法取决于你对要审计的机器有多大的权限。
物理接触
如果你可以物理接触那台机器的话,最有效的办法就是在那台电脑上进入另一个系统,如果你习惯使用Linux系统的话,你可以引导一个linux系统,挂载上WINDOWS所在的盘,把SAM文件拷贝到别的地放
如果你用不惯这种方式,你可以用P. Nordahl著名的一款工具Offline NT Password Editor,下载链接http://pogostick.net/~pnh/ntpasswd/ 这个linux系统设计出来的目的就是为了帮助忘了密码的人重置密码,这对我们很有用因为我们可以也用这个发行版简单的读取SAM文件并且得到hash数据。
为了完成这些,启动CD镜像系统,选择有SAM和注册表文件的系统分区。
选择
重置密码【1】
启动内置的注册表编辑器【9】
浏览SAM\Domain\Account\Users,浏览你想要进入的哪个账户,使用命令cat查阅文件中储存的hash值。文件以16进制输出,可以经过简单的转换它。
(1)用16进制输出的sam文件
在实际中使用Offline NT Password Editor去重置密码时。确保你不没有用文件加密系统{Encrypted File System (EFS)}或者在Windows XP/2003之后发布的版本。如果你坚持这样做,你的系统会丢失EFS keys,会导致比忘记密码更多的麻烦事。
从命令行进入
如果你想执行密码审计并且不能物理接触机器时,但是你有命令行或者VNC界面,你可以使用多功能的Fizzgig fgdump,由这里获得http://foofus.net/goons/fizzgig/fgdump/
你在目标主机下载了fgdump之后你可以直接简单的不带参数的运行它会导出一个本地机器的SAM文件
(2)正确配置fgdump运行
运行之后这个程序会在痛目录下面创建一个txt文件,其中包含了一个所有用户的账户和他们LM hash和MTLMv2hash
(3)文件被fgdump导出了
从互联网进入
最后,如果你没有任何和机器互动的权限,但是你又想要得到它的hash,你可以在你想要获取hash的网段中嗅探,它们会在验证时传送hash。当然,只有在客户端发送验证到域控服务器时或者进入其他客户端时才可以,这时候运气比你全副武装要有用的多了.
如果你和要截取密码的客户机在同一个网段,当两台计算机在传输密钥密文时你可以使用cain截取密码hash。cain可以从这里下载http://www.oxid.it/cain.html 你可以使用cain进行一种中间人攻击叫做ARP毒化,利用ARP协议的不足,使两台机器的流量通过你的电脑,当两台机器的流量通过你的电脑时,你可以使用cain内置的网络嗅探,截取NTLM hash。关于ARP毒化攻击的原理又是另外一门课,这里我们只涉及一点,如果你想学更多我接下来会介绍。
使用cain破解密码
现在我们已经有了hash了,接下来我们应该做的事情就是我们应该破解他们了,如果你已经下载安装了cain,纳尼已经可以用它破解简单的LM hash了。
如果你没有下载cain你应该去下一个,如果你安装cain你也应该安装一个Wincap,一款cain使用的流量捕捉软件驱动。你可以打开软件界面,界面顶端有一个cracker按钮,选择左边的LM&NTLM Hashes,右击中间的空白地方,选择Add to list.
cain不接受直接复制黏贴hash,你应该放在一个txt文件里,格式参照以下的文件,
如果你是使用fgdump到处的文件,那么那个文件可以直接使用。
(4)
如果你手动提取密码你需要为每个用户在txt文件中创建单独一行,每行应该包含username,RID,hashes。
格式如下:
Username:RID:LMHash:NTLMHash:::
选择文件,选择它,点击下一步导入hashes,你可以使用暴力破解,右键点选你想破解的账户的LM hases,暴力破解方法是穷举可能的密码密文和hash对比直到找出符合的为止,你可以自定义破解字符/最小/最大字符长度,因为LM会自动把所有字符转换成大写,所以你不必输入小写字母,而且最大长度是7位。
在我们的测试场景中我们的密码是password123我们可以立即看到后半部分密码是“Plaintext of 664345140A852F61 is D123”在一台现代计算机中,一个LM密码破解最多不会超过三个小时。
(5)成功破解LM密码hash
使用Johe the ripper破解密码
cain对破解LM密码非常好用,不过对于破解NTLMv2密码非常慢,如果你不排斥使用命令行界面的话,那么这款John the Ripper工具是破解NTLMv2密文最快的工具了。
你可以从这里下载John the Ripper
当你提取了压缩文件时,你会发现一个可执行文件386.exe在目录里,jone可以进入几个不同的模式,不过你只要在命令行中使用默认模式,提供包含hash的文件给它作为参数
(6)jone the ripper尝试破解一个密码
破解完成后,jone the ripper会显示cracked passwords并且把结果储存在john.pot文件中,一般我们使用默认模式就可以了,不过我们也可以选择以下几种模式:
-
Single Crack Mode – Uses variations of the account name
-
Wordlist Mode – Relies on a dictionary for password guesses
-
Incremental Mode – Relies on a brute-force style attack
-
External Mode – Relies on another (user supplied) application for password guessing
john每个模式都很有用,这款软件是我最常用的破解hash软件。
使用彩虹表破解密码
当你破解一个非常复杂的NTLMv2密码需要花费大量的时间时,最合理的办法应该是使用彩虹表。彩虹表是事先把所有可能的密码生成好,然后直接对比加密密文,所以彩虹表非常占硬盘空间。在以前,低配的处理器和硬盘无法储存彩虹表,不过在现代计算机的帮助下,正规渗透测试师和恶意的入侵者可以把彩虹表放在外接的硬盘上。
找到一个有储存彩虹表的地方下载你只需要google就可以了,不过对一般的密码,你可以使用在线web破解。
预防密码被破解
人们总是想创建一个没有人能破解的加密方式,不过其实这个想法是有点问题的。这个想法是建立在电脑生成随机数然后加密,但是实话来说电脑并不能做到真正的“随机”,所谓的随机建立在程序逻辑上,所以它只能做到使其被破解的时间延长,换句话来说就是,当破解它的成本比它本身的成本高时就可以了。
使用复杂密码并且经常更换
最有效的放置别人破解密码的方法是把自己的密码弄得非常复杂,如果你的密码包含大小写,数字,特殊符号,并且长度很大,它一时间就不能被破解。再加一层保险就是你经常改你的密码,当攻击者破解了你的密码时,你的密码早就改了。没有比这个更好的办法了。
关闭LM加密
到现在你应该了解到了LM算法的弱点了,不过应该庆幸的是我们已经不用这个算法了,现代计算机可以简单的配置注册表来使用NTLMv2来加密。
你在注册表中打开HKLM\System\CurrentControlSet\Control\LSA关闭LM加密。并且创建一个DWORD命名为NoLMHash并且赋值为1
另外的一个步骤就是关闭网络传输中的LM认证,再次打开HKLM\System\CurrentControlSet\Control\LSA将CompatibiltyLevel设置为3那么他就只会传输NTLMv2hash到域控机器了,如果说你设置为5那个么机器会只接受NTLMv2的认证请求,这个适合服务器。
不过这个唯一的缺点就是会对网络里的Windows NT4计算机造成麻烦,不过如果你还是使用这种老版本的系统,我唯一能给你的安全建议就是把它们扔了!
使用syskey
syskey是windows的一个对SAM文件进行128位的加密,syskey使用用户创建的key对SAM文件进行加密,一旦开启它就不能结束。
我们应该了解到的是,SYSKEY只加密SAM文件本身,目的是为了防止SAM文件被复制。不过SKSKEY不能防止从内存中提取SAM文件的软件,例如cain和fgdump
你可以从微软官方文档中找到对SYSKEY的解释ttp://support.microsoft.com/kb/143475.
结论
破解密码对入侵者来说是一项有用的技能,不过对系统管理员来说,windows如何创建/储存密钥,并且他们会被如何偷取,破解也是很有必要的,当有潜在的入侵者多数对LM加密的密码和见到那的密码流口水。记住,打仗不能对战况一知半解,如果说你对这篇文章一知半解,那我无能为力了。你应该使用这些技巧去对付想破解你的系统密码的入侵者。