1

Temat: WiFi taxonomy

Temat obecny w OpenWrt od paru lat ale całkowicie o nim zapomniałem. Dziś został przypomniany na forum OpenWrt, więc czemu by o nim nie wspomnieć i tutaj.
Każde urządzenie podłączając się pod punkt dostępowy wysyła odpowiednie ramki zawierające pewien zestaw danych informujących m.in. co urządzenie potrafi. Zestaw ten oczywiście różni się w zależności o urządzenia, sieci do której się podłącza, wersji systemu operacyjnego i paru innych czynników łącznie z widzimisie producenta. Jest ich na tyle dużo, że badając ich występowanie można stworzyć swoisty fingerprint urządzenia, czyli mieć możliwość ustalenia z jakim modelem mamy do czynienia. Zostały wykonane odpowiednie badania takiego zagadnienia (polecam zapoznać się z https://research.google/pubs/pub45429/ ) których wynik można znaleźć na githubie: https://github.com/NetworkDeviceTaxonomy
Zgadnijcie gdzie to zostało zaimplementowane? Tak, w pakiecie hostapd. Co więcej - instalując odpowiednią wersję można praktycznie od ręki uruchomić to w OpenWrt.

Instalacja

Należy odinstalować pakiety wpad-mini czy wpad-basic i zainstalować pełną wersję hostpad - pakiet wpad-openssl

# opkg update
# opkg remove wpad-basic wpad-mini
# opkg install wpad-openssl
# reboot

Podłączamy się dowolnym klientem pod nasz router, a następnie wykonujemy polecenie

# ubus call hostapd.wlan0 get_clients

jeżeli mamy dwa radia to można także odpytać drugi interfejs radiowy

# ubus call hostapd.wlan1 get_clients

Powinniśmy otrzymać coś takiego:

# ubus call hostapd.wlan0 get_clients
{
    "freq": 2462,
    "clients": {
        "78:c3:e9:xx:xx:xx": {
            "auth": true,
            "assoc": true,
            "authorized": true,
            "preauth": false,
            "wds": false,
            "wmm": true,
            "ht": true,
            "vht": false,
            "wps": false,
            "mfp": false,
            "rrm": [
                0,
                0,
                0,
                0,
                0
            ],
            "aid": 2,
            "signature": "wifi4|probe:0,1,50,3,45,221(0050f2,8),127,107,221(506f9a,16),htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a820040|assoc:0,1,50,48,45,221(0050f2,2),127,htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a8201400000"
        },
...

Uwaga: nie każdy klient podaje dostateczną ilość danych żeby powstała sygnatura.

Interesuje nas zawartość "signature". Co teraz można z tym zrobić? Udajemy się pod wspomniany adres na githubie: https://github.com/NetworkDeviceTaxonom … my/wifi.py i szukamy tej sygnatury. Szybkie wyszukiwanie ujawni że był to Samsung Galaxy Tab A. Nie jest to metoda doskonała i pewnie zdarzą się pomyłki, sama baza też nie została dawno aktualizowana i należało by samodzielnie dodać sygnatury nowych urządzeń.

Do czego to może się przydać?  Np. do wyszukiwania typu podłączonego urządzenia (smartfon, tablet, desktop). Należy pamiętać że są też inne metody weryfikacja: pierwsze trzy oktety adresu MAC dają informacje o producencie, co pośrednio wyznacza też typ urządzenia, można sprawdzić nazwę urządzenia którą przedstawiło się po pobraniu adresu z dhcp, jeżeli zaś urządzenie podłączone jest do naszego serwera www - można sprawdzić user-agenta przeglądarki, gdzie często też odnajdziemy model urządzenia.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

2

Odp: WiFi taxonomy

Cezary, tak btw czy mógłbyś się zastanowić nad wprowadzeniem do Twoich obrazów pełnego wpad? Ile w zasadzie oszczędzamy miejsca na tym, że defaultowo jest wpad-mini? Ostatnio bawiłem się małymi routerkami od GLinet i ogólnie sytuacja wygląda tak: potrzebujemy wpad w pełnej wersji - ok to trzeba usunąć mini. Usuwam mini... WiFi działa tylko jako open, no to odpada. muszę się wpinać przez kabel, ale eth miał być dostępowy a nie WAN, więc najpierw muszę  wszystko przekonfigurować...

Ogólnie wymiana wpad na pełną wersje to sporo zamieszania jak nie masz doprowadzonego internetu przez eth....

3

Odp: WiFi taxonomy

Pełna wersja to też ciągniecie zależności typu openssl co zwiększa rozmiar obrazu. Dla tych z luci pewnie mogę to zrobić bo openssl tam już jest, dla tych gołych bez luci już niekoniecznie - bo dla niektórych będzie to zbędne zawalenie flash.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

4

Odp: WiFi taxonomy

Hmm, to czy się różni wpad od wpad-openssl ?
Ten pierwszy nic nie potrzebował, a drugi doinstalowywał openssl.
UPC-WiFree działa na obu kombinacjach.

5

Odp: WiFi taxonomy

Implementacją TLS z której hostapd  korzysta. To samo "wpad" korzysta ze swojej własnej, wbudowanej, wpad-openssl korzysta z libopenssl do tego (jeszcze wolfssl jest).

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6 (edytowany przez c#Hunter 2020-02-21 20:05:12)

Odp: WiFi taxonomy

Myślę, że to doskonały pomysł by pakować pełną wersję wpad do kompilacji z luci. Akurat ten typ obrazu co do zasady jest preferowany przez osoby o mniejszej wiedzy. Opisany przeze mnie przypadek wcale banalny nie jest, trzeba rozumieć co się robi. Jak ktoś szuka małego obrazu to wiadomo, że pierwsze co to rezygnuje z luci. Dodatkowo osoby które potrafią ogarnąć konfiguracje bez luci dadzą sobie radę i wpad. Powoli trzeba też ludziom uświadamiać, że urządzenia z 8MB flash są depracated.

7

Odp: WiFi taxonomy

Wracając do tematu: tak się zastanawiałem skąd zdobyć nowe sygnatury. Oczywiście mam pół pudła złomu i mógłbym oznaczyć swoje stare tablety i smartfony, ale nie mam wszystkiego więc taka baza nie była by pełna. Pomyślałem sobie że mógłbym poprosić różnych ludzi żeby podłączyli się na chwilę do mojego AP i, wiedząc jaki mają sprzęt, zdobyć sygnatury. Pomysł dobry ale mało wykonalny w praktyce, więc wymyśliłem sobie, że... ludzie sami będą się łączyć.
No dobrze ale skąd mam wiedzieć jakimi urządzeniami będą to robić? Nikt przecież takiej informacji nie zostawi. W sumie to nawet nie muszą. Przeglądarka łącząc się z serwerem www wysyła w nagłówkach tzw. useragenta, czyli przedstawia się czym ona jest, z czym jest kompatybilna, w której jest wersji a urządzenia mobilne nader często dodają także na jakim urządzeniu (wg oznaczenia kodowego) to było. I to jest rozwiązanie.
Zrobiłem więc sobie urządzenie mobilne (na bazie starego Hame MPR-A2), zrobiłem prostą stronę w html która wołała skrypt w cgi. Strona wie z jakiego IP pochodzi zapytanie, ma useragenta przeglądarki, skrypt dostawał te dwie informacje, w arpie odszukiwał sobie mac adres urządzenia i przez ubusa czytał sygnaturę klienta. Całość można zapisać do pliku. Koniec. 10 minut roboty w sumie.
Reszta to już analiza ręczna i odszukanie typu urządzenia na podstawie useragenta.
Ale jak zmusić ludzi żeby się łączyli? Cóż, nazwałem sieć jako "Free WiFi" (tak wiem, to było paskudne), przez co symulowałem że jestem hotspotem czy innym otwartym punktem, choć oczywiście nie miało ono dostępu do internetu. Włączyłem urządzenie, wrzuciłem do plecaka i pojechałem samochodem do pracy.
I zgadnijcie co? Ktoś się próbował podłączyć (tak wiem to było podłe z mojej stony dawać taką nadzieję na darmowy internet). W sumie to nie wiem nawet kiedy, jak stałem w korku? Na światłach? Fakt że złapało dwie sygnatury. Więc rozwiązanie działa. Zastanawiam się ile by się tego złapało gdybym poszedł do jakiegoś większego centrum handlowego....

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8

Odp: WiFi taxonomy

A może jakiś pakiet dla Openwrt. I możliwość zgłaszania sygnatur ?

9

Odp: WiFi taxonomy

Możesz zawsze wystawić n najpopularniejszych otwartych ssid: guest, mc donalds, PKP, itp, itd i podszywać się pod nie. Taki phishing bez wykradania danych. wink

Do tego urzadzenia wifi same wysyłają info do jakich sieci były podłączone. Spora część urządzeń pozwala się podszyć otwartą siecią pod zabezpieczoną.

Taki honeypot w centrum handlowym zbierałby ogromne ilości danych.

Mam i używam: Linksysy 1900ACS, LB-Link BL-W1200, Netgear R6220, Unielec U7621-06, TP-Linki 1043 V1, V2.
Mam: D-Linki DWR-921, DWR-118, DWR-116, TP-Link WDR-4900 v1, Checkpoint L-50.

10

Odp: WiFi taxonomy

kofec napisał/a:

A może jakiś pakiet dla Openwrt. I możliwość zgłaszania sygnatur ?

Ewentualnie skrypt startujący jednorazowo po wgraniu Twojego obrazu, który będzie wysyłał potrzebne informacje na Twój serwer.