evil twin_Evil-Twin框架:用于测试WiFi安全性的工具

evil twin

越来越多的设备通过无线方式通过无线方式连接到Internet,以及WiFi接入点的广泛可用性,为攻击者提供了许多利用用户的机会。 通过诱骗用户连接到恶意访问点 ,黑客可以完全控制用户的网络连接,从而可以嗅探和更改流量,将用户重定向到恶意站点以及通过网络发起其他攻击。

为了保护用户并教会他们避免冒险的在线行为,安全审核员和研究人员必须评估用户的安全做法,并在不确信自己安全的前提下了解他们连接到WiFi接入点的原因。 有很多工具可以进行WiFi审核,但是没有一个工具可以测试许多不同的攻击情况,并且没有一种工具可以很好地相互集成。

Evil-Twin框架 (ETF)旨在通过使审核员​​能够检查多种情况并集成多种工具来解决WiFi审核过程中的这些问题。 本文介绍了该框架及其功能,然后提供了一些示例来说明如何使用它。

ETF架构

ETF框架是用Python编写的,因为开发语言非常易于阅读和做出贡献。 另外,许多ETF的库(例如Scapy )已经为Python开发,因此可以很容易地将它们用于ETF。

ETF体系结构(图1)分为彼此交互的不同模块。 框架的设置全部写入单个配置文件中。 用户可以通过ConfigurationManager类通过用户界面验证和编辑设置。 其他模块只能读取这些设置并根据它们运行。

Evil-Twin Framework Architecture

图1:Evil-Twin框架架构

ETF支持与框架交互的多个用户界面。 当前的默认界面是一个交互式控制台,类似于Metasploit上的一个。 目前正在开发图形用户界面(GUI)和命令行界面(CLI),以供桌面/浏览器使用,并且将来可能会选择移动界面。 用户可以使用交互式控制台(并最终使用GUI)在配置文件中编辑设置。 用户界面可以与框架中存在的所有其他模块进行交互。

WiFi模块( AirCommunicator )旨在支持广泛的WiFi功能和攻击。 该框架确定了Wi-Fi通信的三个基本Struts: 数据包嗅探自定义数据包注入接入点创建 。 三个主要的WiFi通信模块分别是AirScannerAirInjectorAirHost ,分别负责数据包嗅探,数据包注入和访问点创建。 这三个类包装在主要的WiFi模块AirCommunicator中,该模块在启动服务之前读取配置文件。 可以使用这些核心功能中的一项或多项来构建任何类型的WiFi攻击。

为了启用中间人(MITM)攻击(这是攻击WiFi客户端的常用方法),该框架具有一个称为ETFITM的集成模块(中间邪恶双胞胎框架)。 该模块负责创建用于拦截和操纵HTTP / HTTPS通信的Web代理。

还有许多其他工具可以利用ETF创建的MITM头寸。 通过其可扩展性,ETF可以支持它们-不必单独调用它们,只需扩展Spawner类即可将工具添加到框架中。 这使开发人员或安全审核人员可以从框架内使用预先配置的参数字符串来调用程序。

扩展框架的另一种方法是通过插件。 插件分为两类: WiFi插件MITM插件 。 MITM插件是可以在MITM代理处于活动状态时运行的脚本。 代理将HTTP(S)请求和响应传递到可对其进行记录或操作的插件。 WiFi插件遵循更复杂的执行流程,但仍向希望开发和使用自己的插件的贡献者公开相当简单的API。 WiFi插件可以进一步分为三类,一个用于每个核心WiFi通信模块。

每个核心模块都有触发插件执行的某些事件。 例如,AirScanner具有三个定义的事件,可以对这些事件进行编程。 这些事件通常对应于服务开始运行之前的设置阶段,服务运行期间的中间执行阶段以及服务完成之后的拆卸或清理阶段。 由于Python允许多重继承,因此一个插件可以继承多个插件类。

上面的图1是框架架构的摘要。 指向ConfigurationManager的线表示模块从中读取信息,指向ConfigurationManager的线表示模块可以写入/编辑配置。

使用Evil-Twin框架的示例

ETF可以通过多种方式对WiFi网络安全性进行渗透测试,或者使最终用户了解WiFi安全性。 以下示例描述了该框架的一些笔测试功能,例如访问点和客户端检测,WPA和WEP访问点攻击以及恶意双访问点创建。

这些示例是使用带有WiFi卡的ETF设计的,该卡允许捕获WiFi流量。 他们还对ETF设置命令使用以下缩写:

  • APS接入点SSID
  • APB接入点BSSID
  • APC接入点通道
  • CM客户端MAC地址

在真实的测试场景中,请确保使用正确的信息替换这些缩写。

取消身份验证攻击后捕获WPA 4向握手

这种情况(图2)考虑了两个方面:取消身份验证攻击和捕获4向WPA握手的可能性。 该方案从运行中启用WPA / WPA2的访问点开始,该访问点具有一个连接的客户端设备(在这种情况下为智能手机)。 目标是使用一般的取消身份验证攻击来取消对客户端的身份验证,然后在尝试重新连接时捕获WPA握手。 重新连接将在取消身份验证后立即手动完成。

Scenario for capturing a WPA handshake after a de-authentication attack

图2:取消身份验证攻击后捕获WPA握手的方案

此示例中考虑的是ETF的可靠性。 目的是确定工具是否能够始终如一地捕获WPA握手。 该方案将使用每种工具多次执行,以在捕获WPA握手时检查其可靠性。

使用ETF捕获WPA握手的方法有多种。 一种方法是结合使用AirScanner和AirInjector模块。 另一种方法是只使用AirInjector。 以下方案使用了两个模块的组合。

ETF启动AirScanner模块并分析IEEE 802.11帧以查找WPA握手。 然后,AirInjector可以发起取消身份验证攻击以强制重新连接。 必须完成以下步骤才能在ETF上完成此操作:

  1. 进入AirScanner配置模式: config airscanner
  2. 将AirScanner配置为不跳频道: config airscanner
  3. 设置通道以嗅探访问点通道(APC)上的流量: set fixed_sniffing_channel = <APC>
  4. 使用CredentialSniffer插件启动AirScanner模块:使用certificateniffer启动airscanner
  5. 从嗅探到的接入点列表中添加目标接入点BSSID(APS): 添加aps,其中ssid = <APS>
  6. 启动AirInjector,默认情况下会发起取消身份验证攻击: 启动airinjector

这组简单的命令使ETF可以在每次测试运行时执行有效且成功的取消身份验证攻击。 ETF还可以在每次测试运行时捕获WPA握手。 以下代码使观察ETF的成功执行成为可能。


   
   
███████╗████████╗███████╗
██╔════╝╚══██╔══╝██╔════╝
█████╗     ██║   █████╗  
██╔══╝     ██║   ██╔══╝  
███████╗   ██║   ██║    
╚══════╝   ╚═╝   ╚═╝    
                                       

[ + ] Do you want to load an older session? [ Y / n ] : n
[ + ] Creating new temporary session on 02 / 08 / 2018
[ + ] Enter the desired session name:
ETF [ etf / aircommunicator / ] :: > config airscanner
ETF [ etf / aircommunicator / airscanner ] :: > listargs
  sniffing_interface =               wlan1; ( var )
              probes =                True; ( var )
             beacons =                True; ( var )
        hop_channels =               false ; ( var )
fixed_sniffing_channel =                   11 ; ( var )
ETF [ etf / aircommunicator / airscanner ] :: > start airscanner with
arpreplayer        caffelatte         credentialsniffer  packetlogger       selfishwifi        
ETF [ etf / aircommunicator / airscanner ] :: > start airscanner with credentialsniffer
[ + ] Successfully added credentialsniffer plugin.
[ + ] Starting packet sniffer on interface 'wlan1'
[ + ] Set fixed channel to 11
ETF [ etf / aircommunicator / airscanner ] :: > add aps where ssid = CrackWPA
ETF [ etf / aircommunicator / airscanner ] :: > start airinjector
ETF [ etf / aircommunicator / airscanner ] :: > [ + ] Starting deauthentication attack
                    - 1000 bursts of 1 packets
                    - 1 different packets
[ + ] Injection attacks finished executing.
[ + ] Starting post injection methods
[ + ] Post injection methods finished
[ + ] WPA Handshake found for client '70:3e:ac:bb:78:64' and network 'CrackWPA'

发起ARP重播攻击并破解WEP网络

下一个场景(图3)还将关注地址解析协议 (ARP)重播攻击的效率以及捕获包含初始化矢量(IV)的WEP数据包的速度。 同一网络可能要求破解捕获的IV的数量不同,因此此方案的限制为50,000个IV。 如果在第一次测试中使用少于50,000个IV破坏了网络,则该数字将成为网络上后续测试的新限制。 要使用的破解工具将是aircrack -ng

测试方案从使用WEP加密的访问点和知道密钥的脱机客户端开始-用于测试目的的密钥是12345,但是它可以是更大,更复杂的密钥。 一旦客户端连接到WEP接入点,它将发送一个免费的ARP数据包。 这就是要捕获并重放的数据包。 一旦捕获到包含IV的数据包的限制,测试即结束。

Scenario for capturing a WPA handshake after a de-authentication attack

图3:取消身份验证攻击后捕获WPA握手的方案

ETF使用Python的Scapy库进行数据包嗅探和注入。 为了最大程度地减少Scapy中已知的性能问题,ETF对其一些底层库进行了调整,以显着加快数据包注入的速度。 对于这种特定情况,ETF使用tcpdump作为后台进程而不是Scapy进行更有效的数据包嗅探,而Scapy用于标识加密的ARP数据包。

