РОССИЙСКАЯ ФЕДЕРАЦИЯ

ФЕДЕРАЛЬНАЯ СЛУЖБА
ПО ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ
(19)
RU
(11)
(13)
C1
(51) МПК
(12) ОПИСАНИЕ ИЗОБРЕТЕНИЯ К ПАТЕНТУ
Статус: может прекратить свое действие (последнее изменение статуса: 11.12.2024)
Пошлина: Установленный срок для уплаты пошлины за 3 год: с 10.12.2023 по 09.12.2024. При уплате пошлины за 3 год в дополнительный 6-месячный срок с 10.12.2024 по 09.06.2025 размер пошлины увеличивается на 50%.
(52) СПК
G06F 21/55 (2023.05); G06N 20/10 (2023.05)

(21)(22) Заявка: 2022132242, 09.12.2022

(24) Дата начала отсчета срока действия патента:
09.12.2022

Дата регистрации:
10.10.2023

Приоритет(ы):

(22) Дата подачи заявки: 09.12.2022

(45) Опубликовано: 10.10.2023 Бюл. № 28

(56) Список документов, цитированных в отчете о поиске: US 2021/0319113 A1, 14.10.2021. Mohammed Baz "SEHIDS: Self Evolving Host-Based Intrusion Detection System for IoT Networks", опубл. 29.08.2022 на 35 страницах [найдено 26.05.2023], размещено в Интернет по адресу URL: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9460002/pdf/sensors-22-06505.pdf. US 2017/0223037 A1, 03.08.2017. US 2014/0376427 A1,

25.12.2014. CN 111709034 A, 25.09.2020. RU 2738460 C1, 14.12.2020.

Адрес для переписки:
249039, Калужская обл., г. Обнинск, а/я 9004, ООО "Патентная фирма "Артель", Тоцкой М.Г.

(72) Автор(ы):
Гетьман Александр Игоревич (RU),
Перминов Андрей Игоревич (RU),
Рыболовлев Дмитрий Александрович (RU),
Мацкевич Андрей Георгиевич (RU),
Горюнов Максим Николаевич (RU),
Булгакова Мария Ивановна (RU)

(73) Патентообладатель(и):
Федеральное государственное бюджетное учреждение науки Институт системного программирования им. В.П. Иванникова Российской академии наук (RU)

(54) Способ генерации состязательных примеров для системы обнаружения вторжений промышленной системы управления

(57) Реферат:

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


Изобретение относится к области информационных технологий, в частности к информационной безопасности, и может быть использовано для обучения систем обнаружения вторжений (СОВ).

В рамках мероприятия «Методы обнаружения и противодействия атакам с внедрением закладок и зловредного кода в модели машинного обучения», разрабатываемого исследовательским центром доверенного искусственного интеллекта ИСП РАН, известны подходы к реализации состязательных атак в отношении моделей обнаружения вторжений. Настоящее изобретение также относится к области состязательного обучения, развивает предложенные центром доверенного искусственного интеллекта ИСП РАН подходы и описывает способ генерации примеров, реализующих состязательные атаки уклонения в отношении системы обнаружения вторжений промышленной системы управления.

Термины, используемые в тексте описания изобретения:

Система обнаружения вторжений (СОВ) – программная система, предназначенная для выявления несанкционированной и вредоносной активности в компьютерной сети или на отдельном узле.

Сетевые устройства – электронные устройства, необходимые для работы компьютерной сети, например: маршрутизатор, коммутатор, концентратор, коммутационная панель и др.

MTU (maximum transmission unit) – максимальный полезный блок данных одного пакета, который может быть передан сетевым устройством (сетью промышленной системы управления как совокупностью сетевых устройств) без фрагментации.

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

Однако СОВ промышленных систем управления, основанные на машинном обучении, уязвимы в определенных аспектах. Моделью машинного обучения можно манипулировать посредством выборок, намеренно созданных злоумышленником. Атакующий, специальным образом подобрав пример входных данных, может заставить модель ошибаться: незначительное изменение примера входных данных приведёт к ошибке в ответе модели (классификатора) машинного обучения. Совокупность примеров входных данных модели, на которых модель ошибается, т.е. ошибочно классифицирует, называется состязательной выборкой. Возможность реализации состязательных атак создает потенциальную угрозу безопасности системы, основанной на машинном обучении.

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

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

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

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

