Программа алладин для блокировки доступа компьютеру флешек
Мало кто знает, но флешки можно использовать не только для хранения и переноса данных, но и для блокирования не санкционированного доступа к компьютеру, ноутбуку или планшету. И сделать это весьма просто, достаточно скачать и установить программу Predator, посредством которой можно заблокировать компьютер, сгенерировав файл-ключ флешке.
Установка Predator
Predator – это приложение, позволяющее блокировать компьютер во время отсутствия пользователя-хозяина, путем создания специального файла-ключа с привязкой к карте флеш-памяти. Принцип действия данной утилиты таков, что позволяет работать на компьютере лишь тогда, когда флешка подключена к компьютеру.
Данное приложение имеет два версии:
- Домашняя – бесплатная, для обычных пользователей.
- Профессиональная – платная версия для тех, кто желает использовать утилиту в коммерческих целях.
Чтобы использовать Predator, сначала его нужно скачать и установить.
Важно! Для полноценной работы Predator ей необходим Net framework 4. Если он не установлен, то приложение автоматически скачет и установит это приложение, после того как вы установите Predator.
Применении Predator
На этом установка и настройка приложения завершается, о чем сообщит специальное окошко, где также будет указано на необходимость ручного запуска утилиты для начала ее работы. Запустив программу вы тем самым блокируете компьютер и будете иметь возможность работать на нем лишь с подключенной флешкой.
О работе приложения можно узнать, посмотрев в трей рабочего стола, где будет светиться зеленый кружок.
Также удостовериться в работе программы можно, если вытащить флешку USB-разъема. Следствием такого действия станет блокирование компьютера — появится черный экран. Вставив флешку обратно вы снова получите доступ к системе.
Если флешка испортиться или будет утеряна, то доступ к компьютеру можно восстановить, нажимая любую кнопку на клавиатуре пока не появится окошко с полем для введения пароля. Верно введя пароль, защита Predator будет отключена. Но вводить пароль нужно быстро, приложение дает для этого лишь 20 секунд. После чего окошко исчезнет и вы снова будете лицезреть черный экран.
Важно! Утилита Predator – это приложение для блокирования доступа к компьютеру посредством флешки на то время пока вы будете находиться далеко от клавиатуры. И рассматривать Predator как серьезное средство защиты не стоит, разве что комбинируя ее с другими защитными криптографическими программами.
(6 оценок, среднее: 4,17 из 5)
Если вам требуется, чтобы к компьютеру или ноутбуку с Windows 10, 8.1 или Windows 7 никто не мог подключить USB-накопители, вы можете запретить использование флешек, карт памяти и жестких дисков используя встроенные средства системы. Мышки, клавиатуры и другая периферия, не являющаяся хранилищем, продолжит работать.
В этой инструкции о том, как заблокировать использование USB флешек и других съемных накопителей с помощью редактора локальной групповой политики или редактора реестра. Также в разделе с дополнительной информацией о блокировке доступа через USB к устройствам MTP и PTP (камера, Android телефон, плеер). Во всех случаях для выполнения описываемых действий вы должны иметь права администратора в Windows. См. также: Запреты и блокировки в Windows, Как поставить пароль на флешку в BitLocker.
Запрет подключения USB флешек с помощью редактора локальной групповой политики
Первый способ более простой и предполагает использование встроенной утилиты «Редактор локальной групповой политики». Следует учитывать, что эта системная утилита недоступна в Домашней редакции Windows (если у вас такая версия ОС, используйте следующий способ).
Шаги по блокировке использования USB накопителей будут следующими:
- Нажмите клавиши Win+R на клавиатуре, введите gpedit.msc и нажмите Enter, откроется редактор локальной групповой политики.
- Если требуется запретить использование USB накопителей для всех пользователей компьютера, перейдите к разделу Конфигурация компьютера — Административные шаблоны — Система — Доступ к съемным запоминающим устройствам. Если требуется заблокировать доступ только для текущего пользователя, откройте аналогичный раздел в «Конфигурация пользователя».
- Обратите внимание на пункты «Съемные диски: Запретить выполнение», «Съемные диски: Запретить запись», «Съемные диски: Запретить чтение». Все они отвечают за блокировку доступа к USB-накопителям. При этом запрет чтения запрещает не только просмотр содержимого флешки или копирование с неё, но и остальные операции (на накопитель нельзя будет что-либо записать, запуск программ с него также не будет выполняться).
- Для того, чтобы, например, запретить чтение с USB накопителя, дважды нажмите по параметру «Съемные диски: Запретить чтение», установите значение «Включено» и примените настройки. Выполните то же самое для других требующихся вам пунктов.
На этом процесс будет завершен, а доступ к USB заблокирован. Перезагрузка компьютера не требуется, однако, если на момент включения ограничений накопитель уже был подключен, изменения для него вступят в силу только после отключения и повторного подключения.
Как заблокировать использование USB флешки и других съемных накопителей с помощью редактора реестра
Если на вашем компьютере отсутствует редактор локальной групповой политики, ту же блокировку можно выполнить и с помощью редактора реестра:
- Нажмите клавиши Win+R на клавиатуре, введите regedit и нажмите Enter.
- В редакторе реестра перейдите к одному из разделов: первый — для запрета использования USB накопителей для всех пользователей. Второй — только для текущего пользователя
- Создайте подраздел RemovableStorageDevices, а в нем — подраздел с именем
- В этом подразделе создайте нужные параметры DWORD32 (даже для Windows x64) — с именем Deny_Read для запрета чтения и других операций, Deny_Execute — для запрета выполнения, Deny_Write — для запрета записи на USB накопитель.
- Установите значение 1 для созданных параметров.
Запрет использования USB флешек и других съемных накопителей вступит в силу сразу после внесения изменения (если на момент блокировки накопитель уже был подключен к компьютеру или ноутбуку, он будет доступен до отключения и повторного подключения).
Дополнительная информация
Некоторые дополнительные нюансы блокировки доступа к USB накопителям, которые могут оказаться полезными:
- Описанные выше способы работают для съемных USB флешек и дисков, однако не работают для устройств, подключенных по протоколу MTP и PTP (например, хранилище Android телефона продолжит быть доступным). Для отключения доступа по этим протоколам, в редакторе локальной групповой политики в том же разделе используйте параметры «WPD-устройства» для запрета чтения и записи. В редакторе реестра это будет выглядеть как подразделы , и в политиках RemovableStorageDevices (как описывалось выше) с параметрами Deny_Read и/или Deny_Write.
- Для того, чтобы в дальнейшем вновь включить возможность использования USB накопителей, просто удалите созданные параметры из реестра или установите «Выключено» в измененных ранее политиках доступа к съемным запоминающим устройствам.
- Еще один способ блокировки USB накопителей — отключение соответствующей службы: в разделе реестраизмените значение Start на 4 и перезагрузите компьютер. При использовании этого способа подключенные флешки даже не будут появляться в проводнике.
Помимо встроенных средств системы, есть сторонние программы для блокировки подключения различного рода USB устройств к компьютеру, в том числе и продвинутые инструменты наподобие USB-Lock-RP.
Когда дело доходит до цифрового хранения наших данных, USB-накопители оказываются наиболее удобным и надежным решением. И для их защиты определенно необходимо использовать одну из лучших программ для блокировки USB-портов, обеспечивающее безопасность всех ваших данных.
Флэш-накопители USB очень удобны, мы можем держать их в кармане или сумке и носить с собой куда угодно без каких-либо проблем. В отличие от жестких дисков, которые громоздки, USB-флэш-накопители, с другой стороны, являются наиболее легковесными носителями, которые мы можем использовать для сохранения наших изображений, музыки, файлов документов или абсолютно всего, что мы хотим. Мы можем подключить эти устройства к любому ноутбуку или системе и сразу же получить доступ к нашим данным.
Но из-за этого факта, поскольку USB-накопители являются наиболее доступными и надежными запоминающими устройствами, иногда мы забываем о том, что подключение / отключение USB-накопителей в различных системах может привести к тому, что любое вредоносное ПО или зараженный файл могут сохранится вместе с вашими данными.
Итак, каков самый оптимальный способ остановить это? USB-накопители могут содержать множество вредоносных программ и вирусов, которые могут быть легко перенесены в вашу систему без вашего ведома, когда вы просто копируете свои данные.
Принимая это во внимание и ради безопасности вашей системы, вот 10 лучших программ для блокировки USB-портов , которые предотвращают проникновение в ваше систему потенциальных вредоносных программ или вирусов.
Лучшее программное обеспечение USB Lock
Давайте подробно обсудим функциональные возможности и характеристики каждого из этих программных блокировщиков USB-портов.
USB Block
USB Block – идеальное решение, которое защитит вашу систему от любой потенциальной угрозы или опасности. Он ограничит проникновение в вашу систему любых несанкционированных USB-накопителей или ненадежных вредоносных программ. С помощью этого программного обеспечения для защиты USB вы можете эффективно защитить свои изображения, музыкальные файлы или любые другие данные, которые хранятся в вашей системе.
Вы можете внести в белый список доверенные устройства. Таким образом, вы можете копировать данные на свой собственный USB, внешние накопители, телефон iPhone или Android, но блокировать доступ других подобных устройств к вашему компьютеру.
Кроме того, вы также можете использовать это программное обеспечение в профессиональных целях, если у вас есть организация. Загрузив это программное обеспечение в свою сеть, вы можете заблокировать все USB-порты своих сотрудников, чтобы они ничего не копировали со своих рабочих компьютеров.
SysTools USB Blocker
SysTools USB Blocker – позволяет с легкостью блокировать и разблокировать любые USB-порты в вашей системе. Установив это программное обеспечение USB-блокировки в вашей системе, вы можете быть уверены, что никакие данные не могут быть введены или скопированы с вашего ПК.
Вы можете быть спокойны, так как с помощью этого инструмента вы можете заблокировать неограниченное количество USB-портов в своей системе.
Программное обеспечение имеет простой и легкий в освоении пользовательский интерфейс, к которому вы можете получить доступ самостоятельно без какой-либо технической помощи.
BuduLock
BuduLock – одна из самых простых, но интуитивно понятных программ для блокировки USB-портов, в этом списке. Она позволяет блокировать и разблокировать USB-порты системы, чтобы предотвратить неавторизованный доступ и копирование данных.
После того, как вы заблокировали определенный порт USB, вы можете установить блокировку паролем, которая позволит вам защитить ваши личные данные.
Не только USB-порты, вы также можете заблокировать папки с помощью программного обеспечения защиты USB BuduLock.
Gilisoft USB Lock
Независимо от того, используете ли вы его в личных или профессиональных целях, Gilisoft USB Lock может стать вашим окончательным спасителем, поскольку он может помочь вам защитить систему. Ни USB-накопитель, ни какой-либо другой носитель данных не смогут «проникнуть в вашу систему» с этим программным обеспечением для защиты USB.
Он не только блокирует USB-порты, но также позволяет без проблем обнаруживать любой другой съёмный носитель, будь то смартфон, карта памяти или любое другое USB-устройство.
EndPoint Protector Device Control
Следующее программное обеспечение в нашем списке лучших программ для обеспечения безопасности USB – это EndPoint Protector Device Control . И, как и любое другое программное обеспечение для блокировки USB-портов, это защищает вашу систему от любых ненадёжных USB-носителей.
Он поставляется с простым пользовательским веб-интерфейсом, который легко понять и позволяет отслеживать, блокировать или разблокировать любые USB-порты вашей системы.
EndPoint Protector Device Control – обязательный инструмент для сетевых администраторов, поскольку они могут легко контролировать и защищать все подключенные системы от угрозы нарушения данных.
USB Write Protect
Независимо от того, хотите ли вы предотвратить кражу данных в офисе или просто хотите, чтобы в вашу систему не попадали вредоносные программы или вирусы, в вашей системе обязательно должно быть установлено идеальное программное обеспечение для блокировки USB.
USB Write Protect может защитить все ценные файлы, хранящиеся в вашей системе, ограничивая порты USB и блокируя доступ любых носителей USB. Никто не cможет скопировать какие-либо сохраненные данные с вашего ПК без вашего ведома.
NomeSoft USB Guard
NomeSoft USB Guard – это совершенное программное обеспечение для отключения USB, которое помогает вам без проблем блокировать / разблокировать USB-порты вашей системы.
Это программное обеспечение защиты USB действует как брандмауэр между любым USB-носителем и вашим компьютером. Установив на вашем устройстве программное обеспечение NomeSoft USB Guard, вы можете быть спокойны, поскольку оно предотвращает проникновение всех вредоносных программ или вирусов в вашу систему.
Даже если вы новичок, использование этого инструмента будет легкой прогулкой, так как его простой в использовании интерфейс направляет вас на каждом этапе процесса.
USB Disk Manager
USB Disk Manager – это ещё одно легкое программное обеспечение для защиты USB-портов, которое защищает вашу систему от заражения вредоносными программами. Поскольку USB-накопители представляют собой удобное решение для хранения данных, существует больше шансов, что ваша система может заразиться, пока вы копируете какие-либо данные с USB-накопителя.
Что ж, как только вы загрузите USB Disk Manager на свой компьютер, вы можете отключить каждый активный USB-порт вашей системы, чтобы избежать любого риска. Никакой USB-носитель не будет доступен в вашей системе.
URC Access Modes
URC Access Modes – это комплексное решение для защиты вашей системы от вредоносных программ и вирусов. Оно поможет вам заблокировать любые активные USB-порты вашей системы, тем самым предотвратив любой акт кражи данных. Также никто не сможет скопировать ваши личные данные из вашей системы, подключив USB-накопитель. Будь то флеш-накопитель USF, жесткий диск или любой другой носитель.
Рекомендуется использовать этот инструмент в офисных сетях, поскольку он не позволяет сотрудникам копировать что-либо из системы. Чего же ты ждёшь? Загрузите его на низком уровне и сведите к минимуму любые шансы кражи данных.
USB Shutter
И последнее, но не менее важное: в нашем списке программного обеспечения для защиты USB-портов стоит USB Shutter . Как следует из названия, это мощное программное обеспечение для блокировки USB позволяет вам эффективно управлять включением и отключением USB-портов вашей системы.
Если вы являетесь сетевым администратором в организации, наличие этого инструмента является обязательным, так как он предотвратит кражу данных. Когда все порты USB отключены, ни один сотрудник или пользователь не сможет скопировать какую-либо конфиденциальную информацию из вашей системы.
Все ваши конфиденциальные файлы и данные будут храниться в целостности внутри вашей системы, без риска проникновения любых ненадёжных устройств. Кроме того, это сводит к минимуму вероятность заражения вашей системы каким-либо вредоносным ПО или вирусом. Загрузите USB Shutter и защитите компьютер от вредоносных программ и вирусов!
Выводы – как и чем блокировать USB
Итак, вот 10 лучших программ для блокировки портов USB на ПК с Windows. Существует множество способов проникновения вредоносных программ или вирусов в операционную систему, что может отрицательно сказаться на её производительности. С помощью представленного программного обеспечения для защиты USB-портов вы можете повысить безопасность своих систем и снизить риск кражи данных.
Крайне важно понимать, что безопасность – критичная проблема, и всегда следует действовать проактивно, когда дело касается защиты ваших конфиденциальных данных.
Даже если вы являетесь домашним пользователем или сетевым администратором в организации, загрузите любое из вышеперечисленных приложений, чтобы добавить дополнительный уровень безопасности в вашу систему.
В этой статье описаны способы обхода аппаратных систем защиты. В качестве примера рассмотрена технология HASP (Hardware Against Software Piracy), разработанная компанией Aladdin Knowledge Systems Ltd. В прошлом данная технология являлась одной из самых популярных аппаратных систем защиты ПО.
Мощью аппаратной защиты HASP пользуются многие серьезные разработчики софта, которые не хотят, чтобы их продукт несанкционированно распространялся. Хаспом, например, защищаются пакеты "1С.Бухгалтерия" или "1С.Предприятие", без которых не может прожить ни одно более или менее организованное дело. Популярный юридический справочник "КонсультантПлюс" также защищает доступ к данным с помощью электронных ключиков. Чтобы воспользоваться вышеупомянутым или другим не менее дорогостоящим софтом, не платя никому ни копейки, недостаточно просто полазить по Сети в поисках txt’шника с ключиками. Однако хакер всегда разберется, что делать с защитой, пусть и аппаратной. И паяльник ему для этого не понадобится.
Взглянем
Утрируя, можно сказать, что HASP состоит из двух частей: аппаратной и программной. Аппаратная часть — это электронный ключик в виде USB-брелка, PCMCIA-карты, LTP-девайса или вообще внутренней PCI-карты. Установленный софт будет работать только на той машине, в которую воткнут электронный ключ. Собственно, неплохо было бы отучить софт от такой неприятной для кошелька привычки.
Программная часть — это драйвера электронного ключа и различный софт, привязывающий электронные ключи с их драйверами непосредственно к защищаемому продукту или к каким-то зашифрованным данным. В статье мы рассмотрим и обойдем защиту, использующую USB-брелок — наверное, наиболее популярный электронный ключ на сегодня.
Механизм системы защиты
Сам брелок нас почти не интересует, в отличие от ПО в его комплекте. Для нас наибольший интерес представляет модуль hardlock.sys. Не углубляясь в подробности, отмечу, что этот драйвер отвечает за взаимодействие с аппаратным ключом. Он имеет два объекта устройства, один из которых обладает символьным именем DeviceFNT0. Используя этот объект, защищенное приложение посредством диспетчера ввода-вывода проверяет лицензию на использование данного ПО.
Для эксплуатации другого метода также требуется дамп ключа, но подстановка данных осуществляется иначе, а именно — в программной эмуляции. То есть драйвер защиты сможет обращаться с виртуальным ключом так же, как и с физическим.
Перехват и эмуляция
Как уже отмечалось, идея перехвата состоит в перезаписи обработчиков IRP-пакетов. Для этого необходимо иметь возможность изменять поля структуры DRIVER_OBJECT. К счастью, существует функция IoGetDevicePointer, которая возвращает указатель на объект вершины стека именованных устройств и указатель на соответствующий файловый объект. Вот фрагмент кода функции, устанавливающей ловушку:
NTSTATUS HookDevice(LPWSTR lpDevice)
UNICODE_STRING DeviceName;
PDEVICE_OBJECT DeviceObject;
PFILE_OBJECT FileObject;
Получив указатель на структуру DEVICE_OBJECT, имеем указатель на DRIVER_OBJECT. Теперь заменим адреса обработчиков и функций выгрузки драйвера на свои:
NTSTATUS HookDevice(LPWSTR lpDevice)
gDriverObject = DeviceObject-> DriverObject;
gDeviceControl = gDriverObject-> MajorFunction[IRP_MJ_DEVICE_CONTROL];
gDriverObject-> MajorFunction[IRP_MJ_DEVICE_CONTROL] = HookDispatch;
gInternalDeviceControl = gDriverObject-> MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL];
gDriverObject-> MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = HookDispatch;
gDriverUnload = gDriverObject->DriverUnload;
gDriverObject->DriverUnload = HookUnload;
В последней строчке вызывается функция ObfDereferenceObject, которая уменьшает количество ссылок на файловый объект. Это необходимо делать для корректной выгрузки драйвера, чтобы не было утечки ресурсов и аналогичных ошибок.
Так как указатель на объект драйвера защиты сохранeн, то чтобы снять ловушку, нужно просто восстановить прежние обработчики IRP-пакетов:
gDriverObject-> MajorFunction[IRP_MJ_DEVICE_CONTROL] = gDeviceControl;
gDriverObject-> MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = gInternalDeviceControl;
gDriverObject->DriverUnload = gDriverUnload;
Конечно, надо добавить соответствующие проверки на валидность указателей и прочее.
Теперь необходимо реализовать правильную выгрузку драйверов. Так как система защиты по каким-либо причинам может закончить свою работу раньше нашего драйвера, то чтобы избежать краха системы из-за неверных указателей, обработаем это событие в функции HookUnload:
void HookUnload(PDRIVER_OBJECT DrvObj)
Здесь происходит восстановление полей структуры DRIVER_OBJECT, и передаeтся управление на оригинальный код выгрузки драйвера перехваченного устройства.
Аналогично поступаем, если наш драйвер завершает работу раньше системы защиты. Только нужно высвободить захваченные ресурсы и не вызывать сохранeнный gHookUnload.
Принцип работы эмулятора
Перехватчик
Зная основные принципы простейшего перехвата IRP-пакетов, приступим к реализации пока только самого перехватчика для дальнейшего анализа. Для этого создадим объект драйвера, который содержит символьное имя (например DosDevicesHook) и точки входа CREATE, CLOSE, READ.
DriverObject->MajorFunction[IRP_MJ_CREATE] = DriverDispatch;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = DriverDispatch;
DriverObject->MajorFunction[IRP_MJ_READ] = DriverDispatch;
DriverObject->DriverUnload = DriverUnload;
if (idlTail->IrpData.InputLength)
idlTail->InputBuffer = ExAllocatePool(NonPagedPool, idlTail->IrpData.InputLength);
RtlCopyMemory(idlTail->InputBuffer, Irp->AssociatedIrp.SystemBuffer, idlTail->IrpData.InputLength);
>
if (IoSL->MajorFunction == IRP_MJ_DEVICE_CONTROL)
Status = pHookedDriverDispatch[IRP_MJ_DEVICE_CONTROL]( DeviceObject, Irp);
if (idlTail->IrpData.OutputLength)
idlTail->OutputBuffer = ExAllocatePool(NonPagedPool, idlTail-> IrpData.OutputLength);
RtlCopyMemory(idlTail->OutputBuffer, lpBuffer, idlTail->IrpData.OutputLength);
>
idlTemp = idlHead->ldlNext;
ExFreePool(idlHead);
idlHead = idlTemp;
if (!idlTemp)
idlTail = NULL;
>
Когда перехватчик готов, запускаем сначала его, а затем — защищенное приложение с ключами и без. Из полученных логов становится видно, какие управляющие коды посылаются и их результаты. Также можно видеть, что запросы и ответы на два различных кода (9c402450, 9c4024a0) не изменяются. Казалось бы, можно построить табличный эмулятор, но после серии запусков убеждаемся, что это невозможно, так как содержимое буферов различно, и неизвестно, как оно образуется.
Перехваченные пакеты без ключа
Перехваченные пакеты с ключом
Затем возможны несколько вариантов дальнейших действий:
- изучать дебри драйвера защиты;
- воспользоваться информацией самих разработчиков системы.
Оба варианта дают необходимую информацию. Итак, оказывается, содержимое пакетов шифруется публичным симметричным алгоритмом AES (Advanced Encryption Standard). Логичной целью является получение ключа шифрования.
Но если еще больше углубиться в изучение устройства системы защиты, то окажется, что аппаратный ключ имеет уникальный номер и содержит всю необходимую информацию, но для доступа к нему требуются программные ключи.
Пример дампа ключа
Поэтому первое, что нужно сделать, это получить ключ. Поставленную задачу может решить обычный брутфорс:
unsigned short Key;
unsigned char RefKey[8], VerKey[8];
for (Key = 0; Key if (!HL_LOGIN(Key, 1, RefKey, VerKey))
HL_LOGOUT();
Break;
>
>
Далее ключ (MODAD) используется для снятия дампа: тип, идентификатор, порт подключения и так далее. Для этого есть функции, определенные разработчиками.
Функции HL_LOGIN, HL_LOGOUT доступны из HASP SDK для разработчиков приложений, защищенных на этой платформе, и имеют следующие прототипы:
WORD HL_LOGIN(WORD ModAd, Word Access, Byte *RefKey, Byt *VerKey);
WORD HL_LOGOUT(void);
Первая функция служит для открытия сессии работы с ключом защиты посредством драйвера, вторая – завершает сессию. Это прототипы старых версий HASP SDK, но работают они и с новыми типами ключей, так как разработчики обеспечили обратную совместимость.
Новый API мало отличается от старого, и это никак не сказывается на принципе работы брутфорса. Подробную документацию Hasp API, готовые реализации брутфорса и дампера ключей можно найти на диске.
Обработчик
Теперь есть все необходимое для корректной работы модуля. Осталось реализовать подстановку лицензионной информации. Причем можно перехватывать лишь некоторые IRP-пакеты. Здесь все уже зависит от конкретной версии ключа и защищаемой программы.
Дамп ключа лучше не встраивать в драйвер, а загружать динамически из реестра. Лучше основываться на уже готовом перехватчике запросов, так будет проще отладить драйвер, отправляя перехваченные/подставленные пакеты на анализ пользовательскому приложению. Принципиально логика перехватчика будет иметь такой вид:
PIO_STACK_LOCATION Stack = Irp-> Tail.Overlay.CurrentStackLocation;
ULONG IoControlCode;
if (Stack->MajorFunction == 14)
IoControlCode = Stack.DeviceIoControl.IoControlCode;
If (IoControlCode != 0x9c402458)
Return gDeviceControl(DeviceObject, Irp);
>
else
Encrypt(Irp->AssociatedIrp.SystemBuffer);
Crypt(Irp->AssociatedIrp.SystemBuffer, Key, DumpMemory);
>
>
Пакет запроса к драйверу находится в криптованном виде, поэтому для доступа к его содержимому требуется расшифровать, а затем зашифровать. Возникает вопрос: каким алгоритмом и каким ключом выполнено шифрование? Покопавшись в исходниках от создателей системы, можно получить следующий первичный алгоритм шифрования пакета:
void Encrypt(BYTE * Buffer)
WORD Seed = ((WORD)Buffer + 0x5e);
WORD Ver = ((WORD)Buffer + 0xba);
if (Ver)
for (int i = 0; i < 0xB9; i++) (WORD)(Buffer + i) += Seed;
Seed = (Seed >> 15) | (Seed Seed -= (WORD)(Buffer + i) ^ i;
>
for (int i = 0xBE; i < 0xFF; i++) (WORD)(Buffer + i) -= Seed;
Seed = (Seed >> 15) | (Seed Seed += (WORD)(Buffer + i) ^ i;
>
Видно, что алгоритм гораздо сложнее, чем обычный сдвиг и исключающее "или". А вот алгоритм дешифрования:
void Decrypt(BYTE* Buffer)
WORD Seed = ((WORD)Buffer + 0x5e);
WORD Ver = ((WORD)Buffer + 0xba);
if (Ver) for (int i = 0xFE; i > 0xBD; i--) Seed -= (WORD)(Buffer + i) ^ i;
Seed = (Seed > 1);
(WORD)(Buffer + i) += Seed;
>
for (int i = 0xB8; i >= 0; i--) Seed += (WORD)(Buffer + i) ^ i;
Seed = (Seed > 1);
(WORD)(Buffer + i) -= Seed;
>
Затем следует ещe один этап преобразования данных, более сложный и уже полностью зависящий от структуры запроса. Тут не обойтись без дизассемблера, придется покопаться в бине и позаимствовать немного кода у создателей. Это непросто, так как код драйвера защиты сильно обфусцирован, но он не отличается разнообразием уловок. Достаточно будет декомпилировать драйвер не полностью, а только лишь некоторые кусочки кода.
В заключение отмечу, что построение табличного эмулятора, основанного на перехвате DeviceIoControl, — достаточно трудная задача. Но такой принцип эмулятора можно использовать и на другом уровне взаимодействия: создать виртуальную USB-шину.
Заключение
Это не единственный способ избавиться от системы защиты. Существуют и другие, более совершенные методы. Изложенные в статье принципы можно использовать и для анализа работы драйверов, перехватывая IRP-пакеты. Таким образом можно добавить неплохой инструмент в свой сделанный на коленке набор. Удачи!
Чтобы взломать чужую сеть, можно применить изощренные высокотехнологичные методы, а можно просто подбросить сотрудникам интересующей хакера компании флешку с «сюрпризом». В последние годы популярность этого способа понемногу падает, но он еще встречается для проникновения в технологические сети промышленных предприятий. А какие существуют методы защиты от вредоносных флешек и как их можно обойти? Сейчас разберемся!
В этой статье мы рассмотрим, как устроена защита USB (Mass Storage Class — Removable Media) и как обмануть системы ограничения по белому списку устройств с помощью создания клонов. Звучит интересно? Хочешь натянуть современные средства защиты? Тогда добро пожаловать в мир увлекательных экспериментов!
Как блокируют флешки
Зачем их блокировать? Чтобы ты не занес в ИТ‑инфраструктуру компании вирус‑шифровальщик, не таскал информацию домой и не приносил игрушки в офис. В разных конторах админы и безопасники действуют по‑разному. В самых печальных случаях порты физически отключаются, заливаются эпоксидкой или опечатываются. В случаях попроще порты отключаются через BIOS/UEFI (что‑то вроде USB Controller = Disabled).
Если админам лень жалко ломать железку, на помощь приходят настройки реестра и групповые политики винды. Например, для полной блокировки USB-носителей открой вот эту ветку реестра:
Если ты выставишь у параметра Start значение 4, твои флешки перестанут подключаться. В групповых политиках ( gpedit. msc ) обычно смотрят в сторону оснастки «Конфигурации компьютера → Административные шаблоны → Система → Доступ к съемным запоминающим устройствам».
Расположение на винде политики, связанной со съемными носителями
Существуют ли способы более изысканно и красиво ограничить подключение нежелательных носителей к компу? Компании побогаче используют дополнительные средства защиты информации (СЗИ) — тот же KAV (и иные антивирусы), DLP-системы, Secret Net (СЗИ от НСД) и прочие. Кто‑то даже устанавливает драйвер для проверки носителя по белому списку, кто‑то проверяет устройство в момент его монтирования.
Настройки СЗИ могут запретить подключение вообще всех устройств, только устройств из черного списка или разрешить подключение девайсов из белого списка. На последнем варианте мы с тобой и остановимся поподробнее.
А как их различают?
Как отличить одну флешку от другой? Понятное дело, что у флешек есть производитель, объем, другие параметры. Но обычно производители снабжают каждую флешку уникальным серийным номером, прописанным в ее прошивке.
Чтобы посмотреть его в винде, можешь использовать такую команду Windows Management Instrumentation — WMIC (предварительно подключив флешку):
Получаем примерно такой вывод команды:
Полученный DeviceID содержит:
- VID — Vendor ID, идентификатор производителя. 13FE — Kingston Technology Company Inc.;
- PID — Product ID, идентификатор изделия. 4200 — Platinum USB drive mini;
- Serial — уникальный серийный номер флешки 070867948D560839 .
VID и PID используются операционкой для поиска дров. Полный список можно посмотреть, например, на сайте Linux USB.
По DeviceID флешка прописывается в реестре:
Также ты можешь получить всю эту информацию с помощью программы USBDeview.
Пример вывода программы USBDeview
В некоторых, особо изысканных и нездоровых случаях в качестве идентификатора флешки применяется Volume Serial Number (VSN, он же так называемый серийный номер тома), который можно получить командой vol или dir .
Вывод команд vol и dir
Почему использовать VSN (в Linux он называется UUID) для идентификации флешек — идея не очень? Дело в том, что данные метки идентифицируют логические тома файловой системы. Чтобы изменить VSN случайным образом, достаточно отформатировать раздел. Понятно, что для жестких дисков это процедура сравнительно редкая, но флешки форматируют довольно‑таки часто.
Что делать с ноунеймом
Для китайских noname-флешек, производители которых «кладут» на соответствие девайса всевозможным рекомендациям и стандартам, такой серийник будет меняться в зависимости от USB-порта, в который ты подключил устройство, и, разумеется, положения звезд на небе. Если твою флешку безопасники пропишут в белый список только на одном порте, то на другом ты ее использовать не сможешь.
Вот пример такой флешки:
Первое, что бросается в глаза, — серийник содержит несколько амперсандов. На самом деле у этой флешки нет серийника вообще. Когда & — второй символ серийного номера, это означает, что система каждый раз при подключении генерирует псевдосерийник сама, то есть он динамический. Проверим это, просто подключив флешку в другой порт:
Как ты видишь, при изменении порта в серийнике меняется номер этого порта ( &2 в конце превратилось в &1 ). Так что нужно или добавлять в список номер такой флешки на всех портах, или использовать только выделенный порт для ее подключения.
В некоторых СЗИ используют иные свойства флешек. Все доступные свойства ты можешь просмотреть, щелкнув на значке флешки правой клавишей мыши и выбрав в контекстном меню «Свойства → Оборудование → Сведения». В выпадающем списке наиболее полезные сведения содержатся в строках «Понятное имя», «Путь к экземпляру устройства» и «Родитель» (тот же DeviceID).
Свойства устройства → Путь к экземпляру устройства
У китайских флешек эти параметры меняются, как генератор случайных чисел. Например, путь к экземпляру устройства для первого и второго USB-порта выглядит так:
Для нормальной флешки здорового человека данный идентификатор стабилен:
- JETFLASH — производитель;
- TRANSCEND_8GB — название устройства;
- 1100 — номер ревизии;
- BBPIX7EB2VMBFI48 — серийный номер.
У разных флешек из одной партии меняться будет только серийник.
Как палят?
Давай посмотрим, какими способами админы могут выявить, что к системе подключили флешку. В Windows имеется целый пул средств для отслеживания подключаемых носителей. Если хочешь поковыряться сам — смотри вот эти две ветки реестра:
Там хранится список идентификаторов подключаемых устройств, при этом информация в этих ветвях реестра не затирается стандартными процедурами в планировщике задач винды, то есть данные хранятся сколь угодно долго.
Если ты предпочитаешь готовые решения, то к твоим услугам классический 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, ты сможешь давать вторую жизнь лицензионным прогам, которые жалуются на смену жестких дисков и не хотят работать.
warning
Манипуляции представлены для демонстрации. Применяя их, будь осторожен и внимателен, поскольку при некорректном подборе команд, программ, прошивок ты рискуешь окирпичить флешку, за что мы, конечно, ответственности не несем. Не стоит упоминать, что на тестируемых флешках не следует держать ценную инфу.
Вариант 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.
Продолжение доступно только участникам
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Борис Осепов
Специалист ИБ. Увлекаюсь средствами анализа вредоносного ПО. Люблю проверять маркетинговые заявления на практике :)
Александр Мессерле
ИБтивист. Исследую в ИБ то, что движется. То, что не движется, кладу в песочницу.
Читайте также: