Как windows запоминает usb устройства

История использования USB

Ни для кого уже не секрет, что информация о разного рода активности многочисленных компонентов операционной системы попадает в реестр и файлы в виде записей заданного формата. При этом, информация эта нередко содержит чувствительные пользовательские данные: историю посещенных браузером страниц, кеш данных программ, информацию о подключаемых устройствах и многое многое другое. Во основном журналирование обеспечивается функциональными особенностями пользовательских программ, которые имеют встроенные алгоритмы сохранения истории операций, отчасти это возможно благодаря архитектурным особенностям ядра/HAL операционной системы, которые, производя конфигурирационные действия с устройствами, сохраняют информацию о последних в виде записей в системном реестре. Из всего многообразия подобной информации, в рамках данной статьи нас будет интересовать исключительно история использования USB устройств.

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

Не так давно в нашу жизнь вошел интерфейс USB, привнеся в неё довольно существенные изменения. Неожиданно многие вещи стали проще, отпала необходимость инсталляции устройства во внутренний интерфейсный разъем (шина), или внешний интерфейс, требующий перезагрузки станции для корректной инициализации устройства, да и сам процесс конфигурирования устройств стал, во множестве случаев, тривиальнее. На интерфейсе USB появились тысячи разнообразных по назначению устройств, которые достаточно было подключить к разъему на панели корпуса, после чего от момента подключения до состояния «готов к работе», порой проходили считанные минуты. Наряду с очевидными достоинствами: легкостью конфигурирования/использования, компактностью, функциональностью, подобные устройства сразу стали источником проблем как для безопасности персональных данных самого пользователя, так и безопасности корпоративных сред. Компактный, легко маскируемый «брелок» с интерфейсом USB может запросто явиться той ахиллесовой пятой, которая станет причиной «падения» гиганта корпоративной безопасности. Если порты USB в корпоративных рабочих станциях находятся без надлежащего контроля со стороны политик безопасности, то любое приспособление может запросто выступить в качестве средства для обхода периметра безопасности компании. И тут уж насколько хватит фантазии «взломщика», например, достаточно пронести на флешке свежий, не определяемый антивирусами вредоносный код и выполнить его (умышленно или нет), и вот вам уже прецедент, поскольку даже без локальных административных привилегий учетной записи пользователя сохраняется пространство для маневра. Не меньшую опасность представляют и USB-модемы, которые, в случае установки (а при использовании локальных/доменных политик по умолчанию это достигается достаточно просто), могут выступить в роли неконтролируемого канала передачи данных, по которому может осуществляться передача чувствительной корпоративной информации за пределы защищенного внутреннего периметра. При этом, даже декларируемые (заявленные/согласованные) пользовательские устройства (например, телефоны) могут содержать в своих микропрограммах или операционных системах уязвимости, которые, в случае эксплуатации, наносят вред не только владельцу, но и могут выступать в роли средства несанкционированного доступа к служебным данным. Поэтому, в случае возникновения инцидента информационной безопасности, связанного с эксплуатацией USB-устройств,

В связи со всем перечисленным, достаточно важно не только уметь ограничивать использование устройств, но и иметь доступ к истории USB подключений в системе. Этому вопросу и будет посвящена данная статья. Сразу оговорюсь, что весь список точек создания информации о подключении тех или иных устройство чрезвычайно обширен, поэтому по теме данной статьи мы будем рассматривать лишь историю использования USB устройств.

Перечисление (энумерация) USB устройств

Поскольку я сам в данном вопросе «плаваю», перед тем как перейти к практике, предлагаю немного усилить нашу теоретическую базу и описать терминологию, которая будет использоваться на протяжении всего материала. Сразу оговорюсь, что мы не будем освещать все виды взаимодействия, выполняющиеся на шине USB на аппаратном уровне, а сосредоточимся исключительно на основных понятиях, относящихся к USB-устройствам и требующихся нам для понимания практической стороны вопроса.
Подключение любого нового оборудования сопряжено с выполнением модулями ядра системы Windows предопределенных фаз опроса и инициализации. Начинается всё с того, что при подключении устройства к разъему USB, контроллером USB (встроенным в чипсет на материнской плате) генерируется аппаратное прерывание. Драйвер USB, ответственный за обработку данного прерывания, запрашивает статус порта, и если статус указывает на подключенное устройство, то ответственными подсистемами ядра производится последовательность действий, которую условно можно разделить на две стадии:

  1. Нумерование устройства;
  2. Установка драйвера устройства;
Читайте также:  Как выбрать установочный диск windows

Ядро (?) инициирует к вновь подключенному устройству серию запросов GET_DESCRIPTOR с различными типами запрашиваемых дескрипторов ( Device , Configuration , LangID , iProduct ). Запросы опрашивают устройство на предмет наличия серии дескрипторов, представляющих собой структуры данных, описывающие возможности USB устройства.

Отсюда следует вывод, что любое USB-устройство должно уметь реагировать на запросы от хоста и иные события на шине. В ответ на подобного рода запросы, микрокод устройства возвращает из ПЗУ требуемую информацию. Данные, возвращаемые устройством в ответ на запросы разнообразных дескрипторов, являются важными для операционной системы, поскольку именно часть этих данных представляет собой различного рода идентификаторы, используемые системой в дальнейшем в процессе нумерования устройства. Давайте приведем наиболее значимую информацию:

Название поля Терминология Windows Размер (байт) Комментарий
idVendor VID 2 Идентификатор производителя устройства. При присвоении идентификатора производителя, соответствующее числовое значение вносится в реестр производителей.
idProduct PID 2 Идентификатор продукта. Назначается производителем устройства. Product ID используется для дифференциации продуктов в рамках одного производителя.
bcdDevice REV 2 Идентификатор ревизии. Используется для дифференциации разных аппаратных модификаций в рамках одной модели устройства. Может использоваться при выпуске новой версии платы/контроллера/логики.
bDeviceClass, bFunctionClass, bInterfaceClass Class 1 Класс устройства. Используется для задания класса схожих устройств с общим набором идентичных свойств.
bDeviceSubclass, bFunctionSubClass, bInterfaceSubclass SubClass (SUB) 1 Подкласс устройства. Используется для задания подкласса схожих устройств в рамках класса.
bDeviceProtocol, bFunctionProtocol, bInterfaceProtocol Protocol (Prot, PROTO) 1 Протокол устройства. Используется для задания протокола для устройств в рамках класса и подкласса.
iProduct Product ? Текстовая строка-описатель продукта. Когда устройство подключено к компьютеру, данная информация отображается в Диспетчере устройств.
iSerialNumber Serial ? Серийный номер. Используется для уникализации абсолютно одинаковых устройств, например две одинаковых флешки. Назначается и поддерживается производителем устройства. Связанный механизм носит имя Сериализация. Сериализация так же участвует в уникальной идентификации устройства, поскольку добавляет еще один уровень уникальности.

Наверняка многие из перечисленных в таблице полей Вам уже встречались в составе значений различных параметров в том же Диспетчере устройств либо в разнообразных системных лог-файлах.
Помимо стандартных дескрипторов, существуют еще так называемые Дескрипторы Microsoft (Microsoft OS Descriptors, MOD), которые содержат специфичную для ОС Windows информацию. Для поддержки производителей, чьи устройства из-за функциональных особенностей не подходят под стандартный набор классов, Майкрософт разработала набор специальных классов и собственных дескрипторов. Пользовательское и системное ПО может идентифицировать устройства, принадлежащие к разработанным Майкрософт классам устройств путем опроса устройства на предмет наличия дескрипторов Microsoft. Помимо поддержки описанных классов устройств, дескрипторы Microsoft имеют и иное применение, например при помощи них можно использовать память устройства для хранения файлов помощи, иконок, списков адресов URL, настроек системного реестра и других данных, используемых для обеспечения прозрачности установки и достижения смежных целей. Устройства, поддерживающие дескрипторы Microsoft, должны хранить специальный строковый дескриптор в прошивке с фиксированным индексом 0xEE . Операционные системы Windows XP SP1 и более поздние запрашивают этот строковый дескриптор у устройства при первом его подключении.

Более того, использование пары VID / PID в дескрипторе любого USB-устройства предписывается спецификацией, согласно которой данные параметры должны быть уникальны для каждой модели устройства. Ну это, опять же, все в теории, а на практике пару раз встречались экземпляры устройств, при работе с которыми становилось очевидно, что значения VID/PID взяты произвольно, либо взяты свободные значения (!) из реестра производителей. Понятно кому выгодно подобным заниматься 🙂 Ну это скорее редко встречающаяся ситуация, когда производителю хочется сэкономить на внесении в реестр производителей.
Затем, после того, как у устройства запрошены ключевые параметры, для USB устройства создан уникальный идентификатор HardwareID ( CompatibleID ), однозначно идентифицирующий устройство/класс устройства. Драйвер USB-концентратора уведомляет специализированный модуль ядра под названием Диспетчер Plug-n-Play (PnP Manager) о новом устройстве. Диспетчер PnP получает идентификаторы HardwareID и CompatibleID устройства и пытается обнаружить устройства с аналогичными идентификаторами HardwareID/CompatibleID. В этот момент в системе создается узел устройства (devnode), что является, по сути, первым отпечатком USB устройства в системе. Если похожее устройство найдено, то производится установка соответствующих драйверов в автоматическом режиме, если же не найдено, то Диспетчер PnP получается уведомление о новом устройстве и далее действует по определенным правилам, описание которых выходит за рамки данного материала.

Читайте также:  Msn новости windows 10 что это

Эксперимент

В Сети много противоречивой информации относительно истории подключения USB, поэтому давайте проведем собственный эксперимент по выявлению всех возможных системных местоположений, формирующих историю USB подключений. С целью выявления следов подключения USB стоит отследить абсолютно все изменения, происходящие в системе в момент подключения USB устройства. С этой целью на просторах Сети была найдена замечательная утилита под названием SysTracer, которая обладает всем необходимым функционалом. Утилита настолько проста и функциональна, что во многих случаях она окажется незаменимым средством в руках специалиста, поскольку предоставляет возможность сделать КРАЙНЕ полезное действие: создать мгновенный снимок (snapshot) состояния ключевых компонентов системы, таких как реестр и файлы. В качестве системы я использовал чистую инсталляцию Windows 7 Professional, при этом главным требованием было отсутствие каких-либо подключений внешних носителей. Итак, делаем снимок чистой системы, затем вставляем тестовую USB-флешку SanDisk Cruzer mini 1.0Gb и через некоторое время делаем второй снимок. Встроенными средствами утилиты SysTracer сравниваем полученные образы с выводом отчета. В итоге у нас получился некий набор системных изменений, среди которых мы попытаемся выбрать именно те, которые могут относиться к следам подключения USB устройств. Выбранный мною метод имеет и свои недостатки, поскольку наблюдения за активностью системы применительно к USB устройствам не проводилось «в динамике», то есть мы не работали с открытыми с подключаемого носителя файлами (.docx/.xlsx) в различных пользовательских приложениях, а это могло привести к тому, что мы можем упустить факты попадания частей информации с USB-носителя в файлы подкачки, различные временные файлы кеша и файлы иного назначения. Поэтому материал, скорее всего, потребует последующей доработки.

История в файлах

После изучения изменений файловой части системных изменений, подтвердился факт того, что в операционной системе Windows 7 все действия над устройствами отражаются в следующих журнальных файлах:

Windows не распознает USB-устройства? 6 способов устранения ошибки

Windows не распознает USB-устройства

Иногда можно наблюдать вариант, когда Windows не распознает накопитель.

Существует довольно много причин, которые способствуют появлению такой неполадки.

Проблема с портом

Если вы подключили к компьютеру какое-то внешнее оборудование — мышь, клавиатуру, принтер или просто флешку, а Windows не удается опознать что это за девайс — выполните приведенные ниже действия.

Вначале проверяем разъем компьютера и подключаемый штекер на предмет неисправности.

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

Кроме этого проверьте целостность подключаемого кабеля, если он имеет внешние повреждения — замените его.

Зачастую бывает, что передний порт попросту не подключен к материнской плате.

Возможно и такое, что не опознается системой в связи с подключением в порт USB 3.0.

Они наиболее скоростные, чем серии 2.0.

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

Переподключите устройство в другой разъем и возможно проблема исчезнет сама собой.

Снятие статического электричества

Можно решить этот вопрос путем полного обесточивания персонального лаптопа.

Завершите его работу и отключите от USB-выхода не распознаваемое устройство.

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

Кнопка запуска ПК

После этого осуществите запуск «компа» и подключите любое внешнее запоминающее устройство в usb-выход.

Вполне вероятно, что Windows избавится от имевшейся ошибки и сможет его распознать.

Если же этого не произошло — возможно проблема заключается в некорректной работе драйверов.

