Разбираемся в названиях вредоносов

Когда антивирус заловит какого-нибудь известного (ему) вредоноса – пишет сразу же какое-нибудь хитрое название, которое и понять-то непросто. Хорошо, если взгляд выцепляет знакомые подстроки типа “Trojan” или “Backdoor”. И куча разных дополнительных строк, префиксов и суффиксов. Попробуем разобраться.

Как вирусы именовали раньше

Удивительно, но раньше существовал целый стандарт именования вирусов – CARO (соглашение принято в 1991 году). Полное название вируса состоит из 4-х частей, разделённых точками (семейство.группа.старшая версия.младшая версия). Каждая часть имеет длину до 20 символов, вместо пробелов – подчёркивание и т.д.

Семейство

  • В качестве семейства не рекомендуется использовать название компаний, торговые марки или имена людей (если только железобетонно не доказано авторство). Избегаются имена, связанные с антивирусным миром.
  • Нежелательно использование существующего семейства, если вирус отличается по функционалу или используемым техникам. Таким образом группировка в семейства осуществляется на основе раскрытого функционала.
  • Нежелательно выделять новое имя семейства, если функционал вируса укладывается в уже существующее.
  • Не используются нецензурные или оскорбительные имена.
  • Нежелательно использование числовых наименований (только временно).
  • Не используются даты, названия дней недели (когда был обнаружен), т.к. позднее в эти семейства могут быть добавлены новые экземпляры.
  • Избегаются географические названия.
  • Все короткие (до 100 байт функционального кода) сгруппированы в семейство “Trivial”. В качестве версии используется размер кодовой секции.
  • Маленькие вирусяки, занимающиеся только распространением могут быть собраны в следующие семейства:
    • SillyC – Нерезидентные, заражают только COM-файлы;
    • SillyE – Нерезидентные, заражают только EXE-файлы;
    • SillyCE – Нерезидентные, заражают и COM- и EXE-файлы;
    • SillyRC – Резидентные, заражают COM-файлы;
    • SillyRE – соответственно, EXE;
    • SillyRCE – соответственно, оба типа файлов.
  • Загрузочные вирусы семейства Trivial, не выполняющие ничего, кроме самовоспроизводства, группируются в два семейства:
    • SillyP – тривиальные загрузочные секторы
    • SillyB – Тривиальные загрузочные секторы DOS

Группа

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

Старший номер версии

Практически всегда это число, которое чаще всего означает длину кодового сегмента вируса. Если размер кодовой базы неизвестен (например, функционал ещё до конца не проанализирован) выделяется порядковый номер (1, 2, 3… и т.д.). Но как я уже обратил внимание, это временное явление и после того, как код будет проанализирован, временный порядковый номер стоит исправить. Либо, если другой существующий идентификатор (буквенно-цифровой) носит более информативный характер для этого класса вируса.

Младший номер версии

В случае, когда вирусы схожи по структуре, имеют одинаковую длину кодового сегмента, но всё-таки несколько отличаются, присваивается дополнительный (младший) номер версии. Особенно характерно это для вирусов, различающихся по версии (патчи). Обычно для присваивания младшего номера используются последовательные буквы латинского алфавита (A, B, C…), но это не жёсткое правило. Если более длинная подстрока лучше описывает ситуацию, предпочтительнее использовать её.

Итак, указанное соглашение рекомендуется производителям антивирусного программного обеспечения для формирования сигнатур в части, касающейся именования вирусов. Приводится такой пример, если антивирусный сканер не может различить две модификации вируса: “Dark_Avenger.2000.Traveller.Copy” и “Dark_Avenger.2000.Traveller.Zopy”, то он должен сообщить об обоих вариантах как “Dark_Avenger.2000.Traveller”

Соответственно, если сканер не дифференцирует “Dark_Avenger.2000.Traveller.*” и “Dark_Avenger.2000.Die_Young”, то он должен сообщить обо всех вариантах как “Dark_Avenger.2000”. Идея понятна, думаю.

Модификаторы

Бывает такое, что вирус принадлежит к определённому семейству, но автор вируса использовал что-то для сокрытия сигнатур – будь то механизм сжатия (компрессор) исполняемых файлов, упаковщик, полиморфный движок и т.д. Само-собой, сути это не меняет, но физически объект уже совершенно другой. Поэтому добавили ещё одно поле (необязательное), которое указывает на способ обфускации. И указанный метод указывается самым последним суффиксом, после двоеточия.

Например, вирус “Pogue” является членом семейства “Gotcha”, но использует полиморфный движок “MtE.0_90”. Поэтому его полное имя должно быть “Gotcha.Pogue: MtE.0_90”.

Разрешается использовать более одного модификатора в полном имени вируса, если вирус использует более одного механизма сокрытия, например “Civil_War.1234.A: TPE .1_3: MtE.1_00: PK”.

Текст соглашения: http://www.caro.org/articles/naming.html

Как вирусы именуют сейчас

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

Тем не менее, появились некоторые общие описательные элементы, например платформа, тип ВПО, семейство, версия, дополнительная информация.

Платформа

В качестве платформы определяется или среда выполнения ВПО (операционная система, архитектура, язык программирования или общий термин). Например: Win32, MSIL (для .NET), Script, Powershell и т.д.

Тип

