Защита флешки от вирусов. Autorun.inf и вирусы.
Autorun.inf — файл, используемый для автоматического запуска приложений и программ на носителях информации в среде операционной системы Microsoft Windows (начиная с версии Windows 95). Этот файл должен находиться в корневом каталоге файловой системы устройства, для которого осуществляется автозапуск. Файл делится на структурные элементы — блоки. Название блоков пишется в квадратных скобках. Описание блоков содержит пары параметр→значение.
Исходное предназначение
Автоматический запуск приложения позволил чрезвычайно упростить действия пользователя при установке и запуске программного обеспечения и драйверов устройств.
Защита от копирования
Кроме того, некоторые фирмы, производящие диски с аудиосодержимым, пытались применить данную технологию для защиты содержимого дисков от копирования, путём автозапуска программы, препятствующей копированию.
Безопасность
В настоящее время файл autorun.inf широко используется для распространения компьютерных вирусов через flash-накопители и сетевые диски. Для этого авторы вирусов прописывают имя исполняемого файла с вредоносным кодом в параметр open. При подключении заражённого flash-накопителя Windows запускает записанный в параметре «open» файл на исполнение, в результате чего происходит заражение компьютера.
Находящийся в оперативной памяти заражённого компьютера вирус периодически сканирует систему с целью поиска новых дисков, и при их обнаружении (при подключении другого flash-накопителя или сетевого диска) создаёт на них autorun.inf со ссылкой на копию своего исполняемого файла, обеспечивая таким образом своё дальнейшее распространение.
В некоторых случаях в autorun.inf записывается не путь к исполняемому файлу, вирус полностью заменяет файл своим кодом не в текстовом виде и не требует дополнительных файлов.
Отключение автозапуска
Групповая политика (gpedit.msc)
Настройка автозапуска в групповой политике находится в ветке «Конфигурация компьютера — Административные шаблоны — Система». Пункт «Отключить автозапуск» имеет три значения: не задан, включён, отключен. Задание значения «включён» позволяет выбрать тип дисков:
- CD-дисководы (включает: неизвестные, CD, сетевые и съёмные диски),
- все дисководы.
(ветвь HKCU), Policies
За включение и отключение автозапуска для разных типов носителей отвечают ключи реестра:
[HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer] "NoDriveTypeAutoRun"=dword:000000ff [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer] "NoDriveTypeAutoRun"=dword:000000ff
Возможные значения данного ключа:
- 0x01 (DRIVE_UNKNOWN) — отключить автозапуск на приводах неизвестных типов (тип которого не может быть определён)
- 0x02 (DRIVE_NO_ROOT_DIR) — отключить автозапуск на дисках которым не назначена буква (не примонтированных в корень)
- 0x04 (DRIVE_REMOVABLE) — отключить автозапуск съёмных устройств (дискеты, флешки)
- 0x08 (DRIVE_FIXED) — отключить автозапуск НЕсъемных устройств (жёсткий диск)
- 0x10 (DRIVE_REMOTE) — отключить автозапуск сетевых дисков
- 0x20 (DRIVE_CDROM) — отключить автозапуск CD-приводов
- 0x40 (DRIVE_RAMDISK) — отключить автозапуск на виртуальном диске (RAM-диск)
- 0x80 (DRIVE_FUTURE) — отключить автозапуск на приводах неизвестных типов (будущие типы устройств)
- 0xFF — отключить автозапуск вообще всех дисков.
Значения могут комбинироваться суммированием их числовых значений. Допустимые значения ключа NoDriveTypeAutoRun описаны в KB967715.
Следует отметить, что запрет автозапуска при помощи вышеприведённого ключа реестра не устраняет опасности заражения компьютера. Это связано с тем, что значение ключа влияет только на исполнение autorun.inf при определении системой подключенного носителя, но не запрещает исполнение при двойном клике на значке носителя. Таким образом, даже если функция автозапуска отключена, заражение происходит при попытке пользователя открыть подключённый диск для просмотра. Microsoft выпустила исправление, описанное в, полностью решающее данную проблему.
(ветвь HKLM), подмена autorun.inf файла
Альтернативный, более радикальный, способ запрета обработки autorun.inf:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionIniFileMappingAutorun.inf] @="@SYS:DoesNotExist"
По сути он подменяет содержимое файла autorun.inf значением из реестра, которое нарочно задаётся пустым/неверным. Это приводит к тому, что если на диске и есть файл autorun.inf, то он воспринимается как пустой.
Указанный способ следует считать самым надёжным. Простой способ его использования заключается в создании соответствующего reg-файла, запускаемого на компьютере.[2]
(ветвь HKLM), запрет автостарта всех типов файлов
Возможное решение запрета автостарта всех типов файлов (Только автостарт, обработка двойного клика и контекстного меню будет произведена):
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerAutoplayHandlersCancelAutoplayFiles] "*.*"=""
Структурные блоки файла
Блок [autorun]
Параметр action
Параметр action отвечает за отображение текста в меню автозапуска (используется редко).
Пример:
[autorun] action=Текст Заголовка
Допустимо указания текста из библиотеки dll:
[autorun] action=[путь]имя_файла,-IDресурса
Параметр icon
Параметр icon назначает файл иконки для устройства.
Пример:
[autorun] icon=имя_ресурса[,номер]
или
[autorun] icon=файл.ico
Параметр Defaulticon
Команда Defaulticon отличается лишь тем, что позволяет задавать ещё и путь к файлу значка:defaulticon=iconpath[,index]
В случае использования двух команд — icon и defaulticon система обрабатывает только defaulticon.
Параметр label
Этот параметр служит для указания «метки тома». Если применить метку label к диску, то реальная метка тома будет скрыта (её можно посмотреть в свойствах).
[autorun] label=ЛюбойТекст
Параметр open
Параметр open содержит путь к файлу программы, которая будет запускаться при подключении устройства или попытке доступа к нему (открытие двойным щелчком). Этот параметр не следует использовать вместе с shellexecute, возможно возникновение конфликта!
Синтаксис:
[autorun] ... open=[путь]файл [параметр1 [параметр2] ...] ...
Параметр UseAutoPlay
Этот параметр совместим только с ОС MS Windows XP и работает не только на оптических дисках, но и на других сменных носителях. Допустимое значение одно — 1. Используется для включения обработки файла autoplay. Используется очень редко, в основном для автозапуска с flash-дисков без запросов на выбор действия (открыть в проводнике, ничего не делать и т. д.).
Синтаксис:
[autorun] ... UseAutoPlay=1 ...
Параметр shellexecute
Файл, указанный в этом параметре, открывается при автозапуске той программой, которая ассоциирована с этим типом файлов в системном реестре Windows.
Этот параметр можно использовать вместо параметра «open», использовать эти два параметра вместе не рекомендуется.
Данный параметр корректно работает на всех версиях ОС семейства Windows. В ОС MS Windows Vista диск с этим параметром сразу определяется как диск с программным обеспечением или играми, и для него вызывается соответствующее меню.
Пример:
[AutoRun] shellexecute="Readme.txt"
В данном примере файл «.txt» будет открыт программой, которую пользователь по умолчанию использует для открытия файлов «.txt»
Параметр shell
shell=ключ указывает команду по умолчанию (default) для контекстного меню диска.
shellключ задаёт пункт контекстного меню.
shellключcommand задаёт исполняемую команду для пункта меню «ключ».
Пример:
[autorun] shellключевое_словоcommand=Файл.exe shellключевое_слово=Заголовок_меню
Блок [Content]
В этом блоке используется всего три ключа: MusicFiles, PictureFiles, VideoFiles, что соответствует типам данных на носителе: музыка, изображения, видео.
Значениями для этих ключей могут быть только логическое true (истина) или false (ложь).
Истина задаётся любым из данных значений: 1, y, yes, t, true.
Ложь задаётся как: 0, n, no, f, false.
Пример:
[Content] MusicFiles=Y PictureFiles=0 VideoFiles=false
Блок [ExclusiveContentPaths]
При попытке определить тип содержимого на данном носителе информации, поиск файлов будет производиться только в папках, прописанных в этом блоке. Путь задаётся в произвольном формате, приветствуются относительные пути.
Пример:
[ExclusiveContentPaths]
музыка
музыкамоя_музыка
фильмы
Данный блок поддерживается только ОС MS Windows Vista.
Блок [IgnoreContentPaths]
При попытке определить тип содержимого на данном носителе информации, поиск файлов не будет производиться в папках, указанных в этом блоке, и всех их подпапках. Путь задаётся в произвольном формате, приветствуются относительные пути. Пример:
[IgnoreContentPaths]
Portable
Documents
Install
Данный блок поддерживается только ОС MS Windows Vista.
Блок [DeviceInstall]
Используется один параметр DriverPath, который указывает путь к драйверам. Используется очень редко и только в MS Windows XP.
[DeviceInstall] DriverPath=driversvideo DriverPath=driversaudio
Пример листинга файла autorun.inf
[autorun] ; точка с запятой - это комментарий (также комментариями являются любые сторонние символы и неизвестные команды) shellexecute=readme.txt action=Studio icon=usb.ico description=Inc_drive label=Inc_drive shellabout=ReadMe shellaboutcommand=Notepad.exe readme.txt [Content] MusicFiles=false PictureFiles=false VideoFiles=false [ExclusiveContentPaths] MultimediaVideo MultimediaMusic MultimediaPictures [IgnoreContentPaths] Portable Documents Install