Обновление драйверов

Постарайтесь найти и установить максимально свежие и рабочие драйвера к накопителю USB.

Читайте также:  Unreal engine 4 package windows

Строка с ним имеет иконку с вопросительным знаком и надписью: «Неизвестное устройство».

Для этого необходимо запустить компьютер и войти в «Диспетчер устройств». найдите в имеющемся списке оборудование , которое является неопознанным.

Строка с ним имеет иконку с вопросительным знаком и надписью: «Неизвестное устройство».

Для этого кликните по нему правой кнопкой мышки и в выпадающем списке выберите пункт «Обновить драйверы…».

Тогда, когда неопознанный накопитель находится в разделе «Контроллеры USB» — кликните по нему мышью.

В открывшемся окне перейдите на вкладку «Драйвер» и попробуйте вернуть ОС до того момента, когда драйвера работали корректно. Для этого необходимо нажать на кнопку Откатить.

Однако такая процедура действенна при наличии предыдущей версии, в противном случае придется их полностью удалить.

После этого операционная система протестирует имеющееся оборудование и обнаружив подключенный к USB-порту девайс произведет для него установку необходимого драйвера.

Чтобы убедиться в этом необходимо открыть окно свойств корневого usb-концентратора и на вкладке управления электропитанием снять галочку с пункта «Разрешить отключение этого устройства для экономии энергии».

Запрет на отключение порта usb

Еще одним вариантом, когда флешка не опознается, может быть временное отключение операционкой юсб-порта.

Чтобы это устранить, понадобится открыть «Панель управления» и перейти на вкладку «Электропитание».

В появившемся окне раскройте список пункта «Параметры usb» и выберите «Параметр временного отключения usb-порта».

Установите в нем значение «Запрещено» и нажмите «Ок» для подтверждения изменения.

Кроме этого установите на операционку новые обновления, а при необходимости — последние программы для материнской платы.

Это можно выполнить при помощи программы Driver Easy, которая устанавливает драйвера для любого имеющегося оборудования, в том числе и usb.

Внешний вид программы

Что делать, если usb устройство не опознает Windows 10?

Во — первых следует убедиться в том, что само устройство полностью исправно.

В противном случае причину следует искать в самом компьютере. Для начала проверьте аппаратную часть.

Проверка аппаратной части

При подключении винчестера или флеш-накопителя с помощью usb-разветвителя (usb-hub) появление подобной ошибки связано с недостаточным питанием.

Если устройство подключено на передней панели компьютера — попробуйте вставить его в порт материнской карты, расположенный на задней стороне.

Чтобы это исправить — выключите и отсоедините от сети стационарный ПК, а у ноутбука извлеките после выключения аккумуляторную батарею.

После этого следует 10-15 секунд удерживать в нажатом состоянии кнопку запуска, чтобы избавиться от остаточного электричества.

После этого снова включаем комп в сеть и производим запуск системы.

В случае с ноутбуком — присоединяем батарею и запускаете его.

Ошибка должна исчезнуть, а если нет — ищите причину в программном обеспечении.

Проверка программного обеспечения

Проверка программного обеспечения

Вначале проверяем режим энергосбережения, так как в целях экономии электроэнергии система может сама отключать usb-порт.

Откройте «Диспетчер устройств». кликнув правой кнопкой мыши по меню «Пуск».

Можно также нажать на клавиатуре сочетание клавиш Win+X и в открывшемся окне выбрать необходимый пункт.

Из списка всех имеющихся устройств, отображаемых на вкладке «Диспетчера», разверните список «Контроллеры USB».

Переходите поочередно на следующие вкладки — «USN Generic Hub», «Корневой USB-концентратор» и «Составное USB-устройство».

По каждой из них кликаете правой кнопкой мыши и выбираете пункт меню «Свойства».

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

Для подтверждения кликните по кнопке «Ок».

Снова откройте «Диспетчер устройств» и кликните правой кнопкой мыши по пункту «Корневой USB-концентратор».

Из выпавшего списка выберите «Обновить драйверы…».

В появившемся окне жмете на «Поиск и установка драйверов вручную».

В следующем — «Выбрать драйвер из списка уже установленных драйверов».

Далее смотрите, чтобы в появившемся списке было наличие драйвера для корневого usb-концентратора. Выбираете его и жмете на кнопку Далее.

Оцените статью