Не так давно, на одном профильном форуме, зашла речь о приватности в Windows 10. Уже стандартный, в общем-то, спор: отсылает ли она приватные данные, какие и зачем. Как часто бывает в подобных вопросах — рвались тельняшки, сыпались взаимные обвинения, публиковались исследования мабританских ученых и так далее. В какой-то момент в раздражении от очередного «при активации Windows 10 отправляет 30 мегабайт данных с видеокамеры ноутбука», я решил глянуть, что же происходит у меня в Windows 8.1, затем установить рядом (в очередной раз) Windows 10 и попробовать сравнить поведение.

Сразу скажу, что задуманное не дошло до установки десятки. Вопросы возникли уже в восьмерке.

Как же могут отправляться данные из windows?

На ум сразу же приходит планировщик заданий, в котором можно (внезапно) запланировать любое действие по событию или по времени. Второй вариант — некая стандартная служба, которая помимо выполнения штатных действий, умеет выполнять еще и нештатные. Закладка, попросту говоря. Но моя квалификация, увы, не позволяет с уверенностью выявить наличие подобных служб.

Поэтому выбор сузился до проверки планировщика. Думаю, если и отправляется оттуда что-то, то это что-то там и умрет объявится. Свою восьмерку я переставлял в январе, не со стандартными настройками, а с отключением всех ненужных мне фич (кстати одним из аргументов в споре дефолтные настройки как раз и выступали). Так что она планировалась как эталонная система.

Снимаю список заданий в powershell'е (Get-ScheduledTask) и тут же глаз цепляется за вот этот блок:
\Microsoft\Windows\Customer Experience Impr… BthSQM Ready
\Microsoft\Windows\Customer Experience Impr… Consolidator Ready
\Microsoft\Windows\Customer Experience Impr… KernelCeipTask Ready
\Microsoft\Windows\Customer Experience Impr… UsbCeip Ready

Как так? Я же помню, что точно отключал CEIP. Проверяю — «C:\windows\system32\rundll32.exe» werconcpl.dll,ShowCEIPDialog (если честно, то на самом деле я не настолько извращенец и просто делаю поиск по слову «CEIP» в Пуске/Старте):

image

Всё нормально, но отправка тем не менее включена.

Открываю taskschd.msc и смотрю журналы этих заданий (в скобках описания, взятые из самих задач):
  • BthSQM (Задача программы улучшения качества Bluetooth собирает статистику по Bluetooth, а также сведения о вашем компьютере, и отправляет их в корпорацию Майкрософт. Полученные сведения используются для повышения надежности, стабильности и общей функциональности Bluetooth в Windows. При отсутствии согласия пользователя на участие в программе улучшения программного обеспечения Windows эта задача не выполняет никаких действий.) — начала работать с 17/08/2015*
  • Consolidator(Если пользователь изъявил желание участвовать в программе по улучшению качества программного обеспечения Windows, эта задача будет собирать и отправлять сведения о работе программного обеспечения в Майкрософт) — с 12/08/2015
  • KernelCeipTask (При выполнении задачи программы улучшения качества ПО, выполняющейся в режиме ядра (Kernel CEIP), осуществляется сбор дополнительных данных о системе, которые затем передаются в корпорацию Майкрософт. Если пользователь не дал своего согласия на участие в данной программе, то эта задача не выполняет никаких действий.) — с 12/08/2015
  • UsbCeip (При выполнении задачи программы улучшения качества ПО шины USB (USB CEIP) осуществляется сбор статистических данных об использовании универсальной последовательной шины USB и сведений о компьютере, которые направляются инженерной группе Майкрософт по вопросам подключения устройств в Windows. Полученные сведения используются для повышения надежности, стабильности и общей производительности шины USB в Windows. При отсутствии согласия пользователя на участие в программе улучшения программного обеспечения Windows задача не выполняет никаких действий.) — с 15/08/2015

*важное примечание — вчера в журнале была другая дата: 10 августа. Сегодня я включал эти задания, чтобы сделать скриншот. Могу предположить, что ранние события удаляются после отработки задачи. Если это так, то не могу сказать, когда действительно они были включены.

Понятно, что раз включившись, задания продолжали работать и далее. До момента их ручного отключения (PShell от админа):
Get-ScheduledTask -TaskPath "\Microsoft\Windows\Customer Experience Improvement Program\" | Disable-ScheduledTask


Выдержка из «Заявление о конфиденциальности Windows 8.1 и Windows Server 2012 R2 (дополнение о компонентах)»

Выбор и управление
Если при установке Windows выбраны стандартные параметры, программа улучшения качества программного обеспечения Windows будет включена: Windows и приложения Майкрософт из Магазина Windows смогут отправлять отчеты программы улучшения качества программного обеспечения для всех пользователей компьютера. Если выбрана настройка параметров, вы можете управлять программой улучшения качества программного обеспечения, выбрав Отправлять Майкрософт сведения о том, как я использую компьютер, в рамках программы улучшения качества программного обеспечения в разделе Помогите Майкрософт улучшить продукты и службы. После установки Windows администраторы могут изменить этот параметр в разделе Центр поддержки панели управления.


Выдержка из описания программы CEIP

Является ли программа улучшения качества программного обеспечения шпионским ПО?
Нет. Шпионские программы могут собирать сведения или работать на компьютере пользователя без его ведома или согласия. Программа улучшения качества программного обеспечения выполняет только действия, описанные в заявлении о конфиденциальности программы улучшения качества программного обеспечения, кроме того, пользователь может в любой момент начать участвовать в программе или отказаться от этого.


Мой вопрос о таком странном поведении на answers.microsoft.com.

Ответ пока можно свести к «К сожалению нельзя полностью исключить и то, что Microsoft, пользуясь своим исключительным Правом распоряжаться своим программным продуктом так, как считает нужным, могла включить программу CEIP принудительно.» Моё замечание о недоступности страницы с описанием CEIP связано с тем, что эта страница, по какой-то мне неизвестной причине, была недоступна в течении нескольких часов (на момент завершения написания этой заметки, она снова доступна).

Причина включения заданий осталась мне также неизвестна.

В заключение: я для себя сделал вывод, что Microsoft вполне может нарушать собственные соглашения и, в том числе, отправлять данные с видеокамеры (при наличии желания и технической возможности). Увы, но «партия параноиков» в чем-то права.

Свои выводы из этой небольшой истории предлагаю сделать самостоятельно.