1) прослушивают генератором образцов трафик промышленной системы управления для получения данных, имеющих то же распределение, что и обучающие данные, используемые системой обнаружения вторжений промышленной системы управления, размечают полученные данные и принимают размеченные аномальные данные в качестве исходных примеров атаки;

2) выполняют анализ трафика промышленной системы управления, извлекают признаки, включающие IP-адрес источника, номер порта источника, IP-адрес назначения, номер порта назначения, промежуток времени между пакетами, время передачи пакета и код назначения пакета;

3) создают и обучают классификатор машинного обучения на основе признаков, извлеченных на шаге 2;

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

x* = arg min g(x) и

d(x*, x0) < dmax,

где x0 – исходный пример атаки;

x* – сформированный состязательный пример;

g(x) – вероятность того, что пример x* будет определён как аномальный пример (пример атаки);

d(x*, x0) – расстояние между состязательным примером и исходным примером атаки;

dmax – максимальное евклидово расстояние, разрешенное промышленной системой управления, указывающее на то, что состязательный пример не оказывает вредоносного воздействия, если расстояние превышено;

5) тестируют состязательный пример, созданный на шаге 4, в реальной промышленной системе управления, при этом если состязательный пример успешно обходит систему обнаружения вторжений промышленной системы управления и сохраняет возможность атаки, он принимается в качестве эффективного состязательного примера, а если состязательный пример не может уклониться от системы обнаружения вторжений промышленной системы управления или сохранить возможность атаки, состязательный пример отбрасывают.

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

Техническая проблема заключается в низкой вероятности нахождения состязательных примеров по причине ограниченной вариативности значений выбранных признаков.

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

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

- прослушивают генератором образцов трафика через сетевое устройство с MTU промышленной системы управления для получения данных, имеющих то же распределение, что и обучающие данные, используемые системой обнаружения вторжений промышленной системы управления, размечают полученные данные и принимают размеченные аномальные данные в качестве исходных примеров атаки;

- далее анализируют трафик промышленной системы управления, извлекают признаки, включающие IP-адрес источника, номер порта источника, IP-адрес назначения, номер порта назначения, промежуток времени между пакетами, время передачи пакета и код назначения пакета;

- после чего создают и обучают классификатор машинного обучения на основе признаков, полученных при анализе трафика;

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

x* = arg min g(x) и

d(x*, x0) < dmax,

где x0 – исходный пример атаки;

x* – сформированный состязательный пример;

g(x) – вероятность того, что пример x* будет определён как аномальный пример (пример атаки);

d(x*, x0) – расстояние между состязательным примером и исходным примером атаки;

dmax – максимальное евклидово расстояние, разрешенное промышленной системой управления, указывающее на то, что состязательный пример не оказывает вредоносного воздействия, если расстояние превышено;

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

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

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

Проведенный анализ уровня техники позволил установить, что аналоги, характеризующиеся совокупностями признаков, тождественными всем признакам заявленного способа, отсутствуют. Следовательно, заявленное изобретение соответствует условию патентоспособности «новизна».

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

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

«Промышленная применимость» способа обусловлена технической возможностью реализации данного способа.

Заявленный способ поясняется чертежами:

фиг. 1 – блок-схема способа генерации состязательных примеров для системы обнаружения вторжений промышленной системы управления.

фиг. 2 – схема генерации состязательных примеров для системы обнаружения вторжений промышленной системы управления.

В блоке 1 (фиг. 1) прослушивают генератором образцов (фиг. 2, блок 2) трафик промышленной системы управления (фиг. 2, блок 3) для получения данных, имеющих то же распределение, что и обучающие данные, используемые системой обнаружения вторжений промышленной системы управления (фиг. 2, блок 4).

В блоке 2 (фиг. 1) полученные в блоке 1 (фиг. 1) данные дополнительно пропускают через сетевое устройство (фиг. 2, блок 1) с MTU, отличным от MTU промышленной системы управления (фиг. 2, блок 3), в результате чего размеры пакетов этих данных становятся отличными от размеров пакетов в промышленной системе управления.

В блоке 3 (фиг. 1) размечают полученные данные и принимают размеченные аномальные данные в качестве исходных примеров атаки (фиг. 2, блок 5).

