Kali Linux 密码攻击工具 pyrit 教程

Kali Linux 密码攻击工具 pyrit 教程
    日期:2017年11月29日
    观看: 6,679 °C 次

Pyrit允许您创建海量数据库,预先计算 WPA / WPA2-PSK身份验证阶段的时空权衡。通过使用ATI-Stream,Nvidia CUDA和OpenCL等多核处理器和其他平台的计算能力,它是目前世界上使用最广泛的安全协议之一的最强大的攻击手段。

 

WPA / WPA2-PSK是IEEE 802.11 WPA / WPA2的一个子集,通过为每个参与方分配相同的预共享密钥,跳过了密钥分发和客户端认证的复杂任务。这个主密钥来源于管理用户必须预先配置的密码,例如在他的笔记本电脑和接入点上。当笔记本电脑创建到接入点的连接时,会从主密钥导出新的会话密钥,以加密和验证以下流量。使用单个主密钥而不是每个用户密钥的“快捷方式”便于部署受家庭和小型办公室使用的WPA / WPA2保护网络,其代价是使协议容易受到针对其关键谈判阶段的暴力攻击; 它允许最终显示保护网络的密码。这个漏洞必须被认为是特别灾难性的,因为协议允许预先计算大部分的关键推导,使得简单的暴力攻击更加诱惑攻击者。

 

作者不鼓励或支持使用Pyrit侵犯人民的通信隐私。在这里讨论的技术的探索和实现激发了他们自己的目的; 这是由开放的开发,严格的基于源代码的分发和“copyleft”许可。

 

Pyrit是自由软件 - 免费。每个人都可以检查,复制或修改它,并在GNU通用公共许可证v3 +下共享派生的工作。它在各种平台上编译和执行,包括FreeBSD,MacOS X和Linux作为操作系统以及x86,alpha,arm,hppa,mips,powerpc-,s390和sparc处理器。

 

用暴力攻击WPA / WPA2归结为尽可能快地计算成对主密钥。每个Pairwise主密钥都是“值得”正好通过PBKDF2 - HMAC - SHA1推送的一兆字节的数据。反过来,每秒计算10.000个PMKs相当于在一秒钟内用SHA1散列9.8千兆字节的数据。

 

这些是多个计算节点如何通过Pyrit提供的各种方式访问​​单个存储服务器的示例:

  • 单个存储(例如MySQL服务器)
  • 本地网络可以直接访问存储服务器,并提供四个不同级别的计算节点,只有一个节点本身实际访问存储服务器。
  • 另一个不可信任的网络可以通过Pyrit的RPC接口访问存储,并提供三个计算节点,其中两个实际访问RPC接口。

 

用法:

pyrit [options] command

pyrit [选项] 命令

 

认可选项:

-b:按BSSID筛选AccessPoint

-e:按ESSID过滤AccessPoint

-h:打印某个命令的帮助

-i:输入的文件名(' - '是stdin)

-o:输出的文件名(' - '是stdout)

-r:pcap格式的数据包捕获源

-u:要使用的存储系统的URL

--all-handshakes:使用所有的握手,而不是最好的握手

-- aes:使用AES

 

可识别的命令:

analyze:分析数据包捕获文件

attack_batch:攻击从数据库的PMKs /密码握手

attack_cowpatty:攻击一个来自cowpatty文件的PMK的握手

attack_db:攻击与数据库中的PMK握手

attack_passthrough:用文件中的密码攻击握手

batch:批处理数据库

benchmark :确定可用内核的性能

benchmark_long:更长和更准确的基准版本(5分钟)

check_db:检查数据库是否有错误

create_essid:创建一个新的ESSID

delete_essid:从数据库中删除一个ESSID

eval:计算可用密码和匹配结果

export_cowpatty:将结果导出到新的cowpatty文件

export_hashdb:将结果导出到airolib数据库

export_passwords:将密码导出到文件

help:打印一般帮助

import_passwords:从类文件源导入密码

import_unique_passwords:从类文件源导入唯一密码

list_cores:列出可用的核心

list_essids:列出所有ESSID,但不计入匹配结果

passthrough:计算PMK并将结果写入文件

relay:通过RPC中继一个存储URL

selftest:测试硬件以确保其计算正确的结果

serve:为其他Pyrit客户提供本地硬件

strip:将数据包捕获文件剥离到相关数据包中

stripLive:捕获来自现场捕获源的相关数据包

verify:通过重新计算验证结果的10%

 

Pyrit

 

使用教程:

在本教程中,我们将引用与Pyrit的源代码一起分发的文件和示例。因此,第一步是让自己的Pyrit的副本:

git clone https://github.com/JPaulMora/Pyrit.git

cd Pyrit

 

你应该在这个目录下找到三个文件,这些文件对我们来说很有用:

  • dict.gz是一个gzip压缩的单词表
  • wpa2psk-linksys.dump.gz是WPA2-PSK握手的gzip压缩转储
  • wpapsk-linksys.dump.gz是一个gzip压缩转储WPA-PSK握手

 

捕捉文件和文字列表的第一步

Pyrit可以理解pcap格式的数据包捕获文件。这些文件基本上包含从空中捕获的内容。我们在本教程中的第一个有意义的步骤是让Pyrit分析一个捕获文件,并给我们一些关于内容的信息。

 

分析一个捕获文件

发出以下命令来分析文件wpapsk-linksys.dump.gz:

pyrit -r wpapsk-linksys.dump.gz analyze

 

Pyrit应该输出非常类似于以下内容的输出:

Pyrit 0.3.0 (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com

This code is distributed under the GNU General Public License v3+

 

Parsing file 'wpapsk-linksys.dump.gz' (1/1)...

587 packets (587 802.11-packets), 1 APs

 

#1: AccessPoint 00:0b:86:c2:a4:85 ('linksys')

#0: Station 00:13:ce:55:98:ef, handshake found

#1: Station 01:00:5e:7f:ff:fa

#2: Station 01:00:5e:00:00:16

 

Pyrit已成功解析捕获文件,并找到一个BSSID为00:0b:86:c2:a4:85和ESSID “linksys”的AccessPoint,并与该AccessPoint进行通信。捕获文件中还记录了使用MAC 00:13:ce:55:98:ef的Station与AccessPoint之间的密钥协商(称为四路握手)。我们可以使用这个握手的数据来猜测用来保护网络的密码。

 

请注意,Pyrit可以透明地读/写gzip压缩文件; 当处理可能采取兆字节的大型单词列表或cowpatty文件时,这变得非常方便。

 

攻击握手并显示密码

我们现在使用wordlist dict.gz的例子,让Pyrit猜测在AccessPoint 00:0b:86:c2:a4:85和站点00:13:ce:55:98:ef之间的密钥协商中使用的密码。如果它是列表的一部分,则应该检测到正确的密码。就我们而言,这被称为“直通攻击”。发出以下命令:

pyrit -r wpapsk-linksys.dump.gz -i dict.gz -b 00:0b:86:c2:a4:85 attack_passthrougha

 

这告诉Pyrit采用捕获文件wpapsk-linksys.dump.gz并使用dictionary-file dict.gz攻击与AccessPoint 00:0b:86:c2:a4:85的密钥协商。

 

请注意,您并不总是必须告诉Pyrit哪个AccessPoint可以从捕获文件中选择 - Pyrit通常能够自行计算出来。

 

你应该得到一个非常类似于以下的回应:

Pyrit 0.3.0 (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com

This code is distributed under the GNU General Public License v3+

 

Parsing file 'wpapsk-linksys.dump.gz' (1/1)...

587 packets (587 802.11-packets), 1 APs

 

Tried 4091 PMKs so far; 935 PMKs per second.

 

The password is 'dictionary'.

 

我们已经成功地透露用于保护网络00:0b:86:c2:a4:85的密码是“字典” ...

 

插曲:从不必要的残酷剥离捕获文件

捕获文件通常是从空中直接捕获的流量的简单转储。就我们的目的而言,我们只对AccessPoint和Station之间的一小部分流量感兴趣。Pyrit可以通过分析流量并丢弃所有对我们无用的数据包来帮助减小数据包捕获文件的大小。我们最终得到一个新的,非常小的捕获文件,仍然保存所有有价值的信息,可用于像Wireshark的其他工具。

 

请注意,剥离捕获文件是没有必要的。它的唯一目的是让大型捕捉文件变得更容易一些。

 

我们最初的例子有587个数据包,大小约为13kb。发出以下命令:

pyrit -r wpapsk-linksys.dump.gz -o wpapsk-linksys_stripped.dump.gz strip

 

你应该得到如下的回应:

Pyrit 0.3.0 (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com

This code is distributed under the GNU General Public License v3+

 

Parsing file 'wpapsk-linksys.dump.gz' (1/1)...

587 packets (587 802.11-packets), 1 APs

 

#1: AccessPoint 00:0b:86:c2:a4:85 ('linksys')

#0: Station 00:13:ce:55:98:ef (1 authentications)

 

New pcap-file 'wpapsk-linksys_stripped.dump.gz' written (4 out of 587 packets)

 

新的捕获文件wpapsk-linksys_stripped.dump.gz的大小只有几百字节,只包含密钥协商(用于攻击密码)和一个信标帧(用于检测网络的ESSID)中的三个。

 

使用Pyrit的数据库

正如您可能已经知道的,猜测在WPA(2)-PSK密钥协商中使用的密码是一个计算密集型任务。在此过程中,超过99.9%的CPU周期必须用于计算所谓的成对主密钥,即从ESSID派生的256位密钥和使用PBKDF2-HMAC-SHA1算法的密码。WPA(2)-PSK的主要弱点之一是,成对主密钥没有在AccessPoint和Station之间的密钥协商时刻唯一的元素。因此可以预先计算成对主密钥并存储起来以备后用。在攻击密钥协商的那一刻,剩余的0.1%依赖于会话唯一的数据。因此,攻击者预先计算普通ESSID 的成对主密钥的大型表是非常有价值的。

 

这就是Pyrit数据库所在的地方。它可以存储ESSID,密码和相应的Pairwise Master Keys,可能会增长到数百万条条目的大小。从全新安装Pyrit开始,你的数据库很可能是空的。发出以下命令以获得总览:

pyrit eval

 

Pyrit应该这样回答:

Pyrit 0.3.0 (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com

This code is distributed under the GNU General Public License v3+

 

Connecting to storage at 'file://'... connected.

Passwords available: 0

 

没有什么奇特的东西在这里看到。

请注意默认的基于文件系统的存储'file://'。我们稍后会来到SQL数据库。

 

填充和批处理数据库

为了使数据库有用,我们将使用wordlist中的密码填充它。发出以下命令:

pyrit -i dict.gz import_passwords

 

Pyrit将读取“dict.gz”文件并将其存储在内部数据库格式中。你应该得到如下的回应:

Pyrit 0.3.0 (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com

This code is distributed under the GNU General Public License v3+

 

Connecting to storage at 'file://'... connected.

10202 lines read. Flushing buffers...

All done.

 

请注意,稍后您可以将更多密码添加到数据库; 命令“import_passwords”确保wordlist内或wordlist与数据库之间的重复项被丢弃,而不是再次存储。现在,再次运行“eval”命令,查看数据库是如何用“dict.gz”中的密码填充的。你应该得到类似这样的输出:

Pyrit 0.3.0 (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com

This code is distributed under the GNU General Public License v3+

 

Connecting to storage at 'file://'... connected.

Passwords available: 4078

 

你会注意到Pyrit只从文件中存储了10,202个密码中的4078个。Pyrit已经自动过滤了不适合WPA(2)-PSK的密码,并且还重新整理了重复的密码。现在我们在数据库中有一些密码,我们必须创建一个ESSID。发出以下命令:

pyrit -e linksys create_essid

 

...你会得到这样的输出:

Pyrit 0.3.0 (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com

This code is distributed under the GNU General Public License v3+

 

Connecting to storage at 'file://'... connected.

Created ESSID 'linksys'

 

再次运行“eval”命令,您将看到在数据库中已经创建了ESSID “linksys”:

Pyrit 0.3.0 (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com

This code is distributed under the GNU General Public License v3+

 

Connecting to storage at 'file://'... connected.

Passwords available: 4078

 

ESSID 'linksys' : 0 (0.00%)

 

数据库现在包含足够的信息来开始批处理。Pyrit将取所有(ESSID:密码)组合,计算相应的Pairwise主密钥并将其存储起来供以后使用。

 

请注意,您可以随时停止Pyrit的批处理(使用ctrl + c或发送SIGTERM)。Pyrit将在下一次开始批处理时停止。发出以下命令:

pyrit batch

 

...并观察Pyrit如何通过数据库查找,直到完全失效:

Pyrit 0.3.0 (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com

This code is distributed under the GNU General Public License v3+

 

Connecting to storage at 'file://'... connected.

Working on ESSID 'linksys'

Processed all workunits for ESSID 'linksys'; 1035 PMKs per second.

 

Batchprocessing done.

 

您可以再次使用“eval”命令查看ESSID “linksys”的所有工作单元已经计算出来。

 

使用数据库来攻击握手

我们现在可以使用存储在数据库中的Pairwise Master Keys来攻击与上例中相同的握手。我们发出一个“数据库攻击”,如下所示,而不是运行一个“直通攻击”

pyrit -r wpapsk-linksys.dump.gz attack_db

 

请注意,我们既没有指定网络的ESSID也没有指定BSSID。

 

你应该得到一个非常类似于以下的回应:

Pyrit 0.3.0 (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com

This code is distributed under the GNU General Public License v3+

 

Connecting to storage at 'file://'... connected.

Parsing file 'wpapsk-linksys.dump.gz' (1/1)...

587 packets (587 802.11-packets), 1 APs

 

Picked AccessPoint 00:0b:86:c2:a4:85 ('linksys') automatically.

Attacking handshake with Station 00:13:ce:55:98:ef...

Tried 1639 PMKs so far (39.8%); 1577435 PMKs per second.

 

The password is 'dictionary'.

 

再次,揭示了保护网络的密码。

虽然我们的例子使用了一个非常小的单词表,并且性能数字从而不是非常可靠,但是攻击预先计算的Pairwise Master Keys数据库的握手通常会每秒钟超过一百万个密码。您还可以针对第二个捕获文件“wpa2psk-linksys.dump.gz”运行数据库攻击,该文件也将使用预先计算的Pairwise主密钥。

 

在线视频:

优酷:

腾讯:https://v.qq.com/x/page/i0511vvh8g4.html

爱奇艺:

乐视:http://www.le.com/ptv/vplay/31257115.html

 

Pyrit使用效果与评价:

此工具虽然说都非常的好,功能也很全面,由于它仅能分析pcap格式的数据包,因此需要结合抓包工具才有效果。更多内容:https://github.com/JPaulMora/Pyrit

付杰
  • ¥ 199.0元
  • 市场价:399.0元
  • ¥ 798.0元
  • 市场价:1298.0元
  • ¥ 0.0元
  • 市场价:199.0元
  • ¥ 59.0元
  • 市场价:99.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: