====== 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čů]]