{«id»:14117,»url»:»\/distributions\/14117\/click?bit=1&hash=45a1f32c9ed04345b8e2b851a530e2d2e90974d160af2d331bb585a67f0c5e27″,»title»:»\u0418\u0433\u0440\u044b \u0434\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0434\u043e \u043d\u0430\u0441 \u0434\u0430\u0436\u0435 \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445″,»buttonText»:»»,»imageUuid»:»»}
Как определить, что у компьютера есть еще и «другая жизнь», о которой владелец не знает?
Любое устройство, подключаемое к системе – оставляет свои следы в реестре и лог файлах.
Существует несколько способов определить — какие USB-Flash-накопители подключались к устройству:
1) С использованием специальных программ
Если нужно знать, что именно копировалось с/на компьютер – используем этот способ. При условии соблюдения политик безопасности и с помощью специального софта можно не только отследить, что в компьютер вставлялся USB flash диск, но и логгировать имена файлов, которые копировались с/на диск, и содержимое этих копируемых файлов.
С помощью специальных программ можно проконтролировать доступ не только к USB flash-дискам, но и ко всему спектру съемных устройств, принтеров и сканеров.
Специализированного софта по данной теме можно перечислить много, например – SecureWave Sanctuary Device Control / Lumension Device Control, DeviceLock, GFi EndPointSecurity, InfoWatch Device Monitor и т.п. Выбор конкретного софта зависит от конкретных условий применения.
2) Ручной – самостоятельно просматриваем реестр
Все данные о подключениях USB хранятся в реестре в этих ветках:
В первой (USBSTOR) отображаются устройства-носители (как правило флеш-накопители), во- второй (USB) – телефоны, камеры, мышки и т.д.
Рис.1 – Редактор реестра. Информация о флеш-накопителях
Для того, чтобы узнать дату и время подключения можно экспортировав нужный раздел в файл с расширением txt.
Рис.2 – Редактор реестра. Экспорт USBTOR
Рис.3 – Редактор реестра. Результат экспорта
В данном примере флешка была вставлена в USB порт 29.10.2019 — 13:21.
Так же можно экспортировать раздел USBSTOR в файл с расширением txt.
Рис.4 – Редактор реестра. Экспорт USB
Затем запускаем поиск устройств MTP (латинскими).
Рис.5 – Редактор реестра. Экспорт USB
Находим дату и время подключения мобильного телефона (в данном примере) к USB компьютера. Так же по поиску устройств MTP могут находиться фотоаппараты и планшеты.
Из практики:
Те, кто хоть как-то связан с кибербезопасностью, наверняка не раз слышали поучительную истории о флешках, разбросанных по парковкам. Это был обычный эксперимент, проведенный в студенческом кампусе Университета штата Иллинойс, с несколькими сотнями утерянных флешек, на которых был записан безобидный скрипт, сообщающий о подключении USB-накопителя к компьютеру. Итог – 45% утерянных флешек были подключены в течении 10 часов после начала эксперимента.
Еще одно событие, произошедшее в прошлом году. В изолированную сеть атомной электростанции попало вредоносное ПО. Причина – сотрудник, для решения задач предприятия, использовал USB со скачанным для семейного просмотра фильмом.
Помните, что даже личные накопители сотрудников (флешки, карты памяти) способны нанести компании урон не меньший, чем внешняя атака.
Содержание статьи
Listen to this article
Ни для кого уже не секрет, что информация о разного рода активности многочисленных компонентов операционной системы попадает в реестр и файлы в виде записей заданного формата. При этом, информация эта нередко содержит чувствительные пользовательские данные: историю посещенных браузером страниц, кеш данных программ, информацию о подключаемых устройствах и многое многое другое.
Следы подключения USB устройств, содержащиеся в виде различных данных в файлах/реестре, принято называть артефактами.
Система создает артефакты в момент обнаружения (инициализации) устройства (сменных накопителей, модемов, гаджетов, камер, медиаплееров и прч.) на шине компьютера. Дополнительным плюсом данного материала будет возможность сбора доказательной базы по факту неправомерного использования рабочей станции пользователя в корпоративной среде при помощи незадекларированных USB-устройств.
Разделы реестра, хранящие данные о любом USB накопителе, когда-либо подключаемом к ПК — Флешки, внешние хард диски, а так же фотоаппараты, телефоны, флеш плееры и другие устройства, которые при подключении к ПК были распознаны как внешний USB накопитель.
Все данные о подключениях USB хранятся в реестре Windows в этих ветках:
HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR HKLM\SYSTEM\CurrentControlSet\Enum\USB HKLM\SYSTEM\MountedDevices HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
Очистка этих разделов позволит ускорить подключение новых USB устройств и работу системы в целом.
Чистку надо производить с помощью системной программы Regedit. Запускается она так.
Пуск — Выполнить — Regedit
История USB подключений программами
Идеальным для меня способом является использование специальных программ. Я представлю две программы, у каждой есть свои достоинства. Для вашего удобства в конце статьи я прикрепил архив для скачивания всех программ разом.
История USB подключений программой USBDeview
USBDeview — это маленькая, бесплатная программа для просмотра и анализа истории подключения USB- устройств, таких как флешка, внешний жесткий диск, смартфон, планшет, USB мышка, клавиатура и т.д.
Скачать USBDeview
Скачать USBDeview бесплатно вы можете по этой прямой ссылке английскую версию.
Автор программы известный Израильский программист Нир Софер, который написал большое количество бесплатных, полезных приложений.
Использование USBDeview
После того как скачали, разархивируйте и запустите файл «USBDeview.exe». Версия портабельная, т.е не требует установки, и после запуска мгновенно запустится. Быстренько просканировав компьютер USBDeview отобразит список всех ранее подключенных USB-устройств.
Вот какую информацию может показать программа:
- Имя устройства
- Описание
- Первое подключение
- Последнее подключение
- Буква диска
- Серийный номер
- Производитель устройства
- Версия USB
Есть еще куча другой информации, но большинству для того чтобы отследить кто и когда подключал к компьютеру флешку наверное хватит даты подключения, названия и описания USB-устройства. Кроме этого программа может отключить, включить, удалить а также запретить USB устройства. Если вы собираетесь проделывать какую-нибудь из этих вышеперечисленных операций, то я настоятельно рекомендую сделать предварительно бекап или точку восстановления системы.
История USB программой USB History Viewer
Следующая программа с которой я хочу вас познакомить — это USB History Viewer. Утилита отображает информацию только о подключенных флешках и внешних жестких дисках.
Скачать USB History Viewer
Скачать USB History Viewer бесплатно вы можете по этой ссылке только английскую версию.
Использование USB History Viewer
Запускаем программу и видим три поля.
- Computer name — Имя компьютера
- Authentication — Авторизация
- Get USB History — Список флешек
В первом поле выбираем компьютер. Во втором поле прописываем данные авторизации и нажимаем Start. Если необходимо вытащить информацию по текущему компьютеру и пользователю, то нечего не меняем, оставляем все поля как есть. Главным достоинством является умение вытаскивать историю использование флешек удаленно в локальной сети, но это требует логина и пароля удаленной машины.
На этом все, друзья. Надеюсь вам помогла данная статья и вы смогли посмотреть историю подключения USB. В целом это очень нужные программы, которыми надо уметь пользоваться, иметь у себя в архиве программ, ну или хотя бы как минимум знать об их существовании.
Источник: http://www.spy-soft.net
Если Вам понравилась статья — поделитесь с друзьями
11 413 просмотров
Отказ от ответственности: Автор или издатель не публиковали эту статью для вредоносных целей. Вся размещенная информация была взята из открытых источников и представлена исключительно в ознакомительных целях а также не несет призыва к действию. Создано лишь в образовательных и развлекательных целях. Вся информация направлена на то, чтобы уберечь читателей от противозаконных действий. Все причиненные возможные убытки посетитель берет на себя. Автор проделывает все действия лишь на собственном оборудовании и в собственной сети. Не повторяйте ничего из прочитанного в реальной жизни. | Так же, если вы являетесь правообладателем размещенного на страницах портала материала, просьба написать нам через контактную форму жалобу на удаление определенной страницы, а также ознакомиться с инструкцией для правообладателей материалов. Спасибо за понимание.
Если вам понравились материалы сайта, вы можете поддержать проект финансово, переведя некоторую сумму с банковской карты, счёта мобильного телефона или из кошелька ЮMoney.
Ни для кого уже не секрет, что информация о разного рода активности многочисленных компонентов операционной системы попадает в реестр и файлы в виде записей заданного формата. При этом, информация эта нередко содержит чувствительные пользовательские данные: историю посещенных браузером страниц, кеш данных программ, информацию о подключаемых устройствах и многое многое другое. Во основном журналирование обеспечивается функциональными особенностями пользовательских программ, которые имеют встроенные алгоритмы сохранения истории операций, отчасти это возможно благодаря архитектурным особенностям ядра/HAL операционной системы, которые, производя конфигурирационные действия с устройствами, сохраняют информацию о последних в виде записей в системном реестре. Из всего многообразия подобной информации, в рамках данной статьи нас будет интересовать исключительно история использования USB устройств.
Следы подключения USB устройств, содержащиеся в виде различных данных в файлах/реестре, принято называть артефактами.
Система создает артефакты в момент обнаружения (инициализации) устройства (сменных накопителей, модемов, гаджетов, камер, медиаплееров и прч.) на шине компьютера. Дополнительным плюсом данного материала будет возможность сбора доказательной базы по факту неправомерного использования рабочей станции пользователя в корпоративной среде при помощи незадекларированных USB-устройств.
Не так давно в нашу жизнь вошел интерфейс USB, привнеся в неё довольно существенные изменения. Неожиданно многие вещи стали проще, отпала необходимость инсталляции устройства во внутренний интерфейсный разъем (шина), или внешний интерфейс, требующий перезагрузки станции для корректной инициализации устройства, да и сам процесс конфигурирования устройств стал, во множестве случаев, тривиальнее. На интерфейсе USB появились тысячи разнообразных по назначению устройств, которые достаточно было подключить к разъему на панели корпуса, после чего от момента подключения до состояния «готов к работе», порой проходили считанные минуты. Наряду с очевидными достоинствами: легкостью конфигурирования/использования, компактностью, функциональностью, подобные устройства сразу стали источником проблем как для безопасности персональных данных самого пользователя, так и безопасности корпоративных сред. Компактный, легко маскируемый «брелок» с интерфейсом USB может запросто явиться той ахиллесовой пятой, которая станет причиной «падения» гиганта корпоративной безопасности. Если порты USB в корпоративных рабочих станциях находятся без надлежащего контроля со стороны политик безопасности, то любое приспособление может запросто выступить в качестве средства для обхода периметра безопасности компании. И тут уж насколько хватит фантазии «взломщика», например, достаточно пронести на флешке свежий, не определяемый антивирусами вредоносный код и выполнить его (умышленно или нет), и вот вам уже прецедент, поскольку даже без локальных административных привилегий учетной записи пользователя сохраняется пространство для маневра. Не меньшую опасность представляют и USB-модемы, которые, в случае установки (а при использовании локальных/доменных политик по умолчанию это достигается достаточно просто), могут выступить в роли неконтролируемого канала передачи данных, по которому может осуществляться передача чувствительной корпоративной информации за пределы защищенного внутреннего периметра. При этом, даже декларируемые (заявленные/согласованные) пользовательские устройства (например, телефоны) могут содержать в своих микропрограммах или операционных системах уязвимости, которые, в случае эксплуатации, наносят вред не только владельцу, но и могут выступать в роли средства несанкционированного доступа к служебным данным. Поэтому, в случае возникновения инцидента информационной безопасности, связанного с эксплуатацией USB-устройств,
хронология действий с USB-устройствами может рассматриваться в качестве доказательной базы при возникновении инцидентов в сфере информационной безопасности.
В связи со всем перечисленным, достаточно важно не только уметь ограничивать использование устройств, но и иметь доступ к истории USB подключений в системе. Этому вопросу и будет посвящена данная статья. Сразу оговорюсь, что весь список точек создания информации о подключении тех или иных устройство чрезвычайно обширен, поэтому по теме данной статьи мы будем рассматривать лишь историю использования USB устройств.
Перечисление (энумерация) USB устройств
Поскольку я сам в данном вопросе «плаваю», перед тем как перейти к практике, предлагаю немного усилить нашу теоретическую базу и описать терминологию, которая будет использоваться на протяжении всего материала. Сразу оговорюсь, что мы не будем освещать все виды взаимодействия, выполняющиеся на шине USB на аппаратном уровне, а сосредоточимся исключительно на основных понятиях, относящихся к USB-устройствам и требующихся нам для понимания практической стороны вопроса.
Подключение любого нового оборудования сопряжено с выполнением модулями ядра системы Windows предопределенных фаз опроса и инициализации. Начинается всё с того, что при подключении устройства к разъему USB, контроллером USB (встроенным в чипсет на материнской плате) генерируется аппаратное прерывание. Драйвер USB, ответственный за обработку данного прерывания, запрашивает статус порта, и если статус указывает на подключенное устройство, то ответственными подсистемами ядра производится последовательность действий, которую условно можно разделить на две стадии:
- Нумерование устройства;
- Установка драйвера устройства;
Ядро (?) инициирует к вновь подключенному устройству серию запросов GET_DESCRIPTOR
с различными типами запрашиваемых дескрипторов (Device
, Configuration
, LangID
, iProduct
). Запросы опрашивают устройство на предмет наличия серии дескрипторов, представляющих собой структуры данных, описывающие возможности USB устройства.
Дескрипторы 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 и более поздние запрашивают этот строковый дескриптор у устройства при первом его подключении.
Таким образом, каждое USB устройство должно иметь, как минимум: идентификатор производителя (VID
, Vendor ID), идентификатор продукта (PID
, Product ID), и серийный номер (Serial
). На основе этих параметров формируется уникальный идентификатор оборудования, тем самым обеспечивается уникализация USB-устройства в пределах системы и вносятся изменения в конфигурацию оборудования.
Более того, использование пары VID
/PID
в дескрипторе любого USB-устройства предписывается спецификацией, согласно которой данные параметры должны быть уникальны для каждой модели устройства. Ну это, опять же, все в теории, а на практике пару раз встречались экземпляры устройств, при работе с которыми становилось очевидно, что значения VID/PID взяты произвольно, либо взяты свободные значения (!) из реестра производителей. Понятно кому выгодно подобным заниматься Ну это скорее редко встречающаяся ситуация, когда производителю хочется сэкономить на внесении в реестр производителей.
Затем, после того, как у устройства запрошены ключевые параметры, для USB устройства создан уникальный идентификатор HardwareID
(CompatibleID
), однозначно идентифицирующий устройство/класс устройства. Драйвер USB-концентратора уведомляет специализированный модуль ядра под названием Диспетчер Plug-n-Play (PnP Manager) о новом устройстве. Диспетчер PnP получает идентификаторы HardwareID
и CompatibleID
устройства и пытается обнаружить устройства с аналогичными идентификаторами HardwareID/CompatibleID. В этот момент в системе создается узел устройства (devnode), что является, по сути, первым отпечатком USB устройства в системе. Если похожее устройство найдено, то производится установка соответствующих драйверов в автоматическом режиме, если же не найдено, то Диспетчер PnP получается уведомление о новом устройстве и далее действует по определенным правилам, описание которых выходит за рамки данного материала.
Представленные выше параметры и их значения, фактически формируют отпечаток для каждого USB устройства, поскольку следы подключения USB устройства в системе Windows состоят из подобных уникальных значений/названий.
Эксперимент
В Сети много противоречивой информации относительно истории подключения USB, поэтому давайте проведем собственный эксперимент по выявлению всех возможных системных местоположений, формирующих историю USB подключений. С целью выявления следов подключения USB стоит отследить абсолютно все изменения, происходящие в системе в момент подключения USB устройства. С этой целью на просторах Сети была найдена замечательная утилита под названием SysTracer, которая обладает всем необходимым функционалом. Утилита настолько проста и функциональна, что во многих случаях она окажется незаменимым средством в руках специалиста, поскольку предоставляет возможность сделать КРАЙНЕ полезное действие: создать мгновенный снимок (snapshot) состояния ключевых компонентов системы, таких как реестр и файлы. В качестве системы я использовал чистую инсталляцию Windows 7 Professional, при этом главным требованием было отсутствие каких-либо подключений внешних носителей. Итак, делаем снимок чистой системы, затем вставляем тестовую USB-флешку SanDisk Cruzer mini 1.0Gb и через некоторое время делаем второй снимок. Встроенными средствами утилиты SysTracer сравниваем полученные образы с выводом отчета. В итоге у нас получился некий набор системных изменений, среди которых мы попытаемся выбрать именно те, которые могут относиться к следам подключения USB устройств. Выбранный мною метод имеет и свои недостатки, поскольку наблюдения за активностью системы применительно к USB устройствам не проводилось «в динамике», то есть мы не работали с открытыми с подключаемого носителя файлами (.docx/.xlsx) в различных пользовательских приложениях, а это могло привести к тому, что мы можем упустить факты попадания частей информации с USB-носителя в файлы подкачки, различные временные файлы кеша и файлы иного назначения. Поэтому материал, скорее всего, потребует последующей доработки.
Стоит так же учитывать, что в результате «ручной» чистки значений реестра, в некоторых ключах могут образовываться так называемые недействительные ссылки, которые, по идее, не должны вести к фатальным последствиям для работоспособности операционной системы, однако иметь в виду это стоит.
История в файлах
После изучения изменений файловой части системных изменений, подтвердился факт того, что в операционной системе Windows 7 все действия над устройствами отражаются в следующих журнальных файлах:
- %Windir%\setupact.log — содержит сообщения отладки от инсталятора драйверов [режима ядра], сопровождающего процесс установки устройства;
- %Windir%\inf\setupapi.app.log — содержит сообщения процесса инсталляции приложений;
- %Windir%\inf\setupapi.dev.log — содержит сообщения процесса инсталляции устройств;
Начнем с файла setupapi.dev.log, по информации из которого мы можем отследить всю историю подключения к компьютеру любых устройств (включая USB). Я приведу фрагмент инсталляции упомянутого мной флеш-накопителя SanDisk Cruzer mini. Сразу предупрежу, что в файле setupapi.dev.log очень много информации, поэтому для поиска в ручном режиме можно отрыть его встроенным Блокнотом и при помощи комбинации клавиш Ctrl+F выполнить поиск словосочетания Device Install или USB\VID_. Это не самый удобный метод, тем не менее иметь его в арсенале определенно следует. Вот что удалось обнаружить:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
. . . [Boot Session: 2017/04/08 17:46:19.375] >>> [Device Install (Hardware initiated) — USB\VID_0781&PID_5150\200411009307E9614ADD] >>> Section start 2017/04/08 17:57:25.313 ump: Creating Install Process: DrvInst.exe 17:57:25.313 ndv: Retrieving device info… ndv: Setting device parameters… ndv: Searching Driver Store and Device Path… dvi: {Build Driver List} 17:57:25.391 dvi: Searching for hardware ID(s): dvi: usb\vid_0781&pid_5150&rev_0010 dvi: usb\vid_0781&pid_5150 dvi: Searching for compatible ID(s): dvi: usb\class_08&subclass_06&prot_50 dvi: usb\class_08&subclass_06 dvi: usb\class_08 . . . |
Как можно заметить, подключении нового устройства в файле выделено в секцию, которая начинается с ключевой фразы Boot Session. Сессия загрузки, похоже, определяет к какой именно из многочисленных загрузок ОС относятся все входящие в неё действия. Затем, в строке (4
), содержащей Device Install, нас может заинтересовать значение USB\VID_0781&PID_5150\200411009307E9614ADD, определяющее идентификатор устройства. Фактические же дату и время установки устройства мы можем определить по строке, начинающейся со словосочетания Section start YYYY/MM/DD HH:MM:SS.MMM, определяющего начало секции инсталляции устройства.
Далее по тексту мы можем наблюдать не менее интересную информацию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
. . . dvi: Created Driver Node: dvi: HardwareID — USB\Class_08&SubClass_06&Prot_50 dvi: InfName — C:\Windows\System32\DriverStore\FileRepository\usbstor.inf_x86_neutral_de27b3e85e2c60fc\usbstor.inf dvi: DevDesc — Запоминающее устройство для USB dvi: DrvDesc — Запоминающее устройство для USB dvi: Provider — Microsoft dvi: Mfg — USB-совместимое запоминающее устройство dvi: ModelsSec — Generic.NTx86 dvi: InstallSec — USBSTOR_BULK dvi: ActualSec — USBSTOR_BULK.NT dvi: Rank — 0x00ff2000 dvi: Signer — Microsoft Windows dvi: Signer Score — INBOX dvi: DrvDate — 06/21/2006 dvi: Version — 6.1.7601.19144 inf: Searched 1 potential matches in published INF directory inf: Searched 35 INFs in directory: ‘C:\Windows\inf’ dvi: {Build Driver List — exit(0x00000000)} 17:57:25.540 . . . |
Тут мы видим, что на начальном этапе инсталляции устройства утилита drvinst.exe создает узел драйвера, о чем красноречиво говорит нам строка Created Driver Node. Я так понимаю, запись об узле устройства создается в реестре. Тут же присутствует поле DevDesc, которое указывает нам на наименование инсталлируемого устройства Запоминающее устройство для USB. Здесь же, в строке 3
, мы можем наблюдать HardwareID
, содержащий значение USB\Class_E0&SubClass_01&Prot_03, которое идентифицирует класс устройства. В этот самый момент в реестре, с использованием строки HardwareID
создается уникальный ключ, описывающий устройство.
История в реестре
Помимо артефактов, оставляемых в файлах, следы подключения USB попадают и в основное хранилище конфигурации оборудования — реестр, поэтому в данном разделе мы будем описывать все найденные в реестре следы подключения USB устройств.
HKLM\SOFTWARE\Microsoft\Windows Portable Devices\Devices
В этом ключе располагаются подключи, описывающие все когда-либо устанавливаемые в системе переносные устройства, принадлежащие к классу Windows (Windows Portable Devices).
Начиная с Windows XP в систему был включен новый класс устройств — портативные устройства Windows (Windows Portable Devices, WPD), который подразумевал расширение функций взаимодействия с мобильными устройствами, позволял использование программного интерфейса WPD и объектной модели автоматизации WPD.
Подключи и имеют следующую структуру: WPDBUSENUMROOT#UMB#2&37C186B&0&STORAGE#VOLUME#_??_USBSTOR#DISK&VEN_SANDISK&PROD_CRUZER_MINI&REV_0.1#200411009307E9614ADD&0#. Как мы видим, подключ однозначно указывает нам на вновь подключенный накопитель от компании SanDisk, содержит в имени название производителя, модели, ревизию, серийный номер устройства.
HKLM\SYSTEM\CurrentControlSet\Control\DeviceClasses
В этом ключе находятся все глобальные уникальные идентификаторы (GUID, Globally Unique IDentifier) классов устройств.
Начиная с Windows 2000, с целью структурирования привязок оборудования в системном реестре, были введены так называемые идентификаторы классов устройств (Device Classes GUID).
Поскольку GUID достаточно много и не все они относятся к интересующим нас устройствам USB, нам необходимо отфильтровать информацию с точки зрения данных о USB-устройствах, поэтому давайте перечислим GUID, которые помогут нам в отслеживании истории подключений USB:
GUID класса | Отношение |
---|---|
{53f56307-b6bf-11d0-94f2-00a0c91efb8b} | GUID_DEVINTERFACE_DISK. Диски |
{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} | GUID_DEVINTERFACE_VOLUME. Тома |
{6ac27878-a6fa-4155-ba85-f98f491d4f33} | GUID_DEVINTERFACE_WPD. WPD-устройства |
{f33fdc01-d1ac-4e8e-9a30-19bbd4b108ae} | GUID_DEVINTERFACE_WPD. WPD-устройства |
{a5dcbf10-6530-11d2-901f-00c04fb951ed} | GUID_DEVINTERFACE_USB_DEVICE. USB-накопители |
Оказывается при инсталляции одного-единственного USB устройства создается сразу несколько подключей, принадлежащих разным классам. Внутри подключа {53f56307-b6bf-11d0-94f2-00a0c91efb8b}
создаются подключи, в имени содержащие путь ##?#USBSTOR#Disk&Ven_SanDisk&Prod_Cruzer_Mini&Rev_0.1#200411009307E9614ADD&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
Аналогичным образом, подключ {53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
, относящийся к классам томов, содержит подключи с именем каждого тома, который в данный момент смонтирован в системе, а USB-накопитель у нас определенно прописывается в системе в качестве тома. Выглядит запись следующим образом: ##?#STORAGE#VOLUME#_??_USBSTOR#DISK&VEN_SANDISK&PROD_CRUZER_MINI&REV_0.1#200411009307E9614ADD&0#{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
Однако, следует учитывать, что запись в ключе Volume GUID присутствуют в реестре только когда устройство подключено, при отключении том демонтируется, поэтому система записи удаляет!
HKLM\System\CurrentControlSet\Enum
Абсолютно все без исключения, когда-либо пронумерованные устройства, подключаемые к компьютеру и конфигурируемые PnP-менеджером, отображаются в ветви реестра HKLM\System\CurrentControlSet\Enum
Если же сфокусироваться только лишь на интересующих нас в данном контексте USB-устройствах, то стоит обратить внимание на подключи с именами USB
, USBSTOR
, STORAGE
и WpdBusEnumRoot
.
HKLM\System\CurrentControlSet\Enum\USB
Подключ USB
содержит подключи, описывающие вообще все пронумерованные USB-устройства системы. В нем располагается иерархия вложенности, формируемая на основе параметров устройств, таких как HardwareID
и InstanceID
. Обычно подобная иерархия имеет вид HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\<hardware id>\<instance id>\, где InstanceID
обычно принимает значение серийного номера устройства, либо других параметров в случае отсутствия последнего. К примеру, тут может располагаться подключ вида VID_15A9&PID_002B
, который имеет уже свою собственную вложенную иерархию параметров, однозначно описывающих устройство.
соответственно в подключе 0123456789ABCDEF
(серийный номер) мы можем видеть детальную информацию по устройству:
HKLM\System\CurrentControlSet\Enum\USBSTOR
В подключе USBSTOR
отображаются подключаемые накопители с интерфейсом USB. Формат вложенных подключей может быть близок к следующему: Disk&Ven_SanDisk&Prod_Cruzer_Mini&Rev_0.1.
HKLM\System\CurrentControlSet\Enum\STORAGE
В подключе STORAGE
тоже содержатся артефакты по истории подключения USB устройств. В нем содержится подключ Volume
, который, в свою очередь, содержит подключи всех накопителей, подключенных в системе в качестве томов. Подключи формируются в форме _??_USBSTOR#Disk&Ven_SanDisk&Prod_Cruzer_Mini&Rev_0.1#200411009307E9614ADD&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
HKLM\System\CurrentControlSet\Enum\WpdBusEnumRoot
Подключ WpdBusEnumRoot
имеет вложенный подключ UMB
, который, в свою очередь, содержит подключ с именем 2&37c186b&0&STORAGE#VOLUME#_??_USBSTOR#DISK&VEN_SANDISK&PROD_CRUZER_MINI&REV_0.1#200411009307E9614ADD&0#
HKLM\SYSTEM\MountedDevices
В реестре присутствует ключ HKLM\SYSTEM\MountedDevices, который содержит подключи, описывающие все когда-либо смонтированные в системе накопители. Выглядят они как \??\Volume{0db0a220-6908-11e5-9e0b-005056c00008}, имеют тип REG_BINARY
и содержат в своем значении информацию (UTF) о пути, наименовании и GUID накопителя. К тому же, в этом же ключе присутствуют такие интересные параметры как \DosDevices\X:, где буква (X:) после обратного слеша означает имя тома. Параметров может быть несколько, обычно по количеству подключенных в системе букв дисков. У всех этих параметров значением будет путь к последнему сопоставленного с данной литерой физическому устройству, опять же в вышеприведенном формате.
HKU\{SID}\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
Куст HKEY_USERS предназначен для хранения данных, специфичных для конкретного пользователя, зарегистрированного в системе. Соответственно, в первом уровне вложенности перечисляются SID пользователей, которые для обычных интерактивных пользователей, традиционно, принимают значения вида S-1-5-21-3284554473-1169922948-3718263881-1000. В ключе HKEY_USERS\{SID-пользователя}\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 располагаются GUID накопителя, что фактически раскрывает факт подключения дискового устройства.
Windows 7 frequently plays the usb/new device connection/disconnection sound. It happens both when the computer is idle and under load. All usb device connections have been checked (though I can’t rule out a bad cable yet). I thought a good way to track down the issue would be to wait for the sound and then check the log file for the latest connected/disconnected device. I just need to know which log file has this information.
Edit: I’m going to leave the answer accepted, however the issue persists. I get that sound seemingly randomly throughout the day. Anyone else have any ideas?
Cfinley
1,4353 gold badges14 silver badges20 bronze badges
asked Dec 11, 2011 at 17:02
2
answered Dec 11, 2011 at 17:40
imaximchukimaximchuk
3032 silver badges4 bronze badges
1
There IS a log file of all device connections and disconnections, in %SystemRoot%\inf\setupapi.dev.log . It is semi-readable text. It contains reports for all devices, not just USB.
Open it in Notepad (or Notepad++ or vi or ex or…), scroll to the bottom, and note that the output for each new device is separated from the previous by a couple of blank lines. The most recent will be at the end. There are timestamps.
If the text doesn’t tell you what device(s) are trying to connect, then look for lines like this:
dvi: Searching for hardware ID(s):
dvi: usb\vid_1532&pid_0021&rev_0200&mi_00
dvi: usb\vid_1532&pid_0021&mi_00
and search on the web for vendor ID 1532; then, from likely-looking pages, product ID 0021 (the revision code and the rest of the strings don’t matter).
n.b.: There are a large number of sites out there that try to provide this information. Many of them offer driver downloads. Do not download any drivers from anywhere except a) Microsoft update or b) the web site of the company that made your device.
answered Jan 11, 2015 at 2:53
Jamie HanrahanJamie Hanrahan
23.2k6 gold badges63 silver badges92 bronze badges
4
In case anyone stumbles upon this and needs a solution for Windows 8 or greater, like I did here. I found that using EventGhost (free and open source) worked for me on Windows 8.1.
answered Sep 18, 2015 at 16:28
Royal2000HRoyal2000H
2212 silver badges8 bronze badges
3
These type of event don’t always get registered. However, if it is a system event that IS registered by the OS itself, it would be in your Event Viewer under either Custom Views\Administrative Events
or Windows Logs\System
or possibly Windows Logs\Application
depending on the type of events: hardware, drivers, etc.
Now if its done by an application, such as ImgBurn revving up the optical drive to read/rip or write/burn something, it would be strongly dependent on the developer/vendor and if they have chosen to register events and to what extent. If they do register events, they would appear under Applications and Services Logs
generally corresponding to the applications name.
Finally, if you KNOW the type of event you are trying to capture, you can create a custom view report under event viewer and set the event level, source it either by log (predefined) or by source to specific element (much more granular), and even if you want to add keyword (use only if you know the event name you are trying to capture). Do what you need to do after you create that and go back and see what it captured for you.
Hope that helps.
answered Aug 31, 2013 at 20:15
GµårÐïåñGµårÐïåñ
1621 gold badge2 silver badges10 bronze badges
6
I don’t have the rep to post this as a comment on the original reply by @imaximchuk, but USBLogView works on Windows 10 as of version 1.20.
I have a similar issue with something connecting and disconnecting constantly, and USBLogView worked for me on Windows 10 (10.0.16299)… almost. Sadly, it only logged USB Mass Storage Device events, not all USB events.
I tried EventGhost (the URL has changed to http://www.eventghost.net because they somehow lost access to the .com address) and yes, it shows EVERYTHING!
As noted above, it’s a bit cryptic, so you’ll have to do some searching to figure out what it is. In my case, yep, another monitor. No idea why it started doing it out of the blue. On to the next mystery (why the hell it’s happening.)
answered May 3, 2018 at 18:32
John T.John T.
3012 gold badges3 silver badges7 bronze badges
Another quick (but not much reliable) way to find out all USB Devices (ever inserted) list in regedit :
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
And for specifically USB Flash Drives:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
answered Dec 24, 2021 at 18:06
T.ToduaT.Todua
3,8149 gold badges42 silver badges58 bronze badges
You must log in to answer this question.
Not the answer you’re looking for? Browse other questions tagged
.
Not the answer you’re looking for? Browse other questions tagged
.
Try logman.exe
trace.
USB insertion is not a logged event in windows event viewer by default. You can create event traces for USB devices using logman
by following these steps located in this Technet article:
In an administrative command prompt enter the following
logman create trace -n usbtrace -o %SystemRoot%\Tracing\usbtrace.etl -nb 128 640 -bs 128
logman update trace -n usbtrace -p Microsoft-Windows-USB-USBXHCI (Default,PartialDataBusTrace)
logman update trace -n usbtrace -p Microsoft-Windows-USB-UCX (Default,PartialDataBusTrace)
logman update trace -n usbtrace -p Microsoft-Windows-USB-USBHUB3 (Default,PartialDataBusTrace)
logman update trace -n usbtrace -p Microsoft-Windows-USB-USBPORT
logman update trace -n usbtrace -p Microsoft-Windows-USB-USBHUB
logman update trace -n usbtrace -p Microsoft-Windows-Kernel-IoTrace 0 2
logman start -n usbtrace
This will create a trace at %SystemRoot%\Tracing\usbtrace.etl
This log can become excessively large and logging all activity for the USB stacks is not going to be a good idea between multiple sessions, this is more for troubleshooting USB activity.
USB disks will cause event ID 4688
to be logged to Windows>Security
when inserted and mounted by the OS, maybe that’s enough but there isn’t a log entry anytime a USB device is connected. If the concern is removable storage devices you can enforce auditing through Group Policy as described here:
Enforce a GPO with the following:
Computer Configuration>Security Settings>Advanced Audit Policy Configuration>Object Access>Audit Removable Storage>Success
(and Failure
if desired) audit event boxes checked.