Тип говорит о поведении вредоносного ПО. Например Trojan (“троянский конь”), Backdoor, Rootkit, Dropper, Downloader, Stealer, Cryptor, Miner и т.д.

Семейство

Компонент семейства вредоносных программ в имени обнаружения – это либо фактическое имя семейства вредоносных программ, либо общее имя для широкого круга семейств, если семейство неизвестно.

Версия

Версия чаще всего представлена простым порядковым номером (счётчиком). Иногда встречается вариант с использованием хеша.

Модификатор

Как и прежде, необязательный элемент. Может указывать на способ обнаружения (эвристический или общий).

Схемы именования

Примеры для разных антивирусных движков:

Производитель Схема Пример
Avast Платформа:Тип-Модификатор [Тип] VBS:Downloader-ARK [Trj]
AVG Тип Семейство.Версия Trojan horse Crypt8.BHVG
Avira Модификатор/[Тип.]Семейство.Версия TR/AD.SodinoRansom.wcoir
Bitdefender [Модификатор:[Платформа.]]Тип.Семейство[.модификатор].Версия Get:Trojan.Mresmon.Gen1.

DeppScan:Generic.Ransom.Sodinokibi.5460CDF8

ESET [Модификатор] Платформа/[Тип.]Семейство.Версия Тип MSIL/TrojanDropper.Agent.BPM Trojan
G DATA Платформа.Тип.Семейство.Версия[@Модификатор] MSIL.Backdoor.Yantac.A@susp
Kaspersky [Модификатор:]Тип.Платформа.Семейство[.Версия HEUR:Trojan.Win32.Nymaim.gen
McAfee Платформа/Семейство Тип

Платформа/Семейство.Версия.Модификатор

 

RDN/Generic BackDoor

W32/HLLP.11042.gen

 

Microsoft Тип:Платформа/Семейство.Версия[!Модификатор]

 

Trojan:Win32/Gandcrab.AF
Trendmicro Тип_Семейство.Версия (старое)

 

Тип.Платформа.Семейство.Версия.Модификатор (новое)

 

TROJ_GEN.R002C0WGH19
Symantec [Платформа|Тип].Семейство.Версия Trojan.Gen.MBT

 

DrWeb Тип.Семейство[.Версия] Trojan.DownLoad

Все эти концепции именования создавались ровно для одной цели – давать полезную информацию. Однако часто этого не происходит.

Есть такой сервис VirusTotal, где можно проверить подозрительный объект или его хеш по базе известных результатов, чтобы выявить как определяется тот или иной объект ВПО.

Здесь есть важное замечание – чем больше различных результатов (конкретных), которые согласуются друг с другом, тем более вероятно, что информация верная.

Некоторые ключевые слова

Ключевые слова Значение
Kryptik, Krypt, Cryptik, Crypt, Packed Упакованный файл
Obfus Обфусцированный файл (запутанный, для усложнения отладки и разбора)
Injector, Inject Упакованный файл, внедряется в другие процессы
AntiXY Механизм защиты от XY, например, AntiAV означает, что файл может отключить антивирусные программы, AntiVM означает, что он может отказаться от запуска на виртуальной машине
FakeXY, XYFake Файл имитирует XY, например FakeAdobe имитирует продукт Adobe. Это часто делается с помощью сторонних инструментов, которые изменяют значок и информацию о версии файла.
Corrupt, Corrupted, Malformed Повреждён
Patched Файл изменён, что делает его подозрительным
Agent Имя по умолчанию для неизвестного или незначительного семейства вредоносных программ
Razy, Kazy, Zusy, Graftor Неизвестное семейство ВПО, детектировано с использованием Bitdefender технологии
WisdomEyes Неизвестное семейство ВПО, детектировано с использованием Baidu технологии
Artemis Неизвестное семейство ВПО, детектировано с использованием McAfee технологии

При оценке результата в VirusTotal можно увидеть, что некоторая сигнатура выглядит одинаково у разных образцов ВПО. Причина такого – использование одного движка (Bitdefender) различных продуктов.
Список сторонних движков, используемых антивирусными продуктами приведён тут.

Таким образом, если в результатах VirusTotal заметили вдруг, что имеется несколько сработок, а продукты используют один движок – это нужно расценивать не как “несколько” обнаружений, а скорее как одно (больше вероятность ложноположительной сработки).

И ещё, наверняка замечали такие описания как Gen. Generic, Mailicious – неспецефичные имена. Это тоже не самый крутой вариант детекта. Намного более информативно будет специфическое имя.

Ещё пара примеров:

  • Trojan.FakeMS – “троян” – значение по умолчанию для ВПО. FakeMS – файл притворяется файлом “Microsoft Corporation” (например в метаданных).
  • Или Trojan.Win32.Krypt. Видим “Троян”. Видим платформу “Win32”. Видим “Krypt” – что файл упакован. Вот и всё.

Вот такие имена – неспецефичные. Никакой полезной информации (ну разве что платформа) нам не несут.

Немного уточнить картину можно если “снять упаковку”, расшифровать файл. Как правило, упаковка проводится с целью запутать антивирусный движок и количество детектов ощутимо снижается (вплоть до отображения полностью безопасного файла).

Англоязычный источник: https://www.gdatasoftware.com/blog/2019/08/35146-taming-the-mess-of-av-detection-names

Интересно? Поделись с другом
Litl-Admin.ru

Comments:

Leave a Reply