В блоке 4 (фиг. 1) выполняют анализ трафика промышленной системы управления, извлекают признаки (фиг. 2, блок 6), включающие IP-адрес источника, номер порта источника, IP-адрес назначения, номер порта назначения, промежуток времени между пакетами, время передачи пакета и код назначения пакета.

В блоке 5 (фиг. 1) создают и обучают классификатор машинного обучения (фиг. 2, блок 7) на основе признаков (фиг. 2, блок 6), извлеченных в блоке 4 (фиг. 1).

В блоке 6 (фиг. 1) преобразуют задачу обучения состязательной системы обнаружения вторжений промышленной системы управления в задачу оптимизации с использованием классификатора (фиг. 2, блок 7), созданного в блоке 5 (фиг. 1).

В блоке 7 (фиг. 1) решают задачу оптимизации для получения состязательных примеров (фиг. 2, блок 8), при этом задача оптимизации состоит в следующем:

x* = arg min g(x) и

d(x*, x0) < dmax,

где x0 – исходный пример атаки;

x* – сформированный состязательный пример;

g(x) – вероятность того, что пример x* будет определён как аномальный пример (пример атаки);

d(x*, x0) – расстояние между состязательным примером и исходным примером атаки;

dmax – максимальное евклидово расстояние, разрешенное промышленной системой управления, указывающее на то, что состязательный пример не оказывает вредоносного воздействия, если расстояние превышено;

В блоке 8 (фиг. 1) тестируют состязательный пример (фиг. 2, блок 8), созданный в блоке 7 (фиг. 1), в реальной промышленной системе управления (фиг. 2, блок 3).

В блоке 9 (фиг. 1) проверяют условия, обходит ли состязательный пример систему обнаружения вторжений промышленной системы управления и сохраняет ли он возможность атаки. Если условия выполняются, то его принимают (фиг. 1, блок 10) в качестве эффективного состязательного примера (фиг. 2, блок 9), а если условия не выполняются, состязательный пример отбрасывают (фиг. 1, блок 11).

Заявленный способ подтвержден примером программы на языке программирования python с достигнутым заявленным результатом. В программе осуществляется построение классификатора и поиск состязательных примеров для данных, полученных на основе трафика промышленной системы управления с MTU, равным 1520 – эти данные соответствуют прототипу, и данных, полученных из трафика промышленной системы управления и дополнительно пропущенных через сетевое устройство с MTU, равным 400 – эти данные соответствуют дополнительному действию в заявленном способе. Затем производится сравнение количества обнаруженных состязательных примеров. Ожидается, что дополнительное действие в заявленном способе позволит увеличить количество обнаруженных эффективных состязательных примеров, и, следовательно, повысить вероятность генерации эффективных состязательных примеров, позволяющих уклониться от обнаружения атаки со стороны СОВ. Указанный результат соответствует заявленному техническому результату.

Ниже представлено описанием программы и выполняемых действий.

Загрузка необходимых библиотек:

import math

import pickle

from typing import List

import numpy as np

import pandas as pd

from sklearn import model_selection

from sklearn.ensemble import RandomForestClassifier

from sklearn.metrics import accuracy_score, confusion_matrix, , precision_score, recall_score

from sklearn.model_selection import train_test_split

Далее прослушивают трафик через сетевое устройство с MTU промышленной системы управления (1520 байт) для получения данных, имеющих то же распределение, что и обучающие данные, используемые системой обнаружения вторжений промышленной системы управления, размечают полученные данные. В примере размеченные полученные данные записывают в файл 'Results_1520.csv' и затем читают в программе. Метки, соответствующие атакам (признак 'GlobalLabel'), размечены как "Attack", метки, означающие отсутствие атаки – "Benign". На основе этих данных создается датафрейм df_1520:

df_1520 = pd.read_csv('Results_1520.csv')

Перевод номинальных значений признака 'GlobalLabel' в датафрейме df_1520 в цифровые ("Attack" переводится в "1", "Benign" – в "0"):

df_1520['GlobalLabel']

= df_1520['GlobalLabel'].apply(lambda x: 0 if x == 'Benign' else 1)

Создание признака 'Packet Time', равного 1 / 'Flow Packets/s' и умножение его на 100000 для получения значения, превышающего 1:

df_1520['Packet Time'] = df_1520['Flow Packets/s'].apply(lambda x: 100000/x)

Удаление точек в значениях признаков 'Source IP' и 'Destination IP':

df_1520['Source IP'] = df_1520['Source IP'].apply(lambda x: x.replace('.',''))

df_1520['Destination IP'] = df_1520['Destination IP'].apply(lambda x: x.replace('.',''))

Выбор признаков:

• IP-адрес источника - 'Source IP';

• номер порта источника - 'Source Port';

• IP-адрес назначения - 'Destination IP';

• номер порта назначения -'Destination Port';

• промежуток времени между пакетами -'Flow IAT Mean';

• время передачи пакета - 'Packet Time':

webattack_features = ['Source IP',

'Source Port',

'Destination IP',

'Destination Port',

'Flow IAT Mean',

'Packet Time']

Просмотр выбранных признаков:

df_1520[webattack_features]

Source IP Source Port Destination IP Destination Port Flow IAT Mean Packet Time
0 8314919850 60514 1721803 443 1.634757e+05 16155.244716
1 8314919850 60516 1721803 443 5.279682e+05 50841.377774
2 8314919850 60628 1721803 443 7.404261e+05 71194.815457
3 8314919850 60630 1721803 443 1.372046e+06 131239.151936
4 8314919850 60786 1721803 443 1.007281e+06 95132.083668
... ... ... ... ... ... ...
17941 8314919850 54480 1721803 443 3.237820e+04 2698.183333
17942 8314919850 54650 1721803 443 8.489444e+02 80.426316
17943 8314919850 54652 1721803 443 5.656823e+05 53590.957786
17944 8314919850 54734 1721803 443 5.591972e+05 52976.573547
17945 8314919850 54816 1721803 443 1.038160e+04 865.133333

17946 rows × 6 columns

Формирование целевого вектора обучающей выборки:

y = df_1520['GlobalLabel'].values

Формирование матрицы объектов-признаков обучающей выборки:

X = df_1520[webattack_features].values

Просмотр размерности матрицы объектов-признаков и целевого вектора:

print(X.shape, y.shape)

(17946, 6) (17946,)

Разделение обучающей выборки на обучающую (X_train, y_train) и тестовую (X_test, y_test):

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, shuffle=True, random_state=42)

Построение классификатора типа "случайный лес":

RFmodel = RandomForestClassifier(max_depth=5, n_estimators=5, max_features=3)

Обучение классификатора на обучающей выборке:

RFmodel.fit(X_train, y_train)

Формирование вектора предсказаний модели на тестовой выборке:

y_pred = RFmodel.predict(X_test)

Получение матрицы ошибок модели RFmodel на исходной тестовой выборке:

matrix = confusion_matrix(y_test, y_pred)

print(matrix)

array([[1731, 61],

[ 178, 2517]])

Функция, осуществляющая вычисление и вывод метрик качества:

def print_metrics(y_eval: np.ndarray, y_pred: np.ndarray, average: str = 'binary') -> List[float]:

accuracy = accuracy_score(y_eval, y_pred)

precision = precision_score(y_eval, y_pred, average=average)

recall = recall_score(y_eval, y_pred, average=average)

f1 = f1_score(y_eval, y_pred, average=average)

print('Accuracy =', accuracy)

print('Precision =', precision)

print('Recall =', recall)

print('F1 =', f1)

Вывод метрик качества модели RFmodel на исходной тестовой выборке:

print_metrics(y_test, y_pred)

Accuracy = 0.9467350122576331

Precision = 0.9763382467028704

Recall = 0.9339517625231911

F1 = 0.954674758202162

Поиск состязательных примеров согласно способу-прототипу.

Формирование начального состояния состязательной выборки:

X_test_evasion_attack = X_test.copy()

Задача обучения состязательной системы обнаружения вторжений промышленной системы управления формулируется в виде задачи оптимизации согласно способу-прототипу. Из тестовой выборки берутся все сессии с меткой "атака", на которых модель не ошибается. Оптимизационная задача в настоящем примере для простоты решается методом перебора: для каждой сессии перебором изменяется значение признака "Packet Time" (от исходного до исходного+500). Если получилось изменить ответ классификатора, такой пример считается состязательным. Все состязательные примеры выводятся. Изменение значения признака "Packet Time" на практике может осуществляться внесением задержки на физическом уровне, поэтому такое изменение сохраняет действие атаки и обнаруженные представленным образом состязательные примеры являются эффективными состязательными примерами.

for i in range(0, X_test.shape[0]):

