隨著工業控制系統(ICS)網路化程度提高,安全風險也隨之增加。傳統安全措施已不足以應對複雜攻擊,因此機器學習技術成為強化 ICS 安全的重要方向。本文提出的多階段模型整合資料預處理、異常檢測和攻擊分類別,以提升 ICS 攻擊偵測與防禦能力。首先,對 ICS 資料進行清洗和特徵提取,接著利用無監督或半監督學習方法檢測異常行為,最後使用監督學習方法對檢測到的異常進行分類別,判斷是否為惡意攻擊。實驗結果顯示,相較於單一模型,多階段模型在準確率和召回率上都有顯著提升,展現其在 ICS 安全防護的應用潛力。

6 結果與討論

本文重點介紹了使用機器學習技術進行網路攻擊檢測所取得的結果,並描述了用於評估基本和多階段機器學習演算法效能的不同度量指標。該模型結合了泛化技術,以提高可擴充套件性和處理不平衡資料的效能。

6.1 模型效能

混淆矩陣可用於透過比較模型的實際和預期結果來計算實作的機器學習系統的效率:True Positive(TP)、True Negative(TN)和False Negative(FP)(表3)。學習演算法中的不同值將用於確定各種步驟。在我們的評估方法中,我們使用了四個常用的指標,即準確度(ACC)、真陽性率(TPR)、假陽性率(FPR)、ROC和AUC[40]。

評估指標描述

評估指標描述
TPRTP / (TP + FN)
FPRFP / (FP + TN)
Accuracy(TP + TN) / (TP + TN + FP + FN)

我們使用了常用的評估指標來估計和比較模型的效能。表3描述了用於基準測試的評估指標。兩個模型都使用處理過的水儲存箱和氣體管道資料集進行了測試,總樣本分別為27,200和274,269,並選擇了特徵。在處理後的資料集上,對於二元分類別的網路攻擊,訓練了KNN、決策樹和隨機森林模型,並根據評估指標(表3)觀察結果,如圖11所示。同樣,對於多標籤分類別的網路攻擊類別,訓練了邏輯迴歸和多層感知器模型,並根據評估指標(表3)觀察結果,如圖12所示。

二元分類別準確度分析

  • K-Nearest Neighbors:WATER STORAGE TANK(95.13%),GAS PIPELINE(96.22%)
  • Decision Tree:WATER STORAGE TANK(90.00%),GAS PIPELINE(92.38%)
  • Random Forest:WATER STORAGE TANK(88.36%),GAS PIPELINE(80.10%)

多標籤分類別準確度分析

  • Multi-Layer Perceptron:WATER STORAGE TANK(81.19%),GAS PIPELINE(93.83%)
  • Logistic Regression:WATER STORAGE TANK(71.63%),GAS PIPELINE(77.85%)

工業控制系統安全分析的多階段機器學習模型研究

摘要

本研究展示了透過兩階段實驗來驗證網路攻擊的實驗過程。實驗結果表明,多階段模型是提高機器學習分類別器在攻擊檢測中的計算效率的有效技術。

模型準確率分析

模型分析

此圖示展示了不同資料集下決策樹和多層感知器模型的準確率比較。

  • 水箱儲存資料集:決策樹(96.22%),多層感知器(93.83%)
  • 氣體管道資料集:決策樹(92.38%),多層感知器(81.90%)

圖表翻譯: 此圖示比較了決策樹和多層感知器模型在兩個不同資料集上的表現。水箱儲存資料集上,決策樹模型的準確率略高於多層感知器模型。在氣體管道資料集上,兩者的差距進一步擴大,顯示出不同的模型對於不同資料特性的敏感度。

未來的研究將專注於提高機器學習模型的效率,特別是在資料集獨立性方面。目前的研究結果表明,多階段模型在不同的資料集上表現出不同的效能,這為未來的改進提供了方向。

程式碼範例:

# 匯入必要的函式庫
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score

# 載入資料集
def load_dataset(path):
    data = pd.read_csv(path)
    return data

# 準備訓練和測試資料
def prepare_data(data):
    X = data.drop(['target'], axis=1)
    y = data['target']
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    return X_train, X_test, y_train, y_test

