Статья Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.

Debug

Debug

Grey Team
07.07.2017
157
360
Всем доброго времени суток уважаемые участники форума. В этот раз мы напишем свой сигнатурный антивирус(Название можете предложить в комментариях). Возможно также добавиться какой-то функционал. Теперь перейдем к теме, а именно к 1-й части - "Небольшой экскурс в YARA".

Что будет и чего ожидать.
Как говорилось ранее, наша задача написать сигнатурный антивирус. Сам процесс будет описан в 3-й части.
  • В первой части мы разберем Yara проект. Разберем как установить инструмент, как получить yara-правила, найдем угрозы.
  • Во второй части научимся сами писать yara-правила.
  • В третьей части напишем антивирус.
Введение.
Мы все знаем, что гораздо интереснее взламывать что-то, чем строить защиту от атак, вирусов и прочей нечисти. Но иногда стоит встать на другую сторону. Сегодня мы встанем на путь, в котором будем обнаруживать вредоносное ПО.

Что такое YARA?
Yara - это инструмент, который помогает нам идентифицировать и классифицировать образцы вредоносных программ с помощью правил. Мы можем использовать Yara для классификации файлов или запуска процессов, чтобы определить, к какому семейству относятся вредоносные программы.

Также YARA является мультиплатформенным инструментом, работает на всех популярных ОС и может использоваться через интерфейс командной строки или из ваших собственных скриптов Python с расширением yara-python. Также можно использовать GUI(Рассмотрим далее).

Установка.
Чтобы установить Yara, сначала нужно выполнить следующую команду:
apt install yara

Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


После этого мы можем использовать Yara, выполнив команду yara, которая по умолчанию отобразит справку по использованию, как показано ниже:
Код:
$ yara
usage:  yara [OPTION]... [RULEFILE]... FILE | PID
options:
  -t <tag>                  print rules tagged as <tag> and ignore the rest. Can be used more than once.
  -i <identifier>           print rules named <identifier> and ignore the rest. Can be used more than once.
  -n                        print only not satisfied rules (negate).
  -g                        print tags.
  -m                        print metadata.
  -s                        print matching strings.
  -l <number>               abort scanning after a <number> of rules matched.
  -d <identifier>=<value>   define external variable.
  -r                        recursively search directories.
  -f                        fast matching mode.
  -v                        show version information.
Мы видим, что для запуска Yara нам нужно предоставить набор правил (RULEFILE), которые мы хотим применить, и путь к файлу (FILE) или pid (PID) процесса, который мы хотим сканировать.

Подготовка правил для тестов.
Правила ClamAV:


Теперь нам нужно получить файл правил, чтобы использовать Yara. В следующей части мы сами напишем файл с правилами, но сейчас будем использовать правила ClamAV. Единственная проблема с правилами ClamAV состоит в том, что мы не можем использовать их непосредственно с Yara, потому что Yara имеет свой собственный способ их описания(свой синтаксис).

Именно здесь вступает в игру скрипт clamav_to_yara.py.

Для этого нам нужно клонировать SVN-репозиторий, который включает скрипт python clamav_to_yara.py.
Ссылка на репозиторий

Команда для клонирования:
  • wget https://raw.githubusercontent.com/mattulm/volgui/master/tools/clamav_to_yara.py
Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Следующим шагом будет выполнение следующей команды:
  • python clamav_to_yara.py.

Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Далее нам нужно скачать основные правила подписи ClamAV:
  • wget http://database.clamav.net/main.cvd
  • sigtool --unpack main.cvd
Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Чтобы преобразовать сигнатуры ClamAV в форму Yara, нам нужно запустить скрипт:
  • python clamav_to_yara.py -f main.ndb -o test.yara
Теперь мы можем сканировать каталог с помощью Yara и новые правила с помощью команды ниже:
  • yara -r test.yara /myfolder_for_test

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

Правила PEiD можно скачать с сайта:
Чтобы преобразовать правила PEiD в правила Yara, мы можем просто использовать Python скрипт peid_to_yara.py, который также можно загрузить с

Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Затем мы выполняем преобразование, выполнив следующую команду: python peid_to_yara.py -f userdb.txt -o peid.yara
После завершения команды подписи Yara будут содержаться в выходном файле peid.yara.

