Incinerate. Анализатор поведения процессов
Назначение: Анализ поведения процессов в ОС Windows.
На данный момент существует два основных метода по распознаванию процессов, запущенных в компьютерной системе: сигнатурный анализ и анализ поведения. Наиболее распространенным является сигнатурный анализ, когда тело исполняемого файла подвергается проверке на наличие последовательностей «опасных» команд. Все эти методы могут быть преодолены злоумышленником с помощью преобразований исполняемого кода, не влияющих на его функциональность. Несмотря на то, что разрабатываются все новые и новые алгоритмы сигнатурного анализа, всегда можно создать специальный алгоритм модификации тела процесса, обходящий свежие системы защиты. В связи с этим остается актуальной задача разработки технологии идентификации процесса по некоторому набору признаков.
Область применения: Компьютерная безопасность. Защита от вредоносного ПО.
Используемый алгоритм: Анализ поведения процессов с использованием составного обработчика на основе трехслойных персептронов [1].
Основной идеей алгоритма является разделение персептрона-анализатора на несколько (4) атомарных трехслойных персептронов. Например, 17 входов персептрона были разделены на 4 группы: 3, 4, 5, 5. Каждый из таких персептронов имеет свой выход и отвечает за соответствие образа какому-либо признаку (тому признаку, за который отвечает персептрон). В качестве входов используется количество произошедших событий в системе событий определенного класса (использовано 17 типов событий по 1 на каждый вход). Каждый из 4 атомарных персептронов возвращает свой ответ, является ли процесс «своим» или нет. Например, {да, нет, да, да}. Эти ответы согласуются с помощью вектора доверия размерности 4 в финальный ответ всего анализатора как скалярное произведение вектора доверия на вектор ответов. Вектор доверия формируется на этапе обучения анализатора. Данный алгоритм был разработан с целью решения проблемы неэффективности нейронных сетей, когда подавляющее большинство входов равно нулю.
1. Р.С. Прохоров, Методика бихевиористической классификации процессов в ОС Windows 7 // Информационные технологии и автоматизация управления - Материалы V Всероссийской научно-практической конференции студентов, аспирантов, работников образования и промышленности, Омск, Издательство ОмГТУ, стр 163-165, 23-26 апреля, 2013.
Функциональные возможности: Обучение агентов на основе предоставляемых администратором данных, распознавание процессов с помощью обученных агентов. Данное приложение является библиотекой для построения систем защиты операционных систем на основе анализа поведения процессов. Содержит пример (IncinerateCmd - IncinerateService), демонстрирующий работу с основными компонентами разработанного алгоритма.
Пример представляет из себя два приложения
- Основное приложение (IncinerateService), которое можно зарегистрировать как сервис Windows, а можно просто запускать как консольное приложение. Возможности:
- обучение нового агента (Learn)
для этого администратору необходимо задать список PID'ов целевого процесса и имя нового агента (произвольная строчка, но уникальный идентификатор). когда обучаемый агент получает достаточно информации для работы (настраивается), он сохраняется в репозиторий агентов (c:/program data/incinerate). - запуск обученного агента в состояние слежки за системой (Watch). Из репозитория агентов (c:/program data/incinerate) берется агент по имени из запроса. Данный агент будет искать "свой" процесс среди всех активных процессов и, например, писать в лог определенную информацию (можно задать любую модель поведения)
- получение информации обо всех обученных или обучающихся агентах (GetInfo)
- обучение нового агента (Learn)
- Клиентское приложение (IncinerateCmd), работающее с сервисом и подающее ему соответствующие команды (L, W, I). Взаимодействие идет через pipe. Канал открытый.
- incicmd -w=<имя_агента> - Запуск слежения за процессами с помощью ранее обученного агента
- incicmd -a=<имя_нового_агента> -p=<PID_1,PID_2,...,PID_N> - Запуск обучения агента с новым именем, который будет считать, что все указанные процессы - целевые, а все остальные - чужие.
- incicmd -l - Печатает список обучающихся и готовых агентов
Инструментальные средства создания: Visual C# Express
Описание содержимого репозитория
В репозитории https://github.com/Evlikat/incinerate находится полностью компилируемый под платформу .NET Framework 3.0+ проект Visual C# Express 2010. Подпроекты в составе:
- IncinerateCmd - проект-пример, клиентское приложение, описанное выше. Состоит из одного файла - main'а консольного приложения
- IncinerateService - проект-пример, серверное приложение, которое можно зарегистрировать как сервис Windows. Описано выше.
- NeuroApplication - проект, содержащий программы-эксперименты для установления эффективности работы алгоритма
- NeuroIncinerate - базовый проект, содержащий все необходимые алгоритмы
- Sample.Eventing, TraceEvent - дочерние проекты, используются для подключения к системе отслеживания событий Windows (сторонние библиотеки с открытым кодом)
- Incinerate - сторонний исторический проект, отношения к алгоритму не имеет (можно игнорировать)
Инструкция по использованию
- Запустить IncinerateService/bin/Debug/IncinerateService.exe от имени администратора. Сервис будет запущен как консольное приложение
- Запустить IncinerateCmd/bin/Debug/incicmd -a=ИмяНовогоАгента -p=PID'ыЦелевых процессов
- Сервис обучит анализатор на заданных процессах. Как только наберется 500 образцов поведения целевых процессов и 2500 образцов любых других процессов, он будет сохранен в c:/ProgramData/Incinerate/ИмяНовогоАгента.agent
- Получить список всех агентов с помощью команды incicmd -l
- Запустить в режим слежения команда (incicmd -w=ИмяНовогоАгента)
- Сервис будет писать в окно PID опознанного процесса. [HARD] - свидетельствует о жестком опознании, то есть высоком уровне уверенности. [SOFT] - указывает, что процесс был опознан, но анализатор "сомневается" тот ли это процесс
Замечания к использованию
- Если агент плохо опознает целевые процессы, то возможно его удалить и обучить заново. Повторять до желаемого уровня уверенности
- Агент также можно "отрегулировать" с помощью необходимого уровня доверия данному агенту. Файл IncinerateService/Core/AgentRegistry.cs содержит константы для "регулировки" агентов. После внесения изменения программу необходимо перекомпилировать
Windows 7+
.NET Framework 3.0+