При желании вскрыть чужую сеть хакер может воспользоваться различными высокотехнологическими способами или же подбросить USB-накопитель с «подарком» сотрудникам компании, интересующей хакера. С каждым годом этот метод становится все менее популярным, но он все еще проникает в производственные сети промышленных компаний. Вот сейчас мы и узнаем как защититься от вредоносной флешки. В данной публикации вы так же найдете информацию о том, как работает защита USB-устройст и как обмануть системы белых списков с помощью создания клонов.
Блокировкафлешки
В чем смысл их блокировки? Это необходимо для того, чтобы исключить возможность проникновения вируса-шифровальщика внутрь IT-инфраструктуры компании, что бы никто не таскал информацию домой и не приносил игрушки в офис. По-разному в разных офисах работают сотрудники охраны и администраторы. Самые плохие случаи – это когда порты закрыты (закрыты частично или полностью), а также залиты эпоксидной смолой или опломбированы. В более простых случаях порты отключаются BIOS / UEFi (что-то вроде USB Controller = Disabled).
Если администратор не хочет ломать что-то, он может настроить реестр и групповые политики Windows. Например, для того чтобы полностью заблокировать USB-накопитьель, откройте данную ветку реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR
В случае установки параметра запуска на 4, ваши флешки перестанут работать. В группе политики (gpedit.msc), вы смотрите в сторону оснастки «Конфигурации компьютера → Административные шаблоны → Система → Доступ к съемным запоминающим устройствам».
На винде есть политика, связанная с съемными носителями
В каких еще вариантах можно ограничить нежелательное подключение мультимедиа на ваш компьютер? Некоторые компании используют дополнительные средства защиты информации ( SIS) — тот же KAV или DLP-системы, Secret Net ( SIS от nsd) и другие. А кто-то и вовсе ставит на компьютер специальный драйвер для проверки носителя из белого списков.
Настройки СЗИ могут запретить подключение вообще всех устройств, только устройств из черного списка или разрешить подключение девайсов из белого списка. На последнем варианте мы с тобой и остановимся поподробнее.
Как их различать?
Чем отличаются одна от другой флэшки? Конечно, у флешек есть производитель, объем и другие параметры… Но обычно производители снабжают каждую флешку серийным номером, который был прописан в ее прошивке.
Чтобы посмотреть его в винде, можешь использовать такую команду Windows Management Instrumentation — WMIC (предварительно подключив флешку):
wmic path win32_usbhub Where (Caption="Запоминающее устройство для USB") get DeviceID
Получаем примерно такой вывод команды:
DeviceID
USB\VID_13FE&PID_4200\070867948D560839
Полученный DeviceID содержит:
VID
— Vendor ID, идентификатор производителя.13FE
— Kingston Technology Company Inc.;PID
— Product ID, идентификатор изделия.4200
— Platinum USB drive mini;Serial
— уникальный серийный номер флешки070867948D560839
.
VID
и PID
используются операционкой для поиска дров. Полный список можно посмотреть, например, на сайте Linux USB.
По DeviceID флешка прописывается в реестре:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_13FE&PID_4200\070867948D560839
Также ты можешь получить всю эту информацию с помощью программы USBDeview.
Вывод программы USBDeview
Однако нередки случаи, когда в качестве идентификатора флешки используется серийный номер тома, который можно получить командой vol или dir.В некоторых случаях в качестве идентификатора флешки используется серия номеров тома, которая может быть получена командой vol
или dir
.
Команды vol и dir
Почему не стоит использовать VSN (в Linux — UUID) для идентификации флешек? Это связано с тем, что они определяют логические тома файловой системы. Чтобы изменить VSN в случайном порядке, вам необходимо отформатировать раздел. Конечно, это не так часто происходит и для винчестеров эта процедура достаточно редка, но флешки форматируются довольно часто.
Что делать с ноунеймом
Для китайских noname-флешек, производители которых «кладут» на соответствие девайса всевозможным рекомендациям и стандартам, такой серийник будет меняться в зависимости от USB-порта, в который ты подключил устройство, и, разумеется, положения звезд на небе. Если твою флешку безопасники пропишут в белый список только на одном порте, то на другом ты ее использовать не сможешь.
Вот пример такой флешки:
DeviceID=USB\VID_23A9&PID_EF18\6&45CEA456&0&2
Первое, что бросается в глаза, — серийник содержит несколько амперсандов. На самом деле у этой флешки нет серийника вообще. Когда &
— второй символ серийного номера, это означает, что система каждый раз при подключении генерирует псевдосерийник сама, то есть он динамический. Проверим это, просто подключив флешку в другой порт:
DeviceID USB\VID_23A9&PID_EF18\6&45CEA456&0&1
Как ты видишь, при изменении порта в серийнике меняется номер этого порта (&2
в конце превратилось в &1
). Так что нужно или добавлять в список номер такой флешки на всех портах, или использовать только выделенный порт для ее подключения.
В некоторых СЗИ используют иные свойства флешек. Все доступные свойства ты можешь просмотреть, щелкнув на значке флешки правой клавишей мыши и выбрав в контекстном меню «Свойства → Оборудование → Сведения». В выпадающем списке наиболее полезные сведения содержатся в строках «Понятное имя», «Путь к экземпляру устройства» и «Родитель» (тот же DeviceID).
Свойства устройства → Путь к экземпляру устройства
У китайских флешек эти параметры меняются, как генератор случайных чисел. Например, путь к экземпляру устройства для первого и второго USB-порта выглядит так:
USBSTOR\DISK&VEN_AI&PROD_MASS_STORAGE&REV_\7&6266D645&0
USBSTOR\DISK&VEN_AI&PROD_MASS_STORAGE&REV_\7&977ABD2&0
Для нормальной флешки здорового человека данный идентификатор стабилен:
USBSTOR\DISK&VEN_JETFLASH&PROD_TRANSCEND_8GB&REV_1100\BBPIX7EB2VMBFI48&0
Здесь:
JETFLASH
— производитель;TRANSCEND_8GB
— название устройства;1100
— номер ревизии;BBPIX7EB2VMBFI48
— серийный номер.
У разных флешек из одной партии меняться будет только серийник.
Как палят?
Давай посмотрим, какими способами админы могут выявить, что к системе подключили флешку. В Windows имеется целый пул средств для отслеживания подключаемых носителей. Если хочешь поковыряться сам — смотри вот эти две ветки реестра:
HKLM\SYSTEM\CurrentControlSet\Enum\USB
HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR
Там хранится список идентификаторов подключаемых устройств, при этом информация в этих ветвях реестра не затирается стандартными процедурами в планировщике задач винды, то есть данные хранятся сколь угодно долго.
Если ты предпочитаешь готовые решения, то к твоим услугам классический USBLogView, который в реальном времени регистрирует подключение и отключение флешки. В форензике для комплексного анализа подключений рекомендуем посмотреть в сторону USB Detective и USB Forensic Tracker.
USB Detective извлекает информацию из реестра, логов, иных источников, а также может снимать информацию с Live-системы (в версии Pro), при этом выполняя корреляцию и верификацию данных.
USB Forensic Tracker извлекает все артефакты подключений независимо, поэтому для каждого источника данных ты имеешь свою таблицу подключений USB-устройств (корреляции, к сожалению, он не делает).
Пример вывода программы USB Forensic Tracker
Например, просматривая данные по нашей китайской флешке, мы выяснили, что ее отображаемый серийник на первом порте — 388e987
, на втором — 3с69e2с9
. После форматирования они стали 4247e754
и 966cde2
соответственно.
Во внешних СЗИ имеются функции просмотра и блокирования подключенных флешек в реальном времени или на основе ранее подключенных устройств.
Практический подход к сбитию параметров флешек
Часть 1. VSN (UUID)
Если тебе повезло и в твоей организации блокируют флешки через VSN/UUID, то существует масса годных вариантов. Все представленные ниже кейсы не изменяют основные параметры флешки, такие как серийный номер и информация о модели. Однако помни, что иногда VSN применяется при лицензировании ПО и изменение VSN может повлиять на его работоспособность. Зато, научившись менять VSN, ты сможешь давать вторую жизнь лицензионным прогам, которые жалуются на смену жестких дисков и не хотят работать.
Манипуляции представлены для демонстрации. Применяя их, будь осторожен и внимателен, поскольку при некорректном подборе команд, программ, прошивок ты рискуешь окирпичить флешку, за что мы, конечно, ответственности не несем. Не стоит упоминать, что на тестируемых флешках не следует держать ценную инфу.
Вариант 1. Форматирование
Данный вариант используется, когда активен только черный список флешек, поскольку форматирование меняет идентификатор раздела. Однако задать конкретный идентификатор в данном случае не получится.
Например, флешка с FAT32 до форматирования имеет VSN 4652-F858
, а после быстрого форматирования — 76DA-6C78
. Для NTFS ситуация в целом аналогична.
Как ты видишь, вариант предельно простой, но совершенно неконтролируемый. Это нам как‑то не очень подходит, попробуем менять параметры на избранные нами значения.
Вариант 2. Смена VSN через утилиты
Существуют готовые утилиты для смены VSN, например VolumeID от компании Sysinternals или более приятная на вид графическая утилита Volume Serial Number Changer. Во втором случае нужно просто запустить утилиту, выбрать метку диска, вбить новый идентификатор, нажать Change Serial number, вынуть‑вставить флешку, и все готово.
Работа с утилитой Volume Serial Number Changer и ее результат
Вариант 3. Сделай сам
Ты хочешь полностью познать дзен флешек? Не вопрос. Предварительно определись с файловой системой. Открой любой HEX-редактор и перетащи туда значок флешки из проводника. Для FAT32 VSN находится по смещению 0x43
, для NTFS — на 0x48
.
Проверим это.
Исходный VSN устройства с файловой системой NTFS
Нашелся серийник 6666-6666
. Что ж, исправим его и сохраним результат. Помни, что порядок чтения байтов — справа налево (little endian).
Измененный VSN устройства с файловой системой NTFS
Для FAT32 ситуация полностью аналогична.
Измененный VSN устройства с файловой системой FAT
Итак, теперь ты умеешь менять VSN (UUID). Но для по‑настоящему серьезных вещей и создания почти полноценного клона нужно еще немного углубиться в тему.
Часть 2. VID, PID, Serial
Чтобы менять максимальное количество параметров, требуется перепрошить контроллер флешки. Процедура эта сравнительно несложная, но опасная — в случае ошибки ты рискуешь сделать флешку неработоспособной (однако ошибка чаще всего возникает при неудачном выборе прошивки или прошивальщика).
Представим, что у тебя есть исправная флешка (которая работает в офисе без проблем), а также ты приобрел другую флешку — потенциальный клон. Если ты купишь флешку точно той же модели, то при некоторых обстоятельствах сможешь обойти СЗИ, в которых идет проверка только по VID и PID.
На практике лучше найти флешки, которые легче всего перепрошивать, например фирмы Silicon Power или Transcend с USB 3.0 — в них часто используется SMI-контроллер. Хотя в целом тебе могут попасться флешки с контроллерами AlcorMP, Phison и другие. Для них тоже есть прошивки.
Общий алгоритм прошивки девайса следующий:
- Выясни тип идентификатора, который используется для определения флешки в СЗИ, или используемые составляющие на основе данных флешки (опционально), запиши их для последующей подделки.
- Определи контроллер флешки.
- Подбери утилиту для прошивки, подходящую под конкретную версию контроллера.
- В прошивальщике задай необходимые параметры, идентичные оригинальной флешке.
- Прошей флешку‑клон и проверь ее работу. В случае неудачной прошивки — повтори шаги, начиная со второго. Если флешка окирпичилась, поступай аналогично.
Шаг 1. Так случилось, что на первой протестированной нами машине стоял антивирус Comodo с возможностью контроля устройств. Недолго думая, включаем блокировку для USB и добавляем флешку‑оригинал в исключение. Антивирь любезно показывает нам используемый идентификатор флешки.
Контроль устройств антивируса Comodo
В свойствах оборудования находим, что эта строка соответствует опции «Путь к экземпляру устройства». Запишем идентификатор как целевое значение, которому наша флешка‑фейк должна соответствовать:
USBSTOR\DISK&VEN_&PROD_USB_DISK_2.0&REV_PMAP\070867948D560839&0
На всякий случай запомним и DeviceID:
USB\VID_13FE&PID_4200\070867948D560839
Бывает и такое, что CЗИ может не отображать идентификатор, а только определять некоторые свойства подключенного устройства. Такие случаи часто бывают связаны с тем, что идентификатор может состоять из видимых полей и свойств. Здесь нет никакой разницы для нас – ведь, адаптируя фальшивые данные к исходным, мы используем одни и те же данные и формируем один схожий идентификатор.
Шаг 2. Программа ChipGenius поможет определить контроллер фальшивой флешки. Для того чтобы скачать ее, необходимо зайти на сайт USBDev. По мнению многих пользователей сайта, он является самым полезным русскоязычным ресурсом по прошивке флешек. Также можно использовать аналог — Flash Drive Information Extractor.
Выполнения программ определения контроллера
Сравни с выводом ChipGenius для нашего будущего фейка:
- DeviceID
- USB\VID_090C&PID_1000\CCYYMMDDHHMMSS000000
- Description: [H:]Запоминающее устройство для USB(SMI USB DISK)
- Device Type: Mass Storage Device
- Protocal Version: USB 2.00
- Current Speed: High Speed
- Max Current: 500mA
- USB Device ID: VID = 090C PID = 1000
- Serial Number: CCYYMMDDHHMMSS000000
- Device Vendor: SMI Corporation
- Device Name: USB DISK
- Device Revision: 1100
- Manufacturer: SMI
- Product Model: USB DISK
- Product Revision: 1100
- Controller Vendor: SMI
- Controller Part-Number: SM3257ENBA — ISP 131128-AA-
- Flash ID code: 98DE8493 — KIOXIA TC58TEG6DCJBA00 — 1CE/Single Channel [MLC-16K] → Total Capacity = 8GB
- Tools on web: http://dl.mydigit.net/special/up/smi.html
Теперь мы можем увидеть, что у нас есть контроллер семейства SMI (Silicon motion), номер SM3257ENBA. Найдем для него прошивку.
Шаг 3. На сайте ChipGenius есть ссылка для скачивания прошивки, но сайт полностью на китайском языке, поэтому его проще загрузить с USBDev. В этом случае это обязательно в версии с поддержкой нашего контроллера SM3257ENBA. Этот контроллер использует программы SMI MPToolи Dyna Mass Storage Production Tool. На данный момент у нас в приоритете последний вариант (работает долго и эффективно, и почти со всеми типами данных контроллеров). Найдите нужную версию и скачайте Dyna Mass Store Production Tool, вставьте фейковую флешку и запустите программу.
Шаг 4. Вам не о чем волноваться, это совершенно не сложно. Практически все рошивальщики имеют почти идентичный набор параметров, поэтому общие правила и изменяемые параметры одинаковы у всех, независимо от марки и модели контроллера. Убедитесь в том, что флешка отображается в окне программы.
Флешка в Dyna Mass Storage Production Tool
Справа нажмите на слово Settings, пропустите ввод пароля, нажав Enter (в некоторых инструментах он также есть, обычно легко гуглить на форумах), в качестве конфигурации по умолчанию укажите файл в корне каталога флешера — NDefault. INI.
Кстати, все эти операции позволяют восстановить любимый неисправный USB-гаджет, перепрошив его значениями по умолчанию, главное не связываться с определением программы и контроллера. Что ж, продолжаем. В появившемся окне перейдите на вкладку DeviceConfig.
Параметры флешки в Dyna Mass Storage Production Tool
Здесь мало что нужно изменить. В поле SN Method выберите Static SN (иначе наш серийник будет пустым, как у безымянных флешек). В этом случае мы создали серийный номер, такой же сильный, как швейцарский банк, который не будет меняться от системы к системе.
В секции USB чуть ниже выставляем параметры, как у флешки‑оригинала:
VID → 13FE, PID → 4200, bdcDevice (номер ревизии) → PMAP
Производитель и название продукта в нашем случае не используются, мы не можем его изменить. Однако в некоторых крупных СЗИ они также используются для формирования подписи устройства. Если вы совсем не знаете, какие параметры и куда вводить, рекомендуем повторить шаги с первого до этого на исходной флешке, скопировать все параметры на фальшивую флешку и продолжить чтение. Оригинал прошивать не нужно.
В поля SN Begin No., SN End No. и SN Mask забиваем серийник флешки‑оригинала: 070867948D560839
.
Давайте еще раз посмотрим на целевую строку:
Мы уже перенесли номер ревизии (PMAP
) и серийник — цифровую часть в конце.
В разделе «Inquiry» очистите поле «Vendor» и введите USB DISK 2.0 в поле «Product». Мы изменили VID и PID, чтобы серийный номер (Device ID) также был идентичен оригиналу. В правом верхнем углу нажмите «Save», а в главном окне нажмите «Start». Флешка запускается.
Параметры в Dyna Mass Storage Production Tool
В нашем случае глубокая перепрошивка занимает 35 минут. А при использовании SMI MPTool можно использовать более быстрый способ перепрошивки, когда CID-регистр (Card Identification; открывается через Debug register → Read CID \ Write CID) считывается с контроллера, необходимые данные туда записываются вручную, по аналогии с HEX-редактированием (но еще раз вам нужно установить байты контроля длины, не забудьте водить значения справа налево и так далее, что удобно).
Флешка в программе SMI MPTool
Шаг 5. После успешной прошивки все, что вам необходимо сделать, это проверить нашу фальшивку и узнать, насколько она хороша. Теперь посмотрим на детали с ChipGenius и выделим отличия от оригинального варианта:
- Description: [H:]Запоминающее устройство для USB(USB DISK 2.0)
- Device Type: Mass Storage Device
- Protocal Version: USB 2.00
- Current Speed: High Speed
- Max Current: 500mA (у оригинала — 200 mA, можно поменять через свойство USB Power — см. позапрошлый скрин, но при занижении силы тока устройство может отказаться работать)
- USB Device ID: VID = 13FE PID = 4200
- Serial Number: 070867948D560839
- Device Vendor: SMI Corporation (у оригинала отсутствует, меняется через панель USB → Vendor String)
- Device Name: USB DISK (у оригинала USB DISK 2.0, меняется через панель USB → Product String)
- Device Revision: 4200 (у оригинала 0100, данный параметр не изменяется)
- Product Model: USB DISK 2.0
- Product Revision: PMAP
- …(остальное по контроллеру и так различается)…
А теперь сопоставим DeviceID флеш-карты оригинала, фейка до клона и фейка после прошивки.
Изменения на флешке‑клоне
Открыв свойства оборудования, проверяем путь к экземпляру‑клону:
USBSTOR\DISK&VEN_&PROD_USB_DISK_2.0&REV_PMAP\070867948D560839&0
Целевой путь:
USBSTOR\DISK&VEN_&PROD_USB_DISK_2.0&REV_PMAP\070867948D560839&0
Теперь вставляем фейк в тестовую машину с включенным белым списком для флешки‑оригинала.
Подключение флешки антивирусом Comodo
Флешка открывается и работает. Пытаемся подключить оригинальную флешку вместе с фейковой — жаль, конфликт возникает, поэтому работает только первая вставленная флешка. Затем соединяйте их по одному.
Чтобы копия полностью соответствовала оригиналу, рекомендуем изменить остальные параметры, отформатировать подделку и присвоить ей оригинальную метку. И не забудьте изменить свой VSN — вы уже знаете, как это сделать.
Давайте проверим фейк на надежном антивирусе — например, Kaspersky Endpoint Security 10.
Интерфейс контроля устройств Kaspersky Endpoint Security 10
Смотрим, что используется в качестве идентификатора флешки‑оригинала.
Идентификатор флешки в Kaspersky Endpoint Security 10
Это путь к экземпляру устройства, добавляем его в белый список, проверяем на какой‑нибудь левой флешке.
Блокировка в Kaspersky Endpoint Security 10
И вот тут-то мы и рассмеялись – флешка отобразилась в проводнике, проверяется антивирусом, но при попытке обратиться к ней получаем вот такое окно.
Отказ доступа к флешке
Но флешка‑фейк предсказуемо работает без каких‑либо проблем.
Схожим образом мы протестировали ряд коммерческих DLP-систем, СЗИ под Linux и нигде не встретили ни отпора, ни попыток воспрепятствовать атаке клонов.
Часть 3.
Совершенно случайно оказалось, что в зависимости от СЗИ можно использовать и дополнительные методы обхода USB-блокировок.
Дискетко
Отформатировав флешку, вы можете превратить ее в классическую дискету для чтения / записи объемом всего 1,38 МБ. Хватит потихоньку перетащить игрушку на работу? Размещается по частям в несколько проходов. Вот как это сделать. Берем новую флешку и следуем известному алгоритму. На этот раз нам попалась флешка Transcend 8 Gb USB 3.0 с контроллером SMI SM3267AB (возьмем прошивальщик — SMI MPTool V2.5.51 v7 P0920v1). Итак, прошивальщик, окно настроек, вкладка Multi-Lun Settings.
Форматирование флешки как дискеты
Запускаем программу, устанавливаем галочки на Floppy и формотировании, прошиваем.
Прошивка флешки в роль дискеты
Floppy-дисковод работает.
Проверим на Касперском. USB по-прежнему заблокирован для любых флешек, кроме доверенных, но «дисковод» успешно подключен, можно читать-писать информацию. Доступа к флешке пока не предвидится.
В случае сравнения информации о Floppy в Касперском с информацией по USB, то разница заключается только в типе устройства (Дискеты и Съемные диски).
Данный метод не работает при включении блокировки дискет.
CD-привод
Аналогичный подход, но теперь давайте попробуем создать раздел CD на USB-накопителе и предварительно записать образ из файла ISO. Обратная сторона очевидна — вы можете читать информацию только с раздела CD, вы не можете записывать файлы на USB-накопитель. Но запустить установщик любимой игры — не проблема. Берем такую же флешку на контроллере SM3267AB и прошиваем раздел CD через SMI. В разделе Multi-Mon Settings установите флажок Static CDROM size и укажите размер вашего ISO, который мы будем загружать в него.
Прошивка флешки в роль CD-привода
На вкладке Main Stream Parameter рядом с флажком Make Auto Run укажите путь к ISO-образу, например, с Kali Linux — или чем-то еще. После мигания флешка будет отображаться в проводнике как отдельная флешка и дисковод для компакт-дисков. С раздела CD можно читать, копировать файлы — все как при классическом монтировании ISO-образа.
Что по этому поводу скажут наши блокираторы? В Kaspersky и других коммерческих решениях ситуация полностью аналогична случаю с дискетами: раздел CD успешно подключен и готов к работе.
Покупка мутантов
Кстати, есть уже готовые флешки, в которых есть CD-раздел с утилитами для подключения «закрытого» раздела — как, например, в Jet Flash Transcend 620. Это похоже на CD-раздел с программой + 2 USB-раздела — открытый и закрытый до ввода пароля. Размер приватной области настраивается.
Флешка‑мутант
Интерфейс программы JetFlash SecureDrive
Итак, если белый список на USB-накопителях в Касперском работает (если CD-привод разблокирован), такая флешка монтирует себе раздел CD — вы можете запускать и копировать программы. Отказано в доступе при попытке смонтировать защищенный раздел. Чтобы избежать этой катастрофы, вы должны заблокировать привод компакт-дисков, даже если родительское устройство устройства содержит тот же старый добрый идентификатор USB, что странно. В Comodo полностью исключена возможность монтирования таких ненадежных носителей. Почему? Вопрос касается внедрения системы защиты информации и механизмов организации белых списков.
Вывод
В статье мы подробно разобрали способы сделать максимально правдоподобный клон флэшки, который сможет обходить любые блокировки. В зависимости от степени запутанности почти каждый белый список можно обойти. С нашей точки зрения, для гарантированной защиты от спуфинга USB можно было бы указать определенные модели флеш-накопителей в DSS и занести в белый список хэш из области CID, из комбинации VID + PID + serial или добавить ChipGenius выводит хеш (ну или его часть). Было бы неплохо добавить к идентификационной информации данные о модели контроллера устройства.
Поскольку нам известно несколько операционных систем, которые используют название производителя или другие аналогичные параметры в качестве значений для белого списка, было бы хорошо на уровне операционной системы проверить подключенные носители на предмет их замены или несоответствия с обычным (ожидаемым ) (например, вы можете сравнить VSN / UUID и обнаружить различия с одним и тем же DeviceID).
Безопасникам рекомендуется полностью заблокировать подключение гибких дисков и дисков в ОС, чтобы исключить описанные варианты обхода защиты.