Перейти к основному содержимому

7.07. Вирусы и вредоносные программы

Разработчику Инженеру

Вирусы и вредоносные программы

Вредоносное программное обеспечение (malware — от англ. malicious software) представляет собой класс программ, разработанных с целью нанесения ущерба пользователям, устройствам или информационным системам. В отличие от легитимного ПО, вредоносные программы не несут прямой функциональной ценности для пользователя и зачастую скрываются под видом полезных или безобидных компонентов. Их цель — компрометация конфиденциальности, целостности и доступности данных, вычислительных ресурсов или сетевой инфраструктуры.

Исторически первым проявлением вредоносного ПО считается программа Creeper, появившаяся в 1971 году в сети ARPANET. Она не имела деструктивных функций, но демонстрировала возможность автономного перемещения между узлами — ключевой признак, лежащий в основе большинства современных угроз. С тех пор вредоносное ПО эволюционировало от простых экспериментальных образцов до сложных, модульных и целенаправленных систем, способных обходить многоуровневые механизмы защиты.

Данная глава посвящена классификации, функциональным особенностям и методам реализации различных типов вредоносного ПО, а также специфике их поведения в разных операционных системах и средах. Особое внимание уделено механизмам сокрытия, перехвата системных вызовов и маскировки под легитимные компоненты операционной системы.


1. Вирусы: определение и классификация

Под термином «компьютерный вирус» в классическом понимании подразумевается саморазмножающаяся программа, внедряющая свой код в другие исполняемые файлы или системные структуры с целью дальнейшего распространения. Вирус не способен к автономному запуску — он требует активации через запуск заражённого файла или выполнение определённого условия.

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

  • Самокопирование: внедрение копии кода в другие объекты.
  • Зависимость от носителя: требует запуска хост-программы.
  • Условность действия: часто содержит логику активации по времени, событию или внешнему триггеру.

Современное вредоносное ПО редко ограничивается чисто вирусной моделью. Часто используется гибридный подход: вирус комбинируется с червём, трояном или руткитом для расширения функциональности.

Виды вирусов

  1. Файловые вирусы
    Инфицируют исполняемые файлы (обычно .exe, .dll, .com). При запуске заражённого файла срабатывает вирусный код, после чего он может заражать другие файлы в системе. Некоторые используют метод перезаписи кода, другие — добавление кода в конец или начало секции, третьи — инъекцию через ресурсы.

  2. Загрузочные вирусы (Boot-sector viruses)
    Поражают загрузочный сектор диска (MBR или VBR). Активируются до полной загрузки операционной системы, что делает их особенно труднообнаружимыми. Современные ОС с UEFI Secure Boot значительно ограничили распространение таких угроз, но они не исчезли полностью.

  3. Макровирусы
    Распространяются через макросы в документах (Microsoft Word, Excel, PDF с JavaScript). Активируются при открытии документа и выполнении макроса (часто с запросом разрешения от пользователя, который может быть обманут социальной инженерией).

  4. Полиморфные и метаморфные вирусы
    Полиморфные вирусы шифруют свой код и используют переменный ключ расшифровки, что затрудняет сигнатурное обнаружение. Метаморфные вирусы не просто шифруются — они изменяют свою структуру на уровне инструкций, сохраняя логику выполнения. Это делает их крайне трудными для анализа статическими методами.

  5. Резидентные и нерезидентные вирусы
    Резидентные вирусы загружаются в память и остаются активными в течение всего сеанса работы, перехватывая системные вызовы для заражения файлов «на лету». Нерезидентные активны только в момент запуска хоста и не остаются в памяти после завершения.


2. Фишинг: социальная инженерия как вектор атаки

Фишинг (от англ. phishing) не является вирусом в техническом смысле, но представляет собой ключевой метод доставки вредоносного ПО и кражи учетных данных. Фишинговые атаки основаны на манипуляции восприятием пользователя: жертве предлагается перейти по ссылке, открыть вложение или ввести данные на поддельном сайте, имитирующем легитимный сервис (например, банк, электронная почта, облачное хранилище).