此方案要求在ETF上执行以下命令和操作:

  1. 进入AirScanner配置模式: config airscanner
  2. 将AirScanner配置为不跳频道: set hop_channels = false
  3. 设置通道以嗅探访问点通道(APC)上的流量: set fixed_sniffing_channel = <APC>
  4. 进入ARPReplayer插件配置模式: config arpreplayer
  5. 设置WEP网络的目标接入点BSSID(APB): 设置target_ap_bssid <APB>
  6. 使用ARPReplayer插件启动AirScanner模块: 使用arpreplayer启动airscanner

执行完这些命令后,ETF会正确识别加密的ARP数据包,然后成功执行ARP重播攻击,从而破坏了网络。

发射一个万能的蜜罐

图4中的场景创建了具有相同SSID的多个接入点。 此技术发现被探测但无法到达的网络的加密类型。 通过启动具有所有安全设置的多个访问点,客户端将自动连接到与本地缓存的访问点信息的安全设置匹配的访问点。

Scenario for capturing a WPA handshake after a de-authentication attack

图4:取消身份验证攻击后捕获WPA握手的方案

使用ETF,可以配置hostapd配置文件,然后在后台启动程序。 Hostapd支持通过配置虚拟接口在同一无线卡上启动多个访问点,并且由于它支持所有类型的安全配置,因此可以设置完整的万能蜜罐。 对于WEP和WPA(2)-PSK网络,使用默认密码,对于WPA(2)-EAP,配置“ 全部接受 ”策略。

对于这种情况,必须在ETF上执行以下命令和操作:

  1. 进入APLauncher配置模式: config aplauncher
  2. 设置所需的接入点SSID(APS): 设置ssid = <APS>
  3. 将APLauncher配置为万能蜜罐: set catch_all_honeypot = true
  4. 启动AirHost模块: 启动airhost

使用这些命令,ETF可以启动具有所有类型的安全配置的完整的万能蜜罐。 ETF还会自动启动DHCP和DNS服务器,以使客户端保持与互联网的连接。 ETF提供了更好,更快,更完整的解决方案来创建万能蜜罐。 以下代码可以观察到ETF的成功执行。


   
   
███████╗████████╗███████╗
██╔════╝╚══██╔══╝██╔════╝
█████╗     ██║   █████╗  
██╔══╝     ██║   ██╔══╝  
███████╗   ██║   ██║    
╚══════╝   ╚═╝   ╚═╝    
                                       

[ + ] Do you want to load an older session? [ Y / n ] : n
[ + ] Creating ne´,cxzw temporary session on 03 / 08 / 2018
[ + ] Enter the desired session name:
ETF [ etf / aircommunicator / ] :: > config aplauncher
ETF [ etf / aircommunicator / airhost / aplauncher ] :: > setconf ssid CatchMe
ssid = CatchMe
ETF [ etf / aircommunicator / airhost / aplauncher ] :: > setconf catch_all_honeypot true
catch_all_honeypot = true
ETF [ etf / aircommunicator / airhost / aplauncher ] :: > start airhost
[ + ] Killing already started processes and restarting network services
[ + ] Stopping dnsmasq and hostapd services
[ + ] Access Point stopped...
[ + ] Running airhost plugins pre_start
[ + ] Starting hostapd background process
[ + ] Starting dnsmasq service
[ + ] Running airhost plugins post_start
[ + ] Access Point launched successfully
[ + ] Starting dnsmasq service

结论与未来工作

这些方案使用常见和众所周知的攻击来帮助验证ETF的功能,以测试WiFi网络和客户端。 结果还验证了该框架的体系结构能够在利用平台现有功能的同时在其之上开发新的攻击媒介和功能。 由于已经编写了许多代码,因此这将加速新的WiFi渗透测试工具的开发。 此外,将补充性WiFi技术全部集成在一个工具中的事实将使WiFi笔测试更加简单和高效。

ETF的目标不是取代现有工具,而是对其进行补充,并在进行WiFi笔测试和提高用户知名度时向安全审核员提供更多选择。

ETF是一个开源项目, 可在GitHub上获得 ,欢迎社区对其发展做出贡献。 以下是您可以提供帮助的一些方法。

当前的WiFi笔测试的局限性之一是无法在测试过程中记录重要事件。 这使得报告已识别的漏洞更加困难且准确性较低。 该框架可以实现一个记录器,每个类都可以访问该记录器以创建笔测试会话报告。

ETF工具的功能涵盖WiFi笔测试的许多方面。 一方面,它促进了WiFi侦察,漏洞发现和攻击的阶段。 另一方面,它没有提供有助于报告阶段的功能。 添加会话的概念和会话报告功能,例如在会话期间记录重要事件,将大大增加该工具在实际笔测试场景中的价值。

另一个有价值的贡献将是扩展框架以促进WiFi模糊测试。 IEEE 802.11协议非常复杂,考虑到在客户端和访问点端都有多种实现,可以肯定地认为这些实现包含错误甚至安全漏洞。 这些错误可以通过模糊IEEE 802.11协议帧来发现。 由于Scapy允许自定义数据包的创建和注入,因此可以通过它实现模糊器。

翻译自: https://opensource.com/article/19/1/evil-twin-framework

evil twin

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值