Как сделать свой антивирус
Перейти к содержимому

Как сделать свой антивирус

  • автор:

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

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

  • В первой части мы разберем Yara проект. Разберем как установить инструмент, как получить yara-правила, найдем угрозы.
  • Во второй части научимся сами писать yara-правила.
  • В третьей части напишем антивирус.

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

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

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

1548226897972.png

После этого мы можем использовать Yara, выполнив команду yara, которая по умолчанию отобразит справку по использованию, как показано ниже:

Мы видим, что для запуска Yara нам нужно предоставить набор правил (RULEFILE), которые мы хотим применить, и путь к файлу (FILE) или pid (PID) процесса, который мы хотим сканировать.

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

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

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

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

  • wget https://raw.githubusercontent.com/mattulm/volgui/master/tools/clamav_to_yara.py

1548230722465.png

  • python clamav_to_yara.py .

1548230619774.png

  • wget http://database.clamav.net/main.cvd
  • sigtool —unpack main.cvd

1548230935363.png

1548230985274.png

  • python clamav_to_yara.py -f main.ndb -o test.yara
  • yara -r test.yara /myfolder_for_test

Правила PEiD можно скачать с сайта:

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

1548230802973.png

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

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

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

1548233263971.png

Но в этой статье мы проверим обнаруживают ли его инструмент 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.
Скачать можно отсюда:

1548231957280.png

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

1548232351504.png

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

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

1548232573490.png

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

1548232656913.png

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

1548234414646.png

1548234580256.png

1548667087427.png

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

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

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

Как сделать свой антивирус

1548226897972.png

  • wget https://raw.githubusercontent.com/mattulm/volgui/master/tools/clamav_to_yara.py

1548230722465.png

  • python clamav_to_yara.py .

1548230619774.png

  • wget http://database.clamav.net/main.cvd
  • sigtool —unpack main.cvd

1548230935363.png

1548230985274.png

  • python clamav_to_yara.py -f main.ndb -o test.yara
  • yara -r test.yara /myfolder_for_test

1548230802973.png

1548233263971.png

1548231957280.png

1548232351504.png

1548232573490.png

1548232656913.png

1548234414646.png

1548234580256.png

1548667087427.png

rule silent_banker : banker
meta:
description = «This is just an example»
thread_level = 3
in_the_wild = true
strings:
$a =
$b =
$c = «UVODFRYSIHLNWPEJXQZAKCBGMT»
condition:
$a or $b or $c
>

  • VirusTotal Malware Intelligence Services (vt-mis.com);
  • jsunpack-n (jsunpack.jeek.org);
  • We Watch Your Website (wewatchyourwebsite.com).

$ yara
usage: yara [OPTION]. [RULEFILE]. FILE | PID

$ python clamav_to_yara.py -f daily.cvd -o clamav.yara

$ yara -r clamav.yara /pentest/msf3/data

rule BadBoy
strings:
$a = «win.exe»
$b = «http://foo.com/badfi le1.exe»
$c = «http://bar.com/badfi le2.exe»
condition:
$a and ($b or $c)
>

$my_text_string = «text here»
$my_hex_string =

$a at 100 and $b at 200

$a in (0..100) and $b in (100..fi lesize)

rule OfExample1
strings:
$foo1 = «dummy1»
$foo2 = «dummy2»
$foo3 = «dummy3»
condition:
2 of ($foo1,$foo2,$foo3)
>

for expression of string_set : ( boolean_expression )

[Name of the Packer v1.0]
signature = 50 E8 ?? ?? ?? ?? 58 25 ?? F0 FF FF 8B C8 83 C1 60 51 83 C0 40 83 EA 06 52 FF 20 9D C3
ep_only = true

Пишем свою антивирусную утилиту. Часть 1 — Подготовка

Скажите, а не хотелось бы вам написать свой собственный антивирус? Если да, то это статья для вас.

Компьютерные вирусы – бич современного айти общества. Еще с далекого 1983 года, когда Оуен продемонстрировал широкой публике вредоносный код, который прозвали вирусом, стало ясно, что компьютерные системы весьма уязвимы. С тех пор прошло почти 30 лет, за которые компьютерные вирусы постоянно эволюционировали. Нет смысла писать о том, сколько вреда нанесли эти вредоносные программы (малварь или зловред на компьютерном лексиконе) экономике. В СМИ то и дело появляется об этом очередная заметка.

Что же такое компьютерный вирус в широком смысле этого термина? Зловредом принят считать код, так или иначе вредящей нормальной работе компьютера. Наверняка вы и сами неоднократно сталкивались с подхваченным вирусом. Нормальный вирус должен уметь заражать обычные файлы, размножаться, иметь полиморфную структуру (чтобы его не детектили антивирусы) и т.д. К компьютерным вирусам также относят троянцев, червей и различные вредоносные скрипты. Также к ним в какой то мере можно отнести и руткиты, но это не совсем верно. Просто сам руткит даже по своему названию подразумевает уже не вирусную природу, хотя они и очень опасны, особенно для систем, пользователи которых пренебрегают обновлением (всегда обновляйте свою систему в целях повышения безопасности!).

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

