John/bkhive/samdump, 在Linux下破解SAM密码

来源:互联网 发布:木心和陈丹青知乎 编辑:程序博客网 时间:2024/05/02 02:18

原地址:http://blog.linuxsky.net/2993/viewspace_2381.html

2006-10-26补:写了那么多,还是蛮有成就感的,嘿嘿,加个声明吧:允许任意转载,但需要保证文章的完整性和我的署名,如果有时间,还希望能够告诉我一下

署名:failsafe/Simon

Email:simon.youngest@gamil.com

上篇日志中谈到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

原创粉丝点击