ChatGPT(Chat Generative Pre-trained Transformer)是一款美國OpenAI研發的聊天機器人程序,能夠透過理解和學習人類語言來進行對話,根據聊天的上下文與使用者互動,真正像人類一樣聊天交流。它甚至能完成撰寫郵件、影片腳本、文案、程式碼、論文等任務。
ChatGPT的演算法是基於Transformer架構,這是一種使用自註意力機制處理輸入資料的深度神經網路。 Transformer架構廣泛應用於語言翻譯、文字摘要、問答等自然語言處理任務。 ChatGPT使用了GPT-3.5大規模語言模型(LLM Large Language Model),並在該模型的基礎上,引入強化學習來微調預訓練的語言模型。這裡的強化學習採用的是RLHF(Reinforcement Learning from Human Feedback),也就是手動標註方式。目的是透過其獎勵懲罰機制,讓LLM模型學會理解各種自然語言處理任務,並學會從helpfulness、honest、harmless三個維度判斷什麼樣的答案是優質的。
ChatGPT模型的主要訓練流程如下:
我們依照DPI引擎的解包流程,將原始流量解析出關鍵字段數據,進行規則比對。如果能匹配到規則,則表示封包有攻擊行為;如果不能匹配,則表示封包風險較低。 DPI引擎收到的流量如下圖:
DPI引擎會依照會話將流量分組,在同一個群組的報文,一般為同一五元組的請求回應封包:
DPI引擎會將流量依照協定層級進行拆解,直到解析出所有的欄位。
DPI引擎會提取其中應用層的明文請求,作為待檢測內容:
ChatGPT作為一種大型自然語言處理模型,可以理解HTTP原始封包訊息,這樣無論攻擊出現在URL、Cookies或Referer中,都能順利偵測到。
ChatGPT、New Bing等攻擊判斷模組,會呼叫OpenAI相關API接口,使用提問的方式讓ChatGPT、New Bing等進行攻擊判斷,示意程式碼如下:
import openai openai.api_key = "sk-Bew1dsFo3YXoY2***********81AkBHmY48ijxu"# api token 用来认证 def get_answer(prompt, max_tokens): # 定义一个获取答案的函数 try: response = openai.Completion.create( model = "text-davinci-003", # 模型名称 prompt = prompt,# 问题 temperature = 0.7, max_tokens = max_tokens,# 返回内容的长度限制 stream = False, # False就是一次性返回, True 就是一个个打出来像打字机, 返回的是迭代器, 需要后面代码处理. 此处没有处理 所以用False top_p = 1, frequency_penalty = 0, presence_penalty = 0 ) return 0, response['choices'][0]['text'].strip()# 获取返回值关键返回内容 except Exception as e:# 异常处理 return str(e), None
透過上述函數,就可以達到類似向ChatGPT提問的效果(使用模型為text-davinci-003),如下圖:
#ChatGPT會回傳明確的是否存在攻擊行為的結論以及行為描述,這樣就完成了一次攻擊判斷。
如上圖,可以將流量中大量需要判斷的請求,分別存入不同的文件,由ChatGPT進行攻擊判讀,範例程式碼如下:
def main(read_dir = 'detect'):# 定义main函数 args = []# 缓存列表 global sign_req, all_req# 识别计数 for rf in walk_dir(read_dir, ['.txt']):# 遍历待检测目录 all_req += 1# 总数据包数自增1 content = read_fileA(rf, 'str')[:2048]# 提取报文文件前2048个字符 key_content = content.split('rnrnrn')[0][:1024]# 提取http请求 if len(key_content) < 10: continue# 如果长度太小就不检测 err, sign, disc = judge_attack(key_content, rf_rst)# 调用ChatGPT接口进行攻击检测 if sign: sign_req += 1# 如果检测到攻击, 攻击计数自增1 print('r' + f' 已检测 {all_req: 4} 个报文, 识别到攻击 {sign_req} 个, 检出率: {sign_req/all_req:0.2%}', end='', flush=True) # 打印结论
如此就可以做到批次封包攻擊偵測。
攻擊樣本來自Nuclei對靶機的掃描和全PoC偵測,因為有一些請求從單一封包中確實看不出來是否有威脅。
上述情況可能需要更多上下文才能判斷,此次已去除此類無法準確判斷的請求例,盡量給一些人工條件下能夠準確判斷的範例,整體檢測結果如下圖:
可見ChatGPT對流量偵測的準確率是非常高的,基本上相當於一個安全專家進行快速判斷,其安全偵測能力值得期待。
有興趣的讀者可以查看完整的專案源碼,連結為:https://github.com/VitoYane/PcapSplit
未來,ChatGPT在網路安全中將扮演什麼角色、有什麼影響,我們很難進行準確預測,這取決於它的使用方式和使用意圖。來自人工智慧的威脅並不是一個新問題,對網路安全從業者來說,重要的是及時意識到ChatGPT的潛在風險並採取適當的措施來應對。
安全專家預測,國家背景的駭客將率先在網路攻擊中利用ChatGPT,而該技術最終會在更多的攻擊組織中得到大規模的使用,防守方需要開始研發能夠抵禦此類攻擊的系統。
從網路安全防護的角度來看,企業機構可以採取針對性的應對措施,對ChatGPT等類似模型進行培訓,標記惡意活動和惡意程式碼,同時對其設定難以繞過的護欄。對於ChatGPT引發的威脅,可以提供員工新型的網路意識培訓,掌握辨識社會工程攻擊的知識,以便辨識ChatGPT等人工智慧工具所創造的釣魚攻擊。
當然只是這樣還不夠。 ChatGPT等人工智慧工具會以比人類罪犯更快的速度製造出新的威脅,傳播威脅的速度也將超過網路安全人員的反應速度。企業機構跟上這變化速度的唯一方法,是使用人工智慧來應對人工智慧。
總的來說:一方面,網路安全產業的研究人員、從業者、學術機構和企業組織可以利用ChatGPT的力量進行創新和協作,包括漏洞發現、事件回應和釣魚檢測;另一方面,隨著ChatGPT等工具的發展,未來開發新的網路安全工具更加重要。安全廠商應更積極地開發和部署基於行為(而非規則)的AI安全工具,來偵測人工智慧產生的攻擊。
以上是如何利用ChatGPT提升安全檢測智能化水平的詳細內容。更多資訊請關注PHP中文網其他相關文章!