Wi-Fi,Wi-Fi(三)——deauth与钓鱼

deauth deauth,全称deauthentication。在无线网络中,“deauthentication(解除认证)“是一个正常的过程,用于断开客户端与无线接入点的连接。例如在关闭计算机或移动设备的无线网卡,或者离开无线网络覆盖范围时,通常会发送一个deauth帧来通知接入点。 然而,deauth也可以被滥用来进行攻击。在一次deauth攻击中,攻击者会冒充无线接入点或者客户端,向另一方发送deauth帧,以强制断开他们的连接。 Evil Twin Evil Twin是一种网络攻击方法,通过这种方法,攻击者创建一个与合法WiFi接入点几乎完全相同的虚假接入点。这个假的接入点具有与实际接入点相同的SSID(无线网络名称)和有时甚至相同的MAC地址。这使得无线客户端设备很难区分哪个是真正的接入点,从而可能错误地连接到攻击者创建的假冒接入点。 Wifiphisher Wifiphisher是一个用于进行红队渗透测试或Wi-Fi安全测试的恶意访问点框架。使用Wifiphisher,渗透测试人员可以通过执行有针对性的Wi-Fi关联攻击,轻松地获得针对无线客户端的中间人位置。此外,Wifiphisher还可以用于对连接的客户端发起定制的网络钓鱼攻击,以捕获凭据(例如来自第三方登录页面或WPA/WPA2预共享密钥)或感染受害者站点的恶意软件。 Wifiphisher被设计在运行与Linux系统,且主要在Kali Linux上进行调试,所以我也打算在Kali中安装。 推荐使用官方安装方法,不然可能会存在各种意想不到的问题: git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision cd wifiphisher # Switch to tool's directory sudo python setup.py install # Install any dependencies 实际上,使用官方安装的方法,在后续使用上也会存在各种各样的问题,目前测试下来最稳定的安装方法是: apt install wifiphisher less is more. Wifiphisher自带了四个模版,但都是英文界面。好在它支持自定义模版,将自定义模版文件夹放入以下目录即可应用: /usr/local/lib/python3.11/dist-packages/wifiphisher-1.4-py3.11.egg/wifiphisher/data/phishing-pages 直接运行wifiphisher: wifiphisher 根据提示进行操作即可。 受害者视角: 此时wifiphisher将会受到客户端在钓鱼页面输入的密码: 后记 本次测试一开始用的是小米Wi-Fi,deauth攻击完全失效,根本不会影响客户端和原接入点的连接,后来换成光猫自带的Wi-Fi才实验成功。通过控制变量法不难看出,稍微好一点的无线路由器存在某种防御措施,可以让deauth攻击的效果大打折扣,甚至完全失效。 本来以为客户端在断开与原接入点连接时,由于SSID相同,会自动加入钓鱼接入点,但实际测试下来并没有,猜测可能的原因是mac地址不同,不知道如果修改成一样的mac地址会不会让客户的自动连接钓鱼接入点。 此前曾经听闻江湖传言,可以通过无人机搭载近源渗透设备进行类似攻击,一直对这类手法心驰神往,不过这次实验过后让我对这类无线近源攻击的实用性产生了一些怀疑。 无线攻击对信号的要求非常苛刻,一墙之隔就能让普通设备信号大打折扣。攻击者设备的距离几乎不可能比正常接入点与客户端的距离更近,所以对攻击设备的信号收发是极大的考验,像我的TL-WN722N在实际情况中基本是不可用的。而且随着技术的发展,目前可能除了运营商的光猫,市面上绝大多数Wi-Fi都存在某种防御deauth的措施,这也让deauth在实际环境中的变得非常鸡肋。 不过反过来说,只要你有一个大功率的网卡,目标Wi-Fi又正巧没有防御deauth的措施,通过之前的受害者视角可以看出,deauth的作用是立竿见影的。就算不进行Evil Twin,只是单纯让人上不了网,也挺有意思的😏。

December 21, 2023 · fox09

Wi-Fi,Wi-Fi(二)——WPA

书接上回,WPA(Wi-Fi Protected Access)是一种用于保护Wi-Fi网络安全的认证和加密协议。它是在WEP协议的基础上进行改进而提出的。 WPA的设计目标是提供更强的安全性和抵御常见的攻击,以取代WEP的弱点。以下是WPA的主要特点和功能: 认证方式:WPA引入了更强大的认证方式,如预共享密钥(PSK)和802.1X/EAP(Extensible Authentication Protocol)。与WEP的简单密钥认证不同,WPA允许更复杂的认证机制,提供更好的身份验证和访问控制。不过在日常生活中,较为常用的方式是预共享密钥。 密钥管理:WEP使用静态密钥,所有设备共享同一个密钥,这容易受到字典攻击和暴力破解。WPA引入了动态密钥管理,使用TKIP(Temporal Key Integrity Protocol)生成每个数据包的唯一密钥,提供了更强的保密性和完整性。 加密算法:WEP使用RC4加密算法,它已经被证明存在许多安全漏洞。WPA采用了更强大的加密算法,如TKIP和AES(Advanced Encryption Standard),提供更高的加密强度和安全性。 动态密钥更新:WEP中的密钥是静态的,很少更改。WPA引入了动态密钥更新机制,通过四元组握手协议(4-way handshake)定期更换会话密钥,增加了网络的安全性。 报文完整性:WEP没有提供有效的报文完整性检查机制,使得数据包可能被篡改。WPA引入了Michael算法和报文完整性检查,可以检测和防止报文被修改。 在实际的破解中,WPA不存在类似WEP的“原理性致命缺陷”,只能被暴力破解。只要它的密钥设置得越复杂,破解的难度就越大。 注意,这里的暴力破解并不是像通常web渗透中,通过向服务端使用不同的密码进行正常请求,再通过返回来判断密码是否正确的在线破解。在实际操作中,在线破解WPA几乎是不可能的。 一开始这个说法我也无法接受,我还问了问chatgpt,它是这么回答的: WPA之所以难以在线破解,是因为它使用了更强大的加密算法(如TKIP或AES)以及更复杂的密钥派生过程。这使得在实时网络通信中通过传统的暴力破解方法(逐个尝试密码)非常困难,因为需要处理的可能性太多,以至于破解密码所需的时间和计算资源都会非常庞大。 嗯~很有道理,再来做个实验验证一下。拿出手机,对一个未知Wi-Fi随便输入一个密码,大约需要2秒才会返回“无法加入网络”的提示。显然,这对于暴力破解来说是无法接受的。 那该如何破解WPA? 预共享密钥 预共享密钥模式(Pre-Shared Key, PSK)是目前Wi-Fi中最常见的安全认证模式,也被称为个人模式(Personal mode),在WPA和WPA2中均有使用。在预共享密钥模式下,所有设备使用相同的预先共享的密钥进行认证和加密通信。 以下是预共享密钥模式的一般工作流程: 设置网络:网络管理员在无线路由器或访问点上配置网络设置,包括网络名称(SSID)和预共享密钥(密码)。 连接设备:用户通过Wi-Fi设置界面在其设备上选择要连接的网络,并输入预共享密钥。 认证握手:设备将预共享密钥发送到无线路由器或访问点以进行认证。该过程使用了四元组握手(4-way handshake)协议,其中设备和路由器之间通过交换消息来验证其身份并生成会话密钥。 加密通信:一旦认证成功,设备和路由器之间的通信将使用会话密钥进行加密。会话密钥是使用预共享密钥生成的,用于保护数据的机密性。 其中四次握手认证(简略版,不包含GTK)如下图: ANonce和SNonce分别代表AP和STA的Nonce,Nonce是指协议的任意指定用户只使用一次的随机数。 AP将ANonce发给STA,STA收到ANonce,再结合自己生成的SNonce计算PTK。 STA将SNonce和MIC发给AP,其中MIC基于PTK进行计算,用于消息的完整性校验。 AP收到SNonce,计算PTK,并对MIC做校验,如校验成功则返回MIC。 STA收到MIC校验正确即可装入PTK,并响应AP;AP在收到响应后也装入PTK。 其中,PTK的计算公式为: PTK = PRF(PMK, “Pairwise key expansion”, Min(AP_MAC, STA_MAC) || Max(AP_MAC, STA_MAC) || Min(ANonce, SNonce) || Max(ANonce, SNonce)) 其中,PRF(Pseudo-Random Function)是一个伪随机函数,“Pairwise key expansion"是一个固定字符串,"||“表示连接操作,Min()和Max()表示选择较小和较大的值。 在计算PTK时,首先要确定PMK,它在预共享密钥模式下的计算公式为: PMK = PBKDF2(HMAC-SHA1, PSK, ssid, 4096, 256)...