Тестовый вирус - EICAR
Теперь нам нужен какой-либо вирус для наших тестов, но если у вас нет желания тестировать реальные вирусы, которые также могут принести вред вашему ПК при тесте, вы можете сами создать тестовый вирус, но он будет совершенно безобидным.

EICAR вирус - это небольшой кусок текста, суть которого заключается в том, что все современные AV его обнаруживают.
Мы будем его также тестировать в “полевых условиях”, например, для проверки нашего AV(Если конечно статья вам зайдет).

Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Но в этой статье мы проверим обнаруживают ли его инструмент Yara.

Теперь давайте сотворим этот “псевдо-вирус”
Для этого создайте файл и вставьте следующий текст: X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*.
После этого вам необходимо сохранить файл под любым расширением(exe, com, bat, asm…)

Где взять реальные вирусы.

Если вам тестовый вирус EICAR чем-то не устраивает, то можно воспользоваться базой для скачивания реальных вирусов.
Для этих целей можно воспользоваться сервисом -
Среди плюшек можно отметить, что у каждого вируса имеется MD5,SHA-1,SHA-256 хэшы, IP-адресса.(Это нам поможет при написание Yara-правил).

Следующий сервис для скачивания и исследования вирусов это
Почитать про остальные сервисы можно тут:

После всего этого мы можем классифицировать примеры вредоносных программ, используя только инструмент Yara, и нам больше не нужно сканировать их с помощью правил ClamAV и PEiD. Это потому что Yara уже содержит правила из ClamAV и PEiD, которые используются в процессе сканирования, что очень удобно так как у нас имеется довольно большая база сигнатур для поиска "зловреда".

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

Именно на основе Yara правил мы и будем создавать свой сигнатурный AV.

YARA GUI для Windows.
Как я и обещал, для тех кому не нравиться возиться с установкой yara либо с правилами и еще хочется работать в GUI режиме + под платформой Windows можно воспользоватся YARA GUI.
Скачать можно отсюда:

Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Демонстрация.
И так теперь проверим и посмотрим как протестировать файл(папку).
Для тестирование папки мы должны выполнить следующую команду: yara -r <Yara-правило> <Сканируемая папка>
В моем случае я тестирую уязвимый дамп памяти:

Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Как видно помимо различной информации вредоносный дамп был успешно обнаружен как Empire ReflectivePick x64.

Еще пару сканирований:

Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Чтобы убрать лишнюю информацию нужно использовать атрибут -w

Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Теперь рассмотрим как ищет "зловреда" Yara GUI версия для Windows.

Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Пишем свой сигнатурный антивирус на C#. Часть 1 - Небольшой экскурс в YARA.


Подводим итог.
В этой статье мы рассмотрели, как мы можем использовать продукт Yara с использованием ClamAV, PEiD правил для поиска вредоносных сигнатур в файлах.
Вышеупомянутый подход основан только на проверке сигнатуру(блока информации), что означает, что нетрудно обмануть Yara (с загруженными правилами ClamAV и PEiD).

Честно сказать, данный продукт может обнаруживать только известные вредоносные программы. Но если мы напишем нашу собственный вирус или закодируем его с помощью нашего собственного кодировщика, он, вероятно, не будет обнаружен, поскольку в Yara не загружены соответствующие сигнатуры. Этот пункт касается и нашего будущего антивируса.

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

На этом 1-я часть пожалуй завершена)). Всем спасибо.
 

Вложения

Последнее редактирование:
Strongust

Strongust

Member
18.09.2018
24
-4
Статья из разряда, академический опус, тс без обид.
 
  • Не нравится
Реакции: spacexsas
Strongust

Strongust

Member
18.09.2018
24
-4
Конечно, что бы дети в мире не болели и войн не было. Сможете?
 
  • Нравится
Реакции: Debug
Мы в соцсетях:  ТелеграмВконтактеДзенФейсбукТвиттерЮтуб