if (y_test[i] == 1) and (RFmodel.predict(X_test[[i]]) == 1):

X_test_attack = X_test[[i]]

j = math.ceil(X_test[i, 5])

for Packet_Time in range(j, j + 500):

X_test_attack[0, 5] = Packet_Time

pred = RFmodel.predict(X_test_attack)

if pred[0] < 1:

print(i, Packet_Time)

X_test_evasion_attack[i, 5] = Packet_Time

break

61 53083

261 22362

400 22362

598 22362

745 53083

831 22362

893 22362

948 22362

987 22362

1003 22362

1128 22362

1257 22362

1475 22362

1592 53083

1681 22362

1827 53343

1839 22362

1851 22362

1887 22362

2202 2800

2378 22362

2421 22362

2578 22362

2725 1720

2851 53083

2978 22362

3018 22362

3033 53343

3041 22362

3135 53083

3247 22362

3488 53083

3551 53083

3555 22362

3701 2800

3852 22362

3918 53083

4055 22362

4100 22362

4117 22362

4118 53083

4237 22362

4265 22362

4291 22362

4295 53343

4377 22362

4444 22362

4452 53343

4463 53083

Общее количество обнаруженных эффективных состязательных примеров (согласно способу-прототипу) – 49.

Сравнение предсказаний модели для одного из векторов исходной тестовой выборки и состязательного примера:

print("Пример строки исходной тестовой выборки:")

print(X_test[[61]])

pred = RFmodel.predict(X_test[[61]])

print("Предсказание модели для исходной тестовой выборки: ", pred[0])

print("Состязательный пример:")

print(X_test_evasion_attack[[61]])

y_pred_evasion_attack = RFmodel.predict(X_test_evasion_attack[[61]])

print("Предсказание модели для состязательного примера: ", y_pred_evasion_attack[0])

Пример строки исходной тестовой выборки:

[[' 8314919850' 39372 ' 1721803' 443 557563.11111111 52821.76845083388]]

Предсказание модели для исходной тестовой выборки: 1

Состязательный пример:

[[' 8314919850' 39372 ' 1721803' 443 557563.11111111 53083]]

Предсказание модели для состязательного примера: 0

Состязательный пример "обманывает" модель: при сохранении свойства атаки классификатор изменил ответ с 1 ("атака") на 0 ("не атака").

Формирование вектора предсказаний модели на тестовой выборке с добавленными состязательными примерами:

y_pred_evasion_attack = RFmodel.predict(X_test_evasion_attack)

Получение матрицы ошибок модели RFmodel на тестовой выборке с добавленными состязательными примерами:

matrix = confusion_matrix(y_test, y_pred_evasion_attack)

matrix

array([[1731, 61],

[ 227, 2468]])

Вывод метрик качества модели RFmodel на тестовой выборке с добавленными состязательными примерами:

print_metrics(y_test, y_pred_evasion_attack)

Accuracy = 0.9358145754401604

Precision = 0.9758797943851325

Recall = 0.9157699443413729

F1 = 0.9448698315467076

Качество модели снизилось, поскольку состязательные примеры, добавленные в тестовую выборку, "обманывают" модель.

Далее выполняются шаги, соответствующие дополнительному действию в заявленном способе.

Полученные из трафика промышленной системы управления данные, имеющие то же распределение, что и обучающие данные, используемые системой обнаружения вторжений промышленной системы управления, дополнительно пропускают через сетевое устройство с MTU, равным 400 байтам, и отличным от MTU промышленной системы управления, равным 1520 байтам. В примере размеченные полученные данные записывают в файл 'Results_400.csv' и затем читают в программе. Метки, соответствующие атакам (признак 'GlobalLabel'), размечены как "Attack", отсутствие атаки – "Benign". На основе этих данных создается датафрейм df_400:

df_400 = pd.read_csv('Results_400.csv')

Перевод номинальных значений признака 'GlobalLabel' в датафрейме df_400 в цифровые ("Attack" переводится в "1", "Benign"- в "0"):

df_400['GlobalLabel'] = df_400['GlobalLabel'].apply(lambda x: 0 if x == 'Benign' else 1)

Создание признака 'Packet Time', равного 1 / 'Flow Packets/s' и умножение его на 100000 для получения значения, превышающего 1:

df_400['Packet Time'] = df_400['Flow Packets/s'].apply(lambda x: 100000/x)

