====== 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 [[https://www.wireshark.org/|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 [[linux:kali-linux:kali-linux-ve-virtualboxu-a-usb-wifi|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á [[http://man7.org/linux/man-pages/man1/tmux.1.html|tmux]], přičemž rozložení oken vychází i z ukázek [[https://askubuntu.com/questions/830484/how-to-start-tmux-with-several-panes-open-at-the-same-time|Ask Ubuntu]] a [[https://stackoverflow.com/questions/5609192/how-to-set-up-tmux-so-that-it-starts-up-with-specified-windows-opened|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 [[https://wireless.wiki.kernel.org/en/users/documentation/iw#getting_station_statistics|About iw - examples]].
iw dev wlan0 station dump
Ukázka rozložení terminálů v ''tmux'':
{{linux:kali-linux:pasted:kali-tmux.jpg}}
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ář [[https://github.com/morrownr/8812au-20210629|Zdrojový kód pro kompilaci ovladačů]].
===== Zdroje =====
* [[https://www.wireshark.org/|Wireshark]]
* [[https://www.yeahhub.com/create-fake-ap-dnsmasq-hostapd-kali-linux/|Create A Fake AP With DNSMASQ And HOSTAPD [Kali Linux]]]
* [[https://wireless.wiki.kernel.org/en/users/documentation/iw#getting_station_statistics|About iw - examples]]
* [[http://man7.org/linux/man-pages/man1/tmux.1.html|Man page TMUX]]
* [[https://askubuntu.com/questions/830484/how-to-start-tmux-with-several-panes-open-at-the-same-time|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|How to set up tmux so that it starts up with specified windows opened?]]
* [[https://github.com/morrownr/8812au-20210629|Zdrojový kód pro kompilaci ovladačů]]