Современные фишинговые кампании часто включают:

  • Использование доменов, визуально похожих на оригинальные (typosquatting).
  • Генерацию поддельных SSL-сертификатов (через Let's Encrypt и аналоги).
  • Встраивание вредоносного кода в HTML-вложения или скрипты.
  • Эмуляцию интерфейса двухфакторной аутентификации для перехвата временных кодов.

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


3. Особенности вредоносного ПО в различных операционных системах

Windows

Windows остаётся основной мишенью для разработчиков вредоносного ПО по нескольким причинам:

  • Высокая доля рынка настольных систем.
  • Богатая экосистема легитимных приложений, которые можно имитировать.
  • Сложная, но хорошо изученная архитектура API, позволяющая глубокую интеграцию.

Вредоносные программы под Windows активно используют:

  • COM/ActiveX для автоматизации и выполнения кода в контексте браузера.
  • Реестр Windows для обеспечения автозагрузки.
  • Windows Script Host (WSH) для выполнения .vbs, .js скриптов без компиляции.
  • Scheduled Tasks для планирования периодических действий.

Особое внимание уделяется маскировке под системные процессы, что рассматривается далее.

Linux

Хотя Linux традиционно считается более защищённой системой, вредоносное ПО для неё существует и развивается, особенно в контексте серверных и встраиваемых устройств.

Особенности:

  • Отсутствие единого GUI снижает эффективность фишинга, но не исключает его полностью.
  • Модель прав доступа (разделение root/пользователь) усложняет системную компрометацию, но не предотвращает пользовательские атаки.
  • Вредоносное ПО часто распространяется через:
    • Скомпрометированные репозитории или сторонние пакеты.
    • Эксплуатацию уязвимостей в веб-сервисах (например, в CMS, SSH-брут).
    • Ботнеты на основе скомпрометированных IoT-устройств (Mirai и его производные).

Linux-вирусы редко используют саморазмножение в классическом смысле, но активно применяют:

  • Подмену бинарных файлов (/bin, /usr/bin).
  • Загрузку через cron или systemd юниты.
  • Инъекцию в процессы через LD_PRELOAD.

Мобильные устройства (Android / iOS)

Android — наиболее уязвимая платформа из-за открытости экосистемы и возможности установки приложений из сторонних источников (APK). Распространённые векторы:

  • Троянские приложения в сторонних магазинах.
  • Злоупотребление разрешениями (например, BIND_ACCESSIBILITY_SERVICE для автоматизации).
  • Скрытые майнеры и рекламные SDK с вредоносным поведением.

iOS в силу своей sandbox-архитектуры и строгой верификации App Store значительно менее подвержена классическим вирусам. Однако возможны:

  • Атаки через enterprise-сертификаты.
  • Эксплуатация zero-day уязвимостей (например, в WebKit).
  • Фишинг через iMessage или Safari.

4. Руткиты и перехват системных функций

Руткит (rootkit) — это класс вредоносного ПО, основная цель которого состоит не в причинении прямого вреда, а в обеспечении скрытого, устойчивого присутствия в системе. Термин происходит от unix-терминов root (учётная запись с максимальными привилегиями) и kit (набор инструментов). Современные руткиты не ограничиваются Unix-подобными системами и широко распространены в Windows-среде.

Руткиты делятся на два основных типа по уровню внедрения:

4.1. User-Mode руткиты

Работают в контексте пользовательских процессов и не требуют привилегий ядра. Их основной механизм — перехват вызовов API. Это достигается следующими способами:

  • Подмена импортируемых функций в IAT (Import Address Table)
    При загрузке исполняемого файла ОС заполняет таблицу адресов внешних функций из DLL. Руткит может изменить указатели в IAT, направив вызовы на собственные реализации («хуки»).

  • Inline-хукинг
    Непосредственная модификация кода целевой функции в памяти: первые байты заменяются на инструкцию перехода (JMP) к вредоносной подпрограмме. После выполнения логики перехвата управление может быть передано оригинальной функции.

  • DLL-инъекция
    Принудительная загрузка вредоносной библиотеки в адресное пространство легитимного процесса. Это позволяет исполнять код в контексте доверенного приложения (например, explorer.exe или svchost.exe).

Часто используемые для перехвата системные DLL в Windows:

  • kernel32.dll — базовые функции работы с процессами, потоками, памятью, файлами.
  • ntdll.dll — низкоуровневые нативные вызовы ядра Windows NT (Nt* функции).
  • user32.dll — управление окнами, вводом с клавиатуры и мыши.
  • advapi32.dll — безопасность, реестр, службы.
  • ws2_32.dll — сетевые сокеты (Winsock).
  • urlmon.dll — загрузка URL, часто используется для C2-коммуникации.
  • netapi32.dll — функции сетевого администрирования (например, для распространения по локальной сети).

Кейлоггеры — частный случай User-Mode руткита. Они перехватывают нажатия клавиш через GetAsyncKeyState, SetWindowsHookEx или прямой доступ к драйверам HID. Современные реализации избегают прямого логгирования, отправляя данные в шифрованном виде на удалённый сервер.

4.2. Kernel-Mode руткиты

Работают на уровне ядра ОС и обладают полным контролем над системой. Для их загрузки требуется:

  • Подписанный драйвер (в современных версиях Windows с включённой Secure Boot и DSE).
  • Эксплуатация уязвимости в ядре (например, через уязвимый легитимный драйвер).

Kernel-Mode руткиты могут:

  • Скрывать процессы, файлы, сетевые соединения, драйверы.
  • Подменять системные вызовы через SSDT (System Service Descriptor Table) хуки (в x86) или IRP (I/O Request Packet) перехват.
  • Модифицировать структуры ядра, такие как EPROCESS, чтобы исключить процесс из списка задач.

Поскольку такие руткиты работают на том же уровне, что и антивирусные решения, их обнаружение требует специализированных средств (например, гипервизоров безопасности вроде Hyper-V-based Virtualization-Based Security в Windows 10/11).


5. Маскировка под системные процессы и службы

Вредоносное ПО часто маскируется под легитимные системные компоненты Windows. Это позволяет:

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

Распространённые цели маскировки:

Процесс / ФайлНазначениеКак используется злоумышленниками
svchost.exeХост для системных службЗапуск вредоносной службы под этим именем; подмена реального бинарника
lsass.exeУправление аутентификациейПодмена для кражи хэшей NTLM (Pass-the-Hash атаки)
services.exeДиспетчер службСоздание фальшивой копии для управления вредоносными службами
smss.exeСессионный менеджерРедко, но используется в загрузочных руткитах
conhost.exeХост консолиИнъекция для скрытого запуска командной строки
dwm.exeДиспетчер окон рабочего столаИспользуется как «тихий» контейнер для вредоносного кода
RuntimeBroker.exeУправление разрешениями UWPМаскировка под UWP-процесс для обхода песочницы

Методы подмены:

  • Размещение поддельного исполняемого файла в нестандартной директории с тем же именем (например, C:\Windows\Temp\svchost.exe).
  • Использование доверенной цифровой подписи, украденной в результате компрометации разработчика.
  • DLL-подмена: размещение вредоносной DLL рядом с легитимным EXE, который загружает её при запуске (DLL Search Order Hijacking).

Важно: легитимные системные файлы Windows всегда находятся в строго определённых каталогах (%SystemRoot%\System32, %SystemRoot%\SysWOW64), имеют цифровую подпись Microsoft и соответствующие атрибуты (например, Protected Process Light для lsass.exe в современных версиях).


6. Скрытие файлов и обход стандартных средств просмотра

Вредоносные программы применяют разнообразные техники для сокрытия своего присутствия на диске:

6.1. Атрибуты файловой системы

  • Установка атрибутов Hidden и System — базовый метод, легко обнаруживается при настройке Проводника на показ скрытых файлов.
  • Использование альтернативных потоков данных (ADS — Alternate Data Streams) в NTFS. Файл может содержать скрытый поток (malware.exe:hidden.txt), недоступный через стандартные утилиты.

6.2. Длинные или некорректные имена

  • Использование имён длиннее 255 символов (ограничение Win32 API), что делает файл недоступным для большинства программ.
  • Включение недопустимых символов (например, C:\malware\<NUL>.exe) — ОС может не позволить создать такой файл напрямую, но при копировании из образа диска или через низкоуровневые вызовы он может существовать.

6.3. Ярлыки-обманки

  • Создание ярлыка с именем document.pdf.lnk, который визуально отображается как PDF-файл (если расширения скрыты). При запуске выполняется вредоносный скрипт.
  • Использование иконок, имитирующих стандартные типы файлов.

6.4. Вручную найти вредонос: практические советы

  • Использовать утилиты с поддержкой Win32 Long Path (robocopy, PowerShell с \\?\ префиксом).
  • Просмотр ADS через dir /R или Get-Item -Stream *.
  • Анализ с помощью Process Monitor (ProcMon) от Sysinternals: фильтрация по операциям CreateFile, RegOpenKey.
  • Проверка целостности системных файлов через sfc /scannow и DISM.
  • Сравнение контрольных сумм системных файлов с эталонными (например, из репозитория Microsoft).

7. ActiveX и другие устаревшие, но опасные технологии

ActiveX — технология компонентного программирования, разработанная Microsoft в середине 1990-х годов. Первоначально задумывалась как способ расширения функциональности веб-приложений за счёт выполнения нативного кода в контексте браузера Internet Explorer. ActiveX-элементы представляют собой COM-объекты, которые могут иметь полный доступ к системе при соответствующем уровне доверия.

Угрозы, связанные с ActiveX:

  • Выполнение произвольного кода: при загрузке веб-страницы может быть инициирована установка и запуск ActiveX-контрола без явного согласия пользователя (особенно в старых версиях IE).
  • Отсутствие песочницы: в отличие от современных веб-API, ActiveX не изолирован от ОС.
  • Повторное использование уязвимых контролов: многие легальные ActiveX-компоненты содержали критические уязвимости (например, переполнение буфера), которые эксплуатировались в атаках drive-by download.

Хотя Internet Explorer официально прекратил поддержку ActiveX (начиная с Microsoft Edge на базе Chromium), унаследованные системы по-прежнему используют IE в режиме совместимости, особенно в корпоративной среде. Кроме того, некоторые десктопные приложения (например, старые ERP- или BPM-системы) до сих пор полагаются на ActiveX для интеграции с оборудованием или локальными ресурсами.

Современные атаки редко используют ActiveX напрямую, но анализ исторических инцидентов показывает, что именно эта технология стала вектором для множества эпидемий (например, Conficker использовал уязвимость в ActiveX-компоненте Windows Shell).

Альтернативные устаревшие технологии с аналогичными рисками:

  • Java-апплеты — выполнялись в браузере до отключения в большинстве сред.
  • Microsoft Silverlight — имел ограниченную изоляцию и использовался для обхода CORS и других web-ограничений.
  • VBScript / JScript через WSH — до сих пор могут запускаться из проводника при открытии .vbs, .js файлов.

8. Удалённый захват компьютера и «призраки»

Термин «удалённый захват» обозначает несанкционированное получение полного контроля над устройством жертвы. Такие атаки реализуются с помощью Remote Access Trojan (RAT) — троянской программы с функциями удалённого администрирования.

Характеристики современных RAT:

  • Полный контроль над клавиатурой, мышью, экраном.
  • Возможность включения микрофона и веб-камеры.
  • Перехват буфера обмена, скриншоты, запись сессий.
  • Модульная архитектура: загрузка дополнительных плагинов по запросу.

Известные примеры: DarkComet, NjRAT, QuasarRAT, AsyncRAT. Многие из них имеют открытое исходное код и активно модифицируются злоумышленниками.

«Призраки»

Этот термин не имеет строгого технического определения, но в сообществе исследователей часто используется для обозначения вредоносных программ с крайне высоким уровнем скрытности, которые:

  • Не оставляют следов на диске (fileless malware).
  • Работают исключительно в оперативной памяти.
  • Используют легитимные системные утилиты (например, PowerShell, WMI, regsvr32.exe) для выполнения полезной нагрузки (living-off-the-land binaries — LOLBins).

Такие угрозы особенно опасны в корпоративной среде, где стандартные решения EDR (Endpoint Detection and Response) могут не фиксировать аномалии при использовании доверенных инструментов. Обнаружение требует анализа поведения: необычные цепочки вызовов, нестандартные параметры для wmic, неожиданные PowerShell-сценарии в памяти.


9. Майнеры: скрытая эксплуатация ресурсов

Криптомайнеры — класс вредоносного ПО, использующий вычислительные ресурсы устройства для добычи криптовалют (изначально Bitcoin, впоследствии — Monero, Ethereum и др.). После снижения прибыльности PoW-майнинга для централизованных пулов, злоумышленники перешли к массовой компрометации конечных устройств.

Типы майнеров:

  • Инсталлируемые: полноценные бинарники, устанавливающиеся как служба или процесс.
  • Браузерные: JavaScript-скрипты (например, на базе Coinhive), выполняющие майнинг в фоне вкладки.
  • Облачные: майнеры, размещённые на скомпрометированных серверах или виртуальных машинах (часто в облаках AWS, Azure).

Признаки заражения:

  • Стойкое повышение загрузки CPU/GPU.
  • Перегрев устройства, шум вентиляторов.
  • Снижение производительности ОС.
  • Неизвестные процессы в диспетчере задач с именами вроде xmrig, cpuminer.

Современные майнеры активно применяют антианализ: проверка на виртуальную машину, отключение при обнаружении отладчика, шифрование C2-каналов.


10. Рекламное и потенциально нежелательное ПО (Adware / PUP)

Adware (рекламное ПО) изначально не предназначено для кражи данных или разрушения системы. Его цель — монетизация через показ рекламы. Однако граница между adware и вредоносным ПО размыта:

  • Adware часто устанавливается без явного согласия (в комплекте с другими программами).
  • Нарушает приватность: отслеживает поведение пользователя, историю браузера.
  • Может понижать безопасность: отключает защиту браузера, добавляет ненадёжные сертификаты.
  • Некоторые образцы внедряют бэкдоры или загружают дополнительные угрозы.

PUP (Potentially Unwanted Program) — более широкая категория, включающая:

  • Панели инструментов браузера.
  • Сомнительные «оптимизаторы» системы.
  • Поддельные антивирусы (scareware).

Такое ПО часто распространяется через:

  • Фальшивые установщики (например, «видеокодеки», «проигрыватели»).
  • Рекламные сети с низкой репутацией.
  • Торрент-трекеры и файлообменники.

Хотя формально PUP может быть легальным (имеет EULA), его поведение навязчиво и дезинформирует пользователя, что ставит его в серую зону этики и безопасности.


Исторические кейсы вредоносного ПО

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


ILOVEYOU (2000)

Тип: Червь с элементами социальной инженерии
Платформа: Windows
Вектор распространения: Вложение электронной почты (LOVE-LETTER-FOR-YOU.TXT.vbs)

Несмотря на простоту, ILOVEYOU стал одним из самых разрушительных инцидентов своего времени. Вредонос представлял собой VBScript-файл, маскирующийся под текстовый документ. При запуске скрипт:

  • Перезаписывал файлы с расширениями .jpg, .mp3 и др.
  • Отправлял копию себя всем контактам из адресной книги Outlook.
  • Загружал дополнительный компонент для кражи паролей.

Особенности:

  • Использование доверия к формату «.txt» при скрытых расширениях в Windows.
  • Отсутствие цифровой подписи или обфускации — полагался исключительно на человеческий фактор.
  • Ущерб оценивался в миллиарды долларов; инцидент ускорил внедрение политик блокировки скриптов в корпоративных почтовых шлюзах.

Conficker (2008)

Тип: Червь с элементами ботнета и руткита
Платформа: Windows (XP–7)
Векторы: Уязвимость в RPC (MS08-067), автозапуск съёмных носителей, подбор паролей в домене

Conficker продемонстрировал высокий уровень инженерной сложности:

  • Использовал шифрование и домен-генерирующий алгоритм (DGA) для связи с C2-серверами.
  • Отключал службы обновления Windows и антивирусные продукты.
  • Применял мутацию кода (полиморфизм) и проверку среды выполнения.

Архитектурные инновации:

  • Поддержка peer-to-peer протокола для обмена командами между узлами ботнета.
  • Использование цифровой подписи (украденной у Realtek) для загрузки драйверов.
  • Разделение на несколько версий (A–E), каждая из которых вносила улучшения в устойчивость к анализу.

Conficker до сих пор считается образцом «профессионально разработанного» вредоносного ПО. Хотя его прямой вред был ограничен, он создал ботнет из десятков миллионов устройств.


Stuxnet (2010)

Тип: Целевая кибер-физическая атака (cyber-physical weapon)
Платформа: Windows + Siemens PLC (Programmable Logic Controller)
Векторы: Заражение через USB-носители, эксплуатация четырёх zero-day уязвимостей

Stuxnet был разработан, вероятно, государственными структурами (США и Израиль) для саботажа иранской ядерной программы. Его отличительная черта — воздействие на физическое оборудование.

Технические особенности:

  • Использовал уязвимости в lnk-файлах (CVE-2010-2568) для автозапуска с USB.
  • Перехватывал и модифицировал код, загружаемый в промышленные контроллеры Siemens S7.
  • Подделывал данные с датчиков, чтобы скрыть разрушение центрифуг.

Stuxnet стал первым доказанным случаем, когда вредоносное ПО напрямую повлияло на инфраструктуру критического назначения. Он лег в основу концепции APT (Advanced Persistent Threat) и изменил подход к защите OT/ICS-систем.


NotPetya (2017)

Тип: Вымогательское ПО с червеподобным распространением
Платформа: Windows
Векторы: Компрометация украинского ПО для бухгалтерии (M.E.Doc), эксплуатация EternalBlue (MS17-010)

Хотя NotPetya внешне напоминал ransomware (шифровал MBR и требовал выкуп в Bitcoin), его истинная цель — деструктивное воздействие. Шифрование было необратимым: ключи не сохранялись.

Методы распространения:

  • Использовал EternalBlue (утечка инструментов NSA) для горизонтального перемещения по сети.
  • Применял инструменты PsExec и WMIC для удалённого запуска.
  • Атаковал сервисы репликации домена через lsass.exe.

Ущерб превысил $10 млрд; пострадали FedEx, Maersk, Merck и другие транснациональные компании. NotPetya показал, как локальная атака может вызвать глобальные цепные реакции в цифровой экономике.


Emotet (2014–2021)

Тип: Модульный троян, loader, ботнет
Платформа: Windows
Векторы: Фишинговые вложения (макросы в Word), распространение через заражённые устройства в сети

Изначально созданный как банковский троян, Emotet эволюционировал в «вредонос-как-услуга» (Malware-as-a-Service). Он не наносил прямого вреда, но:

  • Собирал учётные данные и сессии.
  • Загружал вторичные угрозы: TrickBot, QakBot, Ryuk.

Технические достижения:

  • Использовал шифрование TLS с жёстко закодированными сертификатами.
  • Применял антиотладку и виртуализацию.
  • Динамически обновлял список C2-серверов через зашифрованные конфигурации.

Emotet был деактивирован в январе 2021 года в результате международной операции (Europol, ФБР, японская полиция). Его архитектура остаётся эталоном для современных модульных угроз.


Mirai (2016)

Тип: Ботнет для DDoS-атак
Платформа: Linux (встраиваемые устройства, IoT)
Векторы: Брутфорс по умолчанию заданным учётным данным (admin:admin, root:12345 и т.п.)

Mirai компрометировал миллионы маршрутизаторов, IP-камер и DVR-устройств, создав самый мощный на тот момент ботнет.

Особенности:

  • Исходный код опубликован в открытых источниках, что породило сотни клонов.
  • Использовал простейшие методы, но масштаб компенсировал низкую сложность.
  • Вызвал масштабные DDoS-атаки против DNS-провайдера Dyn, нарушив работу Twitter, Netflix, Reddit.

Mirai обнажил критическую уязвимость IoT-экосистемы: отсутствие базовой гигиены безопасности в устройствах массового потребления.