# 訓練模型
def train_model(X_train, y_train, model_type='decision_tree'):
    if model_type == 'decision_tree':
        model = DecisionTreeClassifier(random_state=42)
    elif model_type == 'mlp':
        model = MLPClassifier(random_state=42)
    model.fit(X_train, y_train)
    return model

# 評估模型
def evaluate_model(model, X_test, y_test):
    y_pred = model.predict(X_test)
    accuracy = accuracy_score(y_test, y_pred)
    return accuracy

#### 內容解密:
此程式碼範例展示瞭如何使用 Python 進行資料載入準備模型訓練和評估首先我們匯入必要的函式庫並載入資料集接著將資料分為特徵X和目標變數y),並進一步分割為訓練和測試集使用決策樹或多層感知器進行模型訓練並評估模型的準確率透過調整不同的模型引數和型別可以比較不同模型的表現從而選擇最合適的模型進行網路攻擊檢測

本研究的貢獻

本研究成功展示了多階段機器學習模型在工業控制系統安全分析中的有效性。透過對比不同模型的效能,我們發現決策樹和多層感知器在不同資料集上具有不同的優勢。未來的研究將進一步探索如何提高模型的泛化能力和資料集獨立性,以更好地應對工業控制系統中的網路安全挑戰。

工業控制系統安全分析的多階段機器學習模型

摘要

隨著工業控制系統(ICS)與網路的深度融合,ICS面臨的安全威脅日益增加。傳統的安全防護措施已難以應對日益複雜的攻擊手段,因此,利用機器學習技術加強ICS的安全性成為一個重要的研究方向。本文提出了一種根據多階段機器學習模型的安全分析方法,以提高ICS的攻擊檢測與防禦能力。

1. 緒論

工業控制系統(ICS)是現代工業基礎設施的核心部分,包括電力、水處理、交通控制等系統。隨著資訊技術的發展,ICS逐漸與網路連線,增加了被網路攻擊的風險。傳統的安全防護措施,如防火牆和入侵檢測系統,在面對複雜和先進的持續性威脅(APT)時顯得力不從心。因此,利用機器學習技術來增強ICS的安全性成為了一個重要的研究方向。

2. 相關研究

許多研究已經探索了機器學習在ICS安全領域的應用。例如,使用機器學習進行異常檢測、入侵檢測和攻擊分類別等。一些研究採用了單一的機器學習演算法,而另一些則嘗試了混合或整合的方法來提高檢測的準確性和效率。

3. 多階段機器學習模型

本文提出的多階段機器學習模型結合了多種機器學習技術,以提高對ICS攻擊的檢測和防禦能力。該模型主要分為三個階段:

  1. 資料預處理階段:對收集到的ICS資料進行清洗、轉換和特徵提取,為後續的機器學習模型提供高品質的輸入資料。
  2. 異常檢測階段:利用無監督學習或半監督學習方法檢測ICS中的異常行為。這些方法可以識別出與正常行為模式不同的資料點或序列。
  3. 攻擊分類別階段:在檢測到異常後,使用監督學習方法對異常進行分類別,以確定是否為惡意攻擊或其它型別的異常。

4. 實驗與結果

為了驗證所提出的多階段機器學習模型的有效性,我們使用了一個公開的ICS資料集進行了實驗。結果表明,該模型能夠有效地檢測和分類別ICS中的攻擊,與單一階段的機器學習模型相比,具有更高的準確性和召回率。

內容解密:

本文提出的多階段機器學習模型結合了資料預處理、異常檢測和攻擊分類別三個階段,以提高工業控制系統(ICS)的安全防護能力。該模型的每一個階段都發揮著至關重要的作用:資料預處理為後續階段提供了乾淨且相關的資料;異常檢測階段能夠識別出系統中的異常行為;而攻擊分類別階段則進一步確定了這些異常是否為惡意攻擊。實驗結果證明瞭該模型的有效性,為ICS的安全防護提供了一個有力的工具。

一個用於網路攻擊分類別的遞迴注意力模型

1. 簡介

隨著現代電腦系統的發展和普及,對可靠資料保護的需求達到了歷史新高。傳統的惡意軟體偵測方法已無法為系統提供所需的安全保障 [1]。攻擊者開發了新的先進方法來隱藏惡意活動並避免被偵測,使得系統容易受到惡意資料取得的威脅。人們開發了新的演算法來偵測和分類別惡意攻擊 [2–7]。開發這些演算法有多種方法,包括操作碼分析。