Комментарии (25)


  1. Meklon
    24.08.2015 11:03

    Весело рубильник дёрнули)


  1. VEG
    24.08.2015 11:39
    +3

    Если пользователь не дал своего согласия на участие в данной программе, то эта задача не выполняет никаких действий.
    Тут не сказано, что задача целиком снимается. Просто написано, что при отказе от участия в программе CEIP, данная задача не выполняет никаких действий. Возможно, так проще программировать — при запуске каждой задачи подобного плана проверяется какой-то ключик в реестре, и впоследствии принимается решение, отработать вхолостую или выполнить какую-то работу.


    1. denticulus
      24.08.2015 11:42
      -2

      Пожрать ресурсы, посадить батарею, поесть трафик и отправить 30 Мб нулей на 4 адреса? Сами-то верите в это?


      1. VEG
        24.08.2015 11:51
        +15

        поесть трафик и отправить 30 Мб нулей на 4 адреса?
        В этой статье про это (ни вообще про какую-либо работу этих задач) ничего не сказано. Не нужно додумывать. Мы не на уфологическом форуме.


        1. wbnet
          24.08.2015 12:57

          У меня не было достаточно времени в выходные, чтобы расковырять по полной.

          По журналам видно время запуска задания, время начала и окончания действия и время окончания задания — в случае, например, консолидатора идет запуск %SystemRoot%\System32\wsqmcons.exe и через 20 секунд завершается с кодом нормального выполнения. Это я смотрю сейчас со своего рабочего компьютера, на нем точно такая же история. Считывание одного ключа реестра не может занимать столько времени.

          Сборщики bluetooth и usb работают через COM обработчики. Из mmc-консоли назначенные действия никак не посмотреть, но если экспортировать задание в xml, то можно увидеть CLSID, которые при поиске в реестре выводят на: %SystemRoot%\System32\BthSQM.dll — в случае BthSQM и %SystemRoot%\System32\usbceip.dll у UsbCeip. Эти выполняются меньше, всего около секунды.

          KernelCeipTask -> %SystemRoot%\System32\kernelceip.dll, 12 секунд


          1. IRainman
            24.08.2015 13:08

            Участие в программе подразумевает отправку данных, но помимо этого в системе существуют ещё локальные механизмы для решения проблем, наверняка ими тоже используется эти данные или их часть. В общем тут нужен спец, кто глубоко в теме и сможет рассказать какие диагностические компоненты как друг на друга завязаны. Без этого реверс-инженеринг тоже без проблем можно провести, но некоторые моменты так и останутся не до конца понятны.


          1. Zagrebelion
            24.08.2015 19:52

            запустите procmon и не гадайте на кофейной гуще, чем оно занимается.


      1. IRainman
        24.08.2015 13:01
        +1

        дополню VEG про «посадить батарею»: эти задачи входят в список заданий обслуживания и вообще не запускаются при работе от батарей, а при переходе на автономное питание приостанавливаются ;)


        1. wbnet
          24.08.2015 15:25

          Consolidator не обращает внимание на настройки электропитания и запускается всегда.


          1. IRainman
            24.08.2015 21:36

            я имею ввиду параметры задания планировщика:

            DisallowStartIfOnBatteries
            StopIfGoingOnBatteries

            и целиком раздел:

            MaintenanceSettings

            разве они не используются в этих заданиях?


            1. wbnet
              25.08.2015 08:45

              В консолидаторе не используются — простой триггер «раз в день в 19:00». В остальных трех да, они не запустятся при работе от акка.

              На рабочем компе у меня еще имеется задание с разовым запуском Uploader (оно же «wsqmcons.exe -u»), создано лично мной, если верить журналу. Опять же если верить журналу, то я же его и запускал ежедневно в течении уже 20 дней (переработал наверное, пора в отпуск). Параметры идентичны консолидатору без ключа, только проверяется возможность подключения к любой сети.


              1. IRainman
                25.08.2015 12:08

                Понятно, с заданием для wsqmcons -u тоже в общем то понятно, странно, что оно запускается просто по расписанию, однако не странно, что оно создано из под пользовательской учётки для которой работает. Ведь именно wsqmcons отсылает данные в MS, а остальные таски именно диагностические для локального накопления статистической информации. Странно конечно, что он работает (если действительно работает а не в холостую запускается) при отключённой отправке данных, возможно это баг.

                P.S. не знаю у кого как, но у нас 8.x была забракована из-за проблем совместимости с софтом и из тестов не вышла, только к 10 эти ошибки ядра поправили, жаль что пока ещё не все. Однако для самой 10 нам пока ещё точно рано ибо слишком много мелких багов. Сидим с 3 квартала 2009 на 7 и всё прекрасно. Это я к тому, что анализом механизма расширенной диагностики я, например, заинтересовался только сейчас ибо только сейчас его бекпартировали на 7.


  1. wbnet
    24.08.2015 13:09
    +7

    Видите ли, я нигде не писал про то, что отправляются приватные данные из папок пользователя и всем шапочки из фольги срочно заказывать надо. Просто неприятный факт — при прямом несогласии пользователя, задания по сбору данных все равно продолжают работать (либо были включены каким-то обновлением).


  1. 3dtim
    24.08.2015 14:56

    Ну что ж, всё таки придется заклеить скотчем камеру в ноуте.


  1. darthslider
    24.08.2015 15:02
    +3

    А что мешает банально посмотреть трафик wireshark`ом, например? Когда выполняется задание есть ли какой-нибудь трафик и куда и в каком объеме?


    1. wbnet
      24.08.2015 16:35

      На самом деле просто не предполагал, что наткнусь на подобное (10 полутестовая, ей еще относительно простительно, но 8.1 которой уже сто лет в обед… не ожидал) На неделе гляну поплотней, самому весьма не нравится, когда без моего разрешения начинает что попало запускаться.


  1. xandr
    24.08.2015 17:27

    Возможно, логика MS(tm) здесь следующая: если пользователь согласился на участие в программе, мы собираем его данные и используем для своих целей. Если пользователь отказался, мы все равно собираем и отправляем его данные, но не используем их. Типа, храним на всякий случай — а вдруг он передумает? :)


    1. bougakov
      24.08.2015 19:20

      В восьмёрке была фича — раз где-то в пару месяцев Troubleshooting wizard проыспался и предлагал поискать, не появилось ли решений для замеченных проблем (типа ненайденного драйвера для всякой китайской периферии и т.п.).

      Где-то же он должен накапливать эти данные ведь?


  1. wbnet
    24.08.2015 23:29
    +1

    Пересилил природную лень и разобрал консолидатора procmon'om. После «название».dll идет описание этой длл.

    Извиняюсь за комментарии, но уже спать хотелось.
    %SystemRoot%\System32\wsqmcons.exe
    SQM консолидатор Windows

    Запуск руками. Далее происходящее:

    Проверка на SafeBoot

    Подгрузка библиотек
    tdh.dll вспомогательная библиотека трассировки событий
    wer.dll библиотека сообщений об ошибках
    wevtapi.dll API настройки и использования событий
    powrprof.dll DLL модуля поддержки управления питанием
    xmllite.dll Microsft XMLLite Library
    sppcext.dll Software Protection Platform Client Extension Dll
    ktmw.dll Windows KTM Win32 Client DLL
    reagent.dll Библиотека DLL агента восстановления MIcrosoft Windows
    winhttp.dll Службы HTTP Windows
    cabinet.dll Microsft Cabinet File API
    rpcrt4.dll Библиотека удаленного вызова процедур
    crypt32.dll API32 криптографии
    sechost.dll Host for SCM/SDDL/LSA Lookup APIs
    gdi32.dll GDI Client DLL
    combase.dll Microsoft COM для Windows
    WinSCard.dll API смарт-карт

    — Девушка, позвольте с вами познакомиться — Чтение текущих языковых настроек
    Чтение конфигурации оборудования из подразделов HKLM\System\CurrentControlSet\ и HKLM\HARDWARE\DEVICEMAP\VIDEO
    Обращение к драйверам(файлам) видеокарты и к параметрам видео из реестра (Интелом побрезговало, Нвидию поизучало)
    Считывание всех файлов из System32
    Чтение из реестра:
    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\SourcePath
    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath
    HKLM\System\CurrentControlSet\Control\Nls\CustomLocale
    HKLM\System\CurrentControlSet\Control\Nls\ExtendedLocale
    HKLM\SOFTWARE\Microsoft\OLE\PageAllocatorUseSystemHeap
    HKLM\SOFTWARE\Microsoft\OLE\PageAllocatorSystemHeapIsPrivate
    HKLM\SOFTWARE\Microsoft\OLE\AggressiveMTATesting
    HKLM\System\CurrentControlSet\Control\SystemInformation\SystemManufacturer
    HKLM\System\CurrentControlSet\Control\SystemInformation\SystemProductName
    HKLM\System\CurrentControlSet\Control\SystemInformation\BIOSVersion
    HKLM\Software\Microsoft\windows\CurrentVersion\Internet Settings\Connections\*

    — Третий лишний — Периодические проверки — выключены ли следующие товарищи (или включены?):
    HKLM\SOFTWARE\Policies\Microsoft\SQMClient\
    HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\
    HKLM\SOFTWARE\Microsoft\TelemetryClient\

    — БД «Чтобы никто не догадался» (по моему) — Заполнение HKLM\SOFTWARE\Microsoft\SQMClient\Windows\CommonDatapoints\*

    — Не понял — QueryDirectory C:\Windows\System32\drivers\*.mrk

    — Ключ на старт. Зажигание. 3… 2… 1… — Чтение HKLM\System\CurrentControlSet\Services\WinSock2\Parameters\*
    Подгрузка сетевых библиотек (dhcpapi, dnsapi)
    Чтение параметров TCPv4/TCPv6
    Подгрузка mswsock.dll, wshqos.dll, schannel.dll

    — Поехали — TCP Connect -> 65.55.252.93:https
    TCP Send -> 65.55.252.93:https Lenght 192
    TCP Receive -> 65.55.252.93:https Lenght 3800

    — Юстас Алексу: Мама, роди меня обратно — Читается разная сертификатная криптография (напр. HKLM\Software\Microsoft\Cryptography\OID или HKLM\SOFTWARE\Policies\Microsoft\SystemCertificates)
    Между криптосертификатией проскакивают 2 одинаковых запроса к самому себе, с разным результатом:
    QuerySecurityFile BUFFER OVERFLOW info: owner
    QuerySecurityFile SUCCESS info: owner
    далее опять запросы к сертификатам и так несколько раз по кругу. Проверка на вшивость?

    — Радость сисадмина — Подгрузка gpapi.dll Клиентские функции API групповой политики
    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\UserenvDebugLevel
    HKLM\SOFTWARE\Policies\Microsoft\Windows\System\GpSvcDebugLevel
    Опять сертификаты/криптография из реестра и подгрузка fveui.dll
    Подгрузка wuaueng.dll Агент центра обновления
    Подгрузка powershell не понял?
    Криптография из реестра (HKLM\System\CurrentControlSet\Control\Cryptography\*)
    обращение к dll установленного EMET (CreateFileMapping)

    — Центр-Юстасу: Держитесь — TCP Send -> 65.55.252.93:https Lenght 214
    TCP Receive -> 65.55.252.93:https Lenght 107
    Криптография из реестра (HKLM\System\CurrentControlSet\Control\Cryptography\*)
    Подгрузка dpapi.dll Data Protection API

    — Юстас Алексу: Служу Советскому Союзу — TCP Send -> 65.55.252.93:https Lenght 213
    TCP Send -> 65.55.252.93:https Lenght 2613
    TCP Receive -> 65.55.252.93:https Lenght 389

    — Торможение о плотные слои — QueryStandardInformationFile и CreateFileMapping к «C:\ProgramData\Microsoft\windowssampling\Sqm\Manifest\Sqm3.bin», перемежаемые крипто из реестра

    — Раскрытие парашюта — RegSetInfoKey:
    HKLM\SOFTWARE\Microsoft\SQMClient\Windows\CommonDatapoints\*
    HKLM\SOFTWARE\Microsoft\Internet Explorer\svcUpdateVersion
    HKLM\SOFTWARE\Microsoft\SQMClient\*
    HKLM\SOFTWARE\Microsoft\Reliability Analysis\RAC\RacSampleNumber

    — Приземление — Различные телодвижения с:
    HKLM\SOFTWARE\Microsoft\TelemetryClient\*
    HKLM\SOFTWARE\Microsoft\SQMClient\*
    Закрытие TCP, выгрузка библиотек. Game Over.


  1. mtp
    24.08.2015 23:32

    Я не туда смотрю или в Windows 8.0 таких заданий нет?


  1. mlurker
    25.08.2015 04:13

    Хорошо бы составить список таких задач, которые можно удалить/отключить. Пока есть небольшой для windows server 2012: http://pastebin.com/MGFCdtRf


  1. rtzra
    25.08.2015 07:50

    Посмотрел задания шедулера на нескольких своих компьютерах, печалька.
    Проснулся внутренний параноик, он и резюмирует:
    — Приватности нет, от слова «вообще»
    — Каждое устройство нынче «стучит» на своего хозяина, собирает статистику и все это сливает не пойми куда
    — Каждая версия windows все сильнее и сильнее «оптимизируется» для отслеживания действий пользователя
    — Огромное количество программ — от браузера до среды разработки так же куда-то что-то отправляют (разумеется с целью «улучшить» и «сделать удобнее»)

    Что делать-то? На ум приходят следующие варианты:
    — Не пользоваться вообще устройствами и ПО, которое отслеживает каждый чих. Увы, не от всего можно отказаться
    — Пользоваться старыми версиями железа/ПО. Тоже далеко не всегда возможно, плюс есть вопросы по безопасности
    — Использовать альтернативные/свободные железяки/ПО. Вариант не без минусов, но вполне возможный и посильный
    — Использовать некое подобие контейнеров ОС: железяка включилась (кстати, еще до включения — кто знает что и как в ней работает и куда стучит?), создался контейнер с операционкой, развернулось необходимое ПО, подключились ресурсы с пользовательскими данными. По окончанию работы данные сохранились, контейнер удалился (если не ошибаюсь Рутковски такую систему разрабатывала?). Возможен вариант — контейнер не для операционки, а для конкретного сервиса/приложения, части из них вообще запретить сетевой обмен.

    Кто из умных людей что скажет, идеи и комментарии?


    1. lybin
      26.08.2015 08:09

      Тут два варианта :) Лечиться от паранойи или переходить на свободный открытый софт.


      1. VEG
        26.08.2015 10:34

        Но при этом придётся признать, что переход на открытый софт не гарантирует отсутствие закладок в нём, или отсутствие телеметрии — например, в Firefox сбор телеметрии имеется. А самое главное, в любом случае в вашем компьютере будут продолжать выполняться мегабайты закрытого кода. Даже если вы найдёте все драйвера и весь софт с открытыми исходниками, у вас останется ещё железо, и речь не только про UEFI, но и про внутреннюю логику HDD/SSD или сетевого адаптера. Если уж и быть параноиком, то до конца.


        1. lybin
          26.08.2015 18:15

          В хроме тоже, везде есть галка снять, в ФФ больше доверяю, что она снимается, но пользуюсь хромом, не хромиумом даже.
          Если не доверять и железу, то какой-нибудь Librem брать, кстати мне оч нравится. Но однозначно linux прозрачнее windows и mac. А если до конца, то вообще компьютер в сторонку надо откладывать наверное :)