系统口令加密机制
Windows NT/2K/XP等系统使用sam文件保存口令。sam文件是Windows NT/2000的用户账户数据库,所有用户的登录名及口令等相关信息都保存在这个文件中。系统在保存sam信息之前对sam信息进行了压缩处理,因此,sam文件中的信息不可读取。此外,在系统运行期间,sam文件被system账号锁定,即使是administrator账号也无法打开。
Windows NT/2K/XP系统采用了两种加密机制,所以,在sam文件中保存着两个口令字,一个是LanMan版本的(LM散列值),另一个是NT版本的(NT散列值)。
LanMan散列算法:LanMan散列算法处理用户口令的过程是:首先将用户口令分成两半,每一半都是7个字符。分别对这两个口令字加密。然后是将加密后得到的散列值串连在一起(不足7个字符的以空格补齐),得到最终的LM散列值。
NT散列算法:NT/2000的密码散列由两部分组成,一部分是通过变形DES算法,使用密码的大写OEM格式作为密钥(分成2个KEY,每个KEY7字节,用0补足14个字节),通过DESECB方式获得一个128位的密钥,加密特殊字符串“KGS!@#$%”获得的一个16字节长度的值。另一部分则是使用MD4对密码的UNICODE形式进行加密获得的一个散列。
2.口令破解原理
无论口令加密采用DES算法、MD5算法,还是其他机制,因为它们具有单向不可逆的特性,要想从算法本身去破解,难度相当大,通常只存在理论上的可能性。由于各种加密算法都是公开的,虽然逆向猜解不可行,但从正向猜解却是很现实的。因为,设置口令的用户是人,人们在设置口令时,习惯使用一些容易记忆且带有明显特征的口令,如用户名、生日、电话号码、亲友姓名等,这就给我们破解口令带来机会。 我们可以制作一个字典文件:里面的条目都是经常用作口令的字串。猜解口令时,就从字典文件中读出一个条目作为口令,使用与系统口令加密算法相同的方法进行加密,得到的字串与口令文件中的条目进行比较,如果相同,则猜解成功;否则,继续下一次尝试。最终结果可能得到了真正的用户
口令,也可能字典文件条目用尽而不能破解。
口令破解的方法主要是字典法,利用字典文件进行口令猜解。常见的口令猜解模式主要是:
字典模式:即使用指定的字典文件进行口令猜解。
混合模式:即指定字典规则,对字典条目进行某种形式的变化,增加字典内容,提高猜解的效率。
暴力模式:即遍历所有可能的密钥空间,进行口令猜解。
3.口令破解的方法
不同系统使用的口令保护方式不同,对应的口令破解方法、破解工具亦不同。
Windows 9X系统:Windows 9X系统没有设置严格的访问控制,因此,可以通过重新启动系统等方法进入系统,然后将C:\Windows目录下所有的pwl文件(*.pwl)拷贝到磁盘上,最后,使用专用工具pwltool,即可破解出系统的口令。pwltool支持暴力、字典、智能3种模式的口令破解。
Windows 2K系统:Windows 2K使用sam文件保存用户账号信息,系统运行期间,sam文件是被system账号锁定的,而且,sam文件信息在保存前经过压缩处理,不具有可读性。要破解Windows 2K系统的账号,就必须先获取sam文件,然后,使用工具L0phtcrack进行口令猜解工作。
获取sam文件的方法有:
获取%SystemRoot%\system32\config\sam文件,这种方式适用于黑客可以直接接触目标主机,且该主机安装有多种操作系统。
重新启动主机,进入其它操作系统,如Windows 98。如果Windows NT/2000是以FAT16/32磁盘格式安装的,则可以直接读取sam文件;如果Windows NT/2000是以NTFS磁盘格式安装的,则可以借助工具NTFS98,在Windows 9x中读写NTFS磁盘的内容,或者借助工具NTFSDOS,在DOS环境下读写NTFS磁盘内容。
add;实验工具
(1)pwdump
Pwdump7可以在CMD下提取出系统中的用户的密码hash (包括LM和NTLM),当然必须要有系统权限.提取出了HASH,再用ophcrack破出明文密码,对进一步渗透是有很大帮助的,经我测试,在XP下是可以成功提取出来的.这个工具需要一个DLL文件支持,压缩包中带的,只需放到一个文件夹中即可,用法很简单.
(2)SAMInside工具
SAMInside为一款俄罗斯出品的Windows密码恢复软件,支持Windows NT/2000/XP/Vista操作系统,主要用来恢复Windows的用户登录密码。多数的Windows密码恢复软件都是将Windows用户密码重置,比如Passware Kit系列中的Windows Key或者Active@ Password Changer Professional等等,而如果此时用户恰好使用了NTFS文件系统,并且将文件用NTFS的特性EFS(加密文件系统)加密了的话,则这些文件将变成永久不可读数据。SAMInside则是将用户密码以可阅读的明文方式破解出来,而且SAMInside可以使用分布式攻击方式同时使用多台计算机进行密码的破解,大大提高破解速度。
在操作机的“运行”编辑框中输入“mstsc”后回车,将打开远程桌面连接程序,如下图所示:
点击“选项”下拉框,切换到“本地资源”选项卡,如下图所示:
点击“本地设备和资源”组合框中的“详细信息”按钮,勾选“驱动器”选项后点击“确定”按钮返回,如下图所示:
切换回到“常规”选项卡,在“登录设置”组合框的“计算机”编辑框中输入目标主机(目标机示例 IP 地址为100.100.0.29)的 IP 地址,点击最下方的“
连接”按钮,如下图所示:
在远程桌面连接窗口中输入如下凭证信息后点击“确定”按钮登录: 用户名:administrator,密码: 123456,如下图所示:
登录成功之后,回到操作机,然后进入操作机的实验工具目录进入实验工具目录“D:\1、信息安全\2、网络安全\08网络对抗课程\7.密码破解之Windows XP系统本地密码破解实验”,将“Tools.rar”文件“解压到当前文件夹”,将解压后的 pwdump7 目录全部上传至目标机上去,存放到 C:\根目录中。如下图所示:
进入到目标主机,首先查看该主机的密码策略。 在目标主机的开始菜单中打开运行对话框,输入 secpol.msc 打开本地安全策略编辑器。 访问安全设置,帐户策略,点击密码策略,进行如下设置:
禁用密码必须符合复杂性要求。设置密码长度的最小长度:8位。
如下图所示:
在目标主机中新建一个用户,密码设置为 8-14 的随机纯数字组合,如用户名为“test”,密码为:“8967584106754”(后续实验会用到,请使用该密码)。
可打开一个命令提示符,输入如下命令直接添加用户。
net user test 8967584106754 /add
当然,也可以通过控制面板中的用户帐户组件来添加新用户并为其设置密码。如下图所示:
在目标主机上打开一个命令提示符,进入“pwdump7”目录,运行 PwDump7.exe 后即可直接显示本 地计算机上所有用户及其密码散列值(包括 LM 散列值和 NTLM 散列值)
下图输出信息中每一行就是一个用户的信息,基本格式如下: “用户名:安全相对表示符(RID):LM 散列:NTLM 散列:::”
如下图所示:
10接着,我们使用如下命令将上述用户散列信息存储到磁盘上的“C:\Sam.txt”文件中去。
pwdump7 > c:\sam.txt
11进入目标机目录C:\pwdump7文件夹,打开 sam.txt 文件,选择其中“test”用户的那一行用户散列信息,保存到操作机的文件 “sam_export.txt”中去,如下图所示:
回到本地主机,进入实验工具目录中解压后的“SAMInside 2.6.3”目录,双击运行 SAMInside 程序(SAMInside.exe),显示主界面如下所示。
注:如果主界面中已经显示出了一些用户列表,可能是初始使用时自动获取本地主机的用户列表信息,这时候请选择菜单项“Edit”・“Delete All Users”来清除所显示的用户列表。
2.2点击菜单项“File”中的“Import From PWDUMP-file...”。
然后选择前面存储的目标主机密码散列文件“sam_export.txt”,点击“打开”按钮返回主界面。
点击菜单项“Audit”,确认勾选“LM-Hash Attack”,确认勾选“Brute-force Attack”,即暴力破解方式
点击菜单项“Service”中的“Options”,在左侧选择“Brute-force Attack”,然后在右侧定制暴力破解的字符集。
为了保证实验的时间,因此我们在前面添加的临时测试用户的密码为 8-14 位的随机纯数字组合,所 以我们在这里仅选择“[0…9]”字符集;确认最小的密码长度为 1,最大的密码长度为 7,然后点击 “OK”按钮后回到主界面。如下图所示
点击菜单项“Audit”中的“Start Attack”开始破解密码散列。破解瞬间完成,在下图中可以看到成功破解了“test“用户的密码。