kali热点替代方案

6

在无线设备的测试中经常需要使用kali加外接无线网卡的方式来开启热点, 供设备连接, 然后才能进行测试

在使用过程中发现新版本的kali在图形化界面开启的热点如果需要使用密码, 安全性只能是WPA/WPA2/WPA3个人​

按道理来讲这个选项应该会向下兼容, 也就是不支持WPA3​的设备, 会使用WPA2​进行连接

但在使用过程中发现某些设备会连不上热点, 哪怕输入正确密码也会一直卡在连接中的状态

由于kali这里默认使用NetworkManager​对网卡进行托管

所以这里一直在找办法替代nm, 最后使用hostapd​解决

how

这里使用的包有

  • hostapd: 开热点

  • dnsmasq: DHCP和DNS

  • iptables: 流量转发

  • netfilter-persistent: 持久化保存iptables配置

取消nm对网卡的托管

​hostapd​和NetworkManager​都能接管无线网卡设备, 为了让hostapd​在使用无线网卡时网卡不被nm接管, 需要取消nm对无线网卡的托管

查看/etc/NetworkManager/NetworkManager.conf​的内容, 一般内容如下:

 [main]
 plugins=ifupdown,keyfile
 ​
 [ifupdown]
 managed=false

如果没有启用keyfile​, 则手动补上

然后可以在文件中添加两行

 [keyfile]
 unmanaged-devices=interface-name:wlan0

或者新建一个文件/etc/NetworkManager/conf.d/unmanaged.conf​在其中添加同样的内容

为网卡分配ip

由于取消了nm对网卡的接管, wlan0​此时是没有ip地址的, 使用ifconfig​向网卡分配一个地址

 sudo ifconfig wlan0 10.42.0.1 netmask 255.255.255.0

配置热点

在hostapd的配置文件/etc/hostapd/hostapd.conf​内写入配置:

 interface=wlan0 # 网卡
 driver=nl80211
 ssid=ansel # 热点名称
 hw_mode=g
 channel=6
 macaddr_acl=0
 auth_algs=1
 ignore_broadcast_ssid=0
 wpa=2 # 安全性
 wpa_passphrase=11111111 # 密码
 wpa_key_mgmt=WPA-PSK
 rsn_pairwise=CCMP

为了解决nm开出的热点无法被某些设备连接, 所以这里wpa​配置为2​, #​只是为了暂时注释, 实际配置文件中需要删除

默认状态下, 由于有nm的存在, hostapd的服务是屏蔽的, 如果需要hostapd开机自启, 需要手动解除屏蔽再启用:

 sudo systemctl unmask hostapd
 sudo systemctl enable hostapd
 sudo systemctl start hostapd

这个时候热点已经可以被搜索到了, 但是仍然缺失两个功能: ip分配​和流量转发​, 前者让连接热点的设备获得ip地址, 后者让设备可以上网

配置DHCP

在dnsmasq的配置文件目录新建一个配置文件写入自定义配置:

 # /etc/dnsmasq.d/dnsmasq.conf
 interface=wlan0 # 网卡
 dhcp-range=10.42.0.2,10.42.0.100,255.255.255.0,24h # ip分配范围
 dhcp-option=3,10.42.0.1  # 网关 IP
 dhcp-option=6,8.8.8.8   # DNS 服务器
 server=8.8.8.8

同样可以配置开机自启:

 sudo systemctl enable dnsmasq
 sudo systemctl start dnsmasq

配置流量转发

使用iptables, 将网卡wlan0​上的流量转发到eth0​上, 实现通网:

 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
 sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT

持久化保存iptables命令

使用netfilter-persistent​保存iptables命令:

 sudo netfilter-persistent save 

使用reload即可加载iptables配置:

 sudo netfilter-persistent reload

启动脚本

相关的配置完成后, 可以写一个net.sh​脚本来完成剩余需要手动操作的命令:

 # 为网卡配置ip
 sudo ifconfig wlan0 10.42.0.1 netmask 255.255.255.0
 # 加载iptables配置
 sudo netfilter-persistent reload

快速方案

使用linux-wifi-hotspot​包可以快速开启热点, 实现原理和上面的方法相同, 安装的时候会同时把上面提到的包都安装, 只是整合了一下功能, 同时有gui界面

安装(arch):

 yay -S linux-wifi-hostpot

ubuntu:

 sudo apt install linux-wifi-hostpot

图形界面使用:

image-20250729095758181