所有軟體都會與硬體元件進行互動,並在某些時候將軟體意圖以操作碼的形式進行處理,無論是良性軟體還是惡意軟體。因此,操作碼資料為我們提供了有關軟體及其意圖的寶貴資訊。

具體來說,多型惡意軟體由於其動態特性,變得越來越難以偵測。多型程式碼是指使用變異引擎改變其程式碼,同時保持基本演算法不變的一種程式碼。這種特性使得傳統的偵測方法難以有效應對。

2. 背景與相關研究

近年來,許多研究致力於使用機器學習和深度學習技術來改進惡意軟體的偵測和分類別。文獻 [47]-[54] 中提到的研究使用了不同的機器學習演算法,包括支援向量機(SVM)、深度學習和隨機森林等,來偵測和分類別各種網路攻擊。

2.1 使用機器學習進行網路攻擊偵測

許多研究表明,機器學習技術在網路攻擊偵測中具有很大的潛力。例如,文獻 [47] 使用深度學習和支援向量機(SVM)對埠掃描攻擊進行了比較分析。文獻 [48] 提出了一種根據功率譜密度(PSD)的熵和機器學習方法來偵測低速率拒絕服務(DoS)攻擊。

2.2 使用深度學習進行惡意軟體分類別

深度學習技術由於其自動提取特徵的能力,在惡意軟體分類別中顯示出巨大的潛力。文獻 [55] 和 [56] 中提到的研究使用了多層感知器(MLP)和決策樹等技術來進行分類別和特徵選擇。

3. 一個用於網路攻擊分類別的遞迴注意力模型

本研究提出了一種根據遞迴神經網路(RNN)和注意力機制的網路攻擊分類別模型。該模型旨在利用操作碼序列來分類別惡意軟體。

3.1 模型架構

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title 工業控制系統安全多階段機器學習模型

package "ICS 多階段安全模型" {
    package "第一階段:資料處理" {
        component [資料預處理] as preprocess
        component [特徵提取] as extract
        component [不平衡處理] as balance
    }

    package "第二階段:異常檢測" {
        component [KNN 分類] as knn
        component [決策樹] as dt
        component [隨機森林] as rf
    }

    package "第三階段:攻擊分類" {
        component [邏輯迴歸] as lr
        component [多層感知器] as mlp
        component [監控維護] as monitor
    }
}

collect --> clean : 原始資料
clean --> feature : 乾淨資料
feature --> select : 特徵向量
select --> tune : 基礎模型
tune --> cv : 最佳參數
cv --> eval : 訓練模型
eval --> deploy : 驗證模型
deploy --> monitor : 生產模型

note right of feature
  特徵工程包含:
  - 特徵選擇
  - 特徵轉換
  - 降維處理
end note

note right of eval
  評估指標:
  - 準確率/召回率
  - F1 Score
  - AUC-ROC
end note

@enduml

圖表翻譯: 此圖示展示了所提出的遞迴注意力模型的架構。操作碼序列首先透過RNN編碼器進行編碼,然後使用注意力機制突出重要的特徵,最後透過分類別器輸出分類別結果。

3.2 模型實作

import torch
import torch.nn as nn
import torch.optim as optim

class RecurrentAttentionModel(nn.Module):
    def __init__(self, input_dim, hidden_dim, output_dim):
        super(RecurrentAttentionModel, self).__init__()
        self.rnn = nn.GRU(input_dim, hidden_dim, batch_first=True)
        self.attention = nn.MultiHeadAttention(hidden_dim, num_heads=8)
        self.classifier = nn.Linear(hidden_dim, output_dim)

    def forward(self, x):
        # RNN 編碼
        rnn_output, _ = self.rnn(x)
        
        # 注意力機制
        attention_output, _ = self.attention(rnn_output, rnn_output)
        
        # 分類別
        output = self.classifier(attention_output[:, -1, :])
        return output

# 初始化模型、損失函式和最佳化器
model = RecurrentAttentionModel(input_dim=128, hidden_dim=256, output_dim=8)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

#### 內容解密:

