GPT-4 Assisted Detection Engineering

Mar 20 2023
เมื่อสัปดาห์ที่แล้ว OpenAI ได้ประกาศและเปิดตัวโมเดลต่อเนื่องหลายรูปแบบล่าสุดชื่อ GPT-4 GPT-3 แตกต่างจากรุ่นก่อนหน้า GPT-3 มีความรอบรู้มากกว่า สร้างสรรค์ จัดการการป้อนข้อความที่ยาวกว่า และสามารถตีความรูปภาพได้

เมื่อสัปดาห์ที่แล้ว OpenAI ได้ประกาศและเปิดตัวโมเดลต่อเนื่องหลายรูปแบบล่าสุดชื่อ GPT-4 GPT-3 แตกต่างจากรุ่นก่อนหน้า GPT-3 มีความรอบรู้มากกว่า สร้างสรรค์ จัดการการป้อนข้อความที่ยาวกว่า และสามารถตีความรูปภาพได้ บริษัทอ้างว่าเทคโนโลยีใหม่นี้ “แสดงประสิทธิภาพในระดับมนุษย์ตามเกณฑ์มาตรฐานทางวิชาชีพและวิชาการต่างๆ” แม้ว่าฉันไม่มั่นใจว่า GPT-4 จะเข้ามาแทนที่ทีมวิศวกรรมการตรวจจับในเร็วๆ นี้ แต่ฉันเชื่อว่ามันจะเปลี่ยนวิธีการทำงานของมืออาชีพในทุกองค์ประกอบของโปรแกรมความปลอดภัยทางไซเบอร์

ด้วยเหตุนี้ ฉันจึงลงชื่อสมัครใช้ ChatGPT Plus และเริ่มพิจารณาว่าวิศวกรการตรวจจับจะใช้ประโยชน์จาก GPT-4 เพื่อช่วยพวกเขาในการทำงานประจำวันได้อย่างไร ในบทความต่อไปนี้ ฉันจะแนะนำคุณเกี่ยวกับกรณีการใช้งานที่น่าสนใจ 4 กรณีที่ฉันพบในชั่วโมงแรกของการทำงานกับ GPT-4

ร่างเอกสาร

แม้ว่าอาจใช้เวลานานและบางครั้งก็ดูน่าเบื่อ แต่การจัดทำเอกสารอาจเป็นองค์ประกอบที่สำคัญที่สุดของเนื้อหาการตรวจหา

มาดูกันว่า GPT-4 สามารถเขียนเอกสาร Alerting and Detection Strategy (ADS) ตามคำอธิบายสั้น ๆ ของกรณีการใช้งานการตรวจจับที่เกี่ยวข้องกับการใช้ PowerShell.exe ที่เป็นอันตรายได้หรือไม่:

ตอนนี้เรามาดูวิธีการจัดทำเอกสารแหล่งข้อมูลเหตุการณ์ความปลอดภัย:

ไม่เลวจริงๆ แต่ฉันไม่แนะนำให้ใช้ GPT-4 กับเอกสารผู้เขียนเพียงอย่างเดียว ฉันคิดว่าผลลัพธ์ที่สร้างขึ้นสามารถทำหน้าที่เป็นแบบร่างคร่าวๆ ที่สามารถจัดเตรียมวิศวกรตรวจจับสำหรับการเขียนเอกสารที่เหมาะสมได้

กรณีการใช้งานต้นแบบ

มาระดมความคิดกันที่ GPT-4 เพื่อดูว่ามีประโยชน์มากเพียงใดในช่วงเริ่มต้นของการพัฒนาเนื้อหา จะตรวจจับการใช้แพ็คเกจ Python ที่เป็นอันตรายได้อย่างไร

ลองใช้ Bandit ที่กล่าวถึงใน #4 ด้านบน ต่อไปอีกไม่กี่ขั้นตอน:

มาดูกันว่ามันจะเพิ่ม docstrings ที่เป็นประโยชน์หรือไม่:

ในการทดสอบ สคริปต์ GPT-4 ที่สร้างขึ้นด้านบนประสบความสำเร็จบางส่วน และการใช้ Bandit ผ่านโมดูลกระบวนการย่อยนั้นไม่เป็นไปตามอุดมคติ เกิดข้อผิดพลาดเมื่อเรียกใช้งานโดยไม่ระบุเวอร์ชันของแพ็คเกจ อย่างไรก็ตาม จะทำงานได้สำเร็จเมื่อมีการระบุเวอร์ชัน

นี่คือตัวอย่างการสแกนของ urllib3 เวอร์ชัน 1.26.15:

ฉันเดาว่าสคริปต์ Python ส่วนใหญ่ที่สร้างโดย GPT-4 จะต้องได้รับการทดสอบ การดีบัก และการปรับโครงสร้างอย่างละเอียด อย่างไรก็ตาม มันสามารถสร้างรากฐานที่มั่นคงได้