Удаление точек в значениях признаков 'Source IP' и 'Destination IP':

df_400['Source IP'] = df_400['Source IP'].apply(lambda x: x.replace('.',''))

df_400['Destination IP'] = df_400['Destination IP'].apply(lambda x: x.replace('.',''))

Просмотр признаков webattack_features датафрейма df_400:

df_400[webattack_features]

Source IP Source Port Destination IP Destination Port Flow IAT Mean Packet Time
0 8314919850 60514 1721803 443 1.634757e+05 16155.244716
1 8314919850 60516 1721803 443 5.279682e+05 50841.377774
2 8314919850 60628 1721803 443 7.404261e+05 71194.815457
3 8314919850 60630 1721803 443 1.372046e+06 131239.151936
4 8314919850 60786 1721803 443 1.007281e+06 95132.083668
... ... ... ... ... ... ...
9725 8314919850 54480 1721803 443 3.237820e+04 2698.183333
9726 8314919850 54650 1721803 443 8.489444e+02 80.426316
9727 8314919850 54652 1721803 443 5.656823e+05 53590.957786
9728 8314919850 54734 1721803 443 5.591972e+05 52976.573547
9729 8314919850 54816 1721803 443 1.038160e+04 865.133333

9730 rows × 6 columns

Формирование целевого вектора обучающей выборки:

y_400 = df_400['GlobalLabel'].values

Формирование матрицы объектов-признаков обучающей выборки:

X_400 = df_400[webattack_features].values

Просмотр размерности матрицы объектов-признаков и целевого вектора:

print(X_400.shape, y_400.shape)

(9730, 6) (9730,)

Разделение обучающей выборки на обучающую (X_400_train, y_400_train) и тестовую (X_400_test, y_400_test):

X_400_train, X_400_test, y_400_train, y_400_test = train_test_split(X_400, y_400, test_size=0.25, shuffle=True, random_state=42)

Построение классификатора типа "случайный лес":

RFmodel_400 = RandomForestClassifier(max_depth=5, n_estimators=5, max_features=3)

Обучение классификатора на обучающей выборке:

RFmodel_400.fit(X_400_train, y_400_train)

Формирование вектора предсказаний модели на тестовой выборке:

y_400_pred = RFmodel_400.predict(X_400_test)

Получение матрицы ошибок модели RFmodel_400 на исходной тестовой выборке:

matrix = confusion_matrix(y_400_test, y_400_pred)

print(matrix)

array([[1167, 64],

[ 28, 1174]])

Вывод метрик качества модели RFmodel_400 на исходной тестовой выборке:

print_metrics(y_400_test, y_400_pred)

Accuracy = 0.9621866009042335

Precision = 0.9483037156704361

Recall = 0.9767054908485857

F1 = 0.962295081967213

Поиск состязательных примеров.

Формирование начального состояния состязательной выборки:

X_400_test_evasion_attack = X_400_test.copy()

Из тестовой выборки берутся все сессии с меткой "атака", на которых модель не ошибается. Для каждой сессии перебором изменяется значение признака "Packet Time" (от исходного до исходного+500). Если получилось изменить ответ классификатора, такой пример считается состязательным. Все состязательные примеры выводятся.

for i in range(0, X_400_test.shape[0]):

if (y_400_test[i] == 1) and (RFmodel_400.predict(X_400_test[[i]]) == 1):

X_400_test_attack = X_400_test[[i]]

j = math.ceil(X_400_test[i, 5])

for Packet_Time in range(j, j + 500):

X_400_test_attack[0, 5] = Packet_Time

pred = RFmodel_400.predict(X_400_test_attack)

if pred[0] < 1:

print(i, Packet_Time)

X_400_test_evasion_attack[i, 5] = Packet_Time

break

40 26658

117 26658

186 26658

217 26658

231 26658

280 26658

321 26658

353 26658

355 2981

475 26658

500 26658

525 53758

552 26658

571 2252

581 26658

637 26658

652 53758

689 26658

720 2252

736 26658

934 26658

935 2981

941 26658

1032 26658

1184 26658

1226 26658

1229 26658

1243 2252

1287 26658

1291 26658

1605 26658

1644 26658

1655 26658

1704 26658

1778 2981

1799 26658

1856 26658

1868 26658

1889 26658

1916 26658

1953 26658

1975 26658

1984 26658

1991 26658

2014 26658

2017 3554

