Vytvoření WiFi Access Pointu v Kali Linux

Autor: | 17. 5. 2020 | IT, Linux

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

Další články