http://blog.sina.com.cn/streethacker[订阅]
字体大小: 正文
多点接口和密码破解(2009-06-23 11:51:39)

在闲逛网络几个小时寻找关于此话题的好的文档,我意识到,它根本不存在。我两年多一直在使用MPI,即OpenMPI和MPICH2,并已熟悉在大量环境中有效地执行。我也有经验,通过运作的MPI建立可扩展密码破解。就目前而言,它会告诉你利用所有内核的单台PC的破解,而不是仅仅一个内核。


目标:
 安装一组类似可扩展性的目录结构
 安装OpenMPI
 安装John的Ripper MPI
 运行一个简单的测试并破解一个MD5哈希


目录结构的方法

建立一个系统,这几乎是最重要的部分,该系统的可扩展性将不会破坏你升级到最新版本的应用程序。我要迅速列出提纲,我如何为一台机器建立一个目录结构。

 /apps/
 /apps/myapp1/
 /apps/myapp1/v1.x/
 /apps/myapp1/v1.x/install/
 /apps/myapp1/v1.x/x86_32/
 /apps/myapp1/v1.x/x86_64/
 /apps/myapp1/v2.x/
 /apps/myapp1/v2.x/install/
 /apps/myapp1/v2.x/x86_32/
 /apps/myapp1/v2.x/x86_64/
 /apps/myapp1/latest ? v2.x/
 /apps/myapp1/stable ? v1.x/
 /apps/myapp1/env/


/apps/
这个基本目录为我们所有的群组用户应用。

/apps/myapp1/
在“myapp1”这种情况下,我们为每个应用程序创建一个基本目录的子目录。

/apps/myapp1/v1.x/
稳定版本的应用程序将低于此目录结构。将使用实际版本号作为目录名称。

/apps/myapp1/v1.x/install/
源代码为这一特定版本将被下载、解压、并汇编于此目录。

/apps/myapp1/v1.x/x86_32/
如果应用程序是汇编的32位处理器,那么这就将被安装并运行。

/apps/myapp1/v1.x/x86_64/
如果应用程序是汇编的64位处理器,那么这就将被安装并运行。

/apps/myapp1/v2.x/
最新版本的应用软件将进入下面这个目录结构。

/apps/myapp1/v2.x/install/
源代码位这一特定版本将被下载、解压、并汇编此目录。

/apps/myapp1/v2.x/x86_32/
如果应用程序师汇编的32位处理器,那么这就将被安装并运行。

/apps/myapp1/v2.x/x86_64/
如果应用程序师汇编的64位处理器,那么这就将被安装并运行。

/apps/myapp1/latest ? v2.x
这是一个符号链接“latest”指向目录命名的不稳定安装的版本。

/apps/myapp1/stable ? v1.x
这是一个符号链接“stable”指向目录命名的稳定安装的版本。

这些符号链接将允许你升级软件,而不是以适应变化需要重建环境。只需修改符号连接指向新版本。如果我有“/apps/myapp1/v1.x/bin/”在所有用户.bashrc的$PATH变量,那么我将必须更新所有用户.bashrc文件,升级到“/apps/myapp1/v2.x/bin/”。通过使用“latest”和“stable”符号链接,你只需要把每个用户的.bashrc文件放置到“/apps/myapp1/stable/bin/”。当要迁移所有用户到“/apps/myapp1/v2.x/bin/”,只需修改“stable”的符号链接指向它。一个简单的更改符号链接,所有用户将自动开始使用最新版本。这对于可扩展性并可让你测试新的版本是非常重要的,不影响其他用户把“/apps/myapp1/latest/bin/”放置到你的$PATH中。

/apps/myapp1/env/
这是脚本和修改用户环境的文件。


硬件和软件

我选择的是GNU/Linux发行版。我已经安装到一个包含“Intel(R) Xeon(R) E5405 @ 2.00GHz”四核处理器的服务器。这就是为什么我使用“-np 4”命令。
注意:我使用的是64位的操作系统和软件,注意你的版本。


安装OpenMPI

OpenMPI v1.3.2 (最新版本) / OpenMPI v1.3.1 (稳定版本)

~ # mkdir /apps
~ # mkdir /apps/openmpi

