Клонирование флешек: полный гайд по обходу систем защиты информации (СЗИ) и подмене USB-устройств.
Ситуация из жизни: ты работаешь в организации, где СЗИ блокирует все USB-накопители, кроме пары «доверенных» флешек с уникальными серийниками. А тебе нужно перенести данные с домашнего компа или, наоборот, вытащить что-то с рабочего. Можно, конечно, искать обходные пути через сеть, почту, облака. А можно просто сделать клон «доверенной» флешки, которая будет выглядеть для системы как оригинал.
Я этим занимался не раз. И не только для обхода блокировок, но и для восстановления старых флешек с убитым контроллером, и для изучения того, как работают DLP-системы. В этой статье расскажу, как Windows идентифицирует флешки, как менять серийные номера, как перепрошивать контроллер и даже как превратить флешку в дискету, чтобы обойти «Касперского».
Всё на реальных примерах, с командами, скриншотами и предупреждениями о рисках. Статья большая, так что запасайся чаем.
---
Как Windows различает флешки: теория для тех, кто хочет понять, а не просто повторить
Когда ты вставляешь флешку в USB-порт, происходит целый ритуал. Контроллер флешки сообщает хосту: «Я здесь, вот мой VID, вот мой PID, вот мой серийный номер». Операционная система на основе VID и PID ищет драйвер, а по серийному номеру идентифицирует конкретное устройство. Если серийный номер не уникален (или его нет), Windows генерирует его сама — часто на основе порта.
Именно эта связка VID + PID + Serial используется большинством систем защиты информации для составления белых и черных списков. Добавил флешку в исключения — она работает. Не добавил — блокируется.
---
Практический способ узнать DeviceID флешки
Подключаем флешку, открываем командную строку (лучше от администратора) и вводим:
Вывод будет примерно таким:
Где:
· VID_13FE — Vendor ID (производитель). 13FE — это Kingston Technology Company Inc.
· PID_4200 — Product ID (модель устройства). 4200 — Platinum USB drive mini.
· 070867948D560839 — уникальный серийный номер флешки.
VID и PID можно пробить по базе на сайте Linux USB или просто загуглить.
---
Где Windows хранит эту информацию
В реестре, конечно. По адресу:
Здесь можно найти не только DeviceID, но и другие параметры: FriendlyName, ParentIdPrefix, Class. Иногда СЗИ смотрит именно в реестр, а не только в API.
---
Альтернативные идентификаторы: VSN (Volume Serial Number)
Некоторые системы (и некоторые программы лицензирования) вместо DeviceID используют серийный номер тома (Volume Serial Number, он же UUID в Linux). Это идентификатор файловой системы, а не самого устройства. Его можно посмотреть командой vol или dir в командной строке.
Вывод:
Проблема VSN в том, что он меняется при форматировании. Для жесткого диска форматирование — событие редкое, а для флешки — обычное дело. Поэтому надеяться на VSN как на уникальный идентификатор — плохая идея.
---
Что делать с noname-флешками, у которых серийник «плывет»
Дешевые китайские флешки часто не имеют собственного серийного номера. Вместо этого Windows генерирует его динамически при каждом подключении, причем номер может зависеть от порта.
Пример:
Символ & в конце — признак динамического номера. Если такую флешку добавить в белый список, она будет работать только на том порту, где её добавили. Переставил в другой порт — всё, доступ закрыт.
Путь к экземпляру устройства у таких флешек тоже меняется:
У нормальной флешки этот путь стабилен:
Если ваша СЗИ идентифицирует устройства по пути к экземпляру, а не по DeviceID, — это даже лучше для атакующего? Нет, потому что путь к экземпляру тоже можно подделать, если перепрошить контроллер с правильными параметрами.
---
Часть 1. VSN (UUID): меняем, не привлекая внимания
Если в вашей организации используется блокировка на основе VSN, у вас есть несколько вариантов обхода.
Вариант 1. Форматирование (неконтролируемое)
Самый простой способ — просто отформатировать флешку. VSN изменится на случайный. Если в системе используется черный список (то есть заблокированы только известные VSN), этого может быть достаточно.
Пример для FAT32:
Пример для NTFS — аналогично.
Вариант 2. Смена VSN через утилиты
Если нужно не просто изменить VSN, а задать конкретное значение, используем специальные инструменты.
VolumeID от Sysinternals (консольная):
Volume Serial Number Changer (графическая) — запускаем, выбираем диск, вводим новый номер, жмем "Change". После этого флешку нужно извлечь и подключить заново.
Вариант 3. Смена VSN в HEX-редакторе
Для тех, кто хочет понять, как это работает на уровне байтов.
· Открываем флешку в любом HEX-редакторе (например, HxD).
· Для FAT32 VSN находится по смещению 0x43. Четыре байта.
· Для NTFS — по смещению 0x48.
Порядок байтов — little-endian, то есть в файле они записаны справа налево. Например, VSN 6666-6666 в файле будет выглядеть как 66 66 66 66.
Меняем байты на нужные, сохраняем. Флешка переподключается — новый VSN активен.
---
Часть 2. VID, PID, Serial: полное клонирование через перепрошивку контроллера
Это уже серьезный уровень. Мы не просто меняем VSN, а полностью подменяем идентификационные данные флешки на уровне контроллера. Риски: при ошибке флешка может превратиться в кирпич. Но если всё сделать правильно, система не отличит клон от оригинала.
Шаг 1. Собираем данные об оригинале
Нам нужны:
· VID, PID
· Серийный номер
· Номер ревизии (bcdDevice)
· Название производителя (Manufacturer String) и продукта (Product String)
· Путь к экземпляру устройства (Instance Path)
Проще всего это сделать через свойства флешки в диспетчере устройств: «Свойства → Оборудование → Сведения». В выпадающем списке выбираем нужный параметр.
Записываем всё.
Шаг 2. Определяем контроллер флешки-клона (фейка)
Вставляем флешку, которую будем перепрошивать. Запускаем ChipGenius (или Flash Drive Information Extractor).
Программа покажет:
· Vendor ID, Product ID (текущие)
· Контроллер (например, SMI SM3257ENBA)
· Модель чипа памяти
· Версию прошивки
Нам нужно именно название контроллера. От него зависит, какой прошивальщик искать.
Шаг 3. Ищем прошивальщик
Для SMI SM3257ENBA есть два основных варианта:
· SMI MPTool (быстро, но сложнее в настройке)
· Dyna Mass Storage Production Tool (медленнее, но надежнее)
Качаем с USBDev или с профильных форумов (mydigit.cn, usbdev.ru). Важно: версия прошивальщика должна подходить к вашему контроллеру. Не всегда последняя версия работает с конкретным чипом.
Шаг 4. Настраиваем прошивальщик
Запускаем прошивальщик от администратора. Убеждаемся, что флешка определилась. Жмем Settings (если просит пароль — пробуем оставить пустым или гуглим пароль для конкретной версии). Выбираем конфигурационный файл NDefault.INI.
Вкладка DeviceConfig:
· SN Method → Static SN (фиксированный серийный номер)
· VID → вводим VID оригинала
· PID → вводим PID оригинала
· bcdDevice (номер ревизии) → вводим как у оригинала
Вкладка USB:
· Vendor String → если у оригинала есть производитель, вводим
· Product String → название устройства
Серийный номер: в поля SN Begin, SN End, SN Mask вводим серийник оригинала.
Вкладка Inquiry:
· Vendor → обычно оставляем пустым (или как у оригинала)
· Product → USB DISK 2.0 или как указано в оригинале
Сохраняем настройки. В главном окне жмем Start. Процесс прошивки может занять от 5 до 35 минут.
Шаг 5. Проверяем результат
После прошивки флешку нужно извлечь и вставить заново. Запускаем ChipGenius — VID, PID, серийный номер должны совпадать с оригиналом.
Проверяем путь к экземпляру устройства — он тоже должен стать идентичным.
Вставляем флешку-клон в систему с включенным белым списком для оригинала. Если всё сделано правильно — флешка работает.
Важно: оригинал и клон нельзя подключать одновременно. Будет конфликт, работать будет только первая вставленная.
---
Часть 3. Извращения: превращаем флешку в дискету
Некоторые СЗИ (например, Kaspersky Endpoint Security) блокируют съемные диски, но по умолчанию не блокируют дисководы. Этим можно воспользоваться.
Берем флешку (желательно не очень большую, 8-16 ГБ). Контроллер — например, SMI SM3267AB. Прошивальщик — SMI MPTool.
В настройках переходим на вкладку Multi-Lun Settings. Включаем галочки:
· Floppy
· Format
Прошиваем. После переподключения флешка определяется как дисковод на 1.38 МБ. В KES она не блокируется, даже если запрещены все съемные диски.
Если же в настройках KES включена блокировка дискет — этот метод не сработает.
---
Способы идентификации флешек в Windows — это целая наука. VSN (серийный номер тома) ненадежен и легко меняется. DeviceID (VID+PID+Serial) можно скопировать, если перепрошить контроллер флешки-клона. Это рискованно, но выполнимо.
Для пентестера клонирование флешек — это способ обойти физические ограничения и получить доступ к данным. Для администратора — повод задуматься: действительно ли ваша система защиты от съемных носителей так надежна, как кажется?
Ситуация из жизни: ты работаешь в организации, где СЗИ блокирует все USB-накопители, кроме пары «доверенных» флешек с уникальными серийниками. А тебе нужно перенести данные с домашнего компа или, наоборот, вытащить что-то с рабочего. Можно, конечно, искать обходные пути через сеть, почту, облака. А можно просто сделать клон «доверенной» флешки, которая будет выглядеть для системы как оригинал.
Я этим занимался не раз. И не только для обхода блокировок, но и для восстановления старых флешек с убитым контроллером, и для изучения того, как работают DLP-системы. В этой статье расскажу, как Windows идентифицирует флешки, как менять серийные номера, как перепрошивать контроллер и даже как превратить флешку в дискету, чтобы обойти «Касперского».
Всё на реальных примерах, с командами, скриншотами и предупреждениями о рисках. Статья большая, так что запасайся чаем.
---
Как Windows различает флешки: теория для тех, кто хочет понять, а не просто повторить
Когда ты вставляешь флешку в USB-порт, происходит целый ритуал. Контроллер флешки сообщает хосту: «Я здесь, вот мой VID, вот мой PID, вот мой серийный номер». Операционная система на основе VID и PID ищет драйвер, а по серийному номеру идентифицирует конкретное устройство. Если серийный номер не уникален (или его нет), Windows генерирует его сама — часто на основе порта.
Именно эта связка VID + PID + Serial используется большинством систем защиты информации для составления белых и черных списков. Добавил флешку в исключения — она работает. Не добавил — блокируется.
---
Практический способ узнать DeviceID флешки
Подключаем флешку, открываем командную строку (лучше от администратора) и вводим:
Bash:
wmic path win32_usbhub Where (Caption="Запоминающее устройство для USB") get DeviceID
Вывод будет примерно таким:
Код:
USB\VID_13FE&PID_4200\070867948D560839
Где:
· VID_13FE — Vendor ID (производитель). 13FE — это Kingston Technology Company Inc.
· PID_4200 — Product ID (модель устройства). 4200 — Platinum USB drive mini.
· 070867948D560839 — уникальный серийный номер флешки.
VID и PID можно пробить по базе на сайте Linux USB или просто загуглить.
---
Где Windows хранит эту информацию
В реестре, конечно. По адресу:
Код:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_13FE&PID_4200\070867948D560839
Здесь можно найти не только DeviceID, но и другие параметры: FriendlyName, ParentIdPrefix, Class. Иногда СЗИ смотрит именно в реестр, а не только в API.
---
Альтернативные идентификаторы: VSN (Volume Serial Number)
Некоторые системы (и некоторые программы лицензирования) вместо DeviceID используют серийный номер тома (Volume Serial Number, он же UUID в Linux). Это идентификатор файловой системы, а не самого устройства. Его можно посмотреть командой vol или dir в командной строке.
Bash:
vol E:
Вывод:
Код:
Том в устройстве E: — TRANSCEND
Серийный номер тома: 4652-F858
Проблема VSN в том, что он меняется при форматировании. Для жесткого диска форматирование — событие редкое, а для флешки — обычное дело. Поэтому надеяться на VSN как на уникальный идентификатор — плохая идея.
---
Что делать с noname-флешками, у которых серийник «плывет»
Дешевые китайские флешки часто не имеют собственного серийного номера. Вместо этого Windows генерирует его динамически при каждом подключении, причем номер может зависеть от порта.
Пример:
Код:
USB\VID_23A9&PID_EF18\6&45CEA456&0&2 (порт 1)
USB\VID_23A9&PID_EF18\6&45CEA456&0&1 (порт 2)
Символ & в конце — признак динамического номера. Если такую флешку добавить в белый список, она будет работать только на том порту, где её добавили. Переставил в другой порт — всё, доступ закрыт.
Путь к экземпляру устройства у таких флешек тоже меняется:
Код:
USBSTOR\DISK&VEN_AI&PROD_MASS_STORAGE&REV_\7&6266D645&0 (порт 1)
USBSTOR\DISK&VEN_AI&PROD_MASS_STORAGE&REV_\7&977ABD2&0 (порт 2)
У нормальной флешки этот путь стабилен:
Код:
USBSTOR\DISK&VEN_JETFLASH&PROD_TRANSCEND_8GB&REV_1100\BBPIX7EB2VMBFI48&0
Если ваша СЗИ идентифицирует устройства по пути к экземпляру, а не по DeviceID, — это даже лучше для атакующего? Нет, потому что путь к экземпляру тоже можно подделать, если перепрошить контроллер с правильными параметрами.
---
Часть 1. VSN (UUID): меняем, не привлекая внимания
Если в вашей организации используется блокировка на основе VSN, у вас есть несколько вариантов обхода.
Вариант 1. Форматирование (неконтролируемое)
Самый простой способ — просто отформатировать флешку. VSN изменится на случайный. Если в системе используется черный список (то есть заблокированы только известные VSN), этого может быть достаточно.
Пример для FAT32:
Код:
До: 4652-F858
После быстрого форматирования: 76DA-6C78
Пример для NTFS — аналогично.
Вариант 2. Смена VSN через утилиты
Если нужно не просто изменить VSN, а задать конкретное значение, используем специальные инструменты.
VolumeID от Sysinternals (консольная):
Bash:
VolumeID.exe E: 1234-5678
Volume Serial Number Changer (графическая) — запускаем, выбираем диск, вводим новый номер, жмем "Change". После этого флешку нужно извлечь и подключить заново.
Вариант 3. Смена VSN в HEX-редакторе
Для тех, кто хочет понять, как это работает на уровне байтов.
· Открываем флешку в любом HEX-редакторе (например, HxD).
· Для FAT32 VSN находится по смещению 0x43. Четыре байта.
· Для NTFS — по смещению 0x48.
Порядок байтов — little-endian, то есть в файле они записаны справа налево. Например, VSN 6666-6666 в файле будет выглядеть как 66 66 66 66.
Меняем байты на нужные, сохраняем. Флешка переподключается — новый VSN активен.
---
Часть 2. VID, PID, Serial: полное клонирование через перепрошивку контроллера
Это уже серьезный уровень. Мы не просто меняем VSN, а полностью подменяем идентификационные данные флешки на уровне контроллера. Риски: при ошибке флешка может превратиться в кирпич. Но если всё сделать правильно, система не отличит клон от оригинала.
Шаг 1. Собираем данные об оригинале
Нам нужны:
· VID, PID
· Серийный номер
· Номер ревизии (bcdDevice)
· Название производителя (Manufacturer String) и продукта (Product String)
· Путь к экземпляру устройства (Instance Path)
Проще всего это сделать через свойства флешки в диспетчере устройств: «Свойства → Оборудование → Сведения». В выпадающем списке выбираем нужный параметр.
Записываем всё.
Шаг 2. Определяем контроллер флешки-клона (фейка)
Вставляем флешку, которую будем перепрошивать. Запускаем ChipGenius (или Flash Drive Information Extractor).
Программа покажет:
· Vendor ID, Product ID (текущие)
· Контроллер (например, SMI SM3257ENBA)
· Модель чипа памяти
· Версию прошивки
Нам нужно именно название контроллера. От него зависит, какой прошивальщик искать.
Шаг 3. Ищем прошивальщик
Для SMI SM3257ENBA есть два основных варианта:
· SMI MPTool (быстро, но сложнее в настройке)
· Dyna Mass Storage Production Tool (медленнее, но надежнее)
Качаем с USBDev или с профильных форумов (mydigit.cn, usbdev.ru). Важно: версия прошивальщика должна подходить к вашему контроллеру. Не всегда последняя версия работает с конкретным чипом.
Шаг 4. Настраиваем прошивальщик
Запускаем прошивальщик от администратора. Убеждаемся, что флешка определилась. Жмем Settings (если просит пароль — пробуем оставить пустым или гуглим пароль для конкретной версии). Выбираем конфигурационный файл NDefault.INI.
Вкладка DeviceConfig:
· SN Method → Static SN (фиксированный серийный номер)
· VID → вводим VID оригинала
· PID → вводим PID оригинала
· bcdDevice (номер ревизии) → вводим как у оригинала
Вкладка USB:
· Vendor String → если у оригинала есть производитель, вводим
· Product String → название устройства
Серийный номер: в поля SN Begin, SN End, SN Mask вводим серийник оригинала.
Вкладка Inquiry:
· Vendor → обычно оставляем пустым (или как у оригинала)
· Product → USB DISK 2.0 или как указано в оригинале
Сохраняем настройки. В главном окне жмем Start. Процесс прошивки может занять от 5 до 35 минут.
Шаг 5. Проверяем результат
После прошивки флешку нужно извлечь и вставить заново. Запускаем ChipGenius — VID, PID, серийный номер должны совпадать с оригиналом.
Проверяем путь к экземпляру устройства — он тоже должен стать идентичным.
Вставляем флешку-клон в систему с включенным белым списком для оригинала. Если всё сделано правильно — флешка работает.
Важно: оригинал и клон нельзя подключать одновременно. Будет конфликт, работать будет только первая вставленная.
---
Часть 3. Извращения: превращаем флешку в дискету
Некоторые СЗИ (например, Kaspersky Endpoint Security) блокируют съемные диски, но по умолчанию не блокируют дисководы. Этим можно воспользоваться.
Берем флешку (желательно не очень большую, 8-16 ГБ). Контроллер — например, SMI SM3267AB. Прошивальщик — SMI MPTool.
В настройках переходим на вкладку Multi-Lun Settings. Включаем галочки:
· Floppy
· Format
Прошиваем. После переподключения флешка определяется как дисковод на 1.38 МБ. В KES она не блокируется, даже если запрещены все съемные диски.
Если же в настройках KES включена блокировка дискет — этот метод не сработает.
---
Способы идентификации флешек в Windows — это целая наука. VSN (серийный номер тома) ненадежен и легко меняется. DeviceID (VID+PID+Serial) можно скопировать, если перепрошить контроллер флешки-клона. Это рискованно, но выполнимо.
Для пентестера клонирование флешек — это способ обойти физические ограничения и получить доступ к данным. Для администратора — повод задуматься: действительно ли ваша система защиты от съемных носителей так надежна, как кажется?


