首頁  >  文章  >  OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

WBOY
WBOY轉載
2023-04-14 21:28:011498瀏覽

歡迎回到我們關於 OpenAI 的大型語言模式 (LLM) 和 Microsoft Sentinel 的系列文章。在第一部分中,我們使用OpenAI 和Sentinel 的內建Azure Logic Apps 連接器建立了一個基本劇本,以解釋在事件中發現的MITRE ATT&CK 策略,並討論了一些可能影響OpenAI 模型的不同參數,例如溫度和頻率懲罰。接下來,我們使用 Sentinel 的 REST API 擴充此功能以尋找計劃的分析規則並傳回規則偵測邏輯的摘要。

如果您一直在關注,您可能會注意到我們的第一個劇本從 Sentinel 事件中找到了 MITRE ATT&CK 戰術,但沒有在 GPT3 提示中包含任何事件技術。為什麼不?好吧,啟動你的 OpenAI API Playground,讓我們去兔子洞旅行(向 Lewis Carroll 道歉)。

  • 模式:完整
  • 型號:text-davinci-003
  • 溫度:1
  • 最大長度:500
  • 最高P: 1
  • 頻率懲罰:0
  • 存在懲罰:0
  • #提示:「請解釋以下MITRE ATT&CK戰術和技巧:[“DefenseEvasion”],[“ T1564”]”

這是我們的第一個結果:

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

這是MITRE ATT&CK Tactic TA0005,Defense Evasion 的一個很好的總結,但是技術描述是怎麼回事? T1564 是 Hide Artifacts - 進程注入 (T1055) 和 Rootkit (T1014) 還有其他命名技術。讓我們再試一次。

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

差遠了! 「利用遠端服務」是橫向移動策略中的技術 T1210。再一次:

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

那麼發生了什麼事? ChatGPT 不應該比這更好嗎? !

好吧,是的。 ChatGPT 在總結 MITRE ATT&CK 技術程式碼方面確實很棒,但我們還沒有問過它。我們一直在文字完成模式下使用 OpenAI 的另一種頂級生成式預訓練 Transformer-3.5 (GPT-3.5) 模型「text-davinci-003」 。 ChatGPT 在聊天完成模式中使用「gpt-3.5-turbo」模型。差異很大。以下是ChatGPT 對上述相同查詢的回應範例:

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

但我們Azure 邏輯應用程式中的OpenAI 連接器沒有為我們提供基於聊天的操作,我們也無法選擇Turbo 模型,那麼我們要如何將ChatGPT 引入我們的Sentinel 工作流程中呢?就像我們在第二部分關閉 Sentinel Logic App 連接器以直接呼叫 Sentinel REST API 的 HTTP 操作一樣,我們可以對 OpenAI 的 API 執行相同的操作。讓我們探索建立使用聊天模型而不是文字完成模型的邏輯應用工作流程的過程。

我們將參考 OpenAI 的兩個參考文件:聊天建立 API 參考和聊天完成指南。為了讓這篇文章保持合理的長度,我將總結一些您需要在您自己的環境中複製我們的範例的設定任務:

  • 用於儲存您的OpenAI API 憑證的Key Vault
  • 一種授權您的邏輯應用程式從Key Vault 讀取機密的方法(我推薦使用Azure RBAC 的託管身分)
  • 允許您的邏輯應用程式連接到Key Vault 的網絡存取(我使用連接器文件中適當Azure 區域的已定義IP 位址和CIDR 範圍)

現在,讓我們打開我們的邏輯應用程式設計器並開始建置功能。就像以前一樣,我們正在使用 Microsoft Sentinel 事件觸發器。我們將在此之後執行Key Vault 操作“Get secret”,我們將在其中指定存儲API 密鑰的秘密名稱:

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

接下來,我們需要為我們的API 請求初始化和設定一些變數。這不是絕對必要的;我們可以簡單地在我們的 HTTP 操作中寫出請求,但這將使以後更改提示和其他參數變得容易得多。 OpenAI Chat API 呼叫中的兩個必要參數是“模型”和“訊息”,因此讓我們初始化一個字串變數來儲存模型名稱和一個用於訊息的陣列變數。

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

「訊息」參數是聊天模型的主要輸入。它被建構為一組訊息對象,每個對像都有一個角色,例如“系統”或“使用者”,以及內容。讓我們來看看 Playground 中的範例:

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

#

System 物件允許我們為此聊天會話設定 AI 模型的行為上下文。 User 物件是我們的問題,模型將回覆一個 Assistant 物件。如果需要,我們可以將先前的回應包含在 User 和 Assistant 物件中,以便為 AI 模型提供「對話歷史記錄」。

回到我們的邏輯應用程式設計器中,我使用了兩個「附加到數組變數」操作和一個「初始化變數」操作來建立「訊息」數組:

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

#同樣,這一切都可以一步完成,但我選擇分別分解每個物件。如果我想修改我的提示,我只需要更新 Prompt 變數。

接下來,讓我們將溫度參數調整到一個非常低的值,以使 AI 模型更具確定性。 “Float”變數非常適合儲存此值。

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

最後,讓我們將它們與一個HTTP 操作放在一起,如下所示:

  • 方法:郵寄
  • # 類型:https: //api.openai.com/v1/chat/completions
  • 身體: 
    {"model": @{variables('model')},"messages": @{variables('messages')},"temperature": @{variables('temperature')}}​
  • 驗證:原始
      ## 價值: 
      Bearer @{body('Get_OpenAI_API_token_from_Key_Vault')?['value']}​

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

和先前一樣,讓我們在沒有任何評論操作的情況下運行這個劇本,以確保在我們將它連接回Sentinel 實例之前一切正常。如果一切順利,我們將在助手訊息中獲得 200 狀態代碼和 MITRE ATT&CK 戰術和技巧的精彩總結。

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo

現在是簡單的部分:使用 Sentinel 連接器新增事件評論。我們將使用 Parse JSON 操作解析回應正文,然後使用 ChatGPT 回復中的文字初始化一個變數。因為我們知道回應格式,所以我們知道可以使用以下表達式從索引0 的Choices 項中提取回應:

@{body('Parse_JSON')?['choices']?[0]?['message']?['content']}

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo0

以下是已完成的邏輯應用程式流程的鳥瞰圖:

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo1

讓我們試試看!我在本 OpenAI 和 Sentinel 系列的第一部分中包含了該劇本的前一次迭代留下的評論 - 將達文西文本完成的輸出與 Turbo 模型的聊天交互進行比較很有趣。

OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo2

以上是OpenAI 與 Microsoft Sentinel 第 3 部分:達文西與 Turbo的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yundongfang.com。如有侵權,請聯絡admin@php.cn刪除