lujiguo115 发表于 2017-6-23 12:37:28

kali 密码攻击

第八章 密码攻击

  作者:Willie L. Pritchett, David De Smet
  译者:飞龙
  协议:CC BY-NC-SA 4.0

  这一章中,我们要探索一些攻击密码来获得用户账户的方式。密码破解是所有渗透测试者都需要执行的任务。本质上,任何系统的最不安全的部分就是由用户提交的密码。无论密码策略如何,人们必然讨厌输入强密码,或者时常更新它们。这会使它们易于成为黑客的目标。

8.1 在线密码攻击
  这个秘籍中我们会使用 Hydra 密码破解器。有时候我们有机会来物理攻击基于 Windows 的计算机,直接获取安全账户管理器(SAM)。但是,我们也有时不能这样做,所以这是在线密码攻击具有优势的情况。
  Hydra 支持许多协议,包括(但不仅限于)FTP、HTTP、HTTPS、MySQL、MSSQL、Oracle、Cisco、IMAP、VNC 和更多的协议。需要注意的是,由于这种攻击可能会产生噪声,这会增加你被侦测到的可能。

准备
  需要内部网络或互联网的链接,也需要一台用作受害者的计算机。

操作步骤
  让我们开始破解在线密码。


[*]  在开始菜单中,选择Applications | Kali Linux | Password Attacks | Online Attacks | hydra-gtk。


[*]  既然我们已经把 Hydra 打开了,我们需要设置我们的单词列表。点击Passwords(密码)标签页。我们需要使用用户名列表和密码列表。输入你的用户名和密码列表的位置。同时选择Loop around users(循环使用用户名)和Try empty password(尝试空密码)。

[*]用户名列表:/usr/share/wfuzz/wordlist/fuzzdb/wordlistsuser-passwd/names/nameslist.txt
[*]密码列表:/usr/share/wfuzz/wordlist/fuzzdb/wordlistsuser-passwd/passwds/john.txt

  你可以使用的快捷方式是,点击单词列表框来打开文件系统窗口。




[*]  下面,我们要做一些调整。在Performance Options(执行选项)下面,我们将任务数量从 16 设置为 2。原因是我们不打算让这么多进程运行,这样会使服务器崩溃。虽然它是可选的,我们也希望选择Exit after first found pair(在首次发现匹配之后退出)选项。


[*]  最后,我们要设置我们的目标。点击Target(目标)标签页并设置我们的目标和协议。这里,我们使用 Metasploitable 主机(192.168.10.111)的 MySQL 端口。


[*]  最后我们点击Start(开始)标签页的Start按钮来启动攻击。



工作原理
  这个秘籍中,我们使用 Hydra 来对目标执行字典攻击。Hydra 允许我们指定目标,并且使用用户名和密码列表。它会通过使用来自两个列表的不同用户名和密码组合来爆破密码。

8.2 破解 HTTP 密码
  这个秘籍中,我们将要使用 Hydra 密码破解器来破解 HTTP 密码。网站和 Web 应用的访问通常由用户名和密码组合来控制。就像任何密码类型那样,用户通常会输入弱密码。

准备
  需要内部网络或互联网的链接,也需要一台用作受害者的计算机。

操作步骤
  让我们开始破解 HTTP 密码。


[*]  在开始菜单中,选择Applications | Kali Linux | Password Attacks | Online Attacks | hydra-gtk。


[*]  既然我们已经把 Hydra 打开了,我们需要设置我们的单词列表。点击Passwords(密码)标签页。我们需要使用用户名列表和密码列表。输入你的用户名和密码列表的位置。同时选择Loop around users(循环使用用户名)和Try empty password(尝试空密码)。

[*]用户名列表:/usr/share/wfuzz/wordlist/fuzzdb/wordlistsuser-passwd/names/nameslist.txt
[*]密码列表:/usr/share/wfuzz/wordlist/fuzzdb/wordlistsuser-passwd/passwds/john.txt

  你可以使用的快捷方式是,点击单词列表框来打开文件系统窗口。




[*]  下面,我们要做一些调整。在Performance Options(执行选项)下面,我们将任务数量从 16 设置为 2。原因是我们不打算让这么多进程运行,这样会使服务器崩溃。虽然它是可选的,我们也希望选择Exit after first found pair(在首次发现匹配之后退出)选项。


[*]  最后,我们要设置我们的目标。点击Target(目标)标签页并设置我们的目标和协议。这里,我们使用 Metasploitable 主机(192.168.10.111)的 HTTP 端口。


[*]  最后我们点击Start(开始)标签页的Start按钮来启动攻击。



