2007-7-18修订部分内容
搬家自原blog:http://blog.linuxsky.net/2993
原地址:http://blog.linuxsky.net/2993/viewspace_2381.html
2006-10-26补:写了那么多,还是蛮有成就感的,嘿嘿,加个声明吧:允许任意转载,但需要保证文章的完整性和我的署名,如果有时间,还希望能够告诉我一下
署名:failsafe/Simon
Email:[email protected]
上篇日志中谈到John the Ripper破解SAM密码中,把过程按下不表了。这篇专门拉出来说说。
其实我就把网上的英文原稿复述一下而已。但是google上找不到中文材料,就不妨写一写了。
突然发现这两天特别忙(房子正在装修,不忙才有鬼呢),但开始了还是要写完滴,不过可能每次都写一点点,
1.软件准备:就是标题上写的John/bkhive/samdump
John比较容易找,到官方网站下载最新版本吧:www.openwall.com/john/
bkhive/samdump 打包文件我已经上传上来了,bkhive_samdump.zip (经过测试已经可用)
2.软件编译:上述软件你下载下来得到的是源代码,不能直接运行,需要一个编译过程
John的编译过程可以在下载包里面的install文件里面查看,过程很简单,编译也很容易.但是有一个问题需要注意,John本来是用来破解Unix密码的,破解SAM密码需要添加补丁.拿当前最新版本来说,主程序文件名为john-1.7.2.tar.gz, 可以在官方网站下载一个叫john-1.7.2-all-2.diff的补丁打上.具体过程官网上会有说明,就不再赘述了.
为了免去新手苦恼,大上ntlm补丁并编译好的文件(包含二进制文件和源文件已经上传,放在这里)
bkhive和samdump编译: 解开打包的bkhive_samdump2.zip文件后会有两个文件夹,bkhive_linux 和samdump2_linux,用下面方法编译:
bkhive编译:
$cd bkhive
$g++ -o bkhive *.cpp
编译完成后,bkhive文件夹内产生一个名为bkhive的二进制文件供我们使用
samdump编译:
$cd samdump
$cd des/
$tar zxvf libdes-4.01.tar.gz
$make gcc
$cd ..
$gcc -c md5_dgst.c rc4_enc.c rc4_skey.c
$g++ -o samdump2 samdump2.cpp hive.cpp md5_dgst.o rc4_enc.o rc4_skey.o /des/libdes.a
编译完成后,samdemp文件夹内产生一个叫samdump2的二进制文件供我们使用
3.被破解文件准备,以XP系统为例:
传说中的SAM文件: C:\windows\system32\config\SAM
system文件:C:\windows\system32\config\system
这两个文件一般来说在windows下是得不到的,即使你有管理员权限(但是LC4可以在管理员权限下直接得到SAM文件进行破解,但是既然已经有管理员权限,为什么还要破解??).我这边推荐几种方法:
a.如果本机装有Linux,那么就进入Linux, mount windows系统所在分区, 再copy这两个文件
b.如果本级没有装Linux,但是有光驱的话,可以通过准备Linux Live CD 如knoppix等进入Linux,之后同a方法copy以上文件
c.如果windows系统文件是fat格式, 也可以通过光驱/软驱进入纯dos来copy以上文件
d.现在也有一些方法通过修改boot.ini文件从硬盘引导dos image 或者支持ntfs的dose image,可以再没有光驱/软驱的情况下得到以上两个文件,但是你需要有修改boot.ini的权限(似乎需要较大的权限)
e.总之方法不会局限与一两种,决定与你的主观能动性,黑客知名宣言说:”进入电脑的路不会只有一条.”终极一条叫社会工程学,简而言之就向系统管理员要密码(可能需要系统管理员直属主管权限)
f.过渡发挥了,打住,打住
4.被破解文件处理:
先用bkhive从system文件生成一个bootkey文件
bkhive/bkhive system bootkey
再用bootkey和SAM文件通过samdump2生成一个密码hash文件
samdump/samdump2 SAM bootkey > hashes
5.终于,我们可以用到John进行密码破解了
John的用法很多,他的doc/EXAMPLE文件里面有详细的介绍,有兴趣的话可以好好研究一下.不过当时我是不管三七二十一直接就是
john-1.7.2/run/john hashes
让他开始破,第二天早上上班一看,hoho,密码出来鸟.比如administrator密码是123456,那么他会在最底下这么显示
administrator:123456:500:e263f50a6a506be3d494d3d62b4dc666:::
看起来有点像/etc/passwd的内容格式,如果当时没有看清楚密码就清屏了,或者后来忘记已经破解了的密码,可以通过下面命令查看
john-1.7.2/run/john -show hashes
有的时候密码处有可能会显示几个问号,如下
administrator:???456:500:e263f50a6a506be3d494d3d62b4dc666:::
这个时候可以通过
john-1.7.2/run/john -show hashes
看看密码是否完整. 如果还是不完整,那么可能密码没有完全破解完毕,可以加–restore 参数从原来基础上继续破解
john-1.7.2/run/john --restore hashes
我对john使用的了解也就差不多是这样了,如果有什么不明白的,可以参考john的doc/目录下的一些文档,或者访问john的官方网站
好了,终于写完了,good luck