Интеллектуальный подход к поведенческой аналитике устройств Интернета Вещей
В нынешнем мире существует огромное количество атак и угроз, у которых есть возможность разрушить безопасность небольшой информационной системы, одного персонального компьютера или же прекратить работу крупных предприятий и организаций. Огромное количество информации обрабатывается с помощью компьютеров, объединенных в различные сети, поэтому атаки на такие компьютерные станции и сети получили большую распространенность.
Примером одной из таких систем можно считать Умный дом, который получил огромное распространение в наших домах: умные холодильники, телевизоры, роботы-пылесосы и другие устройства. Все эти устройства Интернет Вещей каждый день нам упрощают жизнь, экономя наше время, могут нести в себе опасность. Огромное количество слабозащищенных устройств, которые подключены в сети Интернет, могут стать целью для взлома и похищения данных. Основой может послужить возможность получения конфиденциальной или ограниченной информации.
В большинстве случаев современные системы позволяют устанавливать, так называемый, «внешний» рубеж защиты. Эта защита позволяет ненадолго задержать атакующего, но остается необходимость обнаружения деятельности хакеров в уже взломанной сети или системе и подавать сигналы об этом.
Таким образом, целью данной работы является разработка системы поведенческого анализа для Интернета Вещей, которая при обучении на большом количестве денных будет способна отличить атаку от деятельности пользователя.
Актуальность темы обусловлена необходимостью создания новой системы обнаружения подозрительной активности в сетях Интернета Вещей, которая будет работать самостоятельно и дополнять другие уже существующие системы.
Стек технологий и метод
Для программной реализации проекта язык программирования должен соответствовать критериям быстрой разработки программы и наличием библиотек для работы с нейронной сетью и csv файлами. Среди широко распространённых языков программирования Python имеет обширную документацию и большое количество библиотек, которые ускоряют процесс разработки системы.
Python - высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Данный язык имеет большую популярность в научном сообществе, так как Python используется вместе с пакетами NumPy, SciPy и MatPlotLib, что позволяет создать универсальную среду для научных расчётов и отказаться от распространённых специализированных коммерческих пакетов Matlab, IDL и иных. Дополнительно использовались пакеты Pandas, h5py, библиотеки нейронных сетей Scikit-Learn и Keras с бэкендом Theano. NumPy и Pandas используются для доступа и перестановки данных. h5py используется для хранения данных в формате HDF5 на жестком диске между различными этапами. Scikit-Learn включает в себя множество готовых алгоритмов машинного обучения и позволяет быстро и легко экспериментировать с различными методами. Keras используется для создания нейронных сетей. Keras включает в себя множество различных типов нейронных слоев и поддерживает GPU. Для обучения нейронной сети использовалась видеокарта Nvidia Geforce GTX970.
Случайный лес — это метод ансамблевого обучения, который строит множество деревьев решений, которые работают с разными наборами функций. Прогноз определяется большинством голосов. Дерево решений — это прогностическая модель, состоящая из узлов решений и листовых узлов, которые представляют метку прогноза. Ввод проходит путь тестов, которые приводят к прогнозу.
Будет использован случайный лес, ExtraTreesClassifier (из пакета Scikit-Learn). Этот класс реализует метаоценщик, который соответствует ряду рандомизированных деревьев решений (также называемых дополнительными деревьями) для различных подвыборок набора данных и использует усреднение для повышения точности прогнозирования и контроля переобучения
Принцип работы
Система периодически опрашивает модули в системе на вопрос их функционирования и показывает пользователю работающие. В случае обнаружения угрозы у пользователя есть 10 секунд, чтобы самостоятельно принять решение по этому инциденту (заблокировать или отклонить). По истечении времени система по умолчанию заблокирует данную угрозу.
Пользователю доступны следующие варианты использования системы:
- просмотр функционирования системы;
- возможность заблокировать/отклонить инцидент;
- просмотр истории обнаружения угроз в текущей сессии работы программы или за этот день;
- возможность проверки системы на рабочее состояние
