关于人工智能:网络安全中的机器学习恶意软件安装

6次阅读

共计 2036 个字符,预计需要花费 6 分钟才能阅读完成。

作者 |Elaine Hung
编译 |Flin
起源 |analyticsvidhya

介绍

监督本地管理员执行的用户流动始终是 SOC 剖析人员和平安业余人员面临的挑战。大多数平安框架都会倡议施行白名单机制。

然而,事实世界通常并不现实。始终有不同的开发人员或用户领有本地管理员权限来绕过指定的控件。有没有方法监督本地管理员的流动?

让咱们谈谈数据源

数据集外观示例—下面列出的 3 个条目指的是同一软件

咱们有一个惯例的批处理作业,以检索装置在不同区域中的每个工作站上的软件。装置的大多数软件都以其本地语言显示。(是的,你能够对其命名——可能是日语,法语,荷兰语 …..)

因而,你会遇到这样的状况,即装置的软件在白名单中援用同一软件时会显示 7 个不同的名称。更不用说,咱们有成千上万的设施。

数据集的属性

  • Hostname 设施的主机名
  • Publisher Name 软件发布者
  • Software Name 本地语言的软件名称和不同的版本号

有没有方法能够辨认非标准装置?

我的想法是公司中应用的非法软件——应该装置多个软件,并且软件名称应该不同。在这种状况下,我置信应用机器学习来帮忙用户对软件进行分类并突出显示任何异样值将是无效的。

应用术语频率 - 反文档频率(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 分类器 一起运行。你能够抉择任何你想要的分类器,只有它能给你一个称心的后果。

谢谢浏览!

原文链接:https://www.analyticsvidhya.c…

欢送关注磐创 AI 博客站:
http://panchuang.net/

sklearn 机器学习中文官网文档:
http://sklearn123.com/

欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/

正文完
 0