Автор | Элейн Хунг Компиляция|Флин Источник | analyticsvidhya
вводить
Мониторинг действий пользователей, выполняемых локальными администраторами, всегда является проблемой для аналитиков SOC и специалистов по безопасности. Большинство систем безопасности рекомендуют реализовать механизм белого списка.
Однако реальный мир часто не идеален. Всегда есть разные разработчики или пользователи с правами локального администратора, чтобы обойти указанные элементы управления. Есть ли способ контролировать активность локальных администраторов?
Поговорим об источниках данных
Пример внешнего вида набора данных - 3 записи, перечисленные выше, относятся к одному и тому же программному обеспечению.
У нас есть регулярное пакетное задание для извлечения программного обеспечения, установленного на каждой рабочей станции в разных регионах. Большинство установленных программ отображается на родном языке. (Да, вы можете назвать его - может быть, японский, французский, голландский...)
Таким образом, у вас будет ситуация, когда установленное программное обеспечение показывает 7 разных имен при ссылке на одно и то же программное обеспечение в белом списке. Не говоря уже о том, что у нас есть тысячи устройств.
свойства набора данных
-
Имя хоста Имя хоста устройства
-
Имя издателя Издатель программного обеспечения
-
Название программного обеспечения Название программного обеспечения и разные номера версий на местном языке
Есть ли способ определить нестандартные установки?
Я думаю, что в компании используется законное программное обеспечение - должно быть установлено несколько программ, и названия программ должны быть разными. В этом случае я считаю, что было бы эффективно использовать машинное обучение, чтобы помочь пользователям классифицировать программное обеспечение и выделить любые отклонения.
Обработка символов с использованием термина «частотно-обратная частота документа» (TF-IDF)
Обработка естественного языка (NLP) — это область искусственного интеллекта, используемая для понимания и обработки человеческого языка. Учитывая последние достижения в области машинного обучения, многие организации начали применять обработку естественного языка для перевода, чат-ботов и проверки кандидатов.
TF-IDF — это статистическая мера для оценки релевантности слов документам в наборе документов. Это можно сделать путем умножения на две метрики: сколько раз слово встречается в документе и как часто слово встречается в обратных документах в наборе документов.
TF-IDF часто используется для извлечения слов. Однако мне было интересно, можно ли его также применить к извлечению символов. Цель состоит в том, чтобы изучить, насколько хорошо мы можем применять TF-IDF для извлечения функций, связанных с каждым символом в именах программ, путем экспорта важности каждого символа в имена программ.
В следующем примере сценария показано, как применить TF-IDF к полю имени программного обеспечения в наборе данных.
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer# Import the dataset
df=pd.read_csv("your dataset") # Extract the Manufacturer into List
field_extracted = df['softwarename']# initialize the TF-IDF
vectorizer = TfidfVectorizer(analyzer='char')
vectors = vectorizer.fit_transform(field_extracted)
feature_names = vectorizer.get_feature_names()
dense = vectors.todense()
denselist = dense.tolist()
result = pd.DataFrame(denselist, columns=feature_names)
Фрагмент результата:
Результат приведенного выше сценария TF-IDF (смешанного с разными языками, такими как корейский, китайский)
На приведенной выше диаграмме видно, что был выполнен расчет для оценки «важности» каждого символа в названии программного обеспечения. Это также можно интерпретировать как количество указанных символов, доступных для каждого имени программного обеспечения. Таким образом, вы можете статистически представить функции для каждого «названия программного обеспечения», которые мы можем добавить в выбранную вами модель машинного обучения.
Другие функции, которые я извлек, также считаются полезными для модели:
- энтропия имени ПО
import math
from collections import Counter# Function of calculating Entropy
def eta(data, unit='natural'):
base = {
'shannon' : 2.,
'natural' : math.exp(1),
'hartley' : 10.
}if len(data) <= 1:
return 0counts = Counter()for d in data:
counts[d] += 1ent = 0probs = [float(c) / len(data) for c in counts.values()]
for p in probs:
if p > 0.:
ent -= p * math.log(p, base[unit])return ententropy = [eta(x) for x in field_extracted]
Соотношение пробелов — сколько пробелов в названии программного обеспечения.
Соотношение гласных — сколько гласных (aeiou) содержит имя программы.
Наконец, я комбинирую эти функции, перечисленные выше, склассификатор randomtreeforestбежать вместе. Вы можете выбрать любой классификатор, если он дает удовлетворительный результат.
Спасибо за чтение!
Оригинальная ссылка:Woohoo.Со слов аналитиков vi.com/blog/2020/0…
Добро пожаловать на сайт блога Panchuang AI:panchuang.net/
sklearn машинное обучение китайские официальные документы:sklearn123.com/
Добро пожаловать на станцию сводки ресурсов блога Panchuang:docs.panchuang.net/