本文敘述網路安全業界如何利用GPT-3(ChatGPT架構背後的語言模型)當作輔助來協助擊敗攻擊者的最新研究。以Sophos X-Ops開發的專案為例,使用GPT-3的大型語言模型簡化在安全軟體的資料集中搜尋惡意活動,更準確地過濾垃圾郵件,並加快對「就地取材」(LOLBin)攻擊的分析。
來自OpenAI的自然語言處理架構最近受到了很多關注。生成式預訓練模型(Generative pre-trained transformer;GPT)新版GPT-3.5(ChatGPT的演算法大腦)引起了既驚奇又關注的浪潮。這些問題包括它如何被用於惡意目的,包括生成令人信服的網絡釣魚電子郵件,甚至是惡意軟體。
Sophos X-Ops研究人員,包括Sophos AI首席數據科學家Younghoo Lee,一直在研究如何使用早期版本GPT-3作為一種永久性的力量。2022年8月,Lee提出一些關於如何使用GPT-3生成人類可讀的攻擊者行為解釋和類似任務的見解。Lee一直領導三個專案,這些專案可以幫助防禦者使用GPT-3系列的大型語言模型更有效地發現和阻止惡意活動:
‧ 用於在XDR遙測中搜索惡意活動的自然語言查詢介面;
‧ 基於GPT的垃圾郵件檢測器;
‧ 用於分析潛在的就地取材二進位(LOLBin)命令行的工具。
自然語言XDR搜索的一些鏡頭
第一個項目是一個原型自然語言查詢介面,用於通過安全遙測進行搜索。該介面基於GPT,採用純英語編寫的命令(顯示所有名為powershell.exe並由root用戶執行的處理程序)並從中生成XDR-SQL查詢—用戶無需了解底層數據庫結構,或SQL語言本身。
例如,在圖一中,提供的例示資訊及以簡單數據庫模式形式提供的提示工程,讓GPT-3可以確定諸如“顯示所有時間,一個名為 'admin ' run PowerShell.exe”翻譯成SQL查詢,“SELECT * FROM Process_Table WHERE user='admin' AND process='PowerShell.exe”。
Lee為兩個不同的GPT-3系列模型(稱為Curie和Davinci)提供一系列訓練例示,包括有關數據庫模式和自然語言命令對以及完成它們所需的SQL語句的信息。使用例示作為指南,該模型會將新的自然語言查詢轉換為SQL命令:
圖一 : 小樣本學習如何用於創建自然語言查詢的例示 |
|
為了從「小樣本學習」中獲得更好的準確性,可以在提交任務時不斷添加更多例示。但這有一個實際限制,因為GPT-3對數據輸入可以消耗多少內存有限制。為了在不增加工作負載的情況下提高準確性,還可以微調GPT-3模型以通過使用更大的樣本對集來提高準確性,例如用作少樣本引導輸入來訓練增強模型的樣本對—越大樣本數量越多越好。隨著更多數據的可用,GPT-3模型可以隨著時間的推移繼續進行微調。這種調整是累積的;每次應用更多訓練數據時,沒有必要從頭開始重新運行所有內容。
在使用2、8和32個例示集使用少樣本方法進行初始運行後,很明顯,使用比 Curie更大、更複雜的Davinci模型進行的實驗更成功,如圖表二所示。使用小樣本學習,Davinci模型在處理自然語言問題時準確率剛剛超過80%,而在處理自然語言問題時使用的數據是訓練集的一部分,而在處理包括模型數據在內的問題時準確率達到70.5%以前沒見過。通過引入微調,這兩個模型都有很大改進,但較大的模型由於其大小可以更好地推斷,並且在實際應用中會更有用。使用512個樣本進行微調,然後使用1024個樣本進行微調,進一步提高分類性能:
圖二 : SQL匹配準確率結果(source:Sophos) |
|
GPT-3的這種使用目前是一個實驗,但它探索的功能計劃用於Sophos產品的未來版本。
將壞的過濾掉
在另一組實驗中使用類似的少樣本方法,Lee將GPT-3應用於垃圾郵件分類和檢測惡意命令字符串的任務。
過去,機器學習已被應用於垃圾郵件檢測,使用不同類型的模型。但Lee發現,當訓練數據量較小時,GPT-3明顯優於其他更傳統的機器學習方法。與生成SQL的實驗一樣,需要一些「即時工程」。
文本補全任務的輸入文本格式是重要的一步。如圖三所示,在提示中包含一條指令和一些例示及其標籤作為支持集,並附加一個查詢例示。(此資料作為單個輸入發送到模型)然後,要求GPT-3從輸入生成響應作為其標籤預測:
圖三 : GPT-3垃圾郵件檢測如何工作的例示,從指令和支持集轉移到查詢和返回的響應。 |
|
破譯LOLBins
應用GPT-3查找針對LOLBins(就地取材的二進位檔)的命令是一個稍微不同的問題。人類很難對命令行條目進行逆向工程,對於LOLBin命令更是如此,因為它們通常包含混淆、冗長且難以解析。幸運的是,當前形式的GPT-3精通多種形式的代碼。
如果您看過ChatGPT,可能已經知道GPT-3可以在設定所需功能的自然語言輸入時使用多種腳本和編程語言編寫工作代碼;但也可以訓練它做相反的事情—從命令行或代碼塊生成分析描述。
再次使用了小樣本方法。在提交每個命令行字符串進行分析後,GPT-3獲得一組24個常見的LOLBin風格的命令行,這些命令行帶有標識其一般類別的標籤和參考描述,如圖四所示。
圖四 : 用於訓練命令行分析器的一些JSON格式的例示(source:Sophos) |
|
使用樣本數據,GPT-3被配置為提供多個可能的命令行描述。為了從GPT-3中獲得最準確的描述,SophosAI團隊決定使用一種稱為反向翻譯的方法—從命令字符串到自然語言的翻譯結果被反饋到GPT-3中進行翻譯的過程再次進入命令字符串並與原始字符串進行比較。
首先,從輸入命令行生成多個描述。接下來,從每個生成的描述中依次生成命令行。最後,將生成的命令行與原始輸入進行比較,以找到最匹配的命令行,並選擇相應的生成描述作為最佳答案,如圖五所示:
為可疑活動類型的輸入提供標籤可以提高分析的準確性,在某些情況下,第一和第二好的回譯結果可以提供補充資訊—有助於進行更複雜的分析。
雖然並不完美,但這些方法展示使用GPT-3作為網路防禦副駕駛的潛力。垃圾郵件過濾和命令行分析工作的結果都發佈在SophosAI的GitHub頁面上,作為 Apache 2.0許可下的開源代碼,歡迎有興趣嘗試或調整它們以適應自己的分析環境的人在工作基礎上進行建構。
(本文作者Sean Gallagher為Sophos公司資深威脅研究員)
**刊頭圖(source:Sophos)