Естественно, что для противоборства вирусам смекалистыми программистами были разработаты антивирусные системы. Например, Евгений Касперский, разработчик знаменитого антивируса Касперского, начинал с безобидного хобби по собиранию этих вирусов и их программной нейтрализации. Как видите, это хобби принесло ему в последствии славу и сотни миллионов долларов состояния. Заманчиво, не так ли?

К сожалению, на рынке антивирусных систем рядовому программисту делать нечего. Конкуренция здесь очень большая. Я даже не сомневаюсь, что в ближайшем будущем многие такие компании просто разорятся в силу падения спроса на свою продукцию. Вспомните пресловутый антивирус AVZ от Олега Зайцева – сейчас Олег работает в структуре лаборатории Касперского, хотя начинал как инди -разработчик. Это пример того, как даже самому распрекрасному антивирусному продукту заказан вход в большую игру под названием бизнес.

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

Мы напишем с вами сканер зловредов, которые являются относительно постоянными по своей структуре (не буду загружать вас умными словами, можете почитать о них в моей книге). В качестве языка разработки я буду использовать C++, как наиболее быстрый и умеющий работать на низком уровне. Как вариант, можно использовать Делфи, однако учтите, что программа будет сильно уступать в скорости сишной.

Учите, что я буду использовать также классы из MFC, так что вам понадобиться полноценная Visual Studio, а на VC++ Express.

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

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

Итак, прежде чем приступить к кодированию, давайте пройдемся по небольшому ТЗ, что должен уметь делать наш сканер. А он должен выполнять:

  • хэширование файлов и проверку хэша со списком в базе данных. Чтобы не городить огород, будем использовать MD5.
  • Как нормальный антивирус, наш сканер должен просканировать все загруженные процессы в памяти (малварь то сразу же загружается в оперативную память) и при обнаружении зловреда нейтрализовать его.
  • Как бы не наивно звучало, но наш сканер должен определять тип операционной системы, на которой запущен. Дело в том, что он должен сканировать еще и системный реестр, а в разных версиях Windows пути будут разными.
  • Собственно, сканирование веток реестра Start Menu \ Programs \ Startup и HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run. Эти ветки отвечают за автозапуск различных программ, а малварь, это, прежде всего, программа. Не стоит забывать и о сканировании папки автозагрузки.
  • Наш сканер будет сканировать относительно небольшие файлы (до 50 МВ), но мы всегда сможем расширить это ограничение. Кроме того, сканер будет пропускать те файлы, которые априори невозможно заразить – это txt, rtf и некоторые им подобные. Тем не менее, не стоит забывать и о том, что вирусы часто внедряются посредством джойнеров, поэтому нужно учесть различные сигнатуры.
  • Сканер должен просканировать весь жесткий диск (а в перспективе и все съемные диски) в поисках малвари и удалить ее.

Вот таков наш план. Как видите, наш простой сканер будет выполнять много того, что положено сканеру антивирусника. Тем не менее, не стоит забывать, что сейчас практически все вирусы криптуются и упаковываются различными пакерами или протекторами. Это сделано для того, чтобы антивирусная система не смогла проанализировать сигнатуру Pe файла. Однако наш сканер пока не умеет этого делать. Но ведь мы же будем его улучшать, не так ли?

Думаю, что план работы вам ясен. Пока приготовьте все нужные инструменты для работы – это Visual Studio 2008/2010 или 2012 (у меня просто лицензионная 2008 студия, я буду писать в ней) , установите себе виртуальную машину (Virtual Box, Virtual PC 2007 – бесплатные или VMWare Workstation –платная, но можно вполне легально использовать ее бесплатно), на которую нужно будет установить какую-нибудь тестовую Windows (можно и XP). Кроме того, нам понадобятся вирусы, которые мы будем истреблять. Для этого нужно будет найти какой-нибудь вирген, который нужно будет запускать на виртуальной машине. На этих вирусах мы и будем тестить нашу простую антивирусную систему. Пока на этом все. В следующей части мы приступим к разработке кода.

БИЗНЕС ЛИКБЕЗ: КАК СОЗДАТЬ СВОЙ АНТИВИРУС ЗА МЕСЯЦ?

Мировой рынок программного обеспечения в сфере информационной безопасности растет из года в год. Если в 2011 году его объем оценивался в 17,7 млрд. долларов, то 2013 год закончился на отметке 22 млрд. долларов.

При этом практически 90% рынка контролируются 10 вендорами, о чем свидетельствуют ежегодные отчеты компании OPSWAT .

Обладая значительными ресурсами, такие гиганты антивирусной индустрии, как Лаборатория Касперского, Symantec, McAfee, ESET на сегодняшний день на голову сильнее своих конкурентов из категории "другие". Это касается как технологической, так и маркетинговой составляющих бизнеса.

Carpe diem

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

Суммарная рыночная доля подобных продуктов в редких случаях достигает 10%. Но, если учесть объемы рынка и его рост с момента возникновения индустрии, то даже 10% — это повод для борьбы. К примеру, 10% от украинского рынка антивирусного ПО – это приблизительно 6-7 млн. грн.

Те компании и предприниматели, которые посчитают антивирусный рынок привлекательным и захотят создать продукт под собственным брендом, столкнуться с различными барьерами входа. Чтобы создать свой антивирус и повторить технологии защиты из списка "the must", придется инвестировать серьёзные деньги и потратить на разработку не меньше года. Команда маркетологов, в свою очередь, должна будет убедить потенциальных пользователей, что новый продукт способен выполнять базовую функцию – защищать компьютер от вирусов.

Весомым аргументом может стать прохождение продуктом признанных в мире тестов антивирусов: AV-comparatives, VB100, AV-test. Для этого понадобиться терпение, деньги и… качественный продукт, поддерживаемый собственной вирусной лабораторией. Оценивая технологические барьеры входа в отрасль, затраты на содержание собственной антивирусной лаборатории компании, желающие войти на данный рынок, все чаще прибегают к такой услуге антивирусных вендоров, как co-branding.

Антивирус за 1 месяц: co-branding

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

На сайте http://antivirusoem.com/suppliers.html размещен целый список антивирусных компаний, которые располагают такими партнерскими программами. Среди вендоров есть громкие имена: Лаборатория Касперского, ESET, Bitdefender и другие. В списке также представлен украинский разработчик, Антивирусная лаборатория Zillya!

Упрощенно, Co-branding – это изменение дизайна и названия существующего антивирусного продукта и продажа его под другим брендом, где поставщик продукта, вендор, обладающий своей антивирусной лабораторией, обеспечивает новый продукт обновлениями антивирусных баз и оказывает технологическую поддержку co-branding партнеру.

Почему это выгодно вендору? Как правило, вендоры:

  1. Предлагают услугу ко-брендинга для компаний, которые планируют работать на рынках не интересных вендору или таких, на которые он не собирается работать в ближайшее время под собственным брендом. Это означает, что новый продукт не угрожает бизнесу вендора, а в некоторых случаях, наоборот, позволяет лучше понять специфику нового рынка.
  2. Вендоры достаточно хорошо зарабатывают на лицензионных отчислениях и самом изменении продуктов. Порядок сумм, о котором идет речь при редизайне продукта и его переименовании – от 20 тыс. у.е.

Популярность ко-брендинга для компаний, которые создают свой антивирусный бренд, также легко объяснима:

  1. Ко-брендинг партнер обходит технологический барьер входа на рынок и уходит от затрат, связанных с созданием антивирусных технологий, поддержкой антивирусных баз, вирусной аналитикой. Компания может сконцентрироваться исключительно на маркетинговой части бизнеса.
  2. Новый антивирус может быть создан всего за 1-2 месяца. Это означает, что уже через 2 месяца ко-брендинговый продукт будет поставлен конечному пользователю.
  3. Создатели нового антивирусного продукта могут оставаться гибкими в вопросе выбора технологий антивирусной защиты и получить продукт, который по качеству может даже превосходить продукт вендора. Как? Очень просто. Подключив сразу несколько антивирусных движков в свой продукт.

В то же время, ко-брендинг имеет и ряд недостатков как для вендора, так и для создателей нового антивирусного бренда.

  1. Риски вендора, как правило, связаны именно с бизнес-стороной. Успех нового антивируса на определенном рынке все же может усложнить вхождение вендора на этот рынок в будущем. Также, вендор не застрахован от того, что рост бизнеса ко-брендинг партнера позволит ему усилить давление на вендора в вопросе цены за каждую поставленную лицензию и, в конечном счете, даже перейти к другому вендору.
  2. Для компаний, создающих свой продукт на основе существующего, основные риски бизнеса связанны именно с технологиями. Новый продукт автоматически перенимает все недостатки существующего и напрямую зависит от его технологического развития и уровня поддержки вендором.

Шансы co-branding антивирусов в Украине

Украинский рынок антивирусов по различных оценкам – это 60-70 млн. грн. В эту сумму входит крупный корпоративный сектор, государственный сектор, рынок конечного потребителя. Крупные вендоры, такие как Лаборатория Касперского, ESET, Avast, Доктор Вэб, Symantec, McAfee контролируют до 95% рынка, при этом конкуренция на рынке достаточно жесткая.

Вендоры не жалеют бюджетов на рекламу своих продуктов и подвинуть их с рынка будет очень сложно. Говорить о входе на рынок Украины без серьезных вложений в маркетинг будет сложно. Примером может служить попытка Panda Antivirus закрепиться на рынке Украины в 2012-2013 годах или проигрыш конкурентной борьбы не менее крупным вендором, Trend Micro, чьи продукты еще 8 лет назадзанимали 20% рынка страны.

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

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

Материал подготовлен Олегом Сычем, техническим директором антивирусной лаборатории Zillya!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *