Karma无线安全工具:利用hostapd实现探针请求劫持

本文详细介绍了Karma工具的工作原理,它通过修改hostapd使其响应任意ESSID的探针请求,从而诱使客户端自动连接。文章包含技术实现细节、配置方法和命令行操作指南,适用于无线安全研究人员。

Karma - DigiNinja

概述

Karma是一组针对接入点软件的补丁,使其能够响应任何ESSID的探针请求,而不仅仅是自身配置的ESSID。这使得AP能够充当诱饵,吸引任何探测已知网络的客户端。最初的Karma补丁由Dino Dia Zovi为Madwifi发布,后来由我接手并将其移植到Madwifi-ng,现在又将其移植到新的hostapd。

工作原理

与某些人的看法相反,Karma补丁不会让AP发送超出其正常AP配置的信标。这意味着启动时不应期望在客户端看到大量新网络广告。其工作方式是:大多数客户端都有一个首选网络列表,通常大多数设置为自动连接。当客户端启用无线功能时,它会遍历此列表,为每个网络发送探针请求。Karma一看到探针请求就会响应"是",无论请求的ESSID是什么,然后客户端尝试关联。某些客户端可能会继续探测列表中优先级更高的其他AP,因此可能会放弃第一个关联的AP,转而选择Karma响应的最高优先级AP。

大多数客户端在尝试关联时会检查AP提供的加密级别,如果不匹配预期,客户端将不会关联。这会导致客户端快速连接然后断开。然而,我见过一些客户端如果提供无加密,就会降级到无加密。

如果测试Karma时客户端没有连接,请确保它们的首选列表中有网络且设置为自动连接。仅仅因为Windows有首选AP列表,并不意味着它设置为自动连接所有网络。我经常收到错误报告,说Karma不起作用,但最终检查列表时发现没有网络设置为自动连接。

Hostapd

在Zero_Chaos的推动下,我终于修补了hostapd,允许Atheros用户从Madwifi-ng迁移到ath5k和ath9k。这也应该为Prism54和各种其他卡的用户打开大门,但这些尚未经过测试。

下面有下载选项:版本1.0源代码的补丁或预修补副本,还有一个示例配置文件。要使用预修补源代码,只需解压tarball,切换到hostapd目录并运行make。然后可以使用-dd参数启动AP以获取Karma输出消息。我提供的配置文件有一个ESSID为"FreeInternet",它正在发送信标,旨在吸引那些不探测任何网络但可以被免费连接吸引的人。配置文件已注释,应该很容易根据自己的需求进行修改。

可以通过检查版本信息来确认正在运行修补版本的hostapd:

1
2
3
4
5
6
# ./hostapd -v
hostapd v1.0
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2012, Jouni Malinen <j@w1.fi> and contributors
Karma patches by Robin Wood - robin@digininja.org

并像这样启动:

1
# ./hostapd -dd ~/hostapd-karma.conf

如果只过滤KARMA引用,在成功关联后会看到类似这样的内容:

1
2
3
KARMA: Probe Request from 00:c0:ca:2f:96:50 for SSID 'test'
KARMA: Checking SSID for start of association, pass through test
KARMA: Successful association of 00:c0:ca:2f:96:50

如果希望将所有输出直接发送到文件而不是屏幕,或者必须通过管道传输到文件或其他应用程序,从版本1.0开始,现在可以使用-f选项将输出发送到文件。唯一的问题是你必须在构建时启用此功能。修补的源代码和补丁都启用了此功能,但如果要检查,请查找CONFIG_DEBUG_FILE并确保设置为1。

我知道这个版本的一个问题是,当客户端最终关联时,只打印MAC地址,而不打印与之关联的ESSID。这是因为此时假定关联与配置文件中的ESSID相同,所以原始探测的ESSID似乎没有存储在任何可用结构中。我正在研究这个问题,希望能找到一种方法将其传递到这里。

hostapd_cli

使用madwifi-ng驱动程序时,可以使用iwpriv命令与运行中的驱动程序交互,而使用Hostapd时,你可以使用hostapd_cli,我认为这是一个更好的工具。我扩展了默认版本,添加了一堆新命令来控制Karma附加功能。

启动hostapd_cli时,它会搜索hostapd实例并在可能的情况下自动连接:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# ./hostapd_cli 
hostapd_cli v1.0
Copyright (c) 2004-2012, Jouni Malinen <j@w1.fi> and contributors

This program is free software. You can distribute it and/or modify it
under the terms of the GNU General Public License version 2.

Alternatively, this software may be distributed under the terms of the


Selected interface 'wlan0'

Interactive mode

> ?
Commands:
   mib                    get MIB variables (dot1x, dot11, radius)
   sta <addr>             get MIB variables for one station
   all_sta                get MIB variables for all stations
   new_sta <addr>         add a new station
   deauthenticate <addr>  deauthenticate a station
   disassociate <addr>    disassociate a station
   get_config             show current configuration
   help                   show this usage help
   interface [ifname]     show interfaces/select interface
   level <debug level>    change debug level
   license                show full hostapd_cli license
   ping                   send a ping, get a pong
   karma_change_ssid      change the default SSID for when Karma is off
   karma_get_ssid         get the default SSID for when Karma is off
   karma_enable           enable Karma
   karma_disable          disable Karma
   karma_black            blacklist Karma
   karma_white            whitelist Karma
   karma_get_black_white  get the black/whitelist state of Karma
   karma_add_ssid         add an SSID to the black/white list
   karma_del_ssid         delete an SSID from the black/white list
   karma_get_state        get the state of Karma
   karma_add_black_mac    add a MAC to the black list
   karma_add_white_mac    add a MAC to the white list
   quit                   exit hostapd_cli

我不打算详细解释命令的工作原理,标准命令在其他地方有文档记录,Karma命令应该是不言自明的。我要指出的一点是,我厌倦了输入help来获取上述列表,所以我将?别名为做同样的事情——小改变,大解脱!

下载

示例配置文件 hostapd版本1.0的补丁 修补的hostapd版本1.0

Madwifi-ng

由于我有一段时间没有为此创建任何补丁,我已经失去了对Madwifi项目进展的跟踪。上次我尝试修补时,无法在不进一步修补驱动程序的情况下使用我的内核(2.6.23)构建它,所以我放弃了。我将之前的所有补丁收集在下面,如果由于某种原因需要特定帮助,请联系我,否则我建议转向hostapd方法。

下载

svn版本0.9.4-3379 0.9.4 0.9.3.3 0.9.3.2 0.9.3.1 0.9.3

支持网站

我没有从这个网站的任何项目中获得报酬,所以如果你想支持我的工作,可以使用下面的联盟链接,我可以获得账户积分或现金返还。通常只有几分钱,但它们都会累积起来。

请我喝一杯冰沙

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计