Найти в Дзене

Как я создавал USB Worm Cleaner — история разработки полезного инструмента для борьбы с вирусами

Несколько месяцев назад я столкнулся с неприятной ситуацией — после подключения флешки к компьютеру начали появляться странные файлы, а антивирус молчал. Как оказалось, это был классический USB-червь, распространяющийся через файлы .pif и папки Winset. Стандартные антивирусы часто пропускают такие угрозы, поэтому я решил создать собственное решение. Так родился USB Worm Cleaner — скрипт для автоматического поиска и удаления подобных вредоносных программ.
Ссылка на сам скрипт в конце статьи. USB-черви — особый класс вредоносного ПО, которое: Основные признаки заражения: Прежде чем писать код, я изучил: Это помогло создать "цифровой отпечаток" угрозы для последующего поиска. Первая версия скрипта содержала: vbs ' Простейший поиск .pif файлов
For Each file In folder.Files
If LCase(Right(file.Name, 4)) = ".pif" Then
file.Delete
End If
Next Базовый функционал работал, но требовал улучшений: vbs Function IsAdmin()
On Error Resume Next
Dim shell : Set shell = CreateO
Оглавление

Введение

Несколько месяцев назад я столкнулся с неприятной ситуацией — после подключения флешки к компьютеру начали появляться странные файлы, а антивирус молчал. Как оказалось, это был классический USB-червь, распространяющийся через файлы .pif и папки Winset. Стандартные антивирусы часто пропускают такие угрозы, поэтому я решил создать собственное решение. Так родился USB Worm Cleaner — скрипт для автоматического поиска и удаления подобных вредоносных программ.
Ссылка на сам скрипт в конце статьи.

Проблема, которую решает скрипт

USB-черви — особый класс вредоносного ПО, которое:

  1. Распространяется через съемные носители
  2. Создает скрытые копии оригинальных файлов
  3. Заменяет их на вредоносные исполняемые файлы
  4. Часто обходит защиту стандартных антивирусов

Основные признаки заражения:

  • Появление файлов .pif, .vbs (help.vbs, install.vbs, move.vbs)
  • Папки Winset на флешках и в временных директориях
  • Странные ярлыки, ссылающиеся на скрипты
  • Скрытие оригинальных файлов и папок

Этапы разработки

1. Исследование и анализ угрозы

Прежде чем писать код, я изучил:

  • Как работают подобные черви
  • Какие файлы они создают
  • Куда копируют свои компоненты
  • Как маскируются от обнаружения

Это помогло создать "цифровой отпечаток" угрозы для последующего поиска.

2. Прототипирование базовой функциональности

Первая версия скрипта содержала:

  • Рекурсивный поиск файлов .pif
  • Удаление папок Winset
  • Восстановление скрытых файлов на USB-накопителях

vbs

' Простейший поиск .pif файлов
For Each file In folder.Files
If LCase(Right(file.Name, 4)) = ".pif" Then
file.Delete
End If
Next

3. Добавление безопасности и надежности

Базовый функционал работал, но требовал улучшений:

  • Проверка прав администратора
  • Обработка ошибок при доступе к файлам
  • Пропуск системных папок
  • Логирование операций

vbs

Function IsAdmin()
On Error Resume Next
Dim shell : Set shell = CreateObject("WScript.Shell")
shell.RegRead "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"
IsAdmin = (Err.Number = 0)
On Error GoTo 0
End Function

4. Реализация системы карантина

Основное улучшение — переход от удаления к карантину:

  • Создание специальной папки для подозрительных файлов
  • Сохранение метаданных (оригинальный путь, дата, пользователь)
  • Ограничение максимального размера
  • Автоматическая очистка старых файлов

vbs

Function QuarantineFile(filePath)
' Создание уникального имени в карантине
quarantinePath = QUARANTINE_FOLDER & GenerateUniqueName(filePath)

' Перемещение файла
fso.MoveFile filePath, quarantinePath

' Создание лога с метаданными
CreateMetaFile quarantinePath, filePath)
End Function

5. Дополнительные защитные механизмы

Финальная версия включает:

  • Мониторинг подключения новых USB-устройств
  • Проверку автозагрузки
  • Удаление вредоносных ярлыков
  • Восстановление атрибутов файлов

vbs

Sub MonitorNewUSB(timeout)
' Мониторинг новых дисков через WMI
Set colEvents = objWMI.ExecNotificationQuery( _
"SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE " & _
"TargetInstance ISA 'Win32_LogicalDisk'")

' Обработка новых устройств
Do Until timer > timeout
Set objEvent = colEvents.NextEvent
ProcessNewDrive objEvent.TargetInstance.DeviceID
Loop
End Sub

Особенности финальной версии

  1. Два режима работы:
    Карантин (по умолчанию) — безопасное хранение подозрительных файлов
    Агрессивный — немедленное удаление угроз
  2. Подробное логирование:
    Разные уровни детализации (от debug до critical)
    Автоматическое именование лог-файлов
    Ограничение размера логов
  3. Безопасность:
    Проверка системных папок
    Контроль прав доступа
    Обработка ошибок
  4. Гибкость:
    Настройка через константы
    Возможность расширения списка угроз
    Поддержка добавления новых функций

Как использовать скрипт

  1. Сохраните код как USB_Cleaner.vbs
  2. Запустите от имени администратора
  3. Подключите USB-устройство для автоматической проверки
  4. Просмотрите отчет в лог-файле

Для продвинутых пользователей:

  • Измените SAFE_MODE на False для полного сканирования
  • Настройте уровни логирования через DISPLAY_LEVEL и LOGFILE_LEVEL
  • Отключите карантин (ENABLE_QUARANTINE = False) для немедленного удаления

Заключение

Разработка этого скрипта показала мне, что даже простые инструменты могут эффективно решать конкретные проблемы безопасности. USB Worm Cleaner — это не замена полноценному антивирусу, а специализированное решение для конкретной угрозы. Как и обещал ссылка на скрипт пароль на архив "Cleaner" без кавычек.

Скрипт продолжает развиваться. В планах:

  • Добавление проверки цифровой подписи
  • Интеграция с облачными антивирусными базами
  • Графический интерфейс для менее технических пользователей

Исходный код доступен для изучения и модификации. Надеюсь, этот инструмент будет полезен и другим пользователям, столкнувшимся с аналогичными проблемами.