第十章 WPS 和 探针

作者:Vivek Ramachandran, Cameron Buchanan

译者:飞龙

协议:CC BY-NC-SA 4.0

太阳底下无新事。

– 谚语

这一章由新的技巧组成,包括攻击 WPS 和探针监控,也包含了使无线测试更简单的 pineapple 工具。这些攻击和工具在本书第一版的发布过程中出现,我们要确保这本书尽可能全面。

10.1 WPS 攻击

无线保护设置(WPS)在 2006 年被引入,用于帮助没有无线知识的用户保护网络。其原理是它们的 WIFI 拥有单一隐藏的硬编码值,它可以允许密钥记忆来访问。新的设备可以通过按下 WIFI 路由上的按钮来验证。在房子外面的人不能解除设备,就不能获得访问权。所以这个问题被降解为记住 WPA 密钥或者设置更短的密钥。

2011 年末,爆破 WPS 验证系统的安全漏洞被公开。协商 WPS 交换所需的流量易于被一篇,并且 WPS Pin 本身只有 0~9 的 8 个字符。最开始,这可以提供 100,000,000 中可能性,与之相比,8 个字符的 azAZ09 密码拥有 218,340,105,584,896 种组合。

但是,这里存在进一步的漏洞:

  • 在 WPS Pin 的八个字符中,最后一个是前七个的校验和,所以它可以预测,选择就只剩下 10,000,000 种了。

  • 此外,前四个和后三个字符分别验证,这意味着一共有 11,000 种选择。

虽然验证机制中要判断两次,但是我们已经从 100,000,000 个可能的组合降到了 11,000。这相当于爆破算法时的六个小时的差异。这些判断使 WPS 更易受攻击。

在下一个实验中,我们会使用 Wash 和 Reaver 识别和攻击 WPS 漏洞配置。

实战时间 – WPS 攻击

遵循以下指南来开始:

  1. 在我们攻击开启了 WPS 的接入点之前:我们首先要创建它。我们所使用的 TP-LINK 拥有这个也行,默认开启,它非常麻烦还是便捷。为了再三检查它,我们可以登入我们的路由并点击 WPS。它看起来是这样:

  2. 现在我们确认它准备好了。我们需要启动我们的目标。我们需要配置我们的测试环境。我们打算使用 Wash 工具,并且 Wash 需要监控器接口来生效。就像我们之前做的那样,我们需要使用下列命令来启动:

    airmon-ng start wlan0

    输出是这样:

  3. 我们拥有了监控接口,设置为mon0,我们可以使用下列命令调用 Wash:

    wash --ignore-fcs -i mon0

    ignore fcs选项是由于wash导致的已知请求格式的问题:

  4. 我们会展示所有附近 支持 WPS 的设备。以及它们是否开启或解锁了 WPS,以及它们的版本:

  5. 我们可以看到Wireless Lab支持 WPS。它使用版本 1 并且没有锁住。太好了。我们注意到 MAC 地址,它在我这里是E8:94:F6:62:1E:8E,这会作为下一个工具reaver的目标。

  6. Reaver 尝试爆破给定 MAC 地址的 WPS Pin。启动它的语法如下:

    reaver -i mon0 -b <mac> -vv

    输出是这样:

  7. 启动之后,这个工具执行所有可能的 WPS 组合,并尝试验证。一旦它完成了,它会返回 WPS 码和密码,像这样:

  8. 得到 WPA-PSK 之后,我们可以正常验证了。我把匹配 WPS Pin 的默认的 WPA-PSK 留给我的设备,你可以通过在reaver中指定 Pin 来实现,使用下列命令:

    reaver -i mon0 -b <mac> -vv -p 88404148

    将我的 Pin 换成你的。

刚刚发生了什么?

我们使用 Wash 成功识别了带有 WPS 漏洞实例的无线网络。之后我们使用 Reaver 来恢复 WPA 密钥和 WPS Pin。使用这个信息,我们之后能够验证网络并继续网络渗透测试。

试一试 – 速率限制

在之前的联系中,我们攻击了整个未加密的 WPS 安装。我们可以使用多种方法来进一步探索安全的安装,不需要移除 WPS。

尝试将 WPS Pin 设置为任意值并再次尝试,来看看 Reaver 是否能够快速破解。

获得允许你限制 WPS 尝试速率的路由器。尝试和调整你的攻击来避免触发锁定。

10.2 探针嗅探

我们已经谈到了探针,以及如何使用它们来识别隐藏的网络,和执行有效的伪造接入点攻击。它们也可以将个体识别为目标,或者在大范围内以最少的努力识别它们。

当设备打算连接网路是,它会发送探测请求,包含它自己的 MAC地址和想要连接的网络名称。我们可以使用工具,例如airodump-ng来跟踪它们。但是,如果我们希望识别个体是否在特定位置特定时间内出现,或者在 WIFI 使用中发现趋势,我们就需要不同的方式。

这一节中,我们会使用 tshark 和 Python 来收集数据。你会收到代码和完成了什么的解释。

实战时间 – 收集数据

遵循下列指南来开始:

  1. 首先,我们需要寻找多个网络的设备。通常,普通的安卓或者 iPhone 智能收集就足够了。台式机通常不是良好的目标,因为它们只能待在一个地方。新的 iPhone 或安卓设备可能禁用了探测请求,或者不清楚,所以在你放弃之前检查一下。

  2. 一旦你搞定了设备,确保打开了 WIFI。

  3. 之后启动你的监控接口,像之前那样。

  4. 下面要完成的事情就是使用tshark寻找探测请求,通过下列命令:

    tshark -n -i mon0 subtype probereq

    命令的截图如下:

  5. 你这里的输出会有些混乱,因为tshark的默认输出没有为可读而涉及,只是尽可能展示很多信息。它看起来应该是这样:

  6. 你已经可以看到 MAC 地址和探测请求的 SSID。但是,输出还可以更好。我们可以使用下列命令来使其更加可读取:

    tshark –n –i mon0 subtype probereq –T fields –e separator= -e wlan.sa –e wlan_mgt.ssid

    命令的截图如下:

  7. 输出会变得更加可读:

  8. 所以现在我们获得了可读格式的输出,下面呢?我们要创建 Python 脚本,执行命令并记录输出用于之后的分析。在执行代码之前,你需要确保你准备好了监控接口,并在目录中创建了results.txt文件。Python 脚本如下:

    import subprocess
    import datetime
    results = open("results.txt", "a")
    while 1: blah = subprocess.check_output(["tshark –n –i mon0 subtype probereq –T fields –e separator= -e wlan.sa –e wlan_mgt.ssid –c 100"], shell=True) splitblah = blah.split("\n") for value in splitblah[:-1]: splitvalue = value.split("\t") MAC = str(splitvalue[1]) SSID = str(splitvalue[2]) time = str(datetime.datetime.now()) Results.write(MAC+" "+SSID+" "+time+"\r\n")

    让我们简单看一看 Python 脚本:

    • import subproces库和datetime库:这允许我们引用子进程和日期时间库。subprocess允许我们从 Linux 命令行监控接口,而datetime库允许我们获得准确时间和日期。

    • while 1:这行代码在停止之前一直执行。

    • results = open("results.txt", "a"):这使用附加模式打开了文件,并将其赋给results。附加模式只允许脚本添加文件的内容,这会防止文件被覆写。

    • blah = subprocess.check_output(["tshark –n –I mon0 subtype probereq –T fields –e separator= -e wlan.sa –e wlan_mgt.ssid –c 100"], shell=True):这打开了 shell 来执行我们之前侧事故的tshark命令。这次唯一的区别就是-c 100。这个选项所做的就是将命令限制为 100 个查询。这允许我们将节骨哦返回给我们自己,而不需要停止程序。因为我们说过在写入结果之后永远运行,这个脚本会再次启动。

    • 这行代码从 shell 获得输出,并将其赋给变量blah

    • splitblah = blah.split("\n"):接收变量blah并按行分割。

    • for value in splitblah[:-1]:对输入的每一行重复下面的操作,忽略包含头部的第一行。

    • splitvalue = value.split("\t"):将每一行拆分成更小的片段,使用tab字符作为分隔符。

    • 下面的三行接收每个文本段并将其赋给变量:

      MAC = str(splitvalue[1])
      SSID = str(splitvalue[2])
      time = str(datetime.datetime.now()
    • results.write(MAC+" "+SSID+" "+time+"\r\n"):接收所有这些值,将其写到文件中,由空格分隔,为了整洁最后附带回车和换行符。

写到文件的输出是整洁的文本行。

刚刚发生了什么?

我们从探测请求接收输入,并将其使用 Python 输出到文件中。

你可能会问自己它的目的是什么。这可以仅仅通过执行原始的tshark命令并添加>> results.txt来完成。你是对的,但是,我们创建了集成其它工具,可视化平台,数据库,以及服务的框架。

例如,使用 WiGLE 数据库,将 SSID 映射为位置,你就可以添加新的代码行接受 SSID 变量并查询 WIGLE 数据库。

作为替代,你也可以建立 MySQL 数据库并将输出保存到这里来执行 SQL 命令。

这一节向你提供了创建你自己的探测监控攻击的第一步。通过这个实验,并使用这个简单的代码作为第一步,就可以创建多数实用的工具。

试一试 – 扩展概念

研究什么工具可用于可视化和数据分析,并易于集成到 Python。例如 Maltego 的工具拥有免费版本,可以用于绘制信息。

为你自己建立 MySQL数据库来记录数据和重新调整之前的 Python 脚本,将结果输出到数据库。之后,构建另一个脚本(或在相同文件中)来获得数据并输出到 Maltego。

重新调整脚本来查询 WIGLE,之后从探测请求中收集地理位置数据。通过 Maltego 来输出数据。

尝试通过 Flask、Django 或 PHP 建立 Web 前端来展示你的数据。为展示数据研究现有的解决方案,并尝试通过与它们的创建者交谈来模拟和改进它们。

总结

这一章中,我们谈论了针对 WPS 的攻击,它在本书第一版的发布过程中出现。同时也初步尝试了将无线工具使用 Python 集成。我们已经到达了本书的末尾,我希望它充实而又有趣。七年后的第三版再见吧。

Kali Linux 无线渗透测试入门指南 第九章 无线渗透测试方法论相关推荐

  1. Android 渗透测试学习手册 第九章 编写渗透测试报告

    第九章 编写渗透测试报告 作者:Aditya Gupta 译者:飞龙 协议:CC BY-NC-SA 4.0 在本章中,我们将学习渗透测试的最终和最重要的方面,撰写报告. 这是一个简短的章节,指导你在报 ...

  2. Kali Linux 无线渗透测试入门指南 第一章 配置无线环境

    第一章 配置无线环境 作者:Vivek Ramachandran, Cameron Buchanan 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 如果我要在八个小时之内砍倒一棵树,我会花六 ...

  3. kail linux配置无线网络,Kali Linux 无线渗透测试入门指南 第一章 配置无线环境

    第一章 配置无线环境 作者:Vivek Ramachandran, Cameron Buchanan 译者:飞龙 简介 如果我要在八个小时之内砍倒一棵树,我会花六个小时来磨我的斧子. -- 亚伯拉罕· ...

  4. kail linux无线渗透测试只能,Kali Linux 无线渗透测试入门指南 第一章 配置无线环境...

    第一章 配置无线环境 作者:Vivek Ramachandran, Cameron Buchanan 译者:飞龙 简介 如果我要在八个小时之内砍倒一棵树,我会花六个小时来磨我的斧子. -- 亚伯拉罕· ...

  5. Kali Linux 秘籍 第九章 无线攻击

    第九章 无线攻击 作者:Willie L. Pritchett, David De Smet 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 当今,无线网络随处可见.由于用户四处奔走,插入以太 ...

  6. javacv入门指南:序章_建立开放文化的循序渐进指南

    javacv入门指南:序章 当我们在2015年发布<开放组织>时,它激发了各种规模和规模的公司对"开放"文化真正含义的好奇心. 即使我有机会与其他公司谈论使用我们的产品 ...

  7. Kali Linux 无线渗透测试入门指南 第七章 高级 WLAN 攻击

    第七章 高级 WLAN 攻击 作者:Vivek Ramachandran, Cameron Buchanan 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 知己知彼,百战不殆. 孙子,< ...

  8. Kali Linux 无线渗透测试入门指南 翻译完成!

    原书:Kali Linux Wireless Penetration Testing: Beginner's Guide 译者:飞龙 在线阅读 PDF格式 EPUB格式 MOBI格式 代码仓库 赞助我 ...

  9. 学完可入狱:《Web渗透测试-基于Kali Linux》经典黑客入门教程

    特别说明 此教程为纯技术分享!严禁利用本书所提到的漏洞和技术进行非法攻击,本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任! 前言 网络江湖,风起云涌,攻防 ...

最新文章

  1. 30分钟从工作电脑入侵公司内网!Win11:更新强制要求有TPM2.0,知道为啥了吧?...
  2. 九十四、动态规划系列之路径问题
  3. oracle数据库元数据SQL查询
  4. 中断、轮询、事件驱动、消息驱动、数据流驱动(Flow-Driven)?
  5. java tcp ip原理_从0到1用java再造tcpip协议栈:ICMP协议的原理和实现
  6. jq事件不自执行方法
  7. python 和vba在财务上_Excel函数和VBA技术在财务工作中的应用
  8. 路由交换技术-实验4:VLAN创建、划分、修剪及Trunk链路
  9. 如何处理J-Link不能连接目标MCU的问题?
  10. 计算机系学霸情书表白,大学生情书:各专业学霸的表白让人大开眼界,网友:果然要多读书...
  11. JNI 静态注册和动态注册
  12. 种草软文怎么写?分享一些超实用的种草软文写作技巧。
  13. Python-Django-视图
  14. Adobe Animate把.fla文件导出透明背景图片
  15. [leetcode] 179 Largest Number
  16. weiphp2.0:关于OneThink后台添加密码重置的功能
  17. TCP/UDP端口大全
  18. RDP是什么意思?有什么用?
  19. PMBOK中那些让人头疼的外国人(持续更新)
  20. Python实现---南邮离散数学实验四:图的生成及欧拉(回)路的确定

热门文章

  1. string empty java,在C#中,我应该使用string.Empty还是String.Empty或“”来初始化字符串?...
  2. 安卓程序运行后控件不显示_智能镜子显示屏掀起了智能家居行业的新潮流
  3. application实现网页计数_利用百度ai实现文本和图片审核
  4. 【设计模式】第六章 观察者模式
  5. MYSQL的安装基础语法笔记
  6. hessian、rmi、dubbo与rpc关系
  7. Mycat高级进阶---Mycat注解
  8. python OOP(2)
  9. NOIP2018游记题解
  10. SqlServer显示“正在还原...”