July 12, 2023 · fox09

Wi-Fi,Wi-Fi(一)——WEP

Wi-Fi是为数不多让我能感到工作技能与生活产生交集的领域,毕竟不是每个人都有自己的网站,但几乎每个人家里都会有Wi-Fi。 成为黑客的第一步,就是破解Wi-Fi密码。——亚历山大·伊万诺维奇·斯米尔诺夫(Alexander Ivanovich Smirnov) WEP,中文名称为有线等效加密,是第一个被广泛采用的Wi-Fi安全协议,首次出现于1997年 通过的 IEEE 802.11 标准。如今想找到一个支持WEP的设备以及不容易了。 WEP设计的安全性体现在以下三点: 消息机密性 无线网络的安全性最基本的就是要能够防止故意窃听,WEP使用RC4算法对无线数据进行加密,使得数据在无线网络中传输时不被窃听。 接入控制 在合法用户之间提供接入控制,来防止其他用户任意接入无线信道而影响合法用户。每个想要接入信道的合法用户都需要提供正确的共享密钥,这也有效地降低了非法用户的恶意攻击。 消息完整性 为了保证数据在无线网络传递过程中的完整性,WEP提供CRC32算法进行完整性校验,通过验证校验值确定传输的消息是否被篡改。 WEP 协议由认证协议和加密协议两个部分组成。其中认证协议用于确认通信双方的身份,加密协议用来确保通信数据的秘密性。而正是WEP的加密协议存在的缺陷,使得破解WEP密钥成为可能。 WEP加密协议原理 下面是WEP的加密协议的流程图 总体流程可以归纳为: 把用户输入的秘密密钥(SK,40bit)和初始向量(IV,24bit)拼接成随机密钥(K,64bit) 把随机密钥经由RC4算法生成伪随机密钥序列 把明文数据经过CRC32算法加密,再与它本身组合生成明文序列 用明文序列和伪随机密钥序列的异或结果作为密文序列 将初始向量和密文序列合成密文帧 其中,初始向量为随机生成,秘密密钥则是我们常说的Wi-Fi密码。 从流程图中不难看出,初始向量为明文传输。 RC4算法 RC4是一种串流加密算法,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。它由两部分组成:密钥调度算法KSA(KeyScheduling Algorithm)和伪随机密钥序列生成算法PRGA(Pseudo Random Generation Algorithm)。 密钥调度算法KSA将输入L字节的随机密钥K生成一个由N个元素组成的排列 $S$,L一般为8或16,N一般为256。 以下是KSA的python实现: def KSA(key): S = list(range(256)) # 初始化S盒为0到255的列表 keyLength = len(key) j = 0 for i in range(256): j = (j + S[i] + key[i % keyLength]) % 256 S[i], S[j] = S[j], S[i] # 交换S[i]和S[j]的值 return S # 示例密钥为64位的二进制数 key = [0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0] # 调用函数进行密钥排列初始化 S_box = KSA(key) print(S_box) # 输出排列后的S盒 伪随机密钥序列生成算法PRGA将两个索引 $i$ 和 $j$ 初始化为0,然后循环执行四个简单的操作:...

June 5, 2023 · fox09