poniedziałek, 11 lipca 2016

Wstęp do telemetrii w Windows 10


Dzisiaj krótki wpis, który nie do końca pasuje do tematyki prezentowanej na tej stronie.

Jeden z ostatnich projektów polegał na identyfikacji wszystkich danych telemetrycznych, które są przesyłane do serwerów firmy Microsoft z systemu operacyjnego Windows 10. 

Okazało się, że nie wszystkie informacje są wystarczająco szczegółowo opisane przez producenta. Nie będziemy tutaj omawiali wszystkich wyników. Zajmiemy się jedynie jednym z miejsc w którym są zapisywane a następnie przesyłane dane telemetryczne. Jednocześnie zachęcamy do zapoznania się z dokumentem „Manage connections from Windows operating system components to Microsoft Services” [1], który opisuje jakie typy danych są rejestrowane i jak skonfigurować system aby włączać/wyłączać ich rejestrowanie.

Opisane poniżej dane pochodzą z systemu na którym włączone są wybrane funkcje związane z telemetrią. Można wyłączyć ich rejestrowanie za pomocą opcji z GUI, Group Policy czy bezpośrednio z rejestrów.

Według definicji telemetria to pomiar i przesyłanie wartości pomiarowych na odległość. Przykłady użycia zbieranych danych przez Microsoft opisane są tutaj [2]. Usługa która realizuje funkcje telemetryczne w Windows 10 to DiagTrack (pełna nazwa to Connected User Experiences and Telemetry). 

Usługa ta uruchamiana jest za pomocą komendy svchost.exe –k utcsvc, dlatego nazywana jest również Universal Telemetry Client (UTC). 

Po identyfikacji procesu odpowiedzialnego za tą usługę można zauważyć (poniższy zrzut z ekranu) że proces ten co 15 minut wysyła dane a następnie zapisuje coś do plików events*.rbs (jest to wynik działania wewnętrznej funkcji Flush).



Biblioteką która odpowiada za rejestrację zdarzeń telemetrycznych jest diagtrack.dll. My mieliśmy okazję analizować dwie, wydaje się, najbardziej popularne w organizacjach wersje 10.0.10240.16724 (Windows 10 Enterprise LTSB) oraz 10.0.10586.162 (Windows 10 Enterprise). W obu przypadkach są to wersje 64 bitowe.

Funkcja która zapisuje zdarzenia do bufora, a następnie do wspomnianych powyżej plików to Microsoft::Diagnostics::CAsimovEventBuffer::AddEvent().

Plik events* są zaszyfrowane ale rejestrując argumenty funkcji AddEvent jesteśmy w stanie podejrzeć zdarzenia.

Poniżej komenda windbg, która będzie wyświetlała poszczególne zdarzenia (dla Windows 10 Enterprise LTBS). Dla wersji Enterprise warto monitorować wywoływaną dwa razy funkcję append().

bp diagtrack!Microsoft::Diagnostics::CAsimovEventBuffer::AddEvent ".printf \"%ma \n\",poi(rdx); gc;"

Poniżej kilka fragmentów danych które zostały zarejestrowane przy włączonej funkcji Zezwalaj na telemetrię (3 – pełne).

{"ver":"2.1","name":"Win32kTraceLogging.AppInteractivity","time":"2016-07-11T20:06:33.2945831Z","epoch":"1627466","seqNum":117,"flags":257,"os":"Windows","osVer":"10.0.10240.16942.amd64fre.*","appId":"W:*!dwm.exe","appVer":"2015/07/10:03:16:23!ed1f!dwm.exe","ext":{"device":{"localId":"s:*","deviceClass":"Windows.Desktop"},"user":{"localId":"w:*"},"utc":{"cat":*,"flags":0}},"data":{"FocusState":1,"AppId":"W:*!iexplore.exe","AppVersion":"2015/11/25:04:09:48!cf1f8!iexplore.exe","AppSessionId":"*","FocusDurationMS":100032,"WindowWidth":800,"WindowHeight":600,"MonitorWidth":1024,"MonitorHeight":768,"MonitorFlags":0,"WindowFlags":16,"CommandLineHash":1218101422,"EventSequence":99}}

{"ver":"2.1","name":"Microsoft.Windows.Shell.CortanaSearch.CortanaApp_UploadCommonSignals",…","InputSec":6,"KeyboardInputSec":0,"MouseInputSec":6,"TouchInputSec":0,"PenInputSec":0,"HidInputSec":0,"WindowWidth":1101,"WindowHeight":673,"MonitorWidth":1920,"MonitorHeight":1080,"MonitorFlags":24,"WindowFlags":48,"InteractiveTimeoutPeriodMS":60000
deviceMake":"VMware, Inc.","deviceModel":"VMware Virtual Platform","isDeviceTouch":0,"deviceSku":"","clientMarket":"pl-PL","networkType":"ethernet"

Dodatkowo po włączeniu funkcji dostępnej w ustawieniach prywatności: Mowa, pismo odręczne i wypisywanie tekstu (Poznaj mnie lepiej) możemy zidentyfikować adresy URL, nawigację po załadownej stronie Internetowej czy czas spędzony na każdej stronie.

{"ver":"2.1","name":"Microsoft.Windows.App.Browser.OneBoxAddressbarChanged","time":"2016-06-07T10:53:57.5403989Z","epoch":"2101664","seqNum":826,"flags":257,"os":"Windows","osVer":"10.0.10586.318.amd64fre.*","appId":"U:Microsoft.MicrosoftEdge_25.10586.0.0…","oneboxSettingsEnabled":1,"oneboxAddressBarInputString":"wikipedia."


{"ver":"2.1","name":"Microsoft.Windows.App.Browser.OneBoxAutocompleted","time":"2016-06-07T10:53:57.5930153Z"…","topResult":"http://www.prevenity.com/","…


{"ver":"2.1","name":"Microsoft.Windows.App.Browser.HJ_NavigateElementClicked","…,"domElementPath":"A|0||addthis_button_facebook_like;DIV|1||addthis_toolbox;DIV|0||facebook_like_contener;DIV|2||facebook_like;DIV|1||box3_faceMain","domElementContent":"","href":"","hrefRejectCode":107,"isPrerenderedTab":0,...

Powyżej pokazaliśmy tylko niewielką próbkę zarejestrowanych danych. Przypominamy, że dane te są rejestrowane przy włączonych funkcjach telemetrycznych opisanych powyżej.

Źródła:




Brak komentarzy:

Prześlij komentarz