Реализация алгоритма кластеризации HTTP-ответов и обнаружения аномалий атак перебора (1187426), страница 3
Текст из файла (страница 3)
Во-вторых, число кластеров, как правило, неизвестно заранее иустанавливается в соответствии с некоторым субъективным критерием. В-третьих,результат кластеризации существенно зависит от метрики ρ, выбор которой, какправило, также субъективен и определяется экспертом[5].174.2 Постановка задачи кластеризации HTTP пар “запрос-ответ” и поискааномалий типа brute forceВведем следующие обозначения:Req — пространство сетевых запросов по протоколу HTTP.X — пространство характеристик сетевых запросов.h : Req → X , h — функция, отображающая пространство запросов в пространствохарактеристик.ρ : X × X→[0, +∞) , ρ — функция расстояния, характеризует схожесть сетевыхзапросов.K = {1, 2, … , k} , K — множество кластеров.Rti— подмножество запросов за i-ый интервал времени t i ,Xti = { x ∈ X | x = h (req), req ∈Rti }, X tiXпространствеСtijtiX ti =j∈K— образ множества Rti в.— разбиение множества{С }Rti ⊆ Req .X ti{С }jна кластерыtij∈K , где множествоудовлетворяет следующим условиям:∪Сj∈Kjti,Ctij ∩Ctli = ∅ , где j∈K, l ∈K, j ≠l .Sti— состояние процесса обучения на начало интервала времени ti .
Подробнеебудет описано далее работы.Каждый кластерСti jописывается нормой.Sti18B: Sti →Сti , B — алгоритм построения Сti . На вход алгоритм принимает StiстроитиСti .A: Sti × Xti → Sti+1 , А — алгоритм обучения. На вход принимает Stiна выходе алгоритмаиX tiSti+1 .Таким образом, в данной работе будут исследованы следующие задачи:1. Введение функцииh : Req → X ;2.
Введение функции расстояния ρ : X × X → [ 0, +∞ ) ;3. Введение оптимальности разбиения множества4. ОписаниеX;Sti , i ∈ ℕ ;5. Создание алгоритмаA : S t i × X t i → S t i +1 ;6. Создание алгоритма детектирования Brute force аномалий. На вход алгоритмпринимаетSti и HTTP трафик.,195 Описание предлагаемого алгоритма5.1 Кластеризация5.1.1 Выделение характеристик для кластеризацииКаждый HTTP “запрос - ответ” содержит следующие заголовки, которые выделены длякластеризации и поиска аномалий в http - трафике:1.
Длина ответа (англ. Content-Lenght) — размер содержимого сущности(HTTP-ответа) в октеках (которые в русском языке обычно называют байтами). [1]Обозначим через len значение данного параметра.2. Время отклика (англ. response time) — время, которое требуется системе нато, чтобы ответить на HTTP-запрос. Время отклика — в технологии время, котороетребуется системе или функциональной единице на то, чтобы отреагировать на данныйввод. [3] Обозначим через time значение данного параметра.3. Код состояния HTTP (англ. HTTP status code)— часть первой строки ответасервера при запросах по протоколу HTTP.
Он представляет собой целое число из трёхдесятичных цифр. [2] Обозначим через stat_code значение данного параметра.4. IP-адрес с которого получен HTTP – запрос. Обозначим через ip значениеданного параметра. [7]5. Единый указатель ресурса (англ. Uniform Resource Locator, URL) —единообразный локатор (определитель местонахождения) ресурса.[4] Обозначим черезurl значение данного параметра.205.1.2 Сбор данныхКаждому http «запрос - ответу» ставим в соответствие уникальный идентификаторcounterid.
Для каждого http «запрос - ответа» сохраняем значения его параметров[counterid, len, time, stat_code, ip, url] в таблицу 1 Counters.Факт: в таблицу постоянно добавляются новые значения характеристик HTTP “запрос ответа”counteridlenТаблица 1. Counterstimestat_codeipurl215.1.3 Создание разбиенийНа первом этапе разбиваем на группы http-ответы, относящиеся к одному уникальномузначению url’а.Второй этап. Каждую группу, выделенную на первом этапе, http-ответов разделяем нагруппы алгоритмом (назовём его clustering_res) , описанным ниже.Описание алгоритма clustering_res. Таким образом, алгоритм принимает на входчисловые значения параметров http-ответов, а именно [len, time, stat_code], относящие кодному значению url’а.
Данный алгоритм применяется к точкам в трехмерномпространстве.Вводим функцию расстояния между двумя точками, например i = [len_i, time_i,stat_code_i] и j = [len_j, time_j, stat_code_j]:ρ (i, j ) = 103 i len _ i − len _ j + time _ i − time _ j + 1010 i stat _ code _ i − stat _ code _ j (1)Фиксируем минимальное(k_min) и максимальное (k_max) количество кластеров(k_minи k_max натуральные числа, k_max > k_min).Запускаем алгоритм K-Means [5] для k кластеров, где k пробегает значения от k_min доk_max c интервалом единица, m раз (m фиксируется). Таким образом, алгоритму kmeans передаем следующие входные данные:•k (количество кластеров);•«точки данных» для алгоритма это числовые значения параметров [Content-Length,response time, status code], точки в трехмерном пространстве;•введенную функцию расстояния (1).В итоге k-means запустился (m*( k_max — k_min)) раз.
На данном этапеимеется (m*( k_max — k_min)) разбиений. Далее среди этих разбиений выберем односледующим способом, описанным ниже.225.1.4 Выбор наилучшего разбиенияВводим коэффициент, оценивающий качество каждого разбиения, обозначим егоValidity_index. [6]Validity_index = silhouette_index , гдеФормула silhouette_index подсчета индекса и его значения описаны здесь: [6, стр. 20].Выбираем одно разбиение, которое имеет минимальный Validity_index индекс.На данном этапе имеем одно разбиение для одного url’a.235.1.5 Описание кластеровДля каждого кластера введем описание:1. url — значение Url’a, который был кластерезован.2.
Центр кластера.counters_count1len_i∑counters_counti=1•len_center =•counters_count1time_center =time_i∑counters_counti=1•stat_code_center = mod e {stat_code_i}i=1counters _ count. Mode(мода) –значение во множестве наблюдений, которое встречается наиболеечасто. [8]Counters_count – количество кластеризованных точек.3. Данные о кластере. Введем обозначения:• len_min – минимальное значение Content-Length в кластере;• len_max – максимальное значение Content-Length в кластере;• time_min – минимальное значение response time в кластере;• time_max – максимальное значение response time в кластере;• stat _code_min – минимальное значение status code в кластере;• stat _code_max – максимальное значение status code в кластере;Каждому кластеру поставим в соответствие уникальный идентификатор, обозначим егоclusterid. Сохраняем следующие данные о кластере [clusterid , url_value, len_center,time_center, stat_code_center, [len_min, time_min, stat_code_min, len_max, time_max, stat_code_max]] в таблицу 2 Clusters.При выполнении следующих четырёх условий, принимается решение опринадлежности пары http «запрос-ответ» с характеристиками [counterid, len_i, time_i,stat_code_i, url_i] к кластеру с описанием [clusterid , url_value, len_center, time_center,stat_code_center, [len_min, time_min, stat_code_min, len_max, time_max, stat_code_max]]:•url_value = url_i.
Значение Url’а http-ответа совпадает со значениемurl’a, к которому относится кластер;•len_min <= len_i <= len_max;•time_min <= time_i <= time_max;24•status _code_min <= stat_code_i <= status _code_max.Обозначим данное правило Cluster_rule.clusturl_vlen_ctime_c stat_codelen_timestat_cod len_time_ stat_coderidalueenterentermin_mine_minmaxТаблица 2.
Clusters_centermaxe_max255.2 Поиск аномалий. Детектирование Brute ForceВ этом разделе будет описан алгоритм, назовём его Brute_detect, поиска аномалий в http– трафике.5.2.1 Сбор данных о http-трафике по кластерамВходными данными для данного алгоритма являются таблица 1 Counters и таблица 2Clusters. Факт: в таблицу 1 Counters постоянно добавляются характеристики новых парhttp – «запрос-ответов».Фиксируется промежуток времени в секундах, обозначим его timeslot, например, 60секунд.Последовательно каждые timeslot секунд выбираем из таблицы 1 Counters строки,которые были записаны в эту таблицу за последние timeslot секунд.
По этим строкамсобираем следующие данные и сохраняем в таблицу 3 Stat_cluster. Напоминание: втаблице 1 Counters характеристики http – “запрос-ответа” [counterid, len, time, stat_code,ip, url].• Ip – значение ip из таблицы 1 Counters;• Clusterid.Используя характеристики http – “запрос-ответа” [counterid, len,time, stat_code, ip, url] и правило Cluster_rule, описанное выше в пункте“Описание кластеров”, определяем clusterid к которому относится данныйcounterid;• Count – количество counterid, с данным ip, которые относятся к кластеруclustered;• stat_cl_id – идентификатор данной характеристики;stat_cl_idtimeslotipclusteridcountТаблица 3.
Stat_clusterТак как в таблицу 1 Counters постоянно добавляются строки, то и в таблицу 3Stat_cluster, тоже буду постоянно добавляться строки.265.2.2 Определение аномального поведенияДля каждой уникальной пары значений [timeslot, clusterid], Из таблицы 3 выбираемстроки, которые им соответствуют, обозначим их количество count_stat. Из этих строквыбираем значения count, обозначим их count_i, формируем из этих значенийупорядоченный по возрастанию массив, обозначим егоsort_counts= {count_i}i=1count_stat.Вычислим величину, обозначим её как q3, ниже которой лежит 75% значенийsort_counts .dq=q3 - count _1 , count_1 – первый элемент в массиве sort_count.Вычислимcount_req=q3+dq * 3 .Сохраняем описанные данные в таблицу 4.
Custer_frequencyCuster_frequtimeslot clusterid count_reqency_idТаблица 4. Custer_frequencyНапоминание: в таблицу 3 Stat_cluster постоянно добавляются значения [stat_cl_id,timeslot, ip, clusterid, count], обозначим [stat_cl_id_v, timeslot_v, ip_v, clusterid_v,count_v], эти значения, соответственно. Выбираем из таблицы 4 Custer_frequencyстрочку со значениями в столбцах timeslot = timeslot_v, clusterid clusterid_v,соответствующее значение в столбце count_req, обозначим count_req_v. Условиеаномального ip: если count_v > count_req_v, то ip_v считаем аномальным.276 Преимущества и недостатки предлагаемого решения6.1 ПреимуществаДанное решение не требует доработки веб-приложения для начала использования, нетребует привлечения специалиста для перенастройки защиты при изменении вебприложения.Правила блокировки от brute force генерируются автоматически в зависимости отповедения пользователей на защищаемом веб-приложении.286.2 НедостаткиТак как аномальное количество запросов к кластеру выставляется автоматически наоснове собранной статистики предыдущих пользователей, то необходимо иметь трафикот самих пользователей к веб-приложению.Система может быть последовательно обучена таким образом, что аномальноеповедение будет считаться нормальным.