網絡安全中的機器學習——惡意軟件安裝

做者|Elaine Hung
編譯|Flin
來源|analyticsvidhyapython

介紹

監視本地管理員執行的用戶活動始終是SOC分析人員和安全專業人員面臨的挑戰。大多數安全框架都會建議實施白名單機制。安全

可是,現實世界一般並不理想。始終有不一樣的開發人員或用戶擁有本地管理員權限來繞過指定的控件。有沒有辦法監視本地管理員的活動?框架

讓咱們談談數據源

數據集外觀示例—上面列出的3個條目指的是同一軟件dom

咱們有一個常規的批處理做業,以檢索安裝在不一樣區域中的每一個工做站上的軟件。安裝的大多數軟件都以其本地語言顯示。(是的,你能夠對其命名——多是日語,法語,荷蘭語.....)機器學習

所以,你會遇到這樣的狀況,即安裝的軟件在白名單中引用同一軟件時會顯示7個不一樣的名稱。更不用說,咱們有成千上萬的設備。學習

數據集的屬性

  • Hostname 設備的主機名
  • Publisher Name 軟件發佈者
  • Software Name 本地語言的軟件名稱和不一樣的版本號

有沒有辦法能夠識別非標準安裝?

個人想法是公司中使用的合法軟件——應該安裝多個軟件,而且軟件名稱應該不一樣。在這種狀況下,我相信使用機器學習來幫助用戶對軟件進行分類並突出顯示任何異常值將是有效的。人工智能

使用術語頻率-反文檔頻率(TF-IDF)的字符處理spa

天然語言處理(NLP)是人工智能的一個子領域,用於理解和處理人類語言。鑑於機器學習的新進展,許多組織已開始將天然語言處理應用於翻譯,聊天機器人和候選篩選。.net

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/

相關文章
相關標籤/搜索