2039 26658

2091 26658

2187 26658

2197 26658

2265 26658

2278 26658

2320 26658

2327 26658

2331 26658

2353 26658

2365 26658

2371 26658

2410 26658

2425 26658

Общее количество обнаруженных эффективных состязательных примеров после выполнения дополнительного действия заявленного способа – 60.

Сравнение предсказаний модели для одного из векторов исходной тестовой выборки и состязательного примера:

print("Пример строки исходной тестовой выборки:")

print(X_400_test[[40]])

pred_400 = RFmodel_400.predict(X_400_test[[40]])

print("Предсказание модели для исходной тестовой выборки: ", pred_400[0])

print("Состязательный пример:")

print(X_400_test_evasion_attack[[40]])

y_400_pred_evasion_attack = RFmodel_400.predict(X_400_test_evasion_attack[[40]])

print("Предсказание модели для состязательного примера: ", y_400_pred_evasion_attack[0])

Пример строки исходной тестовой выборки:

[[' 8314919850' 42692 ' 1721803' 443 280166.66666667 26542.105274403366]]

Предсказание модели для исходной тестовой выборки: 1

Состязательный пример:

[[' 8314919850' 42692 ' 1721803' 443 280166.66666667 26658]]

Предсказание модели для состязательного примера: 0

Состязательный пример "обманывает" модель: при сохранении свойства атаки классификатор изменил ответ с 1 ("атака") на 0 ("не атака").

Формирование вектора предсказаний модели на тестовой выборке с добавленными состязательными примерами:

y_400_pred_evasion_attack = RFmodel_400.predict(X_400_test_evasion_attack)

Получение матрицы ошибок модели RFmodel_400 на тестовой выборке с добавленными состязательными примерами:

matrix = confusion_matrix(y_400_test, y_400_pred_evasion_attack)

print(matrix)

array([[1167, 64],

[ 88, 1114]])

Вывод метрик качества модели RFmodel_400 на тестовой выборке с добавленными состязательными примерами:

print_metrics(y_400_test, y_400_pred_evasion_attack)

Accuracy = 0.9375256884504727

Precision = 0.9456706281833617

Recall = 0.9267886855241264

F1 = 0.9361344537815126

Качество модели снизилось, поскольку состязательные примеры, добавленные в тестовую выборку, "обманывают" модель.

Выводы.

При генерации состязательных примеров согласно способу-прототипу обнаружено 49 эффективных состязательных примеров. После выполнения дополнительного действия заявленного способа, а именно дополнительного пропуска трафика через сетевое устройство с MTU, отличным от MTU промышленной системы управления, удалось обнаружить ещё 60 эффективных состязательных примеров. Общее количество обнаруженных эффективных состязательных примеров в заявленном способе составило 109 примеров.

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

Формула изобретения

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

прослушивают генератором образцов трафик через сетевое устройство с максимальным полезным блоком данных одного пакета (MTU), который передают протоколом без фрагментации промышленной системы управления для получения данных, имеющих то же распределение, что и обучающие данные, используемые системой обнаружения вторжений промышленной системы управления, размечают полученные данные и принимают размеченные аномальные данные в качестве исходных примеров атаки;

выполняют анализ трафика промышленной системы управления, извлекают признаки, включающие IP-адрес источника, номер порта источника, IP-адрес назначения, номер порта назначения, промежуток времени между пакетами, время передачи пакета и код назначения пакета;

создают и обучают классификатор машинного обучения на основе признаков, полученных при анализе трафика;

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

x* = arg min g(x) и

d(x*, x0) < dmax,

где x0 – исходный пример атаки;

x* – сформированный состязательный пример;

g(x) – вероятность того, что пример x* будет определён как аномальный пример (пример атаки);

d(x*, x0) – расстояние между состязательным примером и исходным примером атаки;

dmax – максимальное евклидово расстояние, разрешенное промышленной системой управления, указывающее на то, что состязательный пример не оказывает вредоносного воздействия, если расстояние превышено;

тестируют созданный состязательный пример в реальной промышленной системе управления и по результату принимают либо не принимают в качестве эффективного состязательного примера;

отличающийся тем, что полученные данные, имеющие то же распределение, что и обучающие данные, используемые системой обнаружения вторжений промышленной системы управления, дополнительно пропускают через сетевое устройство с MTU, отличным от MTU промышленной системы управления.