8.3 获得路由访问
  这个秘籍中,我们会使用 Medusa 来进行爆破攻击。
  当今,我们处于网络社会之中。随着联网视频游戏系统的诞生,多数家庭拥有数台计算机,并且小型业务以创纪录的趋势增长。路由器也成为了网络连接的基石。然而,富有经验的网络管理员的数量并没有增长,以保护这些路由器,使得许多这种路由器易于被攻击。

准备
  需要连接到互联网或内部网络的计算机。也需要可用的路由器。

操作步骤


[*]  在开始菜单中,访问Applications | Kali Linux | Password Attacks | Online Attacks | medusa。当 Medusa 启动后,它会加载help(帮助)文件。


[*]  我们现在已选定的选项来云顶 Medusa。

medusa –M http -h 192.168.10.1 -u admin -P /usr/share/wfuzz/ wordlist/fuzzdb/wordlists-user-passwd/passwds/john.txt -e ns -n 80 -F

[*]1


[*]1


[*]  -M http允许我们指定模块。这里,我们选择了 HTTP 模块。

[*]  -h 192.168.10.1允许我们指定主机。这里,我们选择了192.168.10.1(路由的 IP 地址)。

[*]  -u admin允许我们指定用户。这里我们选择了admin。

[*]  -P 允许我们指定密码列表的位置。

[*]  -e ns允许我们指定额外的密码检查。ns变量允许我们使用用户名作为密码,并且使用空密码。

[*]  -n 80允许我们指定端口号码。这里我们选择了80。

[*]  -F允许我们在成功找到用户名密码组合之后停止爆破。




[*]  Medusa 会运行,并尝试所有用户名和密码组合,直到某次成功。


工作原理
  这个秘籍中,我们使用 Medusa 来爆破目标路由器的密码。能够这样做的好处就是,一旦你能够访问路由器,你就可以更新它的设置,便于你以后再访问它,或者甚至是重定向发送给它的流量来改变你选择的位置。

更多
  你也可以直接从命令行运行 Medusa,通过键入medusa命令。
  你也可以传入其它选项给 Medusa,取决于你的情况。细节请参见帮助文档,通过在终端窗口仅仅键入medusa来显示。
  模块类型
  下面是我们可以用于 Medusa 的模块列表:


[*]AFP
[*]CVS
[*]FTP
[*]HTTP
[*]IMAP
[*]MS-SQL
[*]MySQL
[*]NetWare
[*]NNTP
[*]PCAnywhere
[*]Pop3
[*]PostgreSQL
[*]REXEC
[*]RLOGIN
[*]RSH
[*]SMBNT
[*]SMTP-AUTH
[*]SMTp-VRFY
[*]SNMP
[*]SSHv2
[*]Subversion
[*]Telnet
[*]VMware Authentication
[*]VNC
[*]Generic Wrapper
[*]Web form

8.4 密码分析
  这个秘籍中,我们会学到如何在密码攻击之前分析密码。密码分析的目的是允许我们通过收集目标机器、业务以及其它的信息来得到更小的单词列表。在我们的教程中,我们会使用 Ettercap 和 它的 ARP 毒化功能来嗅探流量。

准备
  这个秘籍需要局域网的链接。

操作步骤
  让我们启动 Ettercap 来进行密码分析。


[*]  我们以配置 Ettercap 来开始这个秘籍。首先,我们找到它的配置文件并用 VIM 编辑它。

locate etter.conf
vi /etc/etterconf

[*]1
[*]2


[*]1
[*]2
  要注意,你的位置可能不同。


[*]  将ec_uid和ec_gid改为0。


[*]  下面我们需要取消下面的 IPTABLES 行的注释。它在靠近文件末尾的LINUX一节。


[*]  现在,我们将要启动 Ettercap。使用-G选项,加载图形化界面(GUI)。


[*]  我们开启统一嗅探。你可以按下Shift + U或者访问菜单栏中的Sniff | Unified sniffing...。


[*]  选择网络接口。


[*]  下面,我们开始Scan for hosts(扫描主机),这可以通过按下Ctrl + S或访问菜单栏的Hosts | Scan for hosts来完成。


[*]  现在我们能够让 Ettercap 开始嗅探了。你可以按下Ctrl + W或访问菜单栏的Start | Start Sniffing(开始嗅探)。


[*]  最后,我们开始进行 ARP 毒化。访问菜单栏的Mitm | Arp poisoning(ARP 毒化)。


[*]  在出现的窗口中,选中Sniff remote connections(嗅探远程连接)的选项。


