Vytvoření Wi-Fi access pointu v Kali Linuxu
Vytvořeno: 17.5.2020
Poznámka k aktuálnosti: Toto je dobový článek. Postup, názvy rozhraní, dostupné balíčky i doporučené konfigurace nemusí odpovídat aktuálním verzím Kali Linuxu a současné praxi.
Tento postup se hodí ve chvíli, kdy je potřeba vytvořit vlastní Wi-Fi access point a přes něj analyzovat provoz připojených zařízení. Typický scénář je připojení telefonu do vlastní sítě, zachytávání komunikace například ve Wiresharku a následná analýza přenášených dat. Praktickým předpokladem je správně zprovozněná USB Wi-Fi karta v režimu AP nebo monitoring, viz navazující článek Kali Linux ve VirtualBoxu a připojení USB Wi-Fi karty.
Instalace hostapd a dnsmasq
Základ tvoří dva balíčky:
- hostapd vytvoří samotný access point, nastaví SSID, kanál a případné zabezpečení
- dnsmasq zajistí DHCP a DNS pro klienty připojené do nové Wi-Fi sítě
Bez běžícího DHCP klient obvykle skončí chybou, že mu nebyla přidělena IP adresa.
apt install hostapd dnsmasq
Přepnutí Wi-Fi karty do monitor režimu
Před spuštěním access pointu je v původním postupu Wi-Fi karta přepnuta do režimu monitor.
ifconfig wlan0 down iwconfig wlan0 mode monitor ifconfig wlan0 up
Konfigurace hostapd
Je potřeba připravit konfigurační soubor hostapd.conf. Níže jsou tři varianty podle původního článku.
Otevřená 2,4 GHz síť
interface=wlan0 driver=nl80211 ssid=FREEWIFI hw_mode=g channel=11 macaddr_acl=0 ignore_broadcast_ssid=0 ieee80211n=1 wme_enabled=1
5 GHz síť s WPA2
interface=wlan0 driver=nl80211 ssid=WIFINETWORK5 channel=40 macaddr_acl=0 ignore_broadcast_ssid=0 auth_algs=1 wpa=2 wpa_passphrase=password@!945 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP wpa_pairwise=CCMP wpa_group_rekey=86400 ieee80211n=1 wme_enabled=1 logger_syslog=0 logger_syslog_level=0 preamble=1 ## IEEE 802.11n ieee80211n=1 country_code=CZ ieee80211d=1 ## IEEE 802.11a hw_mode=a ## IEEE 802.11ac ieee80211ac=1
2,4 GHz síť s WPA2
interface=wlan0 driver=nl80211 ssid=WIFINETWORK2 channel=9 macaddr_acl=0 ignore_broadcast_ssid=0 auth_algs=1 wpa=2 wpa_passphrase=password@!945 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP wpa_pairwise=CCMP wpa_group_rekey=86400 ieee80211n=1 wme_enabled=1 logger_syslog=0 logger_syslog_level=0 preamble=1 ## IEEE 802.11n ieee80211n=1 country_code=CZ ieee80211d=1 ## IEEE 802.11g hw_mode=g
Po výběru vhodné varianty lze hostapd spustit přímo nad připraveným konfiguračním souborem.
hostapd hostapd.conf
Nastavení dnsmasq
Soubor dnsmasq.conf může podle původního postupu vypadat takto:
interface=wlan0 dhcp-range=192.168.1.2,192.168.1.100,255.255.255.0,12h dhcp-option=3,192.168.1.1 dhcp-option=6,192.168.1.1 server=8.8.8.8 log-queries log-dhcp listen-address=127.0.0.1
Spuštění démona:
dnsmasq -C dnsmasq.conf -d
Přidělení IP adresy a NAT přes iptables
V této fázi už běží hostapd i dnsmasq, ale je ještě potřeba:
- nastavit IP adresu na Wi-Fi rozhraní
- zapnout routování
- přeložit provoz z Wi-Fi do ethernetu pomocí NAT
- povolit forward provozu přes
iptables
ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0 route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 iptables -F iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i wlan0 -j ACCEPT echo 1 > /proc/sys/net/ipv4/ip_forward
Tím se vytvoří jednoduchý NAT mezi wlan0 a eth0, takže klienti připojení do Wi-Fi mohou komunikovat dál do sítě.
Všechno v jednom skriptu
Pro zjednodušení lze celý postup spojit do jednoho skriptu. Původní řešení používá tmux, přičemž rozložení oken vychází i z ukázek Ask Ubuntu a Stack Overflow.
#!/bin/bash # prepare wlan0 for monitoring mode ifconfig wlan0 down iwconfig wlan0 mode monitor ifconfig wlan0 up ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0 route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 iptables -F iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i wlan0 -j ACCEPT echo 1 > /proc/sys/net/ipv4/ip_forward tmux new-session \; \ send-keys 'hostapd -d '"\"$1\"" C-m \; \ split-window -h \; \ send-keys 'dnsmasq -C dnsmasq.conf -d' C-m \; \ split-window -v \; \ send-keys 'iw dev wlan0 station dump' C-m \;
Skript může být uložen například jako createAP. Jako povinný parametr dostává cestu ke konfiguraci hostapd.conf. Předpokládá také, že dnsmasq.conf je ve stejném adresáři jako skript.
./createAP hostapd.conf
Monitoring připojených zařízení a provozu
Pro rychlou kontrolu právě připojených klientů lze použít příkaz iw dev wlan0 station dump. Praktické ukázky k iw jsou dostupné v dokumentaci About iw - examples.
iw dev wlan0 station dump
Ukázka rozložení terminálů v tmux:
V původním kontextu slouží tento setup hlavně k tomu, aby bylo možné:
- připojit testované zařízení do vlastní Wi-Fi sítě
- sledovat přidělování adres přes
dnsmasq - ověřit připojené klienty přes
iw - zachytávat a analyzovat provoz například ve Wiresharku
Poznámka k ovladačům
Pokud konkrétní USB Wi-Fi karta nefunguje korektně v režimu AP, může být potřeba dořešit ovladače. V původních zdrojích je uveden i repozitář Zdrojový kód pro kompilaci ovladačů.
