Говоря о проблеме USB-накопителей в контексте судебной экспертизы, мы обращаемся к тем элементам, которые остаются после определенной активности, так называемым артефактам. Когда вы посещаете web-сайт с помощью Internet Explorer, в истории web-браузера остается артефакт (cookie), свидетельствующий о том, что вы посещали данный сайт. Когда вы входите в систему, в системном журнале безопасности остается запись – еще один артефакт. При анализе системы на предмет взлома или хищения данных именно эти артефакты являются ключами, которые помогают разобраться в том, что же на самом деле произошло. Практически все действия пользователя в системе оставляют после себя разного рода артефакты. Это касается и USB накопителей. Но встает вопрос о том, какие артефакты важны, и где их найти.
Важность тех или иных артефактов наличия USB накопителя будет в основном зависеть от обстоятельств вашего расследования. Возможно, вам нужно посмотреть перечень всех USB накопителей, подключавшихся к зараженной машине, чтобы выяснить, куда вредоносной код мог попасть после этого. Возможно, вы подозреваете пользователя в несанкционированном копировании данных, и вам нужно определить время, в которое личные накопители таких пользователей подключались к системе. Независимо от цели вашего расследования есть несколько ключевых мест в системе Windows, в которых такая информация может быть найдена.
· тип сьемного накопителя, его серийный номер;
· дата и время его установки и изьятия из компьютера;
· буква диска под которой фигурировал накопитель в ОС;
· аккаунт пользователя системы под каким фигурировал накопитель в ОС.
Вначале перескажу метод поиска, который был опубликован компанией Red Line Software для Windows 7.
Извлечение USB артефактов вручную.
Основным способом обнаружения артефактов USB накопителей является переход в место хранения данной информации вручную. Рассмотрим такие места в Windows 7.
Проще всего найти информацию, содержащую список всех USB накопителей, которые подключались к системе. Эту информацию можно в готовом виде найти в системном реестре Windows в: HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR. В этом разделе вы найдете ключ каждого накопителя, который подключался к вашей системе, а также информацию о его производителе (Vendor), номере продукта (Product Number), номере версии (Version Number), и серийном номере (Serial Number), если применимо.
После получения списка всех накопителей вам нужно выявить их принадлежность к пользователям. Это вполне возможно, но для этого потребуется выполнить дополнительные шаги. В реестре сначала нужно перейти в HKLM\SYSTEM\MountedDevices. В этой области вы можете выполнить поиск серийного номера подозрительного устройства. Когда номер найден, он поможет вам определить GUID, связанного с этим устройством.
Когда GUID устройства у вас под рукой, нужно сконцентрироваться на личных профилях пользователей машины. В папке каждого пользовательского профиля (C:\Users) имеется файл NTUSER.DAT. К этому файлу предоставляется доступ для HKEY_CURRENT_USER всякий раз при входе его владельца в систему. В результате, этот файл можно открыть в редакторе системного реестра с правами администратора. Чтобы связать пользователя с определенным устройством, нужно перейти в следующий каталог в NTUSER.DAT разделе: Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2. Здесь вы можете найти GUID нужного устройства. Если он найден, значит, пользователь был в системе, когда устройство было к ней подключено. Следует помнить, что этот поиск необходимо выполнять для каждого пользователя системы для установления такой взаимосвязи.
Одним из наиболее важных аспектов судебного расследования являются временные рамки, в течение которых совершалось расследуемое событие. Поэтому очень важно знать, когда подозрительное USB устройство было подключено или отключено от системы.
Определение времени, когда накопитель был впервые подключен к системе, является вполне простой задачей при условии, что у вас есть серийный номер этого устройства (получение этой информации описано выше). При наличии этой информации найдите файл C:\Windows\inf\setupapi.dev.log и в нем найдите серийный номер этого устройства, в результате вы найдете время, когда устройство было подключено впервые: ищем строки типа на подключения ump: Creating Install Process: DrvInst.exe 16:10:07.690 и отключения ump: Server install process exited with code 0x00000000 16:10:12.573
Раздел: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\##?#STORAGE#RemovableMedia#7&7f1a906&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
Название класса: <Класс отсутствует>
Последнее время записи: 09.09.2013 - 9:25
Название: DeviceInstance Тип: REG_SZ
Значение: STORAGE\RemovableMedia\7&7f1a906&0&RM
А теперь повторим тоже самое для Windоws XP.
Различий с 7-й почти нет, но все же пройдемся еще раз.
1. Смотрим ветку реестра HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Enum\USBSTOR
Здесь находятся все устройства-носители, подключаемые к USB
В ключах находящихся в данной ветви есть параметры:
- FriendlyName (Например, он равен "Kingston DataTraveler 2.0 USB Device")
- ParentIdPrefix (Например, он равен 7&cb3a0ee&0).
Так вот первая строка - идентификатор класса, а 7&cb3a0ee&0 - уникальный идентификатор устройства. Для каждого подключаемого USB-устройства он будет разный. Даже если два устройства одинаковой класса и модели. При подключении PnP-менеджер либо считывает сюда серийный номер устройства, либо генерирует уникальный ID, если устройство не имеет зашитого серийного номера.
2. Определим букву диска под которой монтировалось устройство.
Смотрим ветку реестра HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
Открываем параметры вида: \DosDevices\X: (где X - буквы логических дисков). Выбираем те, которые в значении содержат строки STORAGE#RemovableMedia После этой строки идет ParentIdPrefix (например, 7&cb3a0ee&0). Очевидно, что накопитель с идентификатором "Kingston DataTraveler 2.0 USB Device" монтировался в системе на букву X) Для полноты картины смотрим все имеющиеся ControlSet'ы, а также файлик \Windows\Repair. Есть еще копии куста реестра SYSTEM в каталоге "X:\System Volume Information\". Внимание - случается, что флешка монтируются на одну и ту же букву и в MountedDevices информация будет только о последней.
3. Чтобы определить время последнего подключения USB-устройства делаем следующее:
Ищем в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Control\DeviceClasses подключи {53f56307-b6bf-11d0-94f2-00a0c91efb8b} и {53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
Открываем первый и находим там подключ, начинающийся с нужного нам идентификатора класса устройства (пример): "##?#USBSTOR#Disk&Ven_Kingston&Prod_DataTraveler_2.0&Rev_1.04#0BF19451711018DA&0....." Видим, кстати, тут уникальный идентификатор устройства.
Дата последнего изменения данного подключа и будет датой последнего подключения устройства.
Дата последнего изменения данного подключа и будет датой последнего подключения тома.
В нем ищем подключ {8f6082e2-dabd-11d9-b1ae-e72a1a2901ce}. Соответственно, если находим, то чей NTUSER.DAT тот и имел доступ.
Автоматизация поиска.
К сожалению для автоматизации поиска с помощью VBscript ничего путнего придумать не удалось. Не претендуя на абсолютную истину, но в ХР я нашел только три класса Win32_USBControllerDevice, Win32_USBController и Win32_USBHub, которые дают не так много информации. А про временным параметрам вообще пусто.
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_USBControllerDevice", "WQL", _ wbemFlagReturnImmediately + wbemFlagForwardOnly) Set colItems = objWMIService.ExecQuery("Select * from Win32_USBController",,48) Set colItems = objWMIService.ExecQuery("Select * from Win32_USBHub",,48)
Поэтому мне больше нравится USBDeview. USBDeview представляет собой инструмент с графическим пользовательским интерфейсом, позволяющий извлекать, коррелировать и отображать всю информацию, ручное извлечение которой обсуждалось выше.
Вывод.
Если на вашей фирме использование USB устройств не запрещено полностью, то рано или поздно вы столкнетесь с ситуацией, в которой проблемы с безопасностью могут быть связаны с портативным USB накопителем. В этой ситуации приведенная информация поможет вам найти нужные решения, чтобы оперативно отреагировать на инцидент.
Чтобы определить время последнего подключения USB-устройства делаем следующее:
ReplyDeleteИщем в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Control\DeviceClasses подключи {53f56307-b6bf-11d0-94f2-00a0c91efb8b} и {53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
Win 8.1. Не актуально для времени последнего соединения, ключ не перезатирается, время создания всегда одно и тоже
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_1234&PID_1234\%идентификатор%
ReplyDeleteА вот этот справедлив для времени последнего обновления
как же скучно я живу...
ReplyDeleteспасибо за информацию, кстати говоря с датой подключения обычно проблема. У меня почти все подключения той даты когда проверяю
ReplyDelete