[*]  取决于网络情况,我们会看到信息。


[*]  一旦我们找到了我们想找的信息(用户名和密码)。我们会关闭 Ettercap。你可以按下Ctrl + E或者访问菜单栏的Start | Stop sniffing(停止嗅探)来完成。


[*]  现在我们需要关闭 ARP 毒化来使网络恢复正常。



工作原理
  这个秘籍中,我们使用 Ettercap 来毒化网络并偷取网络上的用户名和密码。我们以寻找和修改 Ettercap 的配置文件来开始。之后我们启动了 Ettercap 并使用 ARP 毒化执行中间人(MITM)攻击。由于流量被重定向到我们的主机,当用户名和密码在网络上传播时,我们就能够看到它们。

更多
  我们也可以使用 Metasploit 来分析用户名和面。我们会通过使用搜索邮件收集器模块来执行它。


[*]  打开终端窗口并启动 MSFCONSOLE:

msfconsole

[*]1


[*]1


[*]  搜索邮件收集器;

search email collector

[*]1


[*]1



[*]  键入下列命令来使用搜索邮件收集器模块:

use auxiliary/gather/search_email_collector

[*]1


[*]1


[*]  展示该模块可用的选项:

show options

[*]1


[*]1



[*]  下面我们设置域名。如果不想被有关部门查水表的话,请小心选择域名。

[*]  将域名设为你希望的域名:

set domaingmail.com

[*]1


[*]1


[*]  设置输入文件。这并不是必需的。如果你打算运行多个攻击,或打算稍后也能运行某个攻击,推荐设置它。

set outfile /root/Desktop/fromwillie.txt

[*]1


[*]1



[*]  最后,我们开始攻击。

run

[*]1


[*]1




8.5 使用 John the Ripper 破解 Windows 密码
  这个秘籍中,我们会使用 John the Ripper 来破解 Windows 安全访问管理器(SAM)文件。SAM文件储存了目标系统用户的用户名和密码的哈希。出于安全因素,SAM文件使用授权来保护,并且不能在 Windows 系统运行中直接手动打开或复制。

准备
  你将会需要访问 SAM 文件。
  这个秘籍中,我们假设你能够访问某台 Windows 主机。

操作步骤
  让我们开始使用 John the Ripper 破解 Windows SAM 文件。我们假设你能够访问某台 Windows 主机,通过远程入侵,或者物理接触,并且能够通过 USB 或 DVD 驱动器启动 Kali Linux。


[*]  看看你想挂载哪个硬盘:

Fdisk -l

[*]1


[*]1


[*]  挂载该硬盘,并将target设为它的挂载点。

mount /dev/sda1 /target/

[*]1


[*]1


[*]  将目录改为 Windows SAM 文件的位置:

cd /target/windows/system32/config

[*]1


[*]1


[*]  列出目录中所有内容。

ls –al

[*]1


[*]1


[*]  使用 SamDump2 来提取哈希,并将文件放到你的 root 用户目录中的一个叫做hashes的文件夹中。

samdump2 system SAM > /root/hashes/hash.txt

[*]1


[*]1


[*]  将目录改为 John the Ripper 所在目录。

[*]  运行 John the Ripper:

./john /root/hashes/hash.txt
./john /root/hashes/hash.txt–f:nt(If attacking a file on a NTFS System)

[*]1
[*]2


[*]1
[*]2



8.6 字典攻击
  这个秘籍中,我们会进行字典或单词列表的攻击。字典攻击使用事先准备的密码集合,并尝试使用单词列表爆破与指定用户匹配的密码。所生成的字典通常由三种类型:

+   只有用户名:列表只含有用户名。
+   只有密码:列表只含有密码。
+   用户名和密码:列表含有生成的用户名和密码。

  出于演示目的,我们使用 Crucnch 来生成我们自己的密码字典。

准备
  需要在 Kali 上安装 Crunch。

操作步骤
  Kali 的好处是已经安装了 Crunch,不像 BackTrack。


[*]  打开终端窗口,并输入crunch命令来查看 Crunch 的帮助文件。

crunch

[*]1


[*]1



[*]  使用 Crunch 生成密码的基本语法是, 。

[*]  Crunch 拥有几种备选选项。一些常用的如下:

[*]  -o:这个选项允许你指定输出列表的文件名称和位置、

[*]  -b:这个选项允许你指定每个文件的最大字节数。大小可以以 KB/MB/GB 来指定,并且必须和-o START触发器一起使用。

[*]  -t:这个选项允许你指定所使用的模式。

