Vytvoření WiFi access pointu je dobré ve chvíli, kdy chci analyzovat, jaká data tečou přes WiFi kartu. Například když chci zjistit, jestli můj telefon nekomunikuje se servery, o kterých nemám ani tušení. Pak vytvořím WiFi access point, připojím na něj telefon a budu v Kali Linux odchytávat komunikaci (například pomocí nástroje WireShark) a posléze ji mohu analyzovat. Nejprve je třeba zvolit a zprovoznit vhodnou USB WiFi kartu. To je popsáno v předchozím příspěvku Kali Linux ve Virtual Boxu a připojení USB wifi karty v režimu monitoring a AP.
Instalace hostapd a dnsmasq
Instalace potřebného software se skládá ze dvou balíčků. Prvním je hostapd, který zajistí vytvoření samožného WiFi access pointu, pojmenování WiFi sítě, volba zabezpčení atp. Pokud telefon připojíme pak k vytvořené síti, nebude fungovat všechno podle očekávání, protože telefon nedostane žádnou přidělenou IP adresu. Při připojování tedy pravděpodobně skončí u chyby: „připojení se nezdařilo, nebyla přidělena žádná IP adresa“. Přidělování IP adres zajišťuje druhý démon dnsmasq.
root@kali:~# apt install hostapd dnsmasq
Konfigurace hostapd
Jako první krok přepnu wifi kartu do módu monitor.
ifconfig wlan0 down iwconfig wlan0 mode monitor ifconfig wlan0 up
Jako další připravím konfigurační soubor hostapd.conf a zvolím jednou z těchto 3 konfigurací. První se nabízí 2,4 GHz AP bez přihlašovacích údajů.
interface=wlan0 driver=nl80211 ssid=FREEWIFI hw_mode=g channel=11 macaddr_acl=0 ignore_broadcast_ssid=0 ieee80211n=1 wme_enabled=1
Nebo konfigurace s heslem pro 5GHz WiFi s heslem password@!945
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
Poslední konfigurace je pro 2,4 GHz WiFi se stejným heslem password@!945
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
Jakmile si zvolím některou z konfigurací, spustím hostapd s volbou konfiguračního souboru pomocí příkazu:
hostapd hostapd.conf
Nastavení dnsmasq
Vytvořil jsem si konfigurační soubor dnsmasq.conf s následujícím obsahem:
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
Samotného daemona pak spustím příkazem:
dnsmasq -C dnsmasq.conf -d
Přidělení IP adresy a přesměrování provozu z wifi na ethernet – zprovoznění internetu
V tuto chvíli máme spuštěný daemon hostapd a dnsmasq. Ještě musíme přidělit IP adresu WiFi kartě a bude možné se k WiFi připojit. Problém je, že data nebudou putovat dál. Potřebujeme forwardovat data z WiFi karty na ethernetovou kartu, která je připojena do zbytku sítě. A to zajistí následující sekvence příkazů.
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
Všechno v jednom skriptu
Pro usnadnění jsem si všechno nachystal do jednoho skriptu. Daemony pak spouštím pomocí programu tmux, abych viděl v jednom terminálu výstup ze všech daemonů. V posledním terminálu tmuxu je příkaz na vypsání právě připojených WiFi zařízení. Je možné tak identifikovat všechna připojená zařízení k nově nastavené WiFi AP.
#!/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 # http://man7.org/linux/man-pages/man1/tmux.1.html # https://askubuntu.com/questions/830484/how-to-start-tmux-with-several-panes-open-at-the-same-time # https://stackoverflow.com/questions/5609192/how-to-set-up-tmux-so-that-it-starts-up-with-specified-windows-opened 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ám pojmenovaný jako createAP a jako jeden povinný parametr se mu dává konfigurační soubor na hostapd.conf. Použití skriptu vypadá tedy takto – včetně příkazu vypsání všech připojených zařízení k WiFi. Skript počítá s vytvořeným souborem dnsmasq.conf, který je umístěn ve stejném adresáři jako skript.
./createAP hostapd.conf iw dev wlan0 station dump