Applide Programming Tools
Лекция 4

.

На примере исследования [1] мы пронаблюдаем за возможностью выявления сетевых атак средствами статистического анализа, предоставляемыми MATLAB’ом. Надо указать на макетный, лабораторный характер нашей демонстрации, но авторы [1] сделали и прочие движения на поле конкретной битвы.

При допущениях, сделанных в [1], наше окружение позволяет установить порт назначения каждого пакета, (20 для передачи ftp-данных, 22 для ssh и т. д.), отделить заголовки (heads) от полезной нагрузки (payload), отсортировать фрагменты полезной нагрузки по их длине.

Так появляется единица анализа: блок байтов, порожденный трафиком фиксированного направления и фиксированной полезной длины. Возьмем для простоты за длину блока число 100.

Статистический анализ в сетевом сервере

Каждый такой блок характеризуется в силу его происхождения по признаку «нормальный - аномальный». Эта классификация будет использована при введения объективного (в терминах статистических метрик) подразделения блоков на «нормальные» и «аномальные».
Как и всегда, статистика настаивает на строго индивидуальном описании всех представителей с целью снизить риск ошибочной тревоги (
False Positive) и максимизировать долю обнаруженных аномальных блоков (Hit Rate)     

 

 

Примеры частотного побайтового распределения для различных портов:
  номер байта
vs частота

Примеры побайтового распределения для различных значений полезной длины порт 80: по оси абсцисс – номер байта

Детектор аномалий действует следующим образом:

l    На фазе обучения проводим многократное наблюдение входных нормальных блоков и вычисляем их побайтовое распределения. Результаты формируют базу «нормальных» моделей <порт-центр-вариация>.

l    В фазе детектирования сканируем входящий поток и сравниваем его с соответствующей моделью. По результатам вычисляется расстояние – мера аномальности.

Расстояние Махалонобиса до центра модели– мера аномальности.

Расстояние Махалонобиса - удобное средство, позволяющее сравнить два статистических распределения или установить расстояние от наблюдения до статистически определенной совокупности на предмет установления принадлежности первого к тому же статистическому семейству, что другая.

Здесь мы будем вычислять расстояние от вновь наблюденного блока до «профильного», занесенного в базу.

 

Расстояние Махалонобиса
.

l   Расстояние Махалонобиса определяется выражением: d2=(x- y0)TC-1(x-y0), где x,y0 векторы, каждая координата которых представляет собой переменную.

 

Расстояние Махалонобиса       

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

l   Через С  обозначена ковариационная матрица.

Ковариационна матрица          

Достоинство выбранного нами расстояния в том, что таким образом нам удается принять во внимание не только средние значения, но и вариации измеренных переменных.

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

Упрощенное расстояние Махалонобиса

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

          d =  sum{|xi- yi0|/vari,i=1,..,n}

 

Регуляризованное расстояние Махалонобиса

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

d =  sum{|xi- yi0|/(vari+ alfa),i=1,..,n}

 

 

Прогрессирующее развитие модели

l   Важно предусмотреть последовательное повышение надежности диагностической способности модели. Кроме того, важно ограничить используемую оперативную память. Мы будем пересчитывать оценку среднего с ростом объема наблюдений.

Прогрессирующее развитие модели

l   Пусть после N наблюдений становится доступно ещё одно. Тогда новую оценку среднего дает:

 

Прогрессирующее развитие модели

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

 

Правило, разделяющее аномальный и нормальный трафики

l   Совершенно естественно считать, что «аномальные» блоки данных должны иметь большее расстояние Махалонобиса до «нормального» центра. Тогда для принятия решения о том, что трафик стал «аномальным» потребуется назначить порог, с превышением которого расстояние считается слишком большим.

 


Качество классификаторов:
Матрица коллизий

l    Сonfusion matrix - Матрица коллизий (противоречий) содержит информацию о действительной и предсказанной классификации, выполняемой классификационной системой. Эффективность такой системы вычисляется с помощью матричных данных. Вот пример для классификационной системы, рассчитанной на классификацию на два класса.


Качество классификаторов

l    •     a это число правильных предсказаний, что пример - отрицательный,

l    •     b это число неправильных предсказаний, что пример – положительный,