[*]  -l:在使用-t选项时,这个选项允许你将一些字符标识为占位符(@,%,^)。



[*]  下面我们执行命令来在桌面上创建密码列表,它最少 8 个字母,最大 10 个字符,并且使用字符集ABCDEFGabcdefg0123456789。

crunch 8 10 ABCDEFGabcdefg0123456789 –o /root/Desktop/ generatedCrunch.txt

[*]1


[*]1



[*]  一旦生成了文件,我们使用 Nano 来打开文件:

nano /root/Desktop/generatedCrunch.txt

[*]1


[*]1



工作原理
  这个秘籍中我们使用了 Crunch 来生成密码字典列表。

8.7 使用彩虹表
  这个秘籍中我们会学到如何在 Kali 中使用彩虹表。彩虹表是特殊字典表,它使用哈希值代替了标准的字典密码来完成攻击。出于演示目的,我们使用 RainbowCrack 来生成彩虹表。

操作步骤


[*]  打开终端窗口并将目录改为rtgen的目录:

cd /usr/share/rainbowcrack/

[*]1


[*]1



[*]  下面我们要启动rtgen来生成基于 MD5 的彩虹表。

./rtgen md5 loweralpha-numeric 1 5 0 3800 33554432 0

[*]1


[*]1



[*]  一旦彩虹表生成完毕,你的目录会包含.rt文件。这取决于用于生成哈希的处理器数量,大约需要 2~7 个小时。

[*]  为了开始破解密码,我们使用rtsort程序对彩虹表排序,使其更加易于使用。


工作原理
  这个秘籍中,我们使用了 RainbowCrack 攻击来生成、排序和破解 MD5 密码。RainbowCrack 能够使用彩虹表破解哈希,基于一些预先准备的哈希值。我们以使用小写字母值生成 MD5 彩虹表来开始。在秘籍的末尾,我们成功创建了彩虹表,并使用它来破解哈希文件。

8.8 使用英伟达统一计算设备架构(CUDA)
  这个秘籍中,我们会使用英伟达统一计算设备架构(CUDA)来破解密码哈希。CUDA 是一个并行计算平台,它通过利用 GPU 的能力来提升计算性能。随着时间的流逝,GPU 的处理能力有了戏剧性的提升,这让我们能够将它用于计算目的。出于演示目的,我们使用 CudaHashcat-plus 来破解密码。

准备
  需要 CUDA 所支持的显卡来完成这个秘籍。

操作步骤


[*]  打开终端窗口并将目录改为 OclHashcat-plus 所在目录。

cd /usr/share/oclhashcat-plus

[*]1


[*]1



[*]  执行下列命令来启动 CudaHashcat-plus 的帮助文件:

./cudaHashcat-plus.bin –help

[*]1


[*]1


[*]  运行 CudaHashcat 的语法是cudaHashcat-plus.bin hash 。

  使用 OclHashcat 的重点之一是理解它的字符集结构。


[*]  在我们开始攻击之前,让我们先看看一些可用的攻击向量。CudaHashcat 在攻击中使用左右掩码。密码的字符按照掩码划分,并且被均分为左和右掩码。对于每个掩码,你可以为其指定字典或字符集。出于我们的目的,我们会使用定制的字符集。

[*]  为了指定自定义字符集,我们使用–1选项。我们可以设置任意多的自定义字符集,只要为它们指定一个数值(1-n)。每个自定义字符都由问号(?)来表示,并且随后是字符类型。可用的选择是:

[*]d指定数字(0~9)
[*]l指定小写字母
[*]u指定大写字母
[*]s指定特殊字符
[*]1-n指定用做占位符的自定义字符集。


[*]  这样将它们组合起来,我们就指定了一个自定义字符集,它包括特殊字符(s),大写字母(u),小写字母(l)和数字(d),生成长度为 8 的密码。我们打算指定叫做attackfile的哈希表。

./cudaHashcat-plus.bin attackfile -1 ?l?u?d?s ?1?1?1?1 ?1?1?1?1

[*]1


[*]1


[*]  我们可以将这个命令这样拆分:

[*]  ./cudaHashcat-plus.bin调用了 CudaHashcat 。

[*]  attackfile是我们的攻击文件。

[*]  -1 ?l?u?d?指定了自定义字符集1,它包含小写字母、大写字母、数字和特殊字符。

[*]  ?1?1?1?1是使用字符集1的左掩码。

[*]  ?1?1?1?1是使用字符集1的右掩码。

  这就结束了。



