Exploit vs Payload

Datafarm
3 min readSep 14, 2022

สวัสดีผู้อ่านทุก ๆ ท่านนะคะ บทความนี้ถูกเขียนขึ้นมาจากความสงสัยในขณะที่ได้ศึกษาหาข้อมูลทางด้าน Cyber Security ว่าระหว่าง Exploit กับ Payload นั้น มีความเหมือนหรือแตกต่างกันอย่างไรบ้าง แบบไหนถึงเรียกว่า Exploit หรือแบบไหนถึงเรียกว่า Payload ซึ่งจากการที่ได้ศึกษาหาข้อมูลมาเป็นระยะหนึ่ง พบว่า ไม่มีคำนิยามที่ตายตัวเลยสำหรับ Exploit และ Payload เพราะคำศัพท์ในแต่ละวงการ ก็จะให้ความหมายที่แตกต่างกันออกไป แต่บทความนี้ขออนุญาตสรุปตามความเข้าใจในแบบฉบับของตัวเองแล้วกันนะคะ

ตามที่ได้ศึกษาหาข้อมูลมาจากหลาย ๆ แหล่ง พบว่า ส่วนใหญ่มักจะกล่าวถึง Exploit ในทำนองเดียวกันว่าเป็นการโจมตีที่ใช้ประโยชน์จากช่องโหว่ที่เกิดขึ้นภายในระบบหรือแอปพลิเคชัน ซึ่งต้องการให้เกิดผลลัพธ์ในแบบที่ผู้โจมตีต้องการ ตัวอย่างเช่น ผู้โจมตีโดยใช้ Exploit จากเครือข่ายภายนอก เพื่อให้ระบบหรือเซอร์วิสนั้น ๆ สามารถรับ Payload ที่ติดกับ Exploit มาใช้ต่อได้ อาจจะใช้เพื่อสร้างการเชื่อมต่อระยะไกล หรือที่เรียกว่า Remote Code Execute ส่งผลให้ผู้โจมตีสามารถโจมตีบนเครื่องเป้าหมายต่อได้ เป็นต้น

แล้วคำว่า Payload จะให้ความหมายที่แตกต่างกันออกไปในแต่ละวงการ จากที่ได้รวบรวมข้อมูลมาจากหลาย ๆ แหล่ง ซึ่งมีความแตกต่างกัน ในบทความนี้ จะขอกล่าวถึง Payload ในวงการ Security โดยบางแหล่งข้อมูล ให้ความหมายของ Payload ว่า เป็นคำสั่งต่าง ๆ ที่กำหนดไว้หลังจากมัลแวร์ได้เข้าสู่ระบบของเป้าหมายแล้ว บางแหล่งข้อมูลกล่าวว่า Payload เป็นการทำให้เกิด Connection ระหว่างเครื่องเป้าหมายกับผู้โจมตี แต่สิ่งที่ทุกแหล่งข้อมูลมีจุดร่วมที่เหมือนกันคือ เป็นคำสั่งที่มีจุดประสงค์มุ่งร้ายต่อเครื่องเป้าหมาย และถ้าให้สรุปตามความเข้าใจของตัวเอง ก็คงจะสรุปได้ว่า Payload เป็นการดำเนินการหลังจากได้โจมตีผ่านช่องโหว่เพื่อโจมตีเครื่องเป้าหมาย โดยผลกระทบที่จะเกิดขึ้นนั้น ก็ขึ้นอยู่กับว่า Payload นั้นถูกเขียนให้เกิดผลกระทบอย่างไรกับเครื่องเป้าหมาย ในบทความนี้จะขอยกตัวอย่าง เช่น ผู้โจมตีได้ ส่ง Exploit ที่แนบ Payload ส่งไปยังเครื่องเป้าหมาย และหลังโจมตีเสร็จ ก็ให้เครื่องเป้าหมาย Execute ตัว Payload ที่มีคำสั่งแฝงมา ซึ่งในกรณีนี้คือการสร้าง Connection จากเครื่องเป้าหมายกลับมายังเครื่องของผู้โจมตี ในกรณีข้างต้น เป็นการสร้างคำสั่ง Payload ให้มีการสร้าง Connection กลับมา ดังนั้น สิ่งที่ควรรู้อีกอย่างคือ ไม่จำเป็นว่า Payload ทุกตัวต้องมีการสร้าง Connection

จากคำอธิบายข้างต้น ผู้อ่านทุกท่านอาจจะยังไม่เห็นภาพกันสักเท่าไรนัก

เรามาดูรูปประกอบการทำงานของทั้ง Exploit และ Payload เพื่อให้เข้าใจมากขึ้นกันค่ะ

ลักษณะการทำงานของ Exploit

จากรูปข้างต้น การทำงานของ Exploit นั้นเริ่มจากการที่เรารู้แล้วว่าระบบนี้มีช่องโหว่แน่นอน ซึ่งช่องโหว่ที่ว่านั้น อาจจะเกิดจากการ Config ไม่ดี, เกิดจากการใช้ Software Version เก่า หรืออะไรก็ตาม แต่นั่นก็เป็นช่องทางทำให้เราสามารถที่จะโจมตีเครื่องเป้าหมายได้ จากนั้นเราทำการโจมตีไปยังเครื่องเป้าหมาย โดยเมื่อทำการ Exploit แล้ว ตัว Payload ที่ถูกบรรจุอยู่ภายใน Exploit จะทำการ Execute ในเครื่องเป้าหมาย ส่งผลให้ผู้โจมตีสามารถโจมตีเครื่องเป้าหมายได้ แต่ทุกอย่างก็ไม่ได้ง่ายแบบนั้น เพราะในการโจมตีแต่ละครั้ง ยังมีอีกหลายปัจจัยอื่น ๆ อีกมากมายที่ส่งผลให้ Exploit โจมตีเครื่องเป้าหมายไม่สำเร็จ

ลักษณะการทำงานของ Payload

จากรูปข้างต้น ขอยกตัวอย่างเป็นกรณีที่ Payload มีการสร้าง Connection โดยจุดเริ่มต้นของ Payload นั้น เริ่มจากการที่ Payload ถูกบรรจุลงไปอยู่ใน Exploit จากนั้น Exploit จะทำการโจมตีไปยังเครื่องเป้าหมาย โดยเมื่อเครื่องเป้าหมายทำการ Execute แล้ว ตัว Payload นี้ก็จะทำการสร้าง Connection บางอย่างจากเครื่องเป้าหมายกลับมายังผู้โจมตี และนั่นทำให้ผู้โจมตีสามารถโจมตีเครื่องเป้าหมายได้สำเร็จ ซึ่งไม่จำเป็นว่า Payload จะต้องถูก Execute ทันที เพราะ Payload สามารถที่จะเก็บหรือซ่อนไว้แล้วถูกเรียกใช้ในภายในหลังได้ แต่ว่า Payload ก็ยังมีข้อจำกัดอยู่ นั่นก็คือ ถึงแม้ว่าจะมีการ Exploit ไปยังเครื่องเป้าหมายแล้ว แต่ถ้าหากเครื่องเป้าหมายไม่มีการ Execute ตัว Payload ใด ๆ ก็จะยังไม่เกิดความเสียหายกับเครื่องเป้าหมายมากสักเท่าไรนัก

ตอนนี้เราก็เริ่มจะเห็นภาพการทำงานของ Exploit และ Payload ขึ้นมาบ้างกันแล้วนะคะ

ลำดับต่อไป เรามาดูความเหมือนและความแตกต่างที่ชัดเจนระหว่าง Exploit กับ Payload กัน

แน่นอนว่า จุดประสงค์ ของ Exploit และ Payload เพราะทั้งสองนั้นถูกสร้างเพื่อต้องการที่จะโจมตีเครื่องเป้าหมาย ซึ่งความแตกต่างระหว่าง Exploit กับ Payload จากที่ได้เล่าก่อนหน้ามาแล้ว น่าจะพอสังเกตได้ถึงความต่างของทั้งสอง โดยความแตกต่างของทั้ง Exploit และ Payload นั่นก็คือ รูปแบบในการใช้งาน เพราะว่ารูปแบบการใช้งานของ Exploit จะเป็นการโจมตีที่ใช้ช่องโหว่ที่ซึ่งเกิดจากตัวระบบหรือแอปพลิเคชันนั้น ๆ ให้เกิดประโยชน์กับผู้โจมตีมากที่สุด แต่รูปแบบการใช้งานของ Payload นั้น จะเป็นการทำให้ระบบหรือแอปพลิเคชันทำการ Execute ตัว Code ที่ได้ทำการส่งไป ซึ่งผลกระทบนั้น ก็จะขึ้นอยู่กับว่า Payload ถูกเขียนให้ทำงานอย่างไร

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

ที่มารูปภาพ: https://adrinanthony.wordpress.com/2019/08/08/difference-between-exploit-and-payload/

--

--