摘 要:本文探討生成對(duì)抗網(wǎng)絡(luò)(GAN)在網(wǎng)絡(luò)異常檢測(cè)中的應(yīng)用,提出了一種基于GAN的檢測(cè)方法。利用對(duì)抗訓(xùn)練捕捉網(wǎng)絡(luò)流量特征分布,對(duì)異常行為進(jìn)行精確檢測(cè)。算法包括網(wǎng)絡(luò)流量數(shù)據(jù)預(yù)處理和異常檢測(cè)模塊,前者用于轉(zhuǎn)換數(shù)據(jù)格式,后者基于GAN架構(gòu)生成并檢測(cè)異常流量。試驗(yàn)結(jié)果顯示,該方法在準(zhǔn)確率、召回率和F1分?jǐn)?shù)方面顯著優(yōu)于傳統(tǒng)規(guī)則和簽名檢測(cè)方法,具備更高的靈活性和適應(yīng)性,提升了網(wǎng)絡(luò)系統(tǒng)的安全性和穩(wěn)定性。
關(guān)鍵詞:生成對(duì)抗網(wǎng)絡(luò)(GAN);網(wǎng)絡(luò)異常檢測(cè);異常事件生成;對(duì)抗訓(xùn)練
中圖分類號(hào):TN 915" " " 文獻(xiàn)標(biāo)志碼:A
網(wǎng)絡(luò)安全是現(xiàn)代互聯(lián)網(wǎng)面臨的重大挑戰(zhàn),網(wǎng)絡(luò)攻擊手段不斷增加使異常檢測(cè)成為保障系統(tǒng)安全的關(guān)鍵。采用手工特征提取的傳統(tǒng)方法難以應(yīng)對(duì)復(fù)雜網(wǎng)絡(luò)環(huán)境[1]。生成對(duì)抗網(wǎng)絡(luò)(GAN)通過對(duì)抗訓(xùn)練學(xué)習(xí)數(shù)據(jù)分布捕獲高級(jí)特征,可提升檢測(cè)準(zhǔn)確性和魯棒性。GAN的生成器和判別器通過對(duì)抗訓(xùn)練生成并增強(qiáng)網(wǎng)絡(luò)流量數(shù)據(jù),發(fā)現(xiàn)潛在異常模式,解決訓(xùn)練數(shù)據(jù)不足問題[2]。本文提出結(jié)合注意力機(jī)制的GAN網(wǎng)絡(luò)異常檢測(cè)算法,以提升檢測(cè)準(zhǔn)確性和效率,保障網(wǎng)絡(luò)安全與穩(wěn)定。
1 基于生成對(duì)抗網(wǎng)絡(luò)的網(wǎng)絡(luò)異常檢測(cè)算法
1.1 算法架構(gòu)
本文提出的基于生成對(duì)抗網(wǎng)絡(luò)的網(wǎng)絡(luò)異常檢測(cè)算法的整體框架如圖1所示。該算法主要包括網(wǎng)絡(luò)流量數(shù)據(jù)解析模塊、數(shù)據(jù)異常檢測(cè)模塊。在數(shù)據(jù)輸入階段,從監(jiān)控系統(tǒng)讀取原始網(wǎng)絡(luò)流量數(shù)據(jù),并將其傳遞到網(wǎng)絡(luò)流量數(shù)據(jù)預(yù)處理模塊中。在網(wǎng)絡(luò)流量數(shù)據(jù)預(yù)處理模塊中,對(duì)原始網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行預(yù)處理,包括清洗、去噪等操作,以保證數(shù)據(jù)的質(zhì)量和可用性[3]。構(gòu)建序列化事件,將預(yù)處理后的網(wǎng)絡(luò)流量數(shù)據(jù)轉(zhuǎn)換為序列化事件,其中每個(gè)事件包括網(wǎng)絡(luò)流量的時(shí)間戳、特征等信息,利用滑動(dòng)窗口并根據(jù)時(shí)序進(jìn)行截取,構(gòu)建訓(xùn)練真實(shí)樣本集[4]。
在生成對(duì)抗網(wǎng)絡(luò)(GAN)模型訓(xùn)練階段,生成器生成與真實(shí)網(wǎng)絡(luò)流量數(shù)據(jù)相似的假樣本,代表可能的異常事件。判別模型將生成的假樣本與真實(shí)樣本進(jìn)行分類,以區(qū)分真實(shí)數(shù)據(jù)和生成的假樣本。通過判別損失函數(shù),交替更新判別模型和生成模型,提高生成器生成假樣本的能力。在異常檢測(cè)階段,模型收斂后,將網(wǎng)絡(luò)流量數(shù)據(jù)輸入生成模型,生成后續(xù)異常事件分布,這些異常事件反映了網(wǎng)絡(luò)流量中的異常行為,并對(duì)異常行為進(jìn)行檢測(cè)和分析。
1.2 網(wǎng)絡(luò)流量數(shù)據(jù)解析模塊
網(wǎng)絡(luò)流量數(shù)據(jù)解析模塊將原始的網(wǎng)絡(luò)流量數(shù)據(jù)轉(zhuǎn)換成適合機(jī)器學(xué)習(xí)模型處理的格式。
1.2.1 原始數(shù)據(jù)解析
原始數(shù)據(jù)解析提取出其中的關(guān)鍵信息,例如時(shí)間戳、源IP地址、目標(biāo)IP地址、協(xié)議類型和標(biāo)簽。使用正則表達(dá)式來實(shí)現(xiàn)這一解析過程,代碼如下所示。
import refrom datetime import datetime
# 示例原始網(wǎng)絡(luò)流量數(shù)據(jù)
raw_data = [
\"2023-05-25 08:23:45, 192.168.1.1, 192.168.1.2, TCP, NORMAL\",
\"2023-05-25 08:23:50, 192.168.1.3, 192.168.1.4, UDP, WARNING\",
# 更多數(shù)據(jù)...
]
# 正則表達(dá)式解析網(wǎng)絡(luò)流量數(shù)據(jù)
pattern = re.compile(r'(\d+-\d+-\d+ \d+:\d+:\d+), (\d+\.\d+\.\d+\.\d+), (\d+\.\d+\.\d+\.\d+), (\w+), (\w+)')
parsed_data = []
for entry in raw_data:
match = pattern.match(entry)
if match:
timestamp = datetime.strptime(match.group(1), '%Y-%m-%d %H:%M:%S')
src_ip = match.group(2)
dest_ip = match.group(3)
protocol = match.group(4)
label = match.group(5)
parsed_data.append([timestamp, src_ip, dest_ip, protocol, label])
上述代碼定義了一個(gè)正則表達(dá)式模式,用于匹配原始數(shù)據(jù)中的各個(gè)字段。進(jìn)而遍歷原始數(shù)據(jù),逐條匹配、解析,提取出所需信息,并將其存儲(chǔ)在一個(gè)列表中。
1.2.2 數(shù)據(jù)轉(zhuǎn)換
該操作需要將解析后的數(shù)據(jù)轉(zhuǎn)換為DataFrame,以便進(jìn)一步處理。DataFrame是一種便于對(duì)數(shù)據(jù)進(jìn)行操作和分析的數(shù)據(jù)結(jié)構(gòu),在Python中可通過Pandas庫來實(shí)現(xiàn),代碼如下所示。
import pandas as pd
# 轉(zhuǎn)換為DataFrame以便進(jìn)一步處理
df = pd.DataFrame(parsed_data,columns=['timestamp', 'src_ip', 'dest_ip','protocol', 'label'])
上述代碼將解析后的數(shù)據(jù)存儲(chǔ)在一個(gè)名為df的DataFrame中,其中各列分別代表時(shí)間戳、源IP地址、目標(biāo)IP地址、協(xié)議類型和標(biāo)簽。
1.2.3 事件編號(hào)
該步驟的目的是將具有相同流量特征的數(shù)據(jù)歸為同一類事件,并對(duì)其進(jìn)行編號(hào)處理,形成事件集合,代碼如下所示。
# 事件編號(hào)處理
df[‘event_id’] = df.groupby([‘src_ip’, ‘dest_ip’, ‘protocol’]).ngroup()
上述代碼使用Pandas的groupby函數(shù)對(duì)數(shù)據(jù)進(jìn)行分組,并對(duì)每個(gè)分組進(jìn)行編號(hào)處理,形成事件集合。
1.2.4 滑動(dòng)窗口生成事件模式樣本
滑動(dòng)窗口是一種常用的序列處理技術(shù),可從序列數(shù)據(jù)中提取子序列,從而形成樣本數(shù)據(jù),代碼如下所示。
# 滑動(dòng)窗口生成事件模式樣本def create_windowed_samples(dataframe, window_size):
samples = []
for i in range(len(dataframe) - window_size + 1):
window = dataframe.iloc[i:i + window_size]
samples.append(window)
return samples
# 生成樣本,滑動(dòng)窗口尺寸為3
window_size = 3
samples = create_windowed_samples(df, window_size)
上述代碼中定義了一個(gè)名為create_windowed_samples的函數(shù)。該函數(shù)將一個(gè)DataFrame和滑動(dòng)窗口的大小作為輸入,并返回滑動(dòng)窗口生成的樣本數(shù)據(jù)。進(jìn)而使用該函數(shù)生成樣本數(shù)據(jù),其中滑動(dòng)窗口的尺寸為3。
1.3 異常檢測(cè)模塊
在生成對(duì)抗網(wǎng)絡(luò)中,生成模型(Generator)和判別模型(Discriminator)是異常檢測(cè)模塊的核心組成部分。
1.3.1 生成模型
生成模型可生成與實(shí)際樣本十分相似的假樣本,包括嵌入層(embedding)、GRU和LSTM層、注意力機(jī)制層(attention)和全連接層(dense)。嵌入層將事件表示為連續(xù)的一維向量,GRU和LSTM層將這些向量序列化,注意力機(jī)制層微調(diào)隱層特征,全連接層將輸出轉(zhuǎn)換為事件在當(dāng)前模式下發(fā)生的概率分布。代碼如下所示。
import tensorflow as tf
# 生成模型class Generator(tf.keras.Model):
def __init__(self):
super(Generator, self).__init__()
self.embedding = tf.keras.layers.Embedding(input_dim=vocab_size, output_dim=embedding_dim)
self.gru = tf.keras.layers.GRU(units=hidden_units, return_sequences=True)
self.lstm = tf.keras.layers.LSTM(units=hidden_units, return_sequences=True)
self.attention = tf.keras.layers.Attention()
self.dense = tf.keras.layers.Dense(units=vocab_size, activation='softmax')
def call(self, inputs):
embedded = self.embedding(inputs)
gru_output = self.gru(embedded)
lstm_output = self.lstm(embedded)
attention_output = self.attention([gru_output, lstm_output])
output = self.dense(attention_output)
return output
上述代碼定義了生成對(duì)抗網(wǎng)絡(luò)(GAN)中的生成模型(Generator)。生成模型在異常檢測(cè)中具有重要作用,其主要任務(wù)是生成與真實(shí)樣本相似的假樣本,以欺騙判別器模型。
1.3.2 判別模型
判別模型用于判斷一個(gè)樣本是來自真實(shí)數(shù)據(jù)集,還是由生成模型生成的假樣本。它的結(jié)構(gòu)與生成模型類似,并在原有結(jié)構(gòu)上添加了一個(gè)全連接層。全連接層的輸出可判別模型的輸入樣本是當(dāng)前事件模式下的真實(shí)事件分布,還是由生成模型生成的假事件分布。
判別模型的構(gòu)造函數(shù)調(diào)用了父類的構(gòu)造函數(shù),以保證模型正確初始化。進(jìn)而定義了嵌入層(Embedding)、GRU層(Gated Recurrent Unit)、LSTM層(Long Short-Term Memory)、注意力機(jī)制層(Attention)和全連接層(Dense)。這些層的作用是將輸入數(shù)據(jù)進(jìn)行嵌入、處理序列數(shù)據(jù)、提取特征并輸出概率。在模型的前向傳播方法中,輸入數(shù)據(jù)經(jīng)過嵌入層、GRU層和LSTM層處理,并通過注意力機(jī)制層融合GRU和LSTM輸出,最后由全連接層輸出判別結(jié)果,即輸入數(shù)據(jù)是真實(shí)樣本的概率。
2 模型應(yīng)用
2.1 模型應(yīng)用場(chǎng)景和過程
某個(gè)大型企業(yè)的網(wǎng)絡(luò)系統(tǒng)包括數(shù)十臺(tái)服務(wù)器和大量網(wǎng)絡(luò)設(shè)備,用于處理公司的日常業(yè)務(wù)流程和數(shù)據(jù)交換。具體任務(wù)是保障網(wǎng)絡(luò)系統(tǒng)的安全和穩(wěn)定,及時(shí)檢測(cè)并應(yīng)對(duì)可能的網(wǎng)絡(luò)異常和攻擊。
該應(yīng)用場(chǎng)景將基于生成對(duì)抗網(wǎng)絡(luò)的異常檢測(cè)算法應(yīng)用于實(shí)時(shí)監(jiān)測(cè)企業(yè)網(wǎng)絡(luò)系統(tǒng)中的網(wǎng)絡(luò)流量數(shù)據(jù)。將網(wǎng)絡(luò)流量數(shù)據(jù)視為時(shí)間序列數(shù)據(jù),每個(gè)事件包括網(wǎng)絡(luò)流量的時(shí)間戳、特征等信息。本文希望通過監(jiān)測(cè)網(wǎng)絡(luò)流量數(shù)據(jù),及時(shí)發(fā)現(xiàn)可能的異常行為,例如DDoS攻擊、惡意軟件傳播以及異常大量數(shù)據(jù)傳輸?shù)?,以保障企業(yè)網(wǎng)絡(luò)系統(tǒng)安全、正常運(yùn)行。模型應(yīng)用過程有以下4個(gè)步驟。
2.1.1 數(shù)據(jù)收集與預(yù)處理
從企業(yè)網(wǎng)絡(luò)系統(tǒng)中收集實(shí)時(shí)網(wǎng)絡(luò)流量數(shù)據(jù),包括各個(gè)服務(wù)器和網(wǎng)絡(luò)設(shè)備的通信記錄、數(shù)據(jù)包傳輸情況等信息。并對(duì)原始數(shù)據(jù)進(jìn)行預(yù)處理,包括數(shù)據(jù)清洗、去噪等操作,以保證數(shù)據(jù)質(zhì)量和可用性。
2.1.2 序列化事件構(gòu)建。
將預(yù)處理后的網(wǎng)絡(luò)流量數(shù)據(jù)轉(zhuǎn)換為序列化事件,每個(gè)事件包括網(wǎng)絡(luò)流量的時(shí)間戳、特征等信息。在滑動(dòng)窗口中按照時(shí)序進(jìn)行截取,構(gòu)建訓(xùn)練樣本集,用于訓(xùn)練生成對(duì)抗網(wǎng)絡(luò)模型。
2.1.3 模型訓(xùn)練與優(yōu)化
使用基于生成對(duì)抗網(wǎng)絡(luò)的異常檢測(cè)算法對(duì)訓(xùn)練樣本集進(jìn)行模型訓(xùn)練。生成器利用真實(shí)樣本集生成與真實(shí)網(wǎng)絡(luò)流量數(shù)據(jù)相似的假樣本,判別模型用于區(qū)分真實(shí)數(shù)據(jù)和生成的假樣本。采用對(duì)抗學(xué)習(xí)機(jī)制,生成模型和判別模型可交替優(yōu)化,直到兩者達(dá)到穩(wěn)定平衡狀態(tài),即模型收斂。
2.1.4 異常檢測(cè)與流量分析
模型訓(xùn)練完成后,將實(shí)時(shí)收集的網(wǎng)絡(luò)流量數(shù)據(jù)輸入生成模型中。生成模型根據(jù)當(dāng)前事件模式下的網(wǎng)絡(luò)流量數(shù)據(jù)生成后續(xù)異常事件的分布情況。設(shè)定閾值,自動(dòng)判斷下一時(shí)刻的特定網(wǎng)絡(luò)流量數(shù)據(jù)是正常事件還是異常事件。檢測(cè)到異常事件時(shí),系統(tǒng)會(huì)立即發(fā)出警報(bào)并采取相應(yīng)措施,例如阻止惡意流量、隔離受感染的設(shè)備等,以保障企業(yè)網(wǎng)絡(luò)系統(tǒng)安全、穩(wěn)定。
2.2 對(duì)比試驗(yàn)和分析
為了驗(yàn)證基于生成對(duì)抗網(wǎng)絡(luò)(GAN)算法的有效性,本文設(shè)計(jì)了與基于規(guī)則和簽名的安全防御方法的對(duì)比試驗(yàn)。選擇公開的網(wǎng)絡(luò)流量數(shù)據(jù)集,包括各種網(wǎng)絡(luò)異常和正常流量,以模擬真實(shí)網(wǎng)絡(luò)環(huán)境。將數(shù)據(jù)集按時(shí)序劃分為訓(xùn)練集和測(cè)試集,訓(xùn)練集占30%,用于訓(xùn)練模型;測(cè)試集占70%,用于評(píng)估性能。這種劃分驗(yàn)證了模型在未見數(shù)據(jù)上的泛化能力。評(píng)估性能采用準(zhǔn)確率、召回率和F1分?jǐn)?shù)等指標(biāo),全面評(píng)價(jià)模型在異常檢測(cè)任務(wù)中的表現(xiàn)。試驗(yàn)對(duì)比數(shù)據(jù)見表1。
從表1數(shù)據(jù)可以看出,基于生成對(duì)抗網(wǎng)絡(luò)的異常檢測(cè)算法在準(zhǔn)確率、召回率和F1分?jǐn)?shù)方面均優(yōu)于傳統(tǒng)的規(guī)則和簽名方法,表明本文算法具有更高的靈活性、適應(yīng)性和準(zhǔn)確性,能夠更有效地識(shí)別潛在的網(wǎng)絡(luò)異常和攻擊,提高了企業(yè)網(wǎng)絡(luò)系統(tǒng)的安全性和穩(wěn)定性。
3 結(jié)論
本文提出一種基于生成對(duì)抗網(wǎng)絡(luò)(GAN)的網(wǎng)絡(luò)異常檢測(cè)算法,旨在提高網(wǎng)絡(luò)系統(tǒng)的安全性和穩(wěn)定性。算法主要由2個(gè)關(guān)鍵模塊組成,即網(wǎng)絡(luò)流量數(shù)據(jù)解析模塊和異常檢測(cè)模塊。網(wǎng)絡(luò)流量數(shù)據(jù)解析模塊可將原始網(wǎng)絡(luò)流量數(shù)據(jù)處理成適合機(jī)器學(xué)習(xí)模型的輸入形式,重點(diǎn)關(guān)注時(shí)間戳和流量特征,并利用滑動(dòng)窗口將事件序列劃分為獨(dú)立的事件模式樣本?;谏蓪?duì)抗網(wǎng)絡(luò)的異常檢測(cè)模塊包括生成模型和判別模型,該模塊通過對(duì)抗訓(xùn)練的方式學(xué)習(xí)數(shù)據(jù)分布,最終完成異常檢測(cè)任務(wù)。本文算法充分利用了生成對(duì)抗網(wǎng)絡(luò)的優(yōu)勢(shì),結(jié)合了網(wǎng)絡(luò)流量數(shù)據(jù)的特點(diǎn),能夠?yàn)槠髽I(yè)網(wǎng)絡(luò)系統(tǒng)的安全防御提供可靠的技術(shù)支持。
參考文獻(xiàn)
[1]劉偉山,馬旭琦,汪航,等.基于生成對(duì)抗網(wǎng)絡(luò)的惡意域名訓(xùn)練數(shù)據(jù)生成方法[J].蘭州理工大學(xué)學(xué)報(bào),2023,49(6):100-106.
[2]余鋒,林慶新,林暉,等.基于生成對(duì)抗網(wǎng)絡(luò)的隱私增強(qiáng)聯(lián)邦學(xué)習(xí)方案[J].網(wǎng)絡(luò)與信息安全學(xué)報(bào),2023,9(3):113-122.
[3]劉宇軒.基于生成對(duì)抗網(wǎng)絡(luò)的入侵檢測(cè)技術(shù)研究[D].北京:北京郵電大學(xué),2024.
[4]王正文,王俊峰.基于生成式零樣本學(xué)習(xí)的未知惡意流量分類方法[J].四川大學(xué)學(xué)報(bào)(自然科學(xué)版),2023,60(4):73-80.