8.9 使用 ATI Stream
  这个秘籍中,我们会使用 ATI Stream 来破解密码哈希。ATI Stream 类似于 CUDA,因为它是一个并行计算平台,它可以通过利用 GPU 的能力来提升计算性能。随着时间的流逝,GPU 的处理能力有了戏剧性的提升,这让我们能够将它用于计算目的。出于演示目的,我们使用 OclHashcat-plus 来破解密码。OclHashcat 有两种版本:plus 和 lite。两个都包含在 Kali 中。

准备
  需要支持 ATI Stream 的显卡来完成这个秘籍。

操作步骤
  让我们开始使用 OclHashcat-plus。


[*]  打开终端窗口并将目录改为 OclHashcat-plus 所在目录。

cd /usr/share/oclhashcat-plus

[*]1


[*]1



[*]  执行下列命令来启动 OclHashcat-plus 的帮助文件:

./oclHashcat-plus.bin –help

[*]1


[*]1


[*]  运行 OclHashcat 的语法是oclHashcat-plus.bin hash 。

  使用 OclHashcat 的重点之一是理解它的字符集结构。


[*]  在我们开始攻击之前,让我们先看看一些可用的攻击向量。OclHashcat 在攻击中使用左右掩码。密码的字符按照掩码划分,并且被均分为左和右掩码。对于每个掩码,你可以为其指定字典或字符集。出于我们的目的,我们会使用定制的字符集。

[*]  为了指定自定义字符集,我们使用–1选项。我们可以设置任意多的自定义字符集,只要为它们指定一个数值(1-n)。每个自定义字符都由问号(?)来表示,并且随后是字符类型。可用的选择是:

[*]d指定数字(0~9)
[*]l指定小写字母
[*]u指定大写字母
[*]s指定特殊字符
[*]1-n指定用做占位符的自定义字符集。


[*]  这样将它们组合起来,我们就指定了一个自定义字符集,它包括特殊字符(s),大写字母(u),小写字母(l)和数字(d),生成长度为 8 的密码。我们打算指定叫做attackfile的哈希表。

./oclHashcat-plus.bin attackfile -1 ?l?u?d?s ?1?1?1?1 ?1?1?1?1

[*]1


[*]1


[*]  我们可以将这个命令这样拆分:

[*]  ./oclHashcat-plus.bin调用了 OclHashcat 。

[*]  attackfile是我们的攻击文件。

[*]  -1 ?l?u?d?指定了自定义字符集1,它包含小写字母、大写字母、数字和特殊字符。

[*]  ?1?1?1?1是使用字符集1的左掩码。

[*]  ?1?1?1?1是使用字符集1的右掩码。

  这就结束了。



8.10 物理访问攻击
  这个秘籍中,我们会使用 SUCrack 来执行物理访问密码攻击。 SUCrack 是个多线程的工具,能够通过su来执行本地用户账户的暴力破解。Linux 的su命令允许你作为替代用户来运行命令。这个攻击,虽然在你不能通过其他手段提权 Linux 系统时非常有用,但是会填满日志文件,所以请确保在完成之后清理这些日志。
  SUCrack 拥有几种备选的可用命令:


[*]  --help允许你查看它的帮助文档。

[*]  -l允许你修改我们尝试绕过登录的用户。

[*]  -s允许你设置展示统计信息的秒数间隔。默认值为 3 秒。

[*]  -a允许你设置是否使用 ANSI 转义代码。

[*]  -w允许你设置工作线程的数量。由于 SUCrack 是多线程的,你可以运行任意多的线程。我们推荐你只使用一个线程,因为每次失败的登录尝试在尝试下个密码之前通常有三秒的延迟。


操作步骤


[*]  为了使用 SUCrack,你需要在启动时指定单词列表。否则,你会得到一条搞笑的信息。打开终端窗口并执行sucrack命令。出于我们的目的,我们会使用之前创建的自定义单词列表文件,它由 Crunch 生成。但是,你可以指定任何希望的单词列表。

sucrack /usr/share/wordlists/rockyou.txt

[*]1


[*]1


[*]  如果你打算设置两个工作线程,以及每 6 秒显示一次统计信息,并且使用 ANSI 转义代码,你可以使用下列命令:

sucrack –w 2 –s 6 –a /usr/share/wordlists/rockyou.txt

[*]1


[*]1
  这就结束了。



工作原理
  这个秘籍中,我们使用 SUCrack 来对系统的 root 用户执行物理访问密码攻击。使用单词列表的攻击可以对管理员(默认)或特定用户指定。我们运行sucrack命令,它为我们执行攻击。
页: [1]
查看完整版本: kali 密码攻击