上述程式碼實作了一個根據PyTorch的遞迴注意力模型。首先定義了一個RecurrentAttentionModel類別,繼承自nn.Module。在__init__方法中,初始化了RNN層、注意力機制層和分類別器層。在forward方法中,描述了模型的正向傳播過程:首先透過RNN層對輸入序列進行編碼,然後使用注意力機制突出重要特徵,最後透過分類別器輸出最終結果。

  • RNN層:使用GRU(Gated Recurrent Unit)作為RNN的實作,用於捕捉序列資料中的時間依賴關係。
  • 注意力機制:採用多頭注意力機制(MultiHeadAttention),能夠同時從不同的表示子空間中捕捉不同的特徵。
  • 分類別器:使用一個全連線層(Linear)將最後一個時間步的隱藏狀態對映到輸出空間,進行最終的分類別。

網路攻擊分類別中的迴圈注意力模型應用

隨著惡意軟體的不斷演進,傳統的偵測方法已難以有效應對。尤其是多型態惡意軟體(polymorphic malware),它們能夠變異並改變自身結構,使得根據固定模式匹配的偵測方法失效。這類別惡意軟體的變異特性,使得它們與初始狀態的關聯性大大降低。因此,我們需要一種能夠識別並偵測演算法整體結構的演算法。

惡意軟體偵測的挑戰

多型態惡意軟體並非單獨存在的問題,其他多種惡意攻擊也被開發出來以繞過偵測系統。因此,偵測系統必須具備深入分析軟體資料並提取軟體意圖的能力。將軟體資料視覺化,尤其是操作碼(operational code)資料,可以為偵測系統提供檢查程式資料和指令相關性的能力。

視覺化與影像紋理分析

視覺化利用了影像紋理分析,這是電腦視覺中的一個重要子領域。它允許我們檢查影像區域中強度的空間排列。這在分析演算法的整體結構以及非相鄰指令之間的關係時非常有幫助。此外,視覺化還可以簡單地擴充資料集,使得擴充套件資料集變得更容易。

迴圈注意力模型(RAM)

迴圈注意力模型是一種替代主流影像分類別模型的方案。RAM 的靈感來自人類的感知方式。人類的注意力並非全面分析視覺輸入,而是選擇視覺空間中的不同部分。在一段時間內,透過不同的注視點收集資訊,從而形成更完整的內部表徵。因此,影像可以在關鍵區域以更高的注意力進行分析。

惡意軟體二元分類別

本章重點探討使用操作碼資料和 RAM 進行惡意軟體二元分類別。首先,透過影像處理技術將操作碼資料轉換為影像。這使得分析非相鄰指令之間的關係成為可能,從而揭示最初模糊的軟體意圖。使用多項指標評估所提出模型的效率,包括準確率(accuracy)、精確率(precision)、召回率(recall)和 F-score,以評估所提出的威脅狩獵模型的效能。

評估指標

  • 真陽性(True Positive, TP):惡意樣本被預測為惡意軟體。
  • 真陰性(True Negative, TN):良性樣本被預測為良性軟體。
  • 假陽性(False Positive, FP):良性樣本被預測為惡意軟體。
  • 假陰性(False Negative, FN):惡意樣本被預測為良性軟體。

使用上述核心指標,可以透過以下公式衡量機器學習系統的效能:

  • 準確率:表示模型能夠準確預測惡意軟體和良性樣本的能力。 Accuracy = (TP + TN) / (TP + TN + FN + FP)
  • 精確率:對於某個特定的 APT 組,精確率是指正確預測的樣本數除以預測為該類別的總樣本數。 Precision = TP / (TP + FP)
  • 召回率:對於某個特定的類別,召回率是指正確預測的樣本數除以該類別的總樣本數。 Recall = TP / (TP + FN)
  • F-Score(F1):F-Score 是精確率和召回率的調和平均值,可以作為分類別器效能的綜合指標。 F1 = 2 * (Precision * Recall) / (Precision + Recall)

相關研究

許多研究已經探討了利用操作碼資料進行惡意軟體分類別的可行性。例如,Haddadpajouh 等人提出了一種多核心和元啟發式特徵選擇方法,用於 IoT 環境中的網路威脅狩獵,取得了 94% 的驗證準確率。韓國的研究人員使用操作碼資料訓練迴圈神經網路,以識別惡意活動,達到了 97.59% 的準確率。他們還比較了 word2vec 編碼和傳統的 one-hot 編碼,發現使用 word2vec 編碼可以提高 0.5% 的準確率。