l    •     с это число неправильных предсказаний, что пример – отрицательный,

l    •     d это число правильных предсказаний, что пример - положительный


 
Cтандартные критерии эффективности классификатора на два класса:

•  Точность (AC) это отношение общего числа предсказаний, которое было верно. к общему числу примеров. Оно определяется из уравнения:

        AC=(a+d)/(a+b+c+d)               (1)

 


 
Cтандартные критерии эффективности классификатора на два класса:

•  Подтверждение (recall)  или правильный позитив (TP) это отношение положительных примеров, которые были идентифицированы правильно, к общему числу положительных примеров , как следует из уравнения:

                TP=d/(c+d)               (2)

 


Cтандартные критерии эффективности классификатора на два класса:

    Ошибочный позитив (FP) это доля отрицательных случаев, которые были распознаны ошибочно, получается из уравнения:

                FP=b/(a+b)               (3)

 


Cтандартные критерии эффективности классификатора на два класса:

    •     Показатель истинности отрицательного прогноза (true negative rate TN) вычисляется как доля отрицательных примеров, которые классифицировались правильно, как вычислено согласно уравнению:

                TN=a/(a+b)               (5)

 


Cтандартные критерии эффективности классификатора на два класса:

•  Ложный отрицательный показатель (FN), - пропорция положительных случаев, что неправильно были классифицированы как негатив, как вычислено используя уравнение:

                FN=c/(c+d)               (6)

 

График ROC (Ratio Of Corectnese)

График ROC является графиком с ошибочным позитивом  (FP) на оси X и положительным показателем истины (TP) на оси Y. Точка (0,1) соответствует идеальным классификаторам: этот классификатор классифицирует все положительные случаи и отрицательные случаи правильно.

График ROC (Ratio Of Corectnese)

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

График ROC (Ratio Of Correctnece)

Во многих случаях, классификатор имеет параметр (порог срабатывания), который может быть скорректирован таким образом, чтобы увеличивать долю правильно распознанных положительных примеров (TP) ценой повышенный доли пропущенных тревожных ситуаций (FP) или уменьшать FP ценой уменьшения в TP. Каждая установка параметра обеспечивает пару (FP, TP) и серия таких пар может быть использована, чтобы вычерчивать кривую ROC. Непараметрический классификатор представлен единственной точкой ROC, соответствующей паре (FP,TP).

График ROC (Ratio Of Corectnese)

Свойства ROC графика.

ROC график или точка независима от распределения классов и цены ошибки.

ROC график или точка содержит в концентрированном виде всю информацию, которая имеется в матрице коллизий, поскольку FN + TP =1, и TN + FP=1.

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

Пример: оптимизация параметров классификатора(1)

clear all

load normtr24

load anormtr24 

[rdat,cdat]=size(normtr);

%Размер входного массива нормальных" данных

M=max(normtr(:,1));

% Количество символов входного алфавита

[radat,cadat]=size(anormtr);

%Размер входного массива «аномальных" данных

Пример: оптимизация параметров классификатора(2)

alfa=0.001;

% Регуляризатор-на случай нулевого колличества

% символов

N=rdat;

% Длина блока "нормальных" данных, блоки

% составляют колонки

ST=cdat;

% Число блоков "нормальных" данных

Пример: оптимизация параметров классификатора(3)

 % Обучение, т.е. вычисление выборочных средних и

 %  выборочных вариаций

 % По каждому признаку (букве алфавита)на массиве

% "нормальных" данных

count1=zeros(1,M);

count2=zeros(1,M); %Инициализация счетчиков «нормальных»

%  средних и квадратов

    b=normtr(:,1); % Первый блок

 for i=1:M, count1(i)=sum(b==i); end;

% Создание массива посимвольных частот для

% первой колонки «нормальных» данных

     count1=count1(:)'./M;  % Теперь это относительные частоты

     count2=count1(:)'.^2;  % А это их квадраты

Пример: оптимизация параметров классификатора(4)

  % Теперь итерационный процесс уточнения выборочных значений

 cnt1=zeros(M,1); % Счетчик частот для каждого блока

 cnt2=zeros(M,1); % Счетчик квадратов частот для каждого блока

 cnt11=zeros(M,1);% Счетчик частот для каждого блока при тестировании

 cnt22=zeros(M,1);

