Мониторинг подключения usb накопителей
Как определить, что у компьютера есть еще и «другая жизнь», о которой владелец не знает?
Любое устройство, подключаемое к системе – оставляет свои следы в реестре и лог файлах.
Существует несколько способов определить — какие 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 со скачанным для семейного просмотра фильмом.
Помните, что даже личные накопители сотрудников (флешки, карты памяти) способны нанести компании урон не меньший, чем внешняя атака.
К несомненным достоинствам подхода, применяемого Microsoft, стоит отнести простоту настройки и использования, интеграцию с Active Directory, а также то, что такой подход не требует установки ПО сторонних производителей.
Перемещение информации через границы охраняемого периметра локальной сети компании является, пожалуй, наибольшей головной болью службы информационной безопасности. С каждым годом эта головная боль только растет, а решение проблемы становится все более и более актуальным. Ведь за последнее время резко увеличилось число всевозможных USB-устройств, которые могут использоваться в качестве накопителей. При этом объем информации, который может быть записан с помощью таких устройств, уже догнал объем винчестеров. Сегодня USB-диски с объемом в 4 Гб уже давно не редкость, объем жестких дисков переносных MP3 плейеров превысил 80Гб, а ведь кроме этого есть еще и фотоаппараты, мобильные телефоны, КПК с большим объемом памяти и т.д. Объем рынка таких устройств показывает экспоненциальный рост: физические размеры все меньше и меньше, а производительность и объем все больше и больше.
Постоянно увеличиваются инвестиции в межсетевые экраны, используются все новые и более надежные алгоритмы шифрования, другие средства и технологии контроля для защиты данных от хищения через Интернет. Однако не стоит забывать, что большинство хищений сегодня происходит по вине собственных сотрудников, которые посредством использования различных типов USB-устройств скачивают конфиденциальную информацию. Все технологии по защите вашей сети от внешних злоумышленников не могут воспрепятствовать обиженным сотрудникам, которые вполне могут использовать USB-устройства для загрузки злонамеренного ПО в сеть компании или для хищения информации из этой сети.
При этом мы прекрасно понимаем, что наибольшую опасность для информационной безопасности будут представлять именно злоумышленники из числа обиженных внутренних сотрудников. Это практически будет сводить к нулю эффективность административных мер по защите информации в этой области.
Все вышеперечисленное привело к тому, что был разработан целый класс программного обеспечения для контроля сменных носителей. Типичными примерами данного ПО являются DeviceLock, которое с 1996 года разрабатывает компания Смарт Лайн Инк (SmartLine Inc), Sanctuary Device Control от люксембургской компании «SecureWave S.A.», ZLock от российской компании ЗАО «СекьюрИТ», GFI EndPointSecurity от мальтийской компании «GFI Software» и многое другое ПО.
Вместе с тем в ближайшее время компания Microsoft представит на рынок серверных операционных систем свою новую серверную платформу Windows Server 2008, в которую будет встроен контроль за использованием сменных носителей на уровне групповых политик как в случае использования отдельного сервера, так и в случае использования домена в составе Windows Server 2008 в качестве доменного контроллера и Windows Vista в качестве рабочих станций.
Анализу данного ПО и будет посвящена наша статья. Для написания статьи использовалось программное обеспечение English Windows Server 2008 RC0 Enterprise Datacenter Standardx86.
Установка контроля над использованием сменных носителей в Windows Server 2008
Для использования режима контроля над использованием внешних носителей в Windows Vista администратор должен использовать групповые (локальные) политики. При помощи групповых политик администратор может указать конкретные устройства, использование которых разрешено на данном компьютере. Предположим, что сотруднику приказом выделен флеш-диск А, но из дома он может принести еще флеш-диск В. Средствами групповых политик в Windows Vista можно сделать так, что флеш-диск А работать будет, а при включении флеш-диска В сотрудник получит извещение о том, что он нарушает политику безопасности. Давайте рассмотрим подробнее, как это сделать.
Каждое устройство, использующее USB-порт, обладает так называемым уникальным цифровым идентификатором. То есть, для создания списка разрешенных устройств нам вначале нужно получить так называемые идентификаторы (ID) этих устройств.
Получение ID USB-устройств
Для получения соответствующего идентификатора устройства необходимо подсоединить это устройство к USB-порту, дождаться пока система опознает его, и войти в Drive Manager (для этого нажмите правой клавишей мыши на значке My Computer) и из выпадающего меню выберите пункт Properties. Вы получите картинку, изображенную на рисунке 1.
Рисунок 1 Просмотр сведений о вашем компьютере
Рисунок 2 Device Manager
В полученном списке выберите USB Mass Storage Device. Нажмите правую клавишу мыши и в контекстном меню выберите Properties. Потом выберите вкладку Details. Выберите пункт Device Instance Path (рис.3).
Скопируйте значение этого пункта меню в текстовый редактор (например, MS Word).
Вы получите приблизительно такую строку USBSTOR\Disk&Ven_JetFlash&Prod_TS2GJFV30&Rev_8.07\BX1D3DGC&0
Из полученной строки выделите подстроку типа BX1D3DGC (набор символов от последнего символа \ до &) – это и будет искомое ID устройства.
В случае если вы получите строку, подобную USBSTOR\Disk&Ven_ChipsBnk&Prod_Flash_Disk&Rev_2.00\6&1c912e9b&0, то имя устройства будет 6&1c912e9b .
После того, как вы получили уникальный ID устройства, нужно переходить к настройкам групповых политик.
Настройка групповых политик
Все действия, перечисленные ниже, должны проводиться под управлением ученой записи с правами Администратора.
Для настройки локальных политик необходимо запустить режим командной строки из-под учетной записи администратора. Для этого выберите Start-Run-cmd.
В появившемся окне командной строки наберите gpedit.msc.
В появившемся окне редактора групповых политик (Local Group Policy Editor) выберите Administrative Templates-System-Device Installation (рис.4).
Рисунок 4 Ограничения на установку устройства
Далее выберите Allow installation of devices that match any of these device IDs (рис.5).
Рисунок 5 Разрешить установку устройств, соответствующих какому-либо из этих кодов устройств
Для создания соответствующего списка устройств нажмите на кнопку Show. В полученном окне (рис. 6) введите коды разрешенных устройств
Рисунок 6 Разрешить установку устройств, соответствующих какому-либо из этих кодов
В получено окне можно как добавить, так и удалить коды устройств с помощью соответствующих кнопок.
После создания данного списка устройств, необходимо запретить установку устройств, не описанных другими правилами политики. Для этого выберите пункт политики Prevent installation of devices not described by other policy settings (рис.7).
Рисунок 7 Запретить установку устройств, не описанных другими правилами политики
В случае если пользователь все же решит использовать устройство, не описанное в групповой политике, он получит уведомление, заголовок которого вы сможете указать с помощью пункта Display a custom message when installation is prevented by policy setting (рис. 8).
Для окончательного запрета установки устройств выберите пункт Prevent installation of devices not described by other policy setting (Запретить установку устройств, не описанных другими параметрами политики).
Окончательно параметры, описанные в групповой политике, будут введены в действие после ввода в командной строке команды gpupdate.exe (рис.10).
Рисунок 10 Обновление групповой политики
Рисунок 11 Попытка подключения устройства несанкционированного политикой
К несомненным достоинствам подхода, применяемого Microsoft, стоит отнести простоту настройки и использования, интеграцию с Active Directory, а также то, что такой подход не требует установки ПО сторонних производителей.
Что же касается недостатков, то их, увы, гораздо больше. Данный подход не позволяет контролировать, что же именно пользователь записывает (считывает) с внешнего носителя, так как логи операций записи/считывания просто не ведутся. По способу организации контроля над внешними носителями данное ПО может быть отнесено к ПО контроля за внешними устройствами начального уровня. Однако не стоит забывать и о том, что в данный момент времени не существует другого ПО, способного выполнять аналогичные задачи под управлением Windows Server 2008 и Windows Vista.
Отслеживание подключений USB устройств
Всем привет. Делал тут програмку и сталкнулся с проблемой. Вобщем программа должна при подключении.
Обнаружение устройств usb
Нужно сделать так, чтобы при подключении любого устройства по usb выполнялся код. Пытался найти.
Получение списка подклюнных устройств к USB
Подскажите пожалуйста, как можно получить список подключенных к USB Flash-накопителей?
Отслеживание подключения USB устройств
Требуется написать консольное приложение (в дальнейшем службу) отслеживать любое подключение USB.
FakiR, этот код изначально и извещал о том, что устройство извлечено, я его как-то переделал под подключение. По-моему нужно просто изменить значение константы
Вот только на что, не помню
Добавлено через 1 минуту
А нет
Добавлено через 28 секунд
Сейчас я попробую сделать
а что в дотНЕТ нет родных средств по работе с usb?
а то все это напоминает порт ВинАпи
Попробуй вот так. У себя не пробовал, может и не работать:дак два одинаковых case получается, оно и не должно работать.
добил (кое что изменил в твоём коде, спасибо ), вот полный вариант:
dbcv_unitmask
The logical unit mask identifying one or more logical units. Each bit in the mask corresponds to one logical drive. Bit 0 represents drive A, bit 1 represents drive B, and so on.
Всем доброго времени суток!А при уведомлении о подключении USB эта программа не создает отчет в каком ни будь файле(пусть даже и txt),что мол типа такого то числа была подключена такая то флешка копировалось то-то ну или что ни будь в этом роде(пусть даже самую мелочь но главное что бы был хоть малейший отчет)?И есть ли возможность создать такую программу учета подключения USB,которая бы сохраняла логи с действиями пользователя в определенном месте или куда укажешь на подобии журнала в Майкрософте? А при уведомлении о подключении USB эта программа не создает отчет в каком ни будь файле(пусть даже и txt),что мол типа такого то числа была подключена такая то флешка копировалось то-то ну или что ни будь в этом роде(пусть даже самую мелочь но главное что бы был хоть малейший отчет)? И есть ли возможность создать такую программу учета подключения USB,которая бы сохраняла логи с действиями пользователя в определенном месте или куда укажешь на подобии журнала в Майкрософте? Так а как это можно реализовать или добавить в данную программу? Так а как это можно реализовать или добавить в данную программу? код соотв. дописать, выкладывай что у тебя есть, поможем допилить до работоспособного состояния.Да как такового кода нет так как программу надо под линукс ос подогнать целую неделю бился и никакого результата я уже и за деньги просил программистов но никто не хочет помочь говорят что линукс дело темное а некоторые вообще не знают линукс ос так что могу тут кому ни будь заплатить если заинтересовало сам с линуксом второй год работаю ос очень интересная но мутная и странная но правится даже компилятор для него нашел что бы программы после написания создавать
Добавлено через 1 час 18 минут
Да и если кто ни будь знаком с программой NMap для линукс систем то тоже хочу ее переделать немного сделать более целенаправленную на сканирование портов а также построение топологии сети
Не так давно появилась задача - каким-то образом отслеживать появление новых USB-флешек в Windows, а также их исчезновение. В идеале также неплохо было бы иметь возможность манипулировать безопасным извлечением. Казалось бы, что все просто - ведь Windows имеет средства для оповещения приложений о вставляемых и вытаскиваемых флешках на уровне пользователя, но на деле оказалось, что тонкостей в этом вопросе очень много.
Итак, в статье я расскажу, как:
[+] отследить появление новой флешки или USB-диска в системе (даже если это хитрожопая флешка, которая монтируется как CD-ROM+Flash, например, или флешка, разбитая на пару дисков)
[+] отслеживать безопасное извлечение флешек и манипулировать им
[+] самому безопасно извлечь любой извлекаемый USB-девайс по букве его диска
[+] отследить прочие события, а именно небезопасное извлечение флешки и отказ в безопасном извлечении
Само-собой, никаких драйверов, только уровень пользователя! Я также поделюсь с вами исходником класса на C++, который реализует все вышеописанные задачи. Давно я не писал годных толстых статей.
Что ж, переходим к более сложной части - работа с безопасным извлечением устройств. Представим, что мы читаем какой-то файл с флешки или пишем его. И тут пользователь запросил безопасное извлечение. Если мы тут же не закроем все хендлы и не завершим дисковые операции, система скажет пользователю, что диск занят. Как обработать эту ситуацию корректно? Казалось бы, все просто - есть же событие DBT_DEVICEQUERYREMOVE. Все верно, это то, что нам нужно. Только вот оно не отсылается системой по умолчанию, как я понял. Как быть? На просторах интернета было найдено решение: необходимо открыть замонтированный диск с помощью функции CreateFile (с флагом FILE_FLAG_BACKUP_SEMANTICS) и держать его открытым. Далее необходимо зарегистрировать оповещение о событии безопасного извлечения с помощью RegisterDeviceNotification с типом DBT_DEVTYP_HANDLE (регистрируем по хэндлу устройства, который получили из предыдущего вызова). После этого система начнет слать нам событие DBT_DEVICEQUERYREMOVE с типом (dbch_devicetype) DBT_DEVTYP_HANDLE. Теперь мы сможем определить, какое из подконтрольных нам устройств пользователь хочет безопасно извлечь, и даже вмешаться в этот процесс. Делается это достаточно просто - если мы не хотим позволять системе делать безопасное извлечение устройства, достаточно из обработчика DBT_DEVICEQUERYREMOVE вернуть значение BROADCAST_QUERY_DENY, а если хотим - то TRUE, не забыв при этом снять регистрацию ивента с помощью UnregisterDeviceNotification и закрыть с помощью CloseHandle хендл устройства. Во время обработки ивента DBT_DEVICEQUERYREMOVE мы можем по-быстрому закрыть все прочие хендлы, если наша программа в этот момент использует флешку, завершить все операции записи/чтения.
Вы еще можете спросить, что произойдет, если пользователь захочет безопасно извлечь флешку, разбитую на два или более логических диска. Ответ прост: DBT_DEVICEQUERYREMOVE будет вызван два или более раз, для каждого раздела. Если мы не освободим хотя бы один, то и безопасное извлечение обломится.
Основные моменты я рассмотрел, но есть еще один. Все вышеперечисленные события работают только для приложений, у которых есть окно верхнего уровня. Сделать такое окно для любого приложения, в общем-то, не проблема. Но что, если мы разрабатываем службу Windows? Здесь все просто - необходимо зарегистрировать оповещения о событиях устройств с помощью уже упомянутой функции RegisterDeviceNotification с флагом DEVICE_NOTIFY_SERVICE_HANDLE. В этом случае все ивенты мы сможем обрабатывать внутри своего ServiceCtrlHandler'а (SERVICE_CONTROL_DEVICEEVENT). Код для этого я не писал, но разобраться проблемы не будет, так как никаких отличий в начинке этого кода по сути нет.
Читайте также: