Incinerate. Анализатор поведения процессов

Тип разработки: 
Программа
Регистрационный номер в ФАП: 
PR13028
Дата регистрации в ФАП: 
2013-07-11
Тематическая направленность: 
Компьютерная безопасность. Защита от вредоносного программного обеспечения. Анализ поведения процессов в ОС Windows
Заявитель: 
Разработчики программы (базы данных): 
Аннотация: 

Назначение: Анализ поведения процессов в ОС Windows. 

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

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

Область применения: Компьютерная безопасность. Защита от вредоносного ПО.

Используемый алгоритм: Анализ поведения процессов с использованием составного обработчика на основе трехслойных персептронов [1].

Основной идеей алгоритма является разделение персептрона-анализатора на несколько (4) атомарных трехслойных персептронов. Например, 17 входов персептрона были разделены на 4 группы: 3, 4, 5, 5. Каждый из таких персептронов имеет свой выход и отвечает за соответствие образа какому-либо признаку (тому признаку, за который отвечает персептрон). В качестве входов используется количество произошедших событий в системе событий определенного класса (использовано 17 типов событий по 1 на каждый вход). Каждый из 4 атомарных персептронов возвращает свой ответ, является ли процесс «своим» или нет. Например, {да, нет, да, да}. Эти ответы согласуются с помощью вектора доверия размерности 4 в финальный ответ всего анализатора как скалярное произведение вектора доверия на вектор ответов. Вектор доверия формируется на этапе обучения анализатора. Данный алгоритм был разработан с целью решения проблемы неэффективности нейронных сетей, когда подавляющее большинство входов равно нулю.         

1. Р.С. Прохоров, Методика бихевиористической классификации процессов в ОС Windows 7 // Информационные технологии и автоматизация управления - Материалы V Всероссийской научно-практической конференции студентов, аспирантов, работников образования и промышленности, Омск, Издательство ОмГТУ, стр 163-165, 23-26 апреля, 2013.        

Функциональные возможности: Обучение агентов на основе предоставляемых администратором данных, распознавание процессов с помощью обученных агентов. Данное приложение является библиотекой для построения систем защиты операционных систем на основе анализа поведения процессов. Содержит пример (IncinerateCmd - IncinerateService), демонстрирующий работу с основными компонентами разработанного алгоритма.

Пример представляет из себя два приложения

  1. Основное приложение (IncinerateService), которое можно зарегистрировать как сервис Windows, а можно просто запускать как консольное приложение. Возможности:
    1. обучение нового агента (Learn)

      для этого администратору необходимо задать список PID'ов целевого процесса и имя нового агента (произвольная строчка, но уникальный идентификатор). когда обучаемый агент получает достаточно информации для работы (настраивается), он сохраняется в репозиторий агентов (c:/program data/incinerate).
    2. запуск обученного агента в состояние слежки за системой (Watch). Из репозитория агентов (c:/program data/incinerate) берется агент по имени из запроса. Данный агент будет искать "свой" процесс среди всех активных процессов и, например, писать в лог определенную информацию (можно задать любую модель поведения)
    3. получение информации обо всех обученных или обучающихся агентах (GetInfo)
  2. Клиентское приложение (IncinerateCmd), работающее с сервисом и подающее ему соответствующие команды (L, W, I). Взаимодействие идет через pipe. Канал открытый.
    1. incicmd -w=<имя_агента> - Запуск слежения за процессами с помощью ранее обученного агента
    2. incicmd -a=<имя_нового_агента> -p=<PID_1,PID_2,...,PID_N> - Запуск обучения агента с новым именем, который будет считать, что все указанные процессы - целевые, а все остальные - чужие.
    3. incicmd -l - Печатает список обучающихся и готовых агентов

Инструментальные средства создания: Visual C# Express

Описание содержимого репозитория

В репозитории https://github.com/Evlikat/incinerate находится полностью компилируемый под  платформу  .NET Framework 3.0+ проект Visual C# Express 2010. Подпроекты в составе:

  1. IncinerateCmd - проект-пример, клиентское приложение, описанное выше. Состоит из одного файла - main'а консольного приложения
  2. IncinerateService - проект-пример, серверное приложение, которое можно зарегистрировать как сервис Windows. Описано выше.
  3. NeuroApplication - проект, содержащий программы-эксперименты для установления эффективности работы алгоритма
  4. NeuroIncinerate - базовый проект, содержащий все необходимые алгоритмы
  5. Sample.Eventing, TraceEvent - дочерние проекты, используются для подключения к системе отслеживания событий Windows (сторонние библиотеки с открытым кодом)
  6. Incinerate - сторонний исторический проект, отношения к алгоритму не имеет (можно игнорировать)

Инструкция по использованию

  1. Запустить IncinerateService/bin/Debug/IncinerateService.exe от имени администратора. Сервис будет запущен как консольное приложение
  2. Запустить IncinerateCmd/bin/Debug/incicmd -a=ИмяНовогоАгента -p=PID'ыЦелевых процессов
  3. Сервис обучит анализатор на заданных процессах. Как только наберется 500 образцов поведения целевых процессов и 2500 образцов любых других процессов, он будет сохранен в c:/ProgramData/Incinerate/ИмяНовогоАгента.agent
  4. Получить список всех агентов с помощью команды incicmd -l
  5. Запустить в режим слежения команда (incicmd -w=ИмяНовогоАгента)
  6. Сервис будет писать в окно PID опознанного процесса. [HARD] - свидетельствует о жестком опознании, то есть высоком уровне уверенности. [SOFT] - указывает, что процесс был опознан, но анализатор "сомневается" тот ли это процесс

Замечания к использованию

  1. Если агент плохо опознает целевые процессы, то возможно его удалить и обучить заново. Повторять до желаемого уровня уверенности
  2. Агент также можно "отрегулировать" с помощью необходимого уровня доверия данному агенту. Файл IncinerateService/Core/AgentRegistry.cs содержит константы для "регулировки" агентов. После внесения изменения программу необходимо перекомпилировать
Версия регистрируемой программы (базы данных): 
0.1
Использованные при разработке материалы: 
TraceEvent, AForge.NET
Признак доступности программы (базы данных): 
полностью свободный доступ
Требования к аппаратным и программным средствам: 

Windows 7+
.NET Framework 3.0+

Контактная информация: 
roman.evlikat.prokhorov@gmail.com, ссылка на репозиторий - https://github.com/Evlikat/incinerate