Przedstawiono nową technikę ukrytej identyfikacji systemu i przeglądarki

Grupa badawcza z Politechniki Grażdzkiej w Austrii, wcześniej znana z opracowywania metod ataków MDS, NetSpectre i Throwhammer, ujawniła informacje na temat nowej techniki analizy kanałów bocznych, umożliwiającej określenie dokładnej wersji przeglądarki, używanego systemu operacyjnego, architektury CPU oraz zastosowania dodatków do walki z ukrytą identyfikacją.

Aby określić wymienione parametry, wystarczy uruchomienie w przeglądarce przygotowanego przez badaczy kodu JavaScript. W praktyce metoda może być stosowana nie tylko jako dodatkowe źródło do pośredniej identyfikacji użytkownika, ale także do określenia parametrów środowiska systemowego w celu zastosowania exploitów uwzględniających OS, architekturę i przeglądarkę. Metoda jest skuteczna również w przypadku przeglądarek implementujących mechanizmy blokowania ukrytej identyfikacji, takich jak Tor Browser. Kod źródłowy prototypu realizacji metody opublikowane na licencji MIT.

Określenie przeprowadzane jest na podstawie wydobycia charakterystycznych dla różnych przeglądarek wzorców stanu właściwości w JavaScript oraz charakterystyk czasu wykonania operacji, zależnych od specyfiki działania JIT, CPU oraz mechanizmów alokacji pamięci. Określenie właściwości odbywa się poprzez generowanie listy wszystkich obiektów dostępnych z poziomu JavaScript. Okazało się, że liczba obiektów bezpośrednio koreluje z silnikiem przeglądarki i jego wersją.

function getProperties(o) {
var result = [];
while (o !== null) {
result = result.concat(Reflect.ownKeys(o));
o = Object.getPrototypeOf(o);
}
return result;
}

Na przykład, w dokumentacji dla Firefox zadeklarowano wsparcie dla 2247 właściwości, podczas gdy rzeczywista liczba określonych właściwości, uwzględniając te nieudokumentowane, wynosi 15709 (w Tor Browser — 15639), dla Chrome zadeklarowano 2698 właściwości, a rzeczywiście oferuje się 13570 (w Chrome dla Android — 13119). Liczba i wartości właściwości zmieniają się z wersji na wersję przeglądarki oraz przy zastosowaniu różnych systemów operacyjnych.

Wartości i dostępność różnych właściwości można wykorzystać do określenia typu systemu operacyjnego. Na przykład, w Kubuntu właściwość window.innerWidth jest ustawiana na 1000, a w Windows 10 na 1001. W Windows dostępna jest właściwość window.navigator.activeVRDisplays, a w Linux nie ma jej. Dla Androida oferowane są liczne specyficzne wywołania, ale brak jest window.SharedWorker. Do identyfikacji systemu operacyjnego proponuje się również analizę parametrów WebGL, których stan zależy od sterowników. Ponadto, wywołanie WEBGL_debug_renderer_infoextension pozwala uzyskać informacje o silniku renderującym OpenGL, który jest różny dla każdego systemu operacyjnego.

Do określenia CPU stosuje się ocenę różnic w czasie wykonywania różnych typowych bloków kodu, którego przetwarzanie zależy od architektury zestawu instrukcji, z uwzględnieniem zachowania JIT (określa, ile rejestrów CPU zostanie zaangażowanych oraz w których przypadkach JIT wygeneruje efektywny kod z optymalizacjami i włączeniem rozszerzonych instrukcji, a kiedy nie). Do określenia typu systemu dystrybucji pamięci oraz systemu operacyjnego mierzona jest również różnica w czasie alokacji pamięci dla różnych struktur, na podstawie których można ocenić rozmiar bloków pamięci.

Parametry określone w trakcie wykonywania skryptu są porównywane z wartościami wzorcowymi, charakterystycznymi dla wcześniej przetestowanych środowisk. W trakcie weryfikacji opracowana technika pozwoliła na dokładne zidentyfikowanie 40 różnych środowisk testowych, określając wersje używanych przeglądarek, producenta CPU, stosowany system operacyjny oraz fakt uruchomienia na rzeczywistym sprzęcie lub w maszynie wirtualnej.

Osobno zauważono możliwość określenia dodatków przeglądarkowych i nawet poszczególnych ustawień dodatków, w tym dodatków przeznaczonych do blokowania metod ukrytej identyfikacji lub aktywności trybu prywatnego. W kontekście zaproponowanej metody takie dodatki stają się dodatkowym źródłem danych do identyfikacji. Dodatki są identyfikowane poprzez ocenę zniekształceń parametrów pierwotnego środowiska, wprowadzanych przez dodatki.

Inne metody identyfikacji mogą obejmować uwzględnienie takich danych pośrednich, jak rozdzielczość ekranu, lista obsługiwanych typów MIME, specyficzne parametry w nagłówkach (HTTP/2 i HTTPS) analiza zainstalowanych wtyczek i czcionek, dostępność określonych Web API, specyficznych dla kart graficznych cechy renderowania za pomocą WebGL i Canvas, manipulacje z CSS, analiza cech pracy z myszą i klawiaturą.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster