这篇文章主要介绍“ETF的框架和功能是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ETF的框架和功能是什么”文章能帮助大家解决问题。
ETF 的架构
ETF 的框架是用 Python 写的,因为这门开发语言的代码非常易读,也方便其他开发者向这个项目贡献代码。除此之外,很多 ETF 的库,比如 Scapy,都是为 Python 开发的,很容易就能将它们用于 ETF。
ETF 的架构(图 1)分为不同的彼此交互的模块。该框架的设置都写在一个单独的配置文件里。用户可以通过 ConfigurationManager 类里的用户界面来验证并修改这些配置。其他模块只能读取这些设置并根据这些设置进行运行。
图 1:Evil-Twin 的框架架构
ETF 支持多种与框架交互的用户界面,当前的默认界面是一个交互式控制台界面,类似于 Metasploit 那种。正在开发用于桌面/浏览器使用的图形用户界面(GUI)和命令行界面(CLI),移动端界面也是未来的一个备选项。用户可以使用交互式控制台界面来修改配置文件里的设置(最终会使用 GUI)。用户界面可以与存在于这个框架里的每个模块进行交互。
WiFi 模块(AirCommunicator)用于支持多种 WiFi 功能和攻击类型。该框架确定了 Wi-Fi 通信的三个基本支柱:数据包嗅探、自定义数据包注入和创建接入点。三个主要的 WiFi 通信模块 AirScanner、AirInjector,和 AirHost,分别用于数据包嗅探、数据包注入,和接入点创建。这三个类被封装在主 WiFi 模块 AirCommunicator 中,AirCommunicator 在启动这些服务之前会先读取这些服务的配置文件。使用这些核心功能的一个或多个就可以构造任意类型的 WiFi 攻击。
要使用中间人(MITM)攻击(这是一种攻击 WiFi 客户端的常见手法),ETF 有一个叫做 ETFITM(Evil-Twin Framework-in-the-Middle)的集成模块,这个模块用于创建一个 web 代理,来拦截和修改经过的 HTTP/HTTPS 数据包。
许多其他的工具也可以利用 ETF 创建的 MITM。通过它的可扩展性,ETF 能够支持它们,而不必单独地调用它们,你可以通过扩展 Spawner 类来将这些工具添加到框架里。这使得开发者和安全审计人员可以使用框架里预先配置好的参数字符来调用程序。
扩展 ETF 的另一种方法就是通过插件。有两类插件:WiFi 插件和 MITM 插件。MITM 插件是在 MITM 代理运行时可以执行的脚本。代理会将 HTTP(s) 请求和响应传递给可以记录和处理它们的插件。WiFi 插件遵循一个更加复杂的执行流程,但仍然会给想参与开发并且使用自己插件的贡献者提供一个相对简单的 API。WiFi 插件还可以进一步地划分为三类,其中每个对应一个核心 WiFi 通信模块。
每个核心模块都有一些特定事件能触发响应的插件的执行。举个例子,AirScanner 有三个已定义的事件,可以对其响应进行编程处理。事件通常对应于服务开始运行之前的设置阶段、服务正在运行时的中间执行阶段、服务完成后的卸载或清理阶段。因为 Python 允许多重继承,所以一个插件可以继承多个插件类。
上面的图 1 是框架架构的摘要。从 ConfigurationManager 指出的箭头意味着模块会从中读取信息,指向它的箭头意味着模块会写入/修改配置。
使用 ETF 的例子
ETF 可以通过多种方式对 WiFi 的网络安全或者终端用户的 WiFi 安全意识进行渗透测试。下面的例子描述了这个框架的一些渗透测试功能,例如接入点和客户端检测、对使用 WPA 和 WEP 类型协议的接入点进行攻击,和创建 evil twin 接入点。
这些例子是使用 ETF 和允许进行 WiFi 数据捕获的 WiFi 卡设计的。它们也在 ETF 设置命令中使用了下面这些缩写:
APS Access Point SSID APB Access Point BSSID APC Access Point Channel CM Client MAC address
在实际的测试场景中,确保你使用了正确的信息来替换这些缩写。
在解除认证攻击后捕获 WPA 四次握手的数据包。
这个场景(图 2)做了两个方面的考虑:解除认证攻击和捕获 WPA 四次握手数据包的可能性。这个场景从一个启用了 WPA/WPA2 的接入点开始,这个接入点有一个已经连上的客户端设备(在本例中是一台智能手机)。目的是通过常规的解除认证攻击(LCTT 译注:类似于 DoS 攻击)来让客户端断开和 WiFi 的网络,然后在客户端尝试重连的时候捕获 WPA 的握手包。重连会在断开连接后马上手动完成。
图 2:在解除认证攻击后捕获 WPA 握手包的场景
在这个例子中需要考虑的是 ETF 的可靠性。目的是确认工具是否一直都能捕获 WPA 的握手数据包。每个工具都会用来多次复现这个场景,以此来检查它们在捕获 WPA 握手数据包时的可靠性。
使用 ETF 来捕获 WPA 握手数据包的方法不止一种。一种方法是使用 AirScanner 和 AirInjector 两个模块的组合;另一种方法是只使用 AirInjector。下面这个场景是使用了两个模块的组合。
ETF 启用了 AirScanner 模块并分析 IEEE 802.11 数据帧来发现 WPA 握手包。然后 AirInjecto 就可以使用解除认证攻击来强制客户端断开连接,以进行重连。必须在 ETF 上执行下面这些步骤才能完成上面的目标:
进入 AirScanner 配置模式:config airscanner 设置 AirScanner 不跳信道:config airscanner 设置信道以嗅探经过 WiFi 接入点信道的数据(APC):set fixed_sniffing_channel = 使用 CredentialSniffer 插件来启动 AirScanner 模块:start airscanner with credentialsniffer 从已嗅探的接入点列表中添加目标接入点的 BSSID(APS):add aps where ssid = 启用 AirInjector 模块,在默认情况下,它会启用解除认证攻击:start 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 airscannerETF[etf/aircommunicator/airscanner]::> listargssniffing_interface = wlan1; (var)probes = True; (var)beacons = True; (var)hop_channels = false; (var)fixed_sniffing_channel = 11; (var)ETF[etf/aircommunicator/airscanner]::> start airscanner witharpreplayer caffelatte credentialsniffer packetlogger selfishwifiETF[etf/aircommunicator/airscanner]::> start airscanner with credentialsniffer[+] Successfully added credentialsniffer plugin.[+] Starting packet sniffer on interface 'wlan1'[+] Set fixed channel to 11ETF[etf/aircommunicator/airscanner]::> add aps where ssid = CrackWPAETF[etf/aircommunicator/airscanner]::> start airinjectorETF[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)重放攻击的效率和捕获包含初始化向量(IVs)的 WEP 数据包的速度。相同的网络可能需要破解不同数量的捕获的 IVs,所以这个场景的 IVs 上限是 50000。如果这个网络在首次测试期间,还未捕获到 50000 IVs 就崩溃了,那么实际捕获到的 IVs 数量会成为这个网络在接下来的测试里的新的上限。我们使用 aircrack-ng 对数据包进行破解。
测试场景从一个使用 WEP 协议进行加密的 WiFi 接入点和一台知道其密钥的离线客户端设备开始 —— 为了测试方便,密钥使用了 12345,但它可以是更长且更复杂的密钥。一旦客户端连接到了 WEP 接入点,它会发送一个不必要的 ARP 数据包;这是要捕获和重放的数据包。一旦被捕获的包含 IVs 的数据包数量达到了设置的上限,测试就结束了。
图 3:在进行解除认证攻击后捕获 WPA 握手包的场景
ETF 使用 Python 的 Scapy 库来进行包嗅探和包注入。为了最大限度地解决 Scapy 里的已知的性能问题,ETF 微调了一些低级库,来大大加快包注入的速度。对于这个特定的场景,ETF 为了更有效率地嗅探,使用了 tcpdump 作为后台进程而不是 Scapy,Scapy 用于识别加密的 ARP 数据包。
这个场景需要在 ETF 上执行下面这些命令和操作:
进入 AirScanner 设置模式:config airscanner 设置 AirScanner 不跳信道:set hop_channels = false 设置信道以嗅探经过接入点信道的数据(APC):set fixed_sniffing_channel = 进入 ARPReplayer 插件设置模式:config arpreplayer 设置 WEP 网络目标接入点的 BSSID(APB):set target_ap_bssid 使用 ARPReplayer 插件启动 AirScanner 模块:start airscanner with arpreplayer
在执行完这些命令后,ETF 会正确地识别加密的 ARP 数据包,然后成功执行 ARP 重放攻击,以此破坏这个网络。
使用一款全能型蜜罐
图 4 中的场景使用相同的 SSID 创建了多个接入点,对于那些可以探测到但是无法接入的 WiFi 网络,这个技术可以发现网络的加密类型。通过启动具有所有安全设置的多个接入点,客户端会自动连接和本地缓存的接入点信息相匹配的接入点。
图 4:在解除认证攻击后捕获 WPA 握手包数据。
使用 ETF,可以去设置 hostapd 配置文件,然后在后台启动该程序。hostapd 支持在一张无线网卡上通过设置虚拟接口开启多个接入点,并且因为它支持所有类型的安全设置,因此可以设置完整的全能蜜罐。对于使用 WEP 和 WPA(2)-PSK 的网络,使用默认密码,和对于使用 WPA(2)-EAP 的网络,配置“全部接受”策略。
对于这个场景,必须在 ETF 上执行下面的命令和操作:
进入 APLauncher 设置模式:config aplauncher 设置目标接入点的 SSID(APS):set ssid = 设置 APLauncher 为全部接收的蜜罐:set catch_all_honeypot = true 启动 AirHost 模块:start 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 aplauncherETF[etf/aircommunicator/airhost/aplauncher]::> setconf ssid CatchMessid = CatchMeETF[etf/aircommunicator/airhost/aplauncher]::> setconf catch_all_honeypot truecatch_all_honeypot = trueETF[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的框架和功能是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。