
เจาะลึกการยกระดับสิทธิ์ใน Linux: ก้าวสู่การควบคุมระบบอย่างสมบูรณ์
ระบบปฏิบัติการ Linux มีการแบ่งระดับสิทธิ์ผู้ใช้งานอย่างชัดเจนเพื่อความปลอดภัยสูงสุด ผู้ใช้งานทั่วไปมีสิทธิ์จำกัด ส่วน root คือผู้ดูแลสูงสุดที่เข้าถึงทุกสิ่งได้ การยกระดับสิทธิ์ หรือ Privilege Escalation คือกระบวนการที่ผู้โจมตีซึ่งอาจได้เข้าถึงระบบในฐานะผู้ใช้งานทั่วไป พยายามเพิ่มสิทธิ์ของตัวเองให้เป็นระดับที่สูงขึ้น มักจะเป็นระดับ root เพื่อให้สามารถควบคุมระบบได้อย่างเต็มที่
เหตุผลหลักที่ต้องทำเช่นนี้คือ เมื่อเจาะเข้าสู่ระบบได้ครั้งแรก มักจะไม่ได้รับสิทธิ์สูงสุดทันที การยกระดับสิทธิ์จึงเป็นขั้นตอนสำคัญที่ทำให้สามารถติดตั้งมัลแวร์ ดึงข้อมูลสำคัญ หรือสร้างช่องทางสำหรับกลับเข้ามาใหม่ในอนาคตได้อย่างสมบูรณ์
กลเม็ดเด็ดในการยกระดับสิทธิ์บน Linux
การยกระดับสิทธิ์นั้นอาศัยช่องโหว่หรือการตั้งค่าที่ไม่เหมาะสม โดยวิธีที่พบบ่อย ได้แก่
-
ช่องโหว่ของ Kernel ที่ล้าสมัย:
หากระบบใช้ Kernel ที่เก่าและมีช่องโหว่ ผู้โจมตีสามารถใช้ประโยชน์จากจุดนี้เพื่อเพิ่มสิทธิ์ได้ง่ายดาย การตรวจสอบเวอร์ชัน Kernel ด้วยคำสั่งuname -aเป็นสิ่งแรกๆ ที่ควรทำเพื่อประเมินความเสี่ยงและหา Exploit ที่เหมาะสม -
ไฟล์ SUID/SGID ที่ตั้งค่าผิดพลาด:
โปรแกรมที่ตั้งค่า SUID (Set User ID) หรือ SGID (Set Group ID) จะทำงานด้วยสิทธิ์ของผู้เป็นเจ้าของไฟล์ หากโปรแกรมที่เป็นของ root ถูกตั้ง SUID ไว้และมีช่องโหว่ เช่น อนุญาตให้รันคำสั่ง Shell ได้ ผู้โจมตีก็สามารถรัน Shell ด้วยสิทธิ์ root ผ่านโปรแกรมนั้นได้เลย การค้นหาไฟล์ประเภทนี้ทำได้ด้วยfind / -perm -u=s -type f 2>/dev/nullแล้วนำชื่อไฟล์ที่เจอไปค้นหาใน GTFOBins เพื่อหาวิธีใช้ประโยชน์ -
สิทธิ์การเข้าถึงไฟล์ที่ไม่เหมาะสม:
บางครั้งไฟล์หรือไดเรกทอรีที่สำคัญถูกตั้งค่า สิทธิ์การเข้าถึงที่หละหลวม เช่น ผู้ใช้งานทั่วไปสามารถเขียนทับไฟล์ได้ ไฟล์เหล่านี้อาจรวมถึงไฟล์การกำหนดค่าระบบ ไฟล์รหัสผ่านอย่าง/etc/shadowหรือสคริปต์ที่รันโดยผู้ใช้ root การแก้ไขหรือแทนที่ไฟล์เหล่านี้สามารถนำไปสู่การยกระดับสิทธิ์ได้ การมองหาไฟล์ที่ผู้ใช้คนอื่นเขียนได้ด้วยfind / -perm -o+w -type f 2>/dev/nullเป็นขั้นตอนสำคัญที่มองข้ามไม่ได้ -
งานที่ถูกตั้งเวลา (Cron Jobs):
Cron jobs คือสคริปต์หรือคำสั่งที่ระบบกำหนดให้ทำงานอัตโนมัติตามเวลา หากมี Cron job ที่รันด้วยสิทธิ์ root แต่ดันเรียกใช้สคริปต์ที่ผู้ใช้งานทั่วไปสามารถแก้ไขได้ ผู้โจมตีก็สามารถแทรกโค้ดของตัวเองลงไปเพื่อรันด้วยสิทธิ์ root ได้ -
การใช้ SUDO ในทางที่ผิด:
คำสั่ง sudo อนุญาตให้ผู้ใช้งานทั่วไปรันคำสั่งบางอย่างด้วยสิทธิ์ของผู้อื่น หากการตั้งค่าsudoersไม่รัดกุม ผู้โจมตีอาจพบว่าตัวเองได้รับอนุญาตให้รันคำสั่งที่นำไปสู่การยกระดับสิทธิ์เต็มตัวได้ การตรวจสอบสิทธิ์sudoที่มีอยู่ทำได้ด้วยsudo -lและใช้ GTFOBins เพื่อหาวิธีใช้ประโยชน์จากคำสั่งที่ได้รับอนุญาต
เมื่อได้สิทธิ์แล้ว ต้องทำอะไรต่อ?
หลังจากยกระดับสิทธิ์จนเป็น root ได้แล้ว งานของคนร้ายยังไม่จบแค่นั้น มีขั้นตอนสำคัญที่ต้องดำเนินการต่อเพื่อใช้ประโยชน์จากระบบอย่างเต็มที่และคงสถานะการเข้าถึงไว้
-
การเก็บข้อมูลและการสำรวจระบบ:
ทำการสำรวจระบบอย่างละเอียดเพื่อค้นหาข้อมูลสำคัญ เช่น รหัสผ่านที่จัดเก็บไว้ในไฟล์ SSH keys ไฟล์การกำหนดค่า หรือข้อมูลผู้ใช้งานอื่นๆ คำสั่งพื้นฐานอย่างid,whoami,ls -la,cat /etc/passwd,cat /etc/shadowรวมถึงการตรวจสอบกระบวนการทำงานด้วยps auxและ ประวัติคำสั่ง (history) ล้วนเป็นประโยชน์ในการหาช่องทางเพิ่มเติม -
การคงสิทธิ์การเข้าถึง:
สิ่งสำคัญคือการสร้าง ช่องทางลับ (backdoor) เพื่อให้กลับเข้ามาในระบบได้อีก แม้ระบบจะถูกรีบูตหรือผู้ดูแลระบบจะเปลี่ยนรหัสผ่าน การเพิ่มผู้ใช้งานใหม่ที่มีสิทธิ์ root การตั้งค่า SSH keys หรือการสร้าง Cron job ที่รัน Shell ย้อนกลับ ล้วนเป็นวิธีที่นิยมใช้ -
การปกปิดร่องรอย:
เพื่อไม่ให้ถูกตรวจจับ ผู้โจมตีจะพยายาม ลบล้างหลักฐาน การบุกรุกทั้งหมด ซึ่งรวมถึงการ ล้างบันทึก (logs) ในไดเรกทอรี/var/logและ ลบประวัติคำสั่ง (history) การปกปิดร่องรอยอย่างมีประสิทธิภาพจะช่วยให้สามารถอยู่ในระบบได้นานขึ้นโดยไม่ถูกจับได้
ความเข้าใจในกลไกเหล่านี้ไม่เพียงแต่เป็นประโยชน์สำหรับผู้ที่สนใจความปลอดภัยทางไซเบอร์ แต่ยังเป็นสิ่งจำเป็นสำหรับผู้ดูแลระบบที่ต้องการปกป้องทรัพย์สินดิจิทัลให้ปลอดภัย การป้องกันที่ดีที่สุดคือการเข้าใจว่าการโจมตีทำงานอย่างไร และเสริมความแข็งแกร่งให้กับระบบได้อย่างไรบ้าง