安装 v1.3.2:
~ # mkdir /apps/openmpi/v1.3.2
~ # ln -s /apps/openmpi/v1.3.2 /apps/openmpi/latest
~ # mkdir /apps/openmpi/v1.3.2/install
~ # mkdir /apps/openmpi/v1.3.2/x86_32
~ # mkdir /apps/openmpi/v1.3.2/x86_64
~ # cd /apps/openmpi/v1.3.2/install
~ # wget
http://www.open-mpi.org/software/ompi/v1.3/downloads/openmpi-1.3.2.tar.gz
~ # tar -xf openmpi-1.3.2.tar.gz
~ # cd openmpi-1.3.2

32位系统:
~ # ./configure --prefix= /apps/openmpi/v1.3.2/x86_32

64位系统:
~ # ./configure --prefix=/apps/openmpi/v1.3.2/x86_64

~ # make
~ # make install

安装 v1.3.1:
~ # mkdir /apps/openmpi/v1.3.1
~ # ln -s /apps/openmpi/v1.3.1 /apps/openmpi/stable
~ # mkdir /apps/openmpi/v1.3.1/install
~ # mkdir /apps/openmpi/v1.3.1/x86_32
~ # mkdir /apps/openmpi/v1.3.1/x86_64
~ # cd /apps/openmpi/v1.3.1/install
~ # wget
http://www.open-mpi.org/software/ompi/v1.3/downloads/openmpi-1.3.1.tar.gz
~ # tar -xf openmpi-1.3.1.tar.gz
~ # cd openmpi-1.3.1

32位系统:
~ # ./configure --prefix= /apps/openmpi/v1.3.1/x86_32

64位系统:
~ # ./configure --prefix=/apps/openmpi/v1.3.1/x86_64

~ # make
~ # make install

~ # mkdir /apps/openmpi/env
~ # cd /apps/openmpi/env
~ # echo ‘export PATH=${PATH}:/apps/openmpi/latest/x86_64/bin’ > prepenv_latest
~ # echo ‘export PATH=${PATH}:/apps/openmpi/stable/x86_64/bin’ > prepenv_stable

编辑/etc/env.d/00basic并修改LDPATH:

LDPATH="/usr/local/lib:/apps/openmpi/latest/x86_64/lib:/apps/openmpi/stable/x86_64/lib"

~ # env-update && source /etc/profile

运行OpenMPI健全检查:

~ # source /apps/openmpi/env/prepenv_latest
~ # mpirun -np 4 hostname

最后的命令,上面输出的电脑主机四倍。不低,不高,四倍。如果是的话,那么你的“最新”OpenMPI版本正在工作。

~ # env-update && source /etc/profile
~ # source /apps/openmpi/env/prepenv_stable
~ # mpirun -np 4 hostname

最后的命令,上面输出的电脑主机四倍。不低,不高,四倍。如果是的话,那么你的“稳定”OpenMPI版本正在工作。


安装John the Ripper MPI

John the Ripper MPI v1.7.3.1

~ # mkdir /apps/jtr

安装 v1.7.3.1:
~ # mkdir /apps/jtr/v1.7.3.1
~ # ln -s /apps/jtr/v1.7.3.1 /apps/jtr/latest
~ # mkdir /apps/jtr/v1.7.3.1/install
~ # mkdir /apps/jtr/v1.7.3.1/x86_32
~ # mkdir /apps/jtr/v1.7.3.1/x86_64
~ # cd /apps/jtr/v1.7.3.1/install
~ # wget
http://www.bindshell.net/tools/johntheripper/john-1.7.3.1-all-2-mpi8.tar.gz
~ # tar -xf john-1.7.3.1-all-2-mpi8.tar.gz
~ # cd john-1.7.3.1-all-2-mpi8/src

32位系统:
~ # make linux-x86-sse2

64位系统:
~ # make linux-x86-64

~ # cd /apps/jtr/v1.7.3.1/install/john-1.7.3.1-all-2-mpi8/run
~ # cp * /apps/jtr/v1.7.3.1/x86_64/

~ # mkdir /apps/jtr/env
~ # cd /apps/jtr/env
~ # echo ‘export PATH=${PATH}:/apps/jtr/latest/x86_64’ > prepenv_latest
~ # echo ‘source /apps/openmpi/env/prepenv_latest’ >> prepenv_latest
~ # echo ‘cd /apps/jtr/latest/x86_64’ >> prepenv_latest

运行John the Ripper健全检查:

~ # env-update && source /etc/profile
~ # source /apps/jtr/env/prepenv_latest
~ # mpirun -np 4 ./john -test


利用CPU内核的独立电脑

此时,你应该有一个正常运作的MPI环境和一个正常运作的John the Ripper版本。所以,现在让我们继续前进到最具有乐趣的一部分:破解密码!

我们第一项任务需要建立一个John the Ripper的清理脚本,因为它创建了大量的文件没有得到清理而运行。如果你不再需要john_log和john.pot文件,可以将它们清除。

~ # cd /apps/jtr/env
~ # echo "#!/bin/bash" > cleanup_latest.sh
~ # echo "rm /apps/jtr/latest/x86_64/john_rec.rec*" >> cleanup_latest.sh
~ # echo "rm /apps/jtr/latest/x86_64/john_log" >> cleanup_latest.sh
~ # echo "rm /apps/jtr/latest/x86_64/john.pot" >> cleanup_latest.sh
~ # chmod + x cleanup_latest.sh

目前整个平台安装了。下一步我们以一个简单的MD5哈希开始测试运行。

~ # env-update && source /etc/profile
~ # source /apps/jtr/env/prepenv_latest
~ # echo "root:e80b5017098950fc58aad83c8c14978e" >> md5s.txt
~ # mpirun -np 4 ./john -format=raw-md5 -incremental:alpha ./md5s.txt
Loaded 1 password hash (Raw MD5 [raw-md5])
Loaded 1 password hash (Raw MD5 [raw-md5])
Loaded 1 password hash (Raw MD5 [raw-md5])
Loaded 1 password hash (Raw MD5 [raw-md5])
abcdef           (root)
Process 0 completed loop.
thread: 0 guesses: 1  time: 0:00:00:00  c/s: 1582K  trying: abaflm - abcdch

密码是“abcdef”。如果你对John the Ripper语法有疑问,请阅读相关文档。

每次运行之后,我通常会复制“john.pot”文件到安全位置,然后清除:

~ # /apps/jtr/env/cleanup_latest.sh


尾声

以后我将修改更新此文档,向用户展示如何扩展到群组,跨越许多电脑和许多CPU核心。如果你有问题,利用Bing/Google/Baidu等搜索引擎,或者写信息发送至我(Czy)的E-mail --> Hack01[at]Live.cn,我会尽力帮你解决所遇到的问题。

# Hacker NetSpy [Czy]
 __  __    ___      __   __   __    ____ _____      _____           _/\_    ___
/\ \/\ \ /' __`\  /'__`\/\ \ / /  /'____\\  _ `\   /\  __`\        /\_  _\ / __\
\ \ \_\ \/\ \/\ \/\ \/\_\ \ \/ / /\ \____ \ \_\ \  \ \ \/\ \     __\//\
\\/\ \___  _____   __  __
 \ \  \ \ \_\ \ \ \/_/_ \  _\ \ \  ___\ \  _ /   \ \ \ \ \  /'__`\\ \ \\ \___ \/\  _ `\/\ \/\ \
  \ \ \ \ \ \  \ \ \_\ \ \
\\`\  \ \____ \ \\`\   \ \ \ \ \/\  __/ \ \ \_/ __\ \ \ \_\ \ \ \_\ \
   \ \_\ \_\ \_\ \_\ \____/\ \_\ \_\ \_____\ \_\ \_\  \ \_\ \_\ \____\ \ \__\/\____\ \  __/\ \____ \
    \/_/\/_/\/_/\/_/\/___/  \/_/\/_/\/_____/\/_/\/_/   \/_/\/_/\/____/  \/__/\/____/\ \ \/  \/ __/\ \
                                                                                     \ \_\    /\_____\
                                                                                      \/_/    \/_____/

加载中,请稍候...
  • 评论加载中,请稍候...

验证码:请点击后输入验证码  收听验证码

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

相关博文
读取中...
推荐博文
读取中...