Dzisiaj rozwiązywałem ciekawe zadanie (OhSINT) na platformie TryHackMe, które zainspirowało mnie do napisania tego wpisu. Postaram się w nim wyjaśnić, w jaki sposób nasze punkty dostępu (jedna z funkcji urządzeń popularnie nazywanych przez masy jako routery odpowiadająca za łączność bezprzewodową, z ang. access point) mogą bardzo precyzyjnie ustalić naszą lokalizację. Wystarczy, że nasze urządzenie ma włączone Wi-Fi, a aplikacja, która ustala naszą lokalizację, posiada odpowiednie uprawnienia – przede wszystkim dostęp do listy dostępnych sieci.

Przyjrzyjmy się, więc temu zadaniu. W pewnym momencie natrafiamy na wpis użytkownika na platformie X i na jego podstawie mamy ustalić jego lokalizację. Oto on:

Opiszmy krótko, jak działa komunikacja w standardzie IEEE 802.11. W tym standardzie występują dwa główne typy skanowania urządzeń: aktywne i pasywne, które umożliwiają jednemu urządzeniu uzyskanie informacji o drugim, co jest niezbędne do zestawienia połączenia. Skanowanie aktywne polega na wysłaniu przez klienta ramki Probe Request oraz odbiorze przez niego ramki Probe Response od punktu dostępu. Bardziej jednak interesujące jest skanowanie pasywne, gdzie punkt dostępu rozsyła do wszystkich urządzeń w zasięgu tzw. ramki Beacon. Przeanalizujmy teraz budowę takiej ramki:

Najbardziej interesującym nas polem będzie BSSID. Jest to identyfikator w danej strefie BSS, która składa się z punktu dostępu oraz podłączonych do niego urządzeń (kilka stref BSS połączonych przez system dystrybucji tworzy ESS). Zazwyczaj numer ten jest równy adresowi MAC interfejsu punktu dostępu – co możemy zweryfikować na zdjęciu, że tak jest w tym przypadku. Adres MAC powinien być unikatową 48-bitową liczbą nadawaną już na etapie produkcji urządzenia. Dochodzimy więc do sytuacji, w której punkt dostępu rozgłasza do pobliskich urządzeń swój numer identyfikacyjny, który w teorii jest unikalny na całym świecie.

Punkty dostępowe mają kilka istotnych cech: ich lokalizacja zazwyczaj jest stała, a w szczególności w dużych ośrodkach miejskich często pokrywają większość powierzchni – najczęściej nachodząc na siebie.

Przejdźmy teraz do naszych urządzeń, np. smartfonów. Większość z nas ma w nich włączoną funkcję Wi-Fi przez większość czasu. Załóżmy, że posiadamy aplikację, która ma uprawnienia do odczytu dostępnych sieci. Jeśli aplikacja ma dane, z którymi może porównać te sieci, pozwala to na bardzo dokładne określenie lokalizacji urządzenia. Na przykład, jeśli lista dostępnych sieci w urządzeniu Alicji w większości pokrywa się z listą sieci dostępną w urządzeniu Boba, możemy założyć, że znajdują się w niedalekiej odległości od siebie. Możemy również, mając odpowiedni zbiór danych, porównać dostępne sieci w naszym urządzeniu. W ten sposób możemy ustalić lokalizację użytkownika, który podał swoje BSSID, korzystając z danych dostępnych w serwisie wigle.net.

Jak widać, sieci Wi-Fi mogą odgrywać istotną rolę w określaniu naszej lokalizacji, co jest powszechnie wykorzystywane przez takie firmy jak Google czy Facebook.