% Счетчик частот для каждого нормального блока при тестировании

 

Пример: оптимизация параметров классификатора(5)

% Обработаем остальные блоки обучающей совокупности

 for y=2:ST

     b = normtr(:,y); % Добавим еще один блок байтов

        for i=1:M, cnt1(i)=sum(b==i); end; % Еще один массив посимвольных частот

         cnt1=cnt1(:)'/M; % Еще один массив относительных посимвольных частот

         count1=count1+(cnt1-count1)/y;

% Поправка вектора средних, согласно очередному блоку данных

         cnt2=cnt1(:)'.^2 ; % Массив квадратов посимвольных частот

         count2=count2+(cnt2-count2)/y;

% Поправка вектора средних квадратов, согласно очередному блок данных

 end;

 

Пример: оптимизация параметров классификатора(6)

ncount1=count1/sum(count1);

     var=count2-count1.^2; % Вектор посимвольных вариаций

 %Теперь посчитаем расстояния Махалонобиса для примеров нормального

  %трафика

     distance1=[]; % Для нормальных данных

  for y=1:ST

        b=normtr(:,y); % Считаем блок "нормальных" пакетов

        for i=1:M, cnt22(i)=sum(b==i); end; % Очередной массив посимвольных частот

     cnt22=cnt22(:)'/M; % Очередной массив посимвольных относительных частот

     ww=sum(abs(cnt22-count1)./(var+alfa));

% Добавляем очередное расстояние в массив distance1

     distance1=[distance1;ww];

  end

% Эти расстояния отсортируем

        eval1=sort(distance1);

nl=min(distance1); nu=max(distance1);

% Границы для расстояний на нормальном трафике

 

Пример: оптимизация параметров классификатора(7)

%Теперь посчитаем расстояния Махалонобиса для примеров

% аномального трафика

  distance2=[]; % Для аномальных данных

  for z=1:ST,

     b1=anormtr(:,z);

% Считаем блок пакетов с аномальным распределением

    for i=1:M, cnt22(i)=sum(b1==i); end;

% Очередной массив посимвольных частот

         cnt22=cnt22(:)'/M;

% Очередной массив посимвольных относительных частот

 % Добавляем очередное расстояние в массив distance2

         distance2=[distance2;sum(abs(cnt22-count1)./(var+alfa))];

  end

% Эти расстояния отсортируем

   eval2=sort(distance2);

 

Пример: оптимизация параметров классификатора(8)

al=min(distance2); au=max(distance2);

% Границы для расстояний на аномальном трафике

  rl=min(nl,al); % Нижняя граница наблюденных расстояний

  ru=max(nu,au); % Верхняя граница наблюденных расстояний

  x=rl+(0:(ST-1))*(ru-rl)/ST;

% Это массив вариантов настройки системы подачи тревоги

  TP=[];FP=[];

 % Протабулируем функции TP=TP(x),FP=FP(x) на интервале

 % [rl,ru] с шагом (ru-rl)/ST

  for i=1:ST

      TP=[TP,sum(distance1<x(i))];

%Число "номальных" блоков удаленных от центра менее x(i)

      FP=[FP,sum(distance2<x(i))];

%Число "аномальных" блоков удаленных от центра менее x(i)

  end

Пример: оптимизация параметров классификатора(9)

 figure(1),

  subplot(2,2,1),plot(1:M,[ncount1;prob1;prob2]),…

title('Friquences of symbols')

  subplot(2,2,2), plot(x(1:ST),FP(1:ST)), …

title('Distances vs FP for normal traffic')

  subplot(2,2,3),plot(x(1:ST),TP(1:ST)),…

title('Distances vs TP for abnormal traffic')

  subplot(2,2,4), plot(FP/ST,TP/ST,'*'),….

title('ROC curve')

  opt=(FP/ST).^2+(TP/ST-1).^2;

%  Это вектор расстояний точек ROC кривой до точки (0,1)

  disp('      levels      FP         TP      DistBy01  ')

  [x' FP' TP' opt']

  disp(' levels   normal distances   abnormal distances  ')

  [x' eval1 eval2]

 

 

Пример: оптимизация параметров классификатора(10)

 Расстояние от точек кривой ROC до (0,1)