Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Mikołajki z sekurakiem! od 2 do 8 grudnia!
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Mikołajki z sekurakiem! od 2 do 8 grudnia!
Osobom mniej zaznajomionym z funkcjonowaniem sieci bezprzewodowych lub chcącym odświeżyć swoją wiedzę polecamy serię artykułów Bezpieczeństwo sieci Wi-Fi.
Nzyme jest nowym oprogramowaniem Open Source, stworzonym w wolnym czasie przez CTO Grayloga Lennarta Koopmanna. W marcu tego roku opublikowana została wersja 1.0 “Kyle Canyon”.
Nzyme służy do wykrywania zagrożeń sieci bezprzewodowych i należy do rodziny systemów Wireless Intrusion Detection System (WIDS). To prawdopodobnie najciekawszy i najlepiej dopracowany projekt WIDS z otwartym źródłem.
Do najważniejszych funkcji nzyme możemy zaliczyć:
W niniejszym artykule postaram się wyjaśnić, dlaczego w ogóle potrzebujemy systemu WIDS, jak zainstalować i skonfigurować nzyme oraz jak z niego korzystać.
Ataki na sieci bezprzewodowe, szczególnie na klientów sieci bezprzewodowych, pozwalają hakerom na różne scenariusze i są również często stosowane przy audytach bezpieczeństwa. Urządzenia i platformy do przeprowadzania takich ataków cieszą się dużą popularnością. Przykład użycia WiFi Pineapple możemy obejrzeć nawet w jednym z wyżej ocenianych komediowych seriali ostatnich lat, Silicon Valley.
Z kolei w prawdziwym świecie w 2018 roku Departament Sprawiedliwości USA oskarżył siedmiu hakerów pracujących na zlecenie rosyjskiej agencji GRU o przeprowadzenie ataków, których celem były między innymi agencje antydopingowe w Brazylii i Kanadzie, firma produkująca urządzenia wykorzystujące energię nuklearną czy laboratorium chemiczne w Szwajcarii. Podczas ataków wykorzystano także wspomniane wcześniej WiFi Pineapple.
W jaki sposób przeprowadzane są takie ataki? Atakujący, będący w zasięgu sieci Wi-Fi, w pierwszej kolejności musi sprawić, aby ofiara, przykładowo pracownik firmy, połączyła się z wystawionym przez niego złośliwym punktem dostępu.
Aby ofiara połączyła się ze złośliwym AP, atakujący może wykorzystać kilka technik. Poniżej przedstawiam w pigułce opis popularnych ataków.
Evil Twin
Stworzenie „złego bliźniaka” polega na sklonowaniu cech prawdziwego AP. W tym celu atakujący kopiuje:
W celu uzyskania optymalnej łączności z siecią urządzenia Wi-Fi wykorzystują protokoły 802.11k oraz 802.11r, które pozwalają na przełączanie się między dostępnymi AP w sposób niezauważalny dla użytkownika. Jeżeli stworzony Evil Twin będzie oferował lepszy sygnał, urządzenie automatycznie połączy się z nim, przechodząc ponownie proces uwierzytelnienia.
Karma oraz MANA
By precyzyjnie wytłumaczyć, na czym polegają te techniki ataku, omówimy najpierw kilka pojęć:
Atak KARMA wykorzystuje dość oczywistą słabość w mechanizmie Direct Probing. Klient sam zdradza swoją PNL, a decyzja o odpowiedzi leży po stronie AP. W tym ataku złośliwy AP odpowiada na każdą Probe Request.
Atak KARMA jest jednak mało efektywny w odniesieniu do obecnych urządzeń. Ze względów bezpieczeństwa i prywatności nowsze urządzenia zachowują się inaczej i nie łączą się z AP, który nie odpowiedział wcześniej na Broadcast Probing lub korzystają jedynie z Passive Scanning.
Atak MANA jest nowszą wersją ataku KARMA. Podczas ataku MANA złośliwy AP w przypadku otrzymania ramki Direct Probe nie odpowiada na nią od razu, a zapisuje w pamięci BSSID klienta i oczekiwany przez niego SSID sieci. Znając te wartości, jest w stanie poprawnie odpowiedzieć na Broadcast Probe. W przypadku gdy klient wykorzystuje jedynie Passive Scanning, atakujący musi posłużyć się inną techniką.
Known Beacon
W tym ataku złośliwy AP posiada listę potencjalnych SSID, z którymi atakowany klient może próbować się łączyć. Na podstawie słownika wysyłane są ramki Beacon z możliwymi nazwami sieci. Jeżeli atakujący prawidłowo odgadnie oczekiwaną nazwę sieci, klient spróbuje nawiązać połączenie ze złośliwym AP.
Free Wi-Fi!
Na koniec – najmniej wymagająca technika. Wystawiając otwartą sieć z atrakcyjną nazwą w pobliżu biura, w którym pracuje kilkaset osób, można liczyć na ewentualność, że jeden z pracowników będzie chciał z niej skorzystać – bez większego powodu.
Wystawienie odpowiednio skonfigurowanego złośliwego AP niesie za sobą wiele możliwości. Poniżej zostały przedstawione niektóre z nich.
Przejęcie danych logowania
Popularnym scenariuszem atakowania sieci firmowych zabezpieczonych WPA2-EAP-PEAP jest wystawienie Evil Twin. Urządzenie użytkownika, w trakcie łączenia się ze złośliwym AP, będzie próbowało uwierzytelnić się w serwerze RADIUS. Urządzenia z systemem Windows domyślnie wykorzystują protokół MS-CHAPv2. W efekcie atakujący jest w stanie uzyskać login użytkownika oraz jego hasło w formie hasha NTLM.
Warto wspomnieć, że urządzenia Android oraz iOS domyślnie nie używają protokołu MS-CHAPv2, przez co atakujący może uzyskać hasło w postaci tekstu jawnego.
Przykład ataku, w którym do wystawionej sieci WPA2-EAP-PEAP uwierzytelnienie nastąpiło bez protokołu MS-CHAPv2
Ataki socjotechniczne
Kolejnym popularnym scenariuszem jest stworzenie fałszywego Captive Portal podszywającego się pod prawdziwą usługę atakowanej firmy. W ten sposób możliwe jest wyłudzanie danych logowania lub innych cennych informacji.
Ataki Man-in-the-Middle (MITM)
Scenariusz dość oczywisty – atakujący kontroluje bramę domyślną oraz serwer DNS. To mniej popularna w dzisiejszych czasach forma ataku. Większa część usług korzysta z SSL/TLS oraz HTTP Strict Transport Security (HSTS), niemniej jednak taki scenariusz jest wciąż możliwy.
Dostęp do klienta
Atakujący, znajdując się w jednej sieci, może bezpośrednio skanować i atakować podłączone urządzenie. Podatne, niezaktualizowane usługi sieciowe, jak np. SMB czy RDP, mogą być szybką drogą do uzyskania dostępu do maszyny ofiary.
Serwer
Do postawienia własnej instancji nzyme polecane są Raspberry Pi 3 lub Raspberry Pi 4 odnośnie do lokalizacji o większym natłoku ramek w eterze (na przykład w biurowcach). Możemy również wykorzystać inny, dowolny sprzęt pracujący na Linuxie. Polecaną dystrybucją jest Ubuntu 20.04.
Karta sieciowa
Oprogramowanie wymaga karty sieciowej wspierającej tryb monitor mode, który pozwala na przechwytywanie wszystkich ramek z powietrza. Kluczowe jest również odpowiednie wsparcie w postaci sprawnie działających sterowników.
Poniżej zamieszczam przykładową listę standardowo polecanych kart sieciowych, wykorzystywanych w audytach bezpieczeństwa sieci bezprzewodowych.
Dla sieci 2,4 GHz:
Dla sieci 2,4 GHz oraz 5 GHz:
*Uwaga: karta TP-Link TL-WN722N występuje na rynku w kilku wersjach. Polecana opcja to v1, która wykorzystuje chipset Atheros AR9271. Wersja ta niestety nie jest już produkowana i pozostaje nam jedynie rynek wtórny. Poniższe zdjęcie prezentuje, w jaki sposób rozpoznać odpowiednią wersję.
Poniżej przedstawiam instrukcję instalacji na systemie Ubuntu 20.04. Proces instalacji na Raspberry jest bardzo zbliżony.
$ sudo apt update && sudo apt install -y libpcap0.8 openjdk-11-jre-headless postgresql-12 wireless-tools
$ wget https://assets.nzyme.org/releases/nzyme-1.1.0.deb
$ sudo dpkg -i nzyme-1.1.0.deb
$ iwconfig
lo no wireless extensions.
eno1 no wireless extensions.
wlx14cc20167022 IEEE 802.11 Mode:Monitor Frequency:2.457 GHz Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:off
/etc/netplan/01-nzyme.yaml, w którym wklejamy nazwę naszego interfejsu.
network:
version: 2
renderer: networkd
ethernets:
wlx00c0caac2a8f: {}
$ sudo -u postgres psql
postgres=# create database nzyme;
CREATE DATABASE
postgres=# create user nzyme with encrypted password ‘TWOJE HASLO’;
CREATE ROLE
postgres=# grant all privileges on database nzyme to nzyme;
GRANT
postgres=# \q
[req] distinguished_name = req_distinguished_name x509_extensions = v3_req prompt = no # Details about the issuer of the certificate [req_distinguished_name] C = US ST = Some-State L = Some-City O = My Company OU = My Division CN = nzyme.example.com [v3_req] #keyUsage = keyEncipherment, dataEncipherment keyUsage = nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names # IP addresses and DNS names the certificate should include # Use IP.### for IP addresses and DNS.### for DNS names, # with "###" being a consecutive number. [alt_names] IP.1 = 203.0.113.42 DNS.1 = nzyme.example.com
$ openssl req -x509 -days 365 -nodes -newkey rsa:2048 -config openssl-nzyme.cnf -keyout pkcs5-plain.pem -out cert.pem
$ openssl pkcs8 -in pkcs5-plain.pem -topk8 -nocrypt -out key.pem
$ rm pkcs5-plain.pem
$ nzyme echo -n secretpassword | sha256sum
$ sudo cp /etc/nzyme/nzyme.conf.example /etc/nzyme/nzyme.conf
# Admin password SHA256 hash. (64 characters) - generate with, for example, sha256sum on Linux: $ echo -n secretpassword | sha256sum # You will use this password to log in to the web interface. admin_password_hash: 95d30169a59c418b52013315fc81bc99fdf0a7b03a116f346ab628496f349ed5 # Path to postgreSQL database. Make suer to change username, password and database name. (This is described in the documentation) database_path: "postgresql://localhost:5432/nzyme?user=nzyme&password=<HASLO DO BAZY POSTGRESQL>
interfaces: {
# Make sure to set this to an IP address you can reach from your workstation.
rest_listen_uri: "https://192.168.1.115:22900/"
# This is usually the same as the `rest_listen_uri`. Take a look at the configuration documentation to learn about
# other use-cases. It will be interesting if you run behind a load balancer or NAT. (basically, it is the address
# that your web browser will use to try to connect to nzyme and it has to be reachable for it.)
http_external_uri: "https://192.168.1.115:22900/"
# Use TLS? (HTTPS) See https://go.nzyme.org/docs-https
use_tls: true
tls_certificate_path: /etc/nzyme/cert.pem
tls_key_path: /etc/nzyme/key.pem
}
systemctl restart nzyme
# A list of all your 802.11/WiFi networks. This will be used for automatic alerting.
# It is recommended to leave this empty or on default at first start of nzyme and
# then build it using the data nzyme shows in the web interface. For example, the
# "security" and "fingerprints" strings can be copied from the web interface.
802_11_networks: [
{
ssid: TEST-NET
channels: [1,2,3,4,5,6,7,8,9,10,11,12,13]
security: [WPA2-PSK-CCMP]
beacon_rate: 40
bssids: [
{
address: "ae:f8:cc:09:c5:23",
fingerprints: [3d80bed50c879704430aafe7f1fda3337ff88c234cbf4755eda4dc64d6da4d1d]
}
]
}
]
Od tej pory nasza sieć będzie monitorowana przez nzyme.
Zanim przejdziemy do omówienia możliwości detekcji oferowanych przez nzyme, zapoznajmy się z dwoma terminami, używanymi przez platformę:
Fingerprint
Atakujący może z łatwością skopiować cechy AP, takie jak: SSID, BSSID czy kanał pracy. Z tego powodu w nzyme zaimplementowano zdecydowanie trudniejszy do podrobienia mechanizm, jakim jest Fingerprint. Nzyme do obliczenia Fingerprintu, który ma postać hasha SHA-256, wykorzystuje informacje zawarte w ramkach Beacon oraz Probe Response wysyłanych przez AP, w mapie Tagged Parameters:
Bandit
Zdefiniowany AP, którego wykrycie będzie alertowane. Nzyme posiada listę predefiniowaną, na której umieszczono fingerprinty takich platform, jak: WiFi Pineapple, Wifiphisher czy esp8266_deauther. Mamy również możliwość tworzenia własnych definicji Bandits na podstawie czterech parametrów: Fingerprint, SSID, siły sygnału oraz tożsamości Pwnagotchi.
Nzyme w obecnej wersji może wykryć dziewięć zdarzeń:
W krótkim filmie, do którego link znajduje się poniżej, możemy obejrzeć przykładowy scenariusz, w którym atakujący wystawia złośliwy Access Point za pomocą narzędzia eaphammer, kopiując nazwę atakowanej sieci, ale z nieprawidłowym BSSID. Nzyme w niedługim czasie wykrywa intruza i alertuje zdarzenie. W pozostałych sytuacjach, takich jak: nieprawidłowy SSID, Fingerprint czy zmiana zabezpieczeń sieci, zagrożenie było wykrywane równie sprawnie.
Pozostałymi ciekawymi funkcjami, o których warto wspomnieć, są między innymi:
Podczas testów w nzyme widocznych było kilka niedociągnięć, co jest sytuacją raczej spodziewaną dla tak młodego projektu Open Source. Jednym z powtarzających się błędów było niewłaściwe wyświetlanie nazw sieci, co widać na poniższym screenie.
Kolejnym problemem jest niedokładne działanie mechanizmu Fingerprint. W przypadku urządzeń Mikrotik, OpenWRT czy pochodzących od dostawców UPC oraz Vectry nzyme czasami przypisywał setki fingerprintów do jednego AP, co oczywiście generowało również taką samą liczbę alertów false positive. Problem ten można tymczasowo rozwiązać poprzez wyłączenie alertu unexpected_fingerprint. W tym celu należy zakomentować odpowiednią linię w pliku nzyme.conf:
134 # List of enabled 802.11/WiFi alert types. Remove or comment out (#) an alert type to mute it. TODO ADD DOCS LINK 135 802_11_alerts: [ 136 unexpected_bssid 137 unexpected_ssid 138 crypto_change 139 unexpected_channel 140 #unexpected_fingerprint 141 beacon_rate_anomaly 142 multiple_signal_tracks 143 pwnagotchi_advertisement 144 bandit_contact 145 ]
Oprogramowanie nzyme wydaje się obiecującym systemem do wykrywania zagrożeń sieci bezprzewodowych. Do plusów zdecydowanie możemy zaliczyć takie jego wyróżniki, jak: otwarte źródło, prostota instalacji, obsługi oraz konfiguracji i przyjazny dla oka interfejs.
Jeżeli jesteś odpowiedzialny za bezpieczeństwo sieci Wi-Fi w firmie, warto rozważyć aspekty zagrożeń, które zostały opisane w tym artykule, a także przemyśleć wdrożenie nzyme lub alternatywnego systemu monitorującego.
Gracjan Jaśkiewicz, pomaga zabezpieczać systemy IT w ramach Securitum.
Świetny, merytoryczny artykuł :)
Super artykuł i narzędzie, będzie testowane w labie.
Wow, stary dobry Sekurak! To chyba najlepszy tutorial od marca 2019 (omawialiście wtedy protokół http).
Nie wiecie, czy jest wersja na dockera ?
Właśnie odpaliłem u siebie, ogólnie fajny projekt, jednak z OpenWRT nie lubi się chyba znacznie bardziej niż w sposób wymieniony w artykule. Dostaję znaczą ilość fałszywych alertów “crypto_change”.
Swietny artykul.
Old school sekurakowy. Powrot na wlasciwe tory.
Jest co poczytac, co technicznie wykonac i co wykorzystac w zyciu codziennym.
Propsy
No tak,zgadzam sie w zupelnosci. Chcialbym wiecej i wiecej tego typu tekstow. Autor, polaczyl prezentacje nowego narzedzia z opisem technik ataku.
Obawiam sie jednak ze na, Sekurak zawita to,co pojawilo sie juz jakis czas temu na portalu z pod znaku wscieklego Lucyfera. Byl to niezly portal, a teraz…. a teraz reklama😎
witam
dla osób którym nie działa na kali linux, przydatne może być to https://github.com/lennartkoopmann/nzyme/discussions/339
Postawilem calego nzyme, ale mam problem z tym ze moj interfejs nie przelacza sie z automatu w tryb monitora. Teraz pytanie czy musze dodatkowo instalowac dla karty drivery i przelaczyc ja recznie? widze ze na waszym screenie z iwconfiga dziala juz jako monitor.
airmon-ng start wlan0
Czy ktoś ma kilka AP i takie same nazwy SSID? Nzyme wyrzuca blad przez co mogę monitorować tylko jednego SSID’a… Ktoś może poradził sobie z takim przypadkiem?