มาดูกันว่า GPT-4 สามารถพอร์ตสคริปต์นี้ไปยังการรวม Palo Alto xSOAR ได้หรือไม่:

ต่อ…

ในที่สุด…

โชคไม่ดีที่ฉันไม่มีสิทธิ์เข้าถึงอินสแตนซ์การพัฒนาของ xSOAR เพื่อทดสอบการผสานรวมนี้ จากประสบการณ์ของฉันในการสร้างการผสานรวมใน xSOAR ดูเหมือนว่านี่น่าจะสร้างการผสานรวมที่ใช้งานได้

การแปลงกฎและการใช้งาน

แม้ว่าจะมีเครื่องมือหลายอย่างเช่นUncoderเพื่อแปลงกฎการตรวจจับอยู่แล้ว แต่ GPT-4 ก็สามารถแปลงกฎระหว่างรูปแบบต่างๆ ได้

มาดูกันว่ามันจัดการกับการแปลงกฎ Sigma “ Copy Passwd Or Shadow From TMP Path ” เป็น Splunk SPL อย่างไร:

index=<INSERT_INDEX_NAME> sourcetype=<INSERT_SOURCETYPE_NAME> 
  proc_cmdline="*cp /etc/passwd* /tmp/*" OR 
  proc_cmdline="*cp /etc/shadow* /tmp/*" OR 
  proc_cmdline="*cp /etc/master.passwd* /tmp/*" OR 
  proc_cmdline="*cp /etc/group* /tmp/*" OR 
  proc_cmdline="*cp /etc/gshadow* /tmp/*" OR 
  proc_cmdline="*cp /etc/security/opasswd* /tmp/*" OR 
  proc_cmdline="*cp /etc/security/group* /tmp/*"

มาดูกันว่ามันสามารถสร้างการค้นหาแบบ tstats แทนได้หรือไม่:

| tstats `summariesonly` count from datamodel=Endpoint.Processes where Processes.process=*cp* Processes.process_file_name IN ("/etc/passwd", "/etc/shadow") by Processes.user, Processes.dest, Processes.process_name, Processes.process, Processes.process_file_name, Processes.parent_process_name, _time span=1s
| `drop_dm_object_name(Processes)`
| search process=*cp* AND (process_file_name="/etc/passwd" OR process_file_name="/etc/shadow") AND dest=*tmp*
| table _time, user, dest, process_name, process, process_file_name, parent_process_name

หากต้องการก้าวไปอีกขั้น ลองขอให้ GPT-4 สร้างไฟล์ Splunk savesearches.conf (ตามผลลัพธ์ด้านบน):

สุดท้าย มาดูกันว่าสามารถรวมไฟล์ savesearches.conf ด้านบนเข้ากับ Splunk Technical Add-on ได้หรือไม่:

แต่จะให้คำแนะนำที่ถูกต้องแก่ฉันเกี่ยวกับวิธีทำให้สิ่งนั้นเกิดขึ้นแทน

การระบุข้อมูลและการทำให้เป็นมาตรฐาน

ลองส่งเหตุการณ์บันทึกการเข้าถึง NGINX ที่ GPT-4 เพื่อดูว่าเข้าใจข้อมูลและความสำคัญของแต่ละฟิลด์หรือไม่

นี่คือรายการบันทึก NGINX:

47.29.201.179 - - [28/Feb/2019:13:17:10 +0000] "GET /?p=1 HTTP/2.0" 200 5316 "https://domain1.com/?p=1" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" "2.75"

      
                

สุดท้าย มาดูกันว่าสามารถเขียนการแยกฟิลด์โดยใช้ regex ได้หรือไม่:

(?P<src>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+-\s+-\s+\[(?P<timestamp>[^\]]+)\]\s+"(?P<http_method>[A-Z]+)\s+(?P<http_request>[^ ]+)\s+(?P<http_protocol>[^"]+)"\s+(?P<status>\d+)\s+(?P<bytes_out>\d+)\s+"(?P<http_referrer>[^"]*)"\s+"(?P<http_user_agent>[^"]+)"\s+"(?P<unknown_field>[^"]+)"

บทสรุป

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

ฉันเชื่อว่า GPT-4 เป็นเครื่องมือเสริมที่ยอดเยี่ยมสำหรับวิศวกรตรวจจับ ฉันตื่นเต้นที่จะได้เห็นว่ามันปรับปรุงอย่างไรเมื่อเครื่องมือเติบโตอย่างต่อเนื่อง เห็นการใช้งานมากขึ้น และได้รับคำติชมมากขึ้น เมื่อใช้อย่างถูกต้อง ฉันคิดว่าเทคโนโลยีนี้จะมอบคุณค่าที่ยอดเยี่ยมให้กับการทำงานในโปรแกรมความปลอดภัยทางไซเบอร์