运行环境:
至少两台装有kali-linux 的电脑。
kali-linux-1.0.7 内核版本:3.14。
两台电脑需要能互联,且需要有静态IP,可用PING命令测试。
所需软件与简介:
MPI是一个跨语言的通讯协议,用于编写并行计算机。支持点对点和广播。MPI是一个信息传递应用程序接口,包括协议和和语义说明,他们指明其如何在各种实现中发挥其特性。MPI的目标是高性能,大规模性,和可移植性。MPI在今天仍为高性能计算的主要模型。而MPICH是MPI标准的一种最重要的实现,可以免费从网上下载。MPICH的开发与MPI规范的制订是同步进行的,因此MPICH最能反映MPI的变化和发展。
OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务。
John the Ripper免费的开源软件,是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如DES、MD4、MD5等。它支持多种不同类型的系统架构,包括Unix、Linux、Windows、DOS模式、BeOS和OpenVMS,主要目的是破解不够牢固的Unix/Linux系统密码。目前的最新版本是John the Ripper 1.8.0版,针对Windows平台的最新免费版为John the Ripper 1.7.9版。
把两台主机分为一个主节点,一个从节点,配置基本相同,先从主节点为例开始配置
MPICH跟大多的Linux软件一样,有两种安装方式:apt-get和源码编译安装
第一种比较简单,可以网上自行搜索,命令为
sudo apt-get install mpich2
不再赘述。
第二种步骤如下:
1).下载源码包
root@localhost:~/Desktop# cpmpich2-1.0.2p1.tar.gz ~/
复制到当前用户的主目录 (~指的是你当前用户的主目录,这里必须注意,两台主机需要配置相同的路径,否则会找不到文件)
2).解压
root@localhost:~# tar -zxvfmpich2-1.0.2p1.tar.gz
3).安装
root@localhost:~/mpich2-1.0.2p1#./configure --prefix=/usr/mpich2-1.0.2 #/usr/mpich2-1.0.2 为安装目录 root@localhost:~/mpich2-1.0.2p1# make root@localhost:~/mpich2-1.0.2p1# makeinstall
4).配置HOSTS文件
root@localhost:~/mpich2-1.0.2p1#leafpad /etc/hosts
#127.0.0.1 localhost
192.168.1.119 node1 #为主节点在局域网IP地址
192.168.1.105 node2 #为从节点在局域网IP地址
有两个配置文件需要建立
1).mpd.conf
root@localhost:~/mpich2-1.0.2p1#leafpad /etc/mpd.conf
(kali默认的是leafpad 用不习惯安装个gedit 或者使用vi都可以)
编辑内容为
secretword=密码 –> 这个为集群密码所有节点的密码都需要一致才能进行集群通信
root@localhost:~# chmod 600/etc/mpd.conf
#这里必须设置chmod600 否则会报错
2).mpd.hosts
用到前面HOSTS文件里配置的信息
root@localhost:~/mpich2-1.0.2p1#leafpad /etc/mpd.hosts
设置环境变量
exportPATH=$PATH:/usr/mpich2-1.0.2/bin/
测试环境变量
安装openssh-server
root@localhost:~# apt-get install openssh-server
启动ssh服务
root@localhost:~# service ssh start
启动成功
配置SSH免密码登录
root@localhost:~#ssh-keygen -t rsa #生成.ssh目录 主节点和从节点分别运行 root@localhost:~#scp node2:~.ssh/* ~/.ssh 拷贝node2上的.ssh目录到本地的.ssh
测试SSH,成功会进入控制台
root@localhost:~# ssh node1 root@localhost:~# ssh node2
到此已经配置完MPICH环境测试一下
在主节点上设置
root@localhost:~# hostname node1
在从节点上设置
root@localhost:~# hostname node2
root@localhost:~# mpdboot -n 2 -f mpd.hosts –verbose
然后测试
mpirun –n 2 hostname #输出主机名
测试结果
John在 1.7.7-jumbo-5版本开始已经支持MPI,下面介绍一下支持MPI版本和MPI补丁版本各自的安装方式
1) MPI补丁版本 例如john-1.7.3.1-all-2-mpi8
编译john the ripper
解压
root@node1:~/john-1.7.3.1-all-2-mpi8/src#make clean root@node1:~/john-1.7.3.1-all-2-mpi8/src#make
选择合适的版本
这里linux-x86-sse2适合我的电脑所以选择编译
root@node1:~/john-1.7.3.1-all-2-mpi8/src#make linux-x86-sse2
是否安装成功可进入run 输入./john –test进行测试
root@node1:~/john-1.7.3.1-all-2-mpi8#cd run/ root@node1:~/john-1.7.3.1-all-2-mpi8 /john -test
2) 支持MPI版本,例如最新版本
在Makefile中修改如下
CC = mpicc -DHAVE_MPI -DJOHN_MPI_BARRIER-DJOHN_MPI_ABORT MPIOBJ = john-mpi.o
也就是将原来的 CC= gcc
改为
CC = mpicc -DHAVE_MPI-DJOHN_MPI_BARRIER -DJOHN_MPI_ABORT
并添加一行
MPIOBJ = john-mpi.o
然后
root@node1:~/john-1.8.0/src#make clean root@node1:~/john-1.8.0/src#make
选择合适的版本
是否安装成功可进入run 输入./john –test进行测试
最后测试一下MPI+Joan是否安装成功,成功的话,就可以进行接下来激动人心的并行密码破解了。
root@node1:~/john-1.8.0# cdrun/ root@node1:~/john-1.8.0 /john-test
2 .1利用John+MPI 破解raw-MD5
这里演示john-1.7.3.1-all-2-mpi8版本
root@node1:~/# echo username:efa4231e24c356d525a259f0b204404e > test.md5
从节点上需要配置相同的文件
root@node2:~/#scp -r node1:~/test.md5 ~/ # #从节点,两台主机需要待破解文件,配置在相同路径下
root@node1:~/#mpirun -n 2~/john-1.7.3.1-all-2-mpi8/run/john --format=raw-MD5~/john-1.7.3.1-all-2-mpi8/run/test.md5
Raw-MD5结果
这里演示john-1.8.0最新版本
root@node1:~/John/john-1.7.3.1-all-2-mpi8/run#tail -n 1 /etc/shadow >> linux.password root@node1:~/John/john-1.7.3.1-all-2-mpi8/run#cp linux.password ~/
root@node2:~/#scp -r node1:~/linux.password ~/ #从节点
root@node1:~/mpich2-1.0.2p1/bin# ./mpirun -n 4~/john-1.8.0/run/john ~/linux.password
破解linux密码结果