Применение мониторинга аномальной активности
Статья включает:
Шаг 0. Для начала необходимо запустить сервис.
# amon -v & Configuration file loaded Running kernel operator... Loading analyzer... Using structure without learning data... Model name : amon neural network Model desc : neural net structure for amon Model ver : 1.1 Neuron count: 7 Kernel operator init done
Шаг 1. Для управления amon необходима утилита amonctl. Рассмотрим возможные параметры для amonctl
:
# amonctl -h amonctl - intellectual anomaly monitor control utility Usage: amonctl [params] -h - show help -S - show summary -P - show captured objects list -A - show anomaly list -p - show information about object, see for -c and -o options to choose object -a aid - show information about anomaly -L - switch to learning mode -R - switch to recognition mode -c - if using -L, -R or -p option, specify object class id -o - if using -L, -R or -p option, specify object id -l aid - learn anomaly with specified id
Шаг 2. Мы можем просмотреть общую информацию о состоянии системы. Для этого выполним команду:
# amonctl -S amon summary ------------------------------------------------------------ ********** ********** ********** ********** ********** ********** ********** ********** ********** ********** ------------------------------------------------------------ Current system trust value: 100% Objects captured: 38 Alerts captured: 0 Processing time: 7 ms
Получим вывод, на котором мы видим, что:
Шаг 3. Для того чтобы изучить объекты, анализ которых выполняется в данный момент, необходимо выполнить команду:
# amonctl -P ================================================================================================ Object ID Object name Class ID Class name Status Trust Deviation 315420 bin/login 0 kernel NO DATA 0.00 0.00000 303127 bin/login 0 kernel NO DATA 0.00 0.00000 307225 bin/login 0 kernel NO DATA 0.00 0.00000 274458 bin/login 0 kernel NO DATA 0.00 0.00000 ... 286744 usr/sbin/dhcp.client 0 kernel NO DATA 0.00 0.00000 389152 usr/sbin/inetd 0 kernel NO DATA 0.00 0.00000 217105 usr/sbin/mcd 0 kernel NO DATA 0.00 0.00000 380955 usr/sbin/sshd 0 kernel NO DATA 0.00 0.00000 557093 usr/sbin/sshd 0 kernel NO DATA 0.00 0.00000
Здесь перечислены поля (слева направо):
Значение поля Status
- NO DATA
говорит о том, что система ещё не обучена. Для того чтобы обучить её выполним следующий шаг.
Шаг 4. Для обучения необходимо запустить режим обучения на некоторое время.
# amonctl -L All objects switched to learning mode
Время обучения зависит от сложности воспроизводения и разнообразности кейсов активности, которую мы хотим считать доверенной. Этот процесс может занимать от нескольких секунд до гораздо более продолжительного времени.
Шаг 5. Через некоторое время после обучения мы может перевести систему в режим анализа активности.
# amonctl -L All objects switched to learning mode
Теперь снова посмотрим состояние системы:
# amonctl -S amon summary ------------------------------------------------------------ ********************* ********************* ********************* ********************* ********************* ********************* ********************* ********************* ********************* ------------------------------------------------------------ Current system trust value: 99.9942% Objects captured: 38 Alerts captured: 0 Processing time: 15 ms
Текущий уровень доверия составляет 99.9942% и теперь он будет меняться в зависимости от отклонения текущего состояния системы от доверенного.
Шаг 6. После обучения посмотрим показатели ещё раз. Снова выведем список анализируемых процессов:
# amonctl -P ================================================================================================ Object ID Object name Class ID Class name Status Trust Deviation 315420 bin/login 0 kernel ANALYZING 100.00 0.00000 303127 bin/login 0 kernel ANALYZING 100.00 0.00000 307225 bin/login 0 kernel ANALYZING 100.00 0.00000 274458 bin/login 0 kernel ANALYZING 100.00 0.00000 ... 286744 usr/sbin/dhcp.client 0 kernel ANALYZING 100.00 0.00000 389152 usr/sbin/inetd 0 kernel ANALYZING 100.00 0.00000 217105 usr/sbin/mcd 0 kernel ANALYZING 100.00 0.00000 380955 usr/sbin/sshd 0 kernel ANALYZING 100.00 0.00000 905253 usr/sbin/sshd 0 kernel ANALYZING 100.00 0.00000
Можно обратить внимание, что теперь все объекты находятся в статусе ANALYZING
.
Для того чтобы просмотреть детально информацию по каждому объекту, например для процесса /usr/sbin/sshd
с oid
: 1368086, необходимо выполнить команду:
# amonctl -o1368086 -p Object ID: 1368086 Object name: usr/sbin/sshd Object classname: kernel [ID 0] Trust value: 100 / 100 Deviation value: 0 Deviation reasons information Process memory alloc anomaly 0 Opened channels count anomaly 0 Opened file descriptors anomaly 0 Used timers anomaly 0 Used CPU time anomaly 0 Thread stack anomaly 0 Used libraries anomaly 0 Parameters info: { "common": { "cpu_load": "0.00", "hash": "19999331", "mem_code": "4595712", "mem_data": "167936", "mem_heap": "184320", "mem_load": "0.93", "mem_other": "0", "mem_stack": "24576", "mem_total": "4972544", "name": "usr/sbin/sshd", "num_chancons": "1", "num_fdcons": "7", "num_timers": "0", "pid": "1368086" }, "libs": [ { "hash": "19999616", "mem_data": "8192", "name": "" }, { "hash": "69999530", "mem_data": "20480", "name": "" }, { "hash": "19999521", "mem_data": "24576", "name": "" }, { "hash": "19999426", "mem_data": "114688", "name": "" } ], "threads": [ { "mem_stack": "24576", "name": "thread 0" } ] }
Здесь выводится информация об отклонении параметров от состояния, на котором была обучена система, список анализируемых параметров, в данном случае это, например, информация:
Шаг 7. Попробуем теперь спровоцировать систему сгенерировать оповещение об аномалии. Запустим в Нейтрино калькулятор (/usr/photon/bin/phcalc
). Поскольку во время обучения он не запускался, его активность покажется системе подозрительной.
Для того, чтобы просмотреть список обнаруженных аномалий, необходимо выполнить команду:
# amonctl -A =================================================================================================== Alert ID Object name Timestamp Trust value Reason 1 [1712171] phcalc 20.12.2024 23:09:40 0.000000 Process memory alloc anomaly, Opened channels count anomaly, Opened file descriptors anomaly, Used CPU time anomaly, Thread stack anomaly 2 [1712171] phcalc 20.12.2024 23:09:41 0.000000 Process memory alloc anomaly, Opened channels count anomaly, Opened file descriptors anomaly, Used CPU time anomaly, Thread stack anomaly 3 [1712171] phcalc 20.12.2024 23:09:42 0.000000 Process memory alloc anomaly, Opened channels count anomaly, Opened file descriptors anomaly, Used CPU time anomaly, Thread stack anomaly 4 [1712171] phcalc 20.12.2024 23:09:43 0.000000 Process memory alloc anomaly, Opened channels count anomaly, Opened file descriptors anomaly, Used CPU time anomaly, Thread stack anomaly 5 [1712171] phcalc 20.12.2024 23:09:44 0.000000 Process memory alloc anomaly, Opened channels count anomaly, Opened file descriptors anomaly, Used CPU time anomaly, Thread stack anomaly 6 [1712171] phcalc 20.12.2024 23:09:45 0.000000 Process memory alloc anomaly, Opened channels count anomaly, Opened file descriptors anomaly, Used CPU time anomaly, Thread stack anomaly 7 [1712171] phcalc 20.12.2024 23:09:46 0.000000 Process memory alloc anomaly, Opened channels count anomaly, Opened file descriptors anomaly, Used CPU time anomaly, Thread stack anomaly 8 [1712171] phcalc 20.12.2024 23:09:47 0.000000 Process memory alloc anomaly, Opened channels count anomaly, Opened file descriptors anomaly, Used CPU time anomaly, Thread stack anomaly 9 [1712171] phcalc 20.12.2024 23:09:48 0.000000 Process memory alloc anomaly, Opened channels count anomaly, Opened file descriptors anomaly, Used CPU time anomaly, Thread stack anomaly 10 [1712171] phcalc 20.12.2024 23:09:49 0.000000 Process memory alloc anomaly, Opened channels count anomaly, Opened file descriptors anomaly, Used CPU time anomaly, Thread stack anomaly 11 [1712171] phcalc 20.12.2024 23:09:50 0.000000 Process memory alloc anomaly, Opened channels count anomaly, Opened file descriptors anomaly, Used CPU time anomaly, Thread stack anomaly 12 [1712171] phcalc 20.12.2024 23:09:51 0.000000 Process memory alloc anomaly, Opened channels count anomaly, Opened file descriptors anomaly, Used CPU time anomaly, Thread stack anomaly
В этом списке находятся оповещения об аномалиях, которые были сгенерированы amon после того, как мы запустили неизвестный (с точки зрения amon) процесс phcalc.
Здесь мы видим поля:
Каждой обнаруженной аномалии присваивается свой идентификатор, который называется идентификатором аномалии {aid (Alert ID)}.
В таблице мы можем увидеть, что для одного и того же процесса usr/photon/bin/phcalc
генерируется несколько оповещений об аномалии.
Для примера рассмотрим оповещение об аномалии с {aid} 12.
Шаг 8. Чтобы просмотреть подробную информацию об этой аномалии:
# amonctl -a 12
Здесь содержится информация о состоянии процесса в момент возникновения аномалии.
Шаг 9. Для того, чтобы в дальнейшем система не определяла калькулятор как аномалию, дообучим её:
# amonctl -l 12 Amon accepted anomaly with id 12
Шаг 10. Теперь если вывести информацию о состоянии системы (amonctl -S
) и открыть калькулятор, то доверие не будет падать.
Шаг 11. Для того, чтобы откатить amon к необученному состоянию:
# rm -rf /usr/share/amon/amon-operator-kernel-structure-learned.json
Шаг 0. Запустим amon и amongui:
# amon -v & # amongui &
Шаг 1. Обучим amon на некоторой активности:
# amonctl -L All objects switched to learning mode
Через некоторое время после обучения переведём систему в режим анализа активности:
# amonctl -R All objects switched to recognition mode
Шаг 2. На главной странице мы видим те же поля что и при вызове amonctl -S
:
Шаг 3. Для того, чтобы просмотреть общую информацию о процессах, анализируемых в системе в данный момент, необходимо перейти во вкладку "Объекты".
Для просмотра подробной информации по каждому процессу необходимо кликнуть по нужному объекту.
Здесь мы можем переключаться между вкладками "Состояние" и "Параметры". На вкладке "Состояние" выводится подробная информация об объекте, такая как:
На вкладке "Параметры" выводится информация об отклонении параметров от состояния, на котором была обучена система, список анализируемых параметров:
Шаг 4. Перейдём во вкладку "Оповещения":
Шаг 5. Попробуем спровоцировать систему сгенерировать оповещение об аномальной активности, для этого в терминале запустим калькулятор (usr/photon/bin/phcalc
). Теперь пронаблюдаем на генерацию оповещений.
Кликнув по объекту можно просмотреть более подробную информацию о девиации параметров.
Шаг 6. Для того, чтобы дообучить систему, передадим утилите управления параметр -l
с идентификатором аномалии (aid
), из поля обозначенным #
:
# amonctl -l 1
После этого такое поведение приложения не будет приниматься за аномалию.
Шаг 7. Остаётся последняя вкладка "Параметры", на которой можно настроить стиль оформления приложения и изменить параметры сервиса amon.
amon, amonctl, amongui, amon-operator-kernel.so
Предыдущий раздел: перейти