栏目分类
热点资讯
- 6月14日游戏早报:宫崎英高支持《血源》上PC!育碧高管回应马斯克《AC影》负面评论
- 亲爱的玩家们,早上好!今天是2024年6月14日星期五。这里是183游戏早报,为您带来最新鲜的游戏行业动态:育碧高管回应马斯克《AC影》负面评论;宫崎英高支持《...
Dither AI中文网 你的位置:EPIK Prime中文网 > Dither AI中文网 > 密码破解不再神秘 教你搭建密码破解服务器
密码破解不再神秘 教你搭建密码破解服务器 发布日期:2025-01-03 18:25 点击次数:91
我们经常为客户做大量的密码破解工作。有时候是由于我们破解了一个系统,寻找有无密码重复使用的情况;有时候是由于我们在获取密码复杂性方面的统计数字,以证明某个观点;有时候我们只是试图破解WPA-PSK。不过,你有一套很安全的系统很要紧。我们最近改建了自己的一台密码破解服务器,下面介绍了关于其规格和配置的一些信息。
硬件规格
主板:EVGA Z68 FTW 160-SB-E689-KR Extended ATX英特尔主板
处理器:英特尔酷睿i7-2600K 3.4GHz LGA 1155 95W四核台式机处理器
海盗船(CORSAIR)CAFA50 120mm CPU散热器
电源:海盗船专业系列Gold AX1200(CMPSU-1200AX)1200W ATX12V v2.31 / EPS12V v2.92 SLI Certified 80 PLUS GOLD认证模块化主动功率因数校正(PFC)电源
机箱:酷冷至尊HAF 932 Advanced RC-932-KKN5-GP黑钢ATX全塔式伟讯机箱,带USB 3.0
存储设备:2只日立Deskstar 3TB 3.5英寸SATA 6.0Gb/s内置硬盘——裸盘
内存:海盗船XMS3 16GB(4 x 4GB)240针DDR3 SDRAM DDR3 1333台式机处理器
GPU:4块蓝宝Radeon HD 6950 Dirt3 Edition 100312-3SR 视频卡,带Eyefinity技术
共计:2629.78美元
#p# 安装
硬件改装
虽然主板上有一个插槽可以使用,但是第四块视频卡其实与其他的视频卡合不来(视频卡相互排挤),于是我们决定采用一种“独特”的方式来安装它。我确信气流/散热方面的专家对这个决定不高兴,但这又是唯一的办法。使用灵活的PCIe扩展槽,我们总算装上了该视频卡。
灵活的PCI Express扩展槽
如右图所示,我们在机箱背面上钻了几个空眼,为视频卡上的连接器留出地方,并提供一定的稳定性。
硬盘/RAID配置
3TB硬盘要求我们利用Grub2和GPT。尽可能妥善地备份这个系统也很重要,以防出现硬件故障,所以我们想要使用RAID 1来确保简单。
通过BIOS的英特尔FakeRAID——失败
最初我们想通过主板内置的英特尔RAID功能来使用RAID 1,但是它似乎无法完全得到dmraid或Ubuntu Server 10.04.3的支持。不知什么原因,它在parted中出现的只是801GB硬盘;安装不允许在该801GB中创建任何分区。于是我们放弃了它。
想了解更多信息,请访问:?p=11477517
整个磁盘的软件RAID(mdraid/mdadm)——失败
我们希望硬盘完全冗余,于是试图创建一个很大的根分区和一个交换分区,分区设置为linux_raid类型。若使用这个方法,Ubuntu安装很正常,但是grub安装失败。折腾了一番后,我们还是无法成功地将grub安装上去。于是,我们采用了一种比较传统的分区方法。
想了解更多信息,请访问:?p=11477507
根分区的软件RAID(mdraid/mdadm)——成功了!
下面介绍了我们最后如何对这两个(/dev/sda, /dev/sdb)硬驱进行分区。我们是在安装之前,通过启动到自生系统(LiveCD)完成这一步的。
root@ubuntu:~# parted /dev/sda mklabel gpt
root@ubuntu:~# parted -a cyl /dev/sda unit s mkpart grub 34 4130
root@ubuntu:~# parted -a cyl /dev/sdb set 1 bios_grub on
root@ubuntu:~# parted -a cyl /dev/sda unit s mkpart boot 4131 1052706
root@ubuntu:~# parted -a cyl /dev/sda unit s mkpart primary 1052707 5852144526
root@ubuntu:~# parted -a cyl /dev/sdb set 3 raid on
root@ubuntu:~# parted -a cyl /dev/sda unit s mkpart swap 5852144527s 5860533134s
root@ubuntu:~# parted /dev/sda unit compact print free
Model: ATA Hitachi HDS72303 (scsi)
Disk /dev/sda: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 2115kB 2098kB grub bios_grub
2 2115kB 539MB 537MB ext2 boot
3 539MB 2996GB 2996GB xfs primary raid
4 2996GB 3001GB 4295MB linux-swap(v1) swap
#p# 然后在安装过程中,我们通过mdraid为第三个分区配置了RAID1。下面是安装完成后mdadm.conf看起来的样子。
root@ubuntu:~# cat /etc/mdadm/mdadm.conf | grep ARRAY
ARRAY /dev/md0 level=raid1 metadata=1.0 num-devices=2 UUID=43dd56be:498abe6a:4421ece1:0659a71e name=0
我们在安装过程中为GDM选择了“Ubuntu Desktop”程序包。这点很重要,因为之后在GPU上,要是没有X.org服务器在运行,就无法进行破解。我们起初有一个启动脚本,就为了在后台执行xinit命令,但这使得可以实际访问系统的任何人都能访问根外壳。这是个坏主意。
一旦安装完成,grub2还是没有立即启动,于是我们再次从自生系统(LiveCD)启动,用手动方式来安装:
root@ubuntu:~# mount -t xfs /dev/sda3 /mnt
root@ubuntu:~# cp /mnt/etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf
root@ubuntu:~# mdadm --assemble /dev/md0
mdadm: /dev/md0 has been started with 1 drive (out of 2).
root@ubuntu:~# umount /mnt
root@ubuntu:~# mount /dev/md0 /mnt
root@ubuntu:~# mount /dev/sda2 /mnt/boot
root@ubuntu:~# for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
root@ubuntu:~# chroot /mnt
root@ubuntu:/# grub-mkdevicemap
root@ubuntu:/# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-35-generic
Found initrd image: /boot/initrd.img-2.6.32-35-generic
Found memtest86+ image: /boot/memtest86+.bin
root@ubuntu:/# grub-install --no-floppy --recheck --modules='biosdisk ext2' /dev/sda
Installation finished. No error reported.
root@ubuntu:/# grub-install --no-floppy --recheck --modules='biosdisk ext2' /dev/sdb
Installation finished. No error reported.
然后重启动,现在我们看到了Ubuntu Gnome登录提示符!
#p# 安装OpenCL和AMD驱动程序
接下来我们需要安装所有那些图形卡。由于这些是AMD卡,我们将安装AMD OpenCL软件开发工具包(SDK)和AMD驱动程序。
user@ubuntu:~$ mkdir AMD-APP-SDK-v2.5-lnx64
user@ubuntu:~$ cd AMD-APP-SDK-v2.5-lnx64/
user@ubuntu:~$ wget -APP-SDK-v2.5-lnx64.tgz
user@ubuntu:~$ tar -zxvf AMD-APP-SDK-v2.5-lnx64.tgz
user@ubuntu:~$ sudo ./Install-AMD-APP.sh
作为一种检查机制,我们可以使用HelloCL测试来确保一切工作正常:
user@ubuntu:~$ cd /opt/AMDAPP/samples/opencl/bin/x86_64
user@ubuntu:/opt/AMDAPP/samples/opencl/bin/x86_64$ ./HelloCL
HelloCL!
Getting Platform Information
No protocol specified
Creating a context AMD platform
Getting device info
Loading and compiling CL source
Running CL program
Done
Passed!
看起来很好,现在不妨安装驱动程序:
user@ubuntu:/opt/AMDAPP/samples/opencl/bin/x86_64$ cd ~/
user@ubuntu:~$ sudo apt-get install libssl-dev build-essential python-dev libpcap-dev
user@ubuntu:~$ export AMDAPPSDKROOT="/opt/AMDAPP"
user@ubuntu:~$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/opt/AMDAPP/lib/x86_64":"/opt/AMDAPP/lib/x86"
user@ubuntu:~$ export ATISTREAMSDKROOT=$AMDAPPSDKROOT
user@ubuntu:~$ chmod +x ati-driver-installer-11-11-x86.x86_64.run
user@ubuntu:~$ sudo ./ati-driver-installer-11-11-x86.x86_64.run
#p# 安装支持OpenCL的Pyrit
Pyrit很出色,但是它并没有考虑到最新的AMD SDK。如果你到目前为止一直按要求来安装,应该没问题。不过,你会发现我们不得不作几处更改,以便让一切运行起来正常。
user@ubuntu:~$ wget -opencl-0.4.0.tar.gz
user@ubuntu:~$ tar -zxvf cpyrit-opencl-0.4.0.tar.gz
user@ubuntu:~$ cd cpyrit-opencl-0.4.0/
user@ubuntu:~/cpyrit-opencl-0.4.0$ vi setup.py
编辑setup.py,在第55行后面新建一行,添加:
'/opt/AMDAPP/include', \
一旦pyrit有了所有正确的include指令,就可以开始编译/安装了。
user@ubuntu:~/cpyrit-opencl-0.4.0$ python setup.py build
user@ubuntu:~/cpyrit-opencl-0.4.0$ sudo python setup.py install
user@ubuntu:~/cpyrit-opencl-0.4.0$ cd ..
user@ubuntu:~$ wget -0.4.0.tar.gz
user@ubuntu:~$ tar -zxvf pyrit-0.4.0.tar.gz
user@ubuntu:~$ cd pyrit-0.4.0
user@ubuntu:~/pyrit-0.4.0$ python setup.py build
user@ubuntu:~/pyrit-0.4.0$ sudo python setup.py install
user@ubuntu:~/pyrit-0.4.0$ sudo pyrit list_cores
如果你使用一块视频卡,应该没问题;不过由于我们有四块,只好使用aticonfig实用工具来全部启用它们:
user@ubuntu:~$ sudo service gdm stop
user@ubuntu:~$ sudo aticonfig --adapter=all --initial
user@ubuntu:~$ sudo service gdm start
我们运行了一些快速的pyrit基准测试,情况看起来很好:
user@ubuntu:~$ sudo pyrit benchmark
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg
This code is distributed under the GNU General Public License v3+
Running benchmark (151933.5 PMKs/s)... /
Computed 151933.49 PMKs/s total.
#1: 'OpenCL-Device 'Cayman'': 41098.6 PMKs/s (RTT 2.7)
#2: 'OpenCL-Device 'Cayman'': 38496.3 PMKs/s (RTT 2.6)
#3: 'OpenCL-Device 'Cayman'': 42851.1 PMKs/s (RTT 2.6)
#4: 'OpenCL-Device 'Cayman'': 43023.6 PMKs/s (RTT 2.7)
#5: 'CPU-Core (SSE2)': 635.3 PMKs/s (RTT 3.5)
#6: 'CPU-Core (SSE2)': 588.7 PMKs/s (RTT 3.3)
#7: 'CPU-Core (SSE2)': 879.4 PMKs/s (RTT 2.8)
#8: 'CPU-Core (SSE2)': 961.1 PMKs/s (RTT 2.8)
#p# 安装带CAL++支持的pyrit
虽然151933.5 PMKs/s很好,但是我们知道这不是其应有的速度。所以我们决定采用使用CAL++的SVN版pyrit(0.4.1-dev),而不是使用带OpenCL的稳定版pyrit(0.4.0)。
我们要做的第一件事就是卸载pyrit(请相信我,这么做是值得的):
user@ubuntu:~$ cd pyrit-0.4.0/
user@ubuntu:~/pyrit-0.4.0$ sudo python setup.py install --record files.txt; sudo rm $(cat files.txt)
user@ubuntu:~pyrit-0.4.0$ cd ../cpyrit-opencl-0.4.0/
user@ubuntu:~/cpyrit-opencl-0.4.0$ sudo python setup.py install --record files.txt; sudo rm $(cat files.txt)
现在下载CAL++(),并安装它:
user@ubuntu:~$ sudo apt-get install libboost-all-dev cmake
user@ubuntu:~$ tar -zxvf calpp-0.90.tar.gz
user@ubuntu:~$ cd calpp-0.90
CAL++需要作几个变更,以便顺利找到AMD SDK库,所以编辑CMakeLists.txt,注释掉这些行(即在每行开头添加“#”):
FIND_LIBRARY( LIB_ATICALCL aticalcl PATHS "$ENV{ATISTREAMSDKROOT}/lib" )
FIND_LIBRARY( LIB_ATICALRT aticalrt PATHS "$ENV{ATISTREAMSDKROOT}/lib" )
FIND_PATH( LIB_ATICAL_INCLUDE NAMES cal.h calcl.h PATHS "$ENV{ATISTREAMSDKROOT}/include" )
添加这些:
FIND_LIBRARY( LIB_ATICALCL aticalcl PATHS "/opt/AMDAPP/lib" )
FIND_LIBRARY( LIB_ATICALRT aticalrt PATHS "/opt/AMDAPP/lib" )
FIND_PATH( LIB_ATICAL_INCLUDE NAMES cal.h calcl.h PATHS "/opt/AMDAPP/include/CAL" )
现在我们编译,然后安装:
user@ubuntu:~/calpp-0.90$ sudo make install
由于CAL++已安装,你可以下载pyrit的开发分支,完成安装的其余步骤。
user@ubuntu:~$ sudo apt-get install subversion
user@ubuntu:~$ svn checkout pyrit_svn
user@ubuntu:~$ cd pyrit_svn/cpyrit_calpp/
我有没有提到这是开发版本?这意味着你得作几个变更:
编辑setup.py第28行,应该是:
VERSION = '0.4.1-dev'
编辑setup.py第35行,应该是:
CALPP_INC_DIR = '/opt/AMDAPP'
编辑setup.py第41行,应该是:
CALPP_INC_DIRS.append(os.path.join(CALPP_INC_DIR, 'include/CAL'))
好了,我们已准备好了编译和安装:
user@ubuntu:~/pyrit_svn/cpyrit_calpp$ python setup.py build
user@ubuntu:~/pyrit_svn/cpyrit_calpp$ sudo python setup.py install
user@ubuntu:~/pyrit_svn/cpyrit_calpp$ cd ../pyrit/
user@ubuntu:~/pyrit_svn/pyrit$ python setup.py build
user@ubuntu:~/pyrit_svn/pyritsudo python setup.py install
#p# 向下滚动,即可看到基准测试部分下面的结果。我们得到了额外的20,000 PMK/s!
oclHashcat
oclHashcat的安装极其容易。只要解压缩即可。
user@ubuntu:~$ sudo apt-get install p7zip
user@ubuntu:~$ p7zip -d oclHashcat-0.26.7z
john
user@ubuntu:~$ wget -1.7.8-jumbo-8.tar.bz2
user@ubuntu:~$ tar -jxvf john-1.7.8-jumbo-8.tar.bz2
user@ubuntu:~$ cd john-1.7.8-jumbo-8/src/
user@ubuntu:~/john-1.7.8-jumbo-8/src$ make linux-x86-64
接下来,我们下载了KoreLogic的Defcon 10规则集,并将它们添加到我们的john.conf
user@ubuntu:~/john-1.7.8-jumbo-8/src$ cd ../run
user@ubuntu:~/john-1.7.8-jumbo-8/run$ wget -2010.korelogic.com/rules.txt
user@ubuntu:~/john-1.7.8-jumbo-8/run$ cat rules.txt >> john.conf
rcracki
较新的彩虹表(Rainbow Table)是.RTI文件,这意味着它们是索引彩虹表,运行速度应该比普通彩虹表要快。由于我们有几个这样的彩虹表,所以需要安装rcracki。
user@ubuntu:~$ wget _mt_0.6.6_src.7z
user@ubuntu:~$ p7zip -d rcracki_mt_0.6.6_src.7z
user@ubuntu:~$ cd rcracki_mt_0.6.6_src/
编辑Makefile,更改OPTIMIZATION变量,应该是:
OPTIMIZATION = -O3 -mtune=native
现在我们可以编译了。
user@ubuntu:~/rcracki_mt_0.6.6_src$ make
user@ubuntu:~/rcracki_mt_0.6.6_src$ sudo make install
user@ubuntu:~/rcracki_mt_0.6.6_src$ cd ..
user@ubuntu:~$ sudo mv rcracki_mt_0.6.6_src /cracking/bin/
user@ubuntu:~$ cd /cracking/bin/rcracki_mt_0.6.6_src
user@ubuntu:~/rcracki_mt_0.6.6_src$ sudo mkdir src
user@ubuntu:~/rcracki_mt_0.6.6_src$ sudo mv BaseRTReader.* Cha* COPYING CrackEngine.* fast_md* global.h Hash* INSTALLING.txt lm2ntlm.* Makefile MemoryPool.* Public.* RainbowCrack.* rcrackiThread.* README.txt RT* sha1.* TODO src/
user@ubuntu:~/rcracki_mt_0.6.6_src$ sudo chmod o+w rcracki.*
rcrack
为了支持比较旧的.RT彩虹表,我们可以使用标准的rcrack。版本1.5是预先编译的,所以安装其实只是下载和解压缩的过程。
user@ubuntu:~$ wget -rainbowcrack.com/rainbowcrack-1.5-linux64.zip
user@ubuntu:~$ unzip rainbowcrack-1.5-linux64.zip
#p# 下载
彩虹表
设想一下:没有大量彩虹表的密码破解服务器会怎样?幸好我们有一大批技术高手,所以没必要把时间花在下载上。我们拷贝了以下的彩虹表:
fastlm_alpha-numeric#1-7_0
lm_all-space_1-7
lm_alpha_1-7
lm_alpha-numeric_1-7
lm_alpha-numeric-symbol32-space_1-7
ntlm-alpha-numeric-space_1-8
ntlm_alpha-space_1-9
ntlm_hybrid(loweralpha#6-6,numeric#1-3)
ntlm_hybrid(loweralpha#7-7,numeric#1-3)
ntlm_loweralpha-numeric-space_1-8
ntlm_loweralpha-numeric-symbol32-space_1-7_0
ntlm_loweralpha-space_1-9
ntlm_mixalpha-numeric_1-8
ntlm_mixalpha-numeric-all-space_1-6
ntlm_mixalpha-numeric-space_1-7_0
ntlm_numeric_1-12
Ophcrack_Tables-LM_Fast_Free
Ophcrack_Tables-NTLM_Free
sha1_loweralpha-numeric-space_1-8
wpa-h1kari_renderman
wpa-Offensive WPA Tables
字列表
字列表(Wordlist)是你似乎从来不嫌多的东西之一。我们汇集了一些流行的字列表;我确信,一旦服务器进入生产环境,我们会获得其他字列表方面的许多建议。
user@ubuntu:/cracking/wordlists$ wget
user@ubuntu:/cracking/wordlists$ wget
user@ubuntu:/cracking/wordlists$ wget -worst-passwords.txt.bz2
user@ubuntu:/cracking/wordlists$ wget -banned.txt.bz2
user@ubuntu:/cracking/wordlists$ wget
user@ubuntu:/cracking/wordlists$ bunzip2 *.bz2
user@ubuntu:/cracking/wordlists$ gunzip all.gz
#p# 支持多用户环境
GPU破解
由于这个系统将由一群人来访问,我想确保没有谁干扰到别人。我写了这个简单的封装程序,那样要是有谁试图使用oclHashcat或pyrit,而别人在使用,就会被告知不许这么做。
user@ubuntu:~$ cat /cracking/bin/gpu-crack
#!/bin/bash
#
# gpu-crack - Simple GPU cracker wrapper for multi-user
# environments
#
# by Brad Antoniewicz
#
TMPFILE="/tmp/check.tmp"
ver="0.1"
SUDO_EXEC=/usr/bin/sudo
PYRIT_EXEC=/usr/local/bin/pyrit.real
HASHCAT_EXEC=/cracking/bin/oclhash/oclHashcat64.bin
isRunning=0;
echo -e "\n$0 v$ver"
echo "by brad a."
echo -e "-------------------------------------------------\n"
help() {
echo "Usage:"
echo -e "\t$0 [pyrit|hashcat] [options]\n"
echo "Define what program you want to crack with (pyrit or hashcat)"
echo "then provide the standard command line options that the cracker"
echo "supports."
}
checkProc() {
ps ax -o pid,user,etime,command | grep $1 | grep -v grep | grep -v $0 | sed -e 's/^ //' > $TMPFILE
NUMPROC=`wc -l $TMPFILE | cut -d" " -f 1`
if [[ $NUMPROC != 0 ]]; then
echo -e "[!] Found $NUMPROC instance of $1 running\n"
for ((i=1; i<=$NUMPROC; i++))
do
# awk NR==$i "$TMPFILE"
PID=`awk NR==$i "$TMPFILE" | cut -d" " -f 1`
echo -e "\tPID: $PID"
echo -e "\tUser: `awk NR==$i "$TMPFILE" | cut -d" " -f 2`"
echo -e "\tRunning for: `awk NR==$i "$TMPFILE" | awk '{print $3}'`"
echo -e "\n"
isRunning=1;
done
else
echo -e "[-] No instances of $1 found"
fi
}
launchProc() {
count=0;
for x in "$@"
do
if [ $count != 0 ]; then
cmdlineArgs=$cmdlineArgs" "$x
fi
let count++
done
echo "[+] Launching $1 with the following options"
echo -e "\t $cmdlineArgs"
if [[ $1 == "pyrit" ]]; then
echo "[+] Running Pyrit"
$SUDO_EXEC $PYRIT_EXEC $cmdlineArgs
elif [[ $1 == "hashcat" ]]; then
echo "[+] Running oclHashcat"
$SUDO_EXEC $HASHCAT_EXEC $cmdlineArgs
fi
}
if [[ $# -ge 2 ]] && [[ $1 == "pyrit"
上一篇:没有了
下一篇:红米note9