掌握ChatGPT進行道德駭客攻擊和滲透測試

林國龍 Bill Lin

  • 精誠資訊/恆逸教育訓練中心-資深講師
  • 技術分類:資訊安全

 

 

在瞬息萬變的資訊安全工作領域中,專業人士需要快速有效率的因應各種資安威脅與挑戰,透過善用ChatGPT,我們可以利用ChatGPT的文本生成功能,來協助執行滲透測試的專門任務,藉此提高資安工作者的產能,進而讓安全評估更加精準有效率。

ChatGPT的簡介

ChatGPT是由美國人工智慧研究實驗室OpenAI研發的聊天機器人程式產品。"Chat"是英文"聊天"的意思,而"GPT"是"Generative Pre-trained Transformer"的縮寫,中文可以翻譯為"生成式預訓練轉換器"。這是一種人工智慧模型,它能理解和用人類的語言進行交談。
ChatGPT是GPT系列的一部分,並且它被設計用於處理自然語言對話。

何謂GPT呢?

GPT的「Generative」就是指它具備生成文本的能力,有種像是一個文本生成引擎的感覺,你給他一些開頭文字,他就能接著寫出自然且有邏輯的文章。

接著是「Pre-trained」,這是GPT之所以厲害的原因:它已經預先在龐大的文本資料上接受過訓練,學會了豐富的語言知識,就像讀了整個網際網路的書,掌握了各種行業的專業術語,是一個精通所有行業的學霸。

最後,「Transformer」,這個是GPT處理文字的神奇工具,能夠「變形」自己的風格,靈活地轉換和運用文字,不僅僅是生成單獨的句子,還能構建整段通順的文章內容。
總結來說,GPT就是一個能夠生成自然語言文本的超級模型,它的優勢在於預先訓練的語言知識和生成能力,一個能將文本處理和生成功能結合在一起的IT神器。

滲透測試(ethical hacking)

是一種透過模擬攻擊的手法來評估系統安全性的技術。這個過程包括資訊收集、弱點掃描、弱點利用與提權,以及最終的報告撰寫。

首先,資訊收集是滲透測試的起點。這涉及搜集目標系統的所有可用資訊,包括網路架構、系統配置、應用程式和用戶信息。透過這些資訊,測試者能夠審查可用於攻擊的情報,為後續步驟做好準備。

接著是弱點掃描,這階段使用各種工具來掃描和識別系統的弱點。這可能包括開放的連接埠、未更新的軟體、或其他潛在的漏洞。透過弱點掃描,滲透測試人員能夠確定系統的問題並進一步測試其安全性。

當發現弱點後,接下來是弱點利用與提權。在這個階段,滲透測試人員利用找到的弱點來獲得並維持對目標系統的存取權。這可能包括入侵系統、竊取資訊或模擬真實攻擊的情境,以評估系統的抵抗能力。

最終,報告撰寫是滲透測試的結束階段。在報告中,詳細說明發現的問題,包括弱點的詳細資訊、風險評估和修復建議。這能夠提供給系統擁有者和管理者一個清晰的了解,協助他們改進和加強系統的安全性。

ChatGPT在滲透測試領域的應用

首先,自動偵察和掃描是ChatGPT的強項之一。透過內建的網路掃描工具,ChatGPT能夠根據需求自動生成Nmap語法,進行目標網路的探索,同時識別開放的服務。這使得偵察過程更加自動化和迅速,提高了測試的效率。

其次,自動漏洞掃描是ChatGPT的另一個優勢。透過整合漏洞掃描工具如Nessus或OpenVAS,ChatGPT可以自動識別和利用已知的軟體漏洞。這有助於快速發現系統的弱點,提供測試人員更多時間進行深入的分析和修復工作。

第三,ChatGPT能夠執行密碼破解和暴力攻擊,這對於評估系統的安全性至關重要。利用類似John the Ripper或Hydra的密碼破解工具,ChatGPT能夠嘗試破解目標系統的密碼,揭示可能存在的弱點。

最後,ChatGPT在分析Web應用程式方面也有卓越表現。它能夠分析Web應用程式並發現潛在的弱點,從而提供有價值的洞察,協助測試人員更好地理解和評估Web應用程式的安全性。

以下,我們就自動偵察和掃描做一些簡單的示範:
若需要在Kali Linux的指令環境中整合ChatGPT,我們需要透過一些指令先安裝一些相關套件:
套件需要線上安裝,所以先用ping -c2 www.google.com測試網際網路連線是否正常:


使用sudo pip install shell-gpt安裝sgpt,"sgpt"是一個用於與GPT模型進行交互的指令工具。在這種情況下,"--chat"選項用於指定聊天模式"--chat"選項後面的"demo"為這次對話的識別字串。


安裝完成後,測試使用sgpt指令,因為沒有API_KEY所以出現錯誤訊息:


透過export指令定義OPENAI_API_KEY環境變數後,即可正常運作。如下圖所示:ChatGPT能夠根據我們提出的需求,自動生成適當的Linux指令語法


我們透過sgpt--chat demo--shell"use nmap and ping sweep the 172.16.0.0/24 network."語法,讓 ChatGPT根據需求自動生成Nmap語法,進行對172.16.0.0/24網段的ping主機掃描,以確定哪些主機是開機的。這使得掃描過程更加自動化和迅速,提高了測試的效率


我們透過sgpt--chat demo--shell"Place only the IP addresses into a file called hosts.txt, then display the results."語法,讓ChatGPT根據需求自動生成Nmap語法,將主機掃描的結果儲存於hosts.txt檔案中,並將結果顯示於標準輸出畫面中。


我們透過sgpt--chat demo--shell"Run a nmap scan using -sT -p 80 against hosts.txt.If port 80 is open on a host,placet only the IP addresses into a file called webs.txt,then display the results."語法,讓ChatGPT根據需求自動生成Nmap語法,掃描列於hosts.txt檔案中的所有主機是否有開啟TCP Port 80,若有開 Port 將該主機IP存放於webs.txt檔案中,並將結果顯示於標準輸出畫面中,指令直接執行的結果不盡如人意,雖然指令語法上沒有錯誤訊息,可是結果卻不是我們要的,這也是使用Chatgpt時,常見的問題之一,所以駕馭這類強大的工具,還是需要一定程度的滲透測試基礎背景知識


我們將其自動產生的指令取前半段直接執行的結果如下:連接埠若有開,掃描的結果IP將位於open的上面第四行位置。


於是我們將指令稍作調整後,執行的結果如下所示:


透過上面的實機示範,我們可以見識到ChatGPT強大的一面,許多以往我們要花很多時間去構思的指令或程式碼,現在都可以由ChatGPT自動幫我們產生,就這個部份的確可以在滲透測試過程中,省下許多基礎作業的時間,不過我們也發現,很多情況中雖然指令語法上沒有錯誤訊息,可是結果卻不是我們要的。所以,將ChatGPT當作一個得力的助手的確很有用,但是駕馭該工具的””還是需要一定的技術能力。


您可在下列課程中了解更多技巧喔!