เจาะลึกการยกระดับสิทธิ์ใน Linux: ก้าวสู่การควบคุมระบบอย่างสมบูรณ์

เจาะลึกการยกระดับสิทธิ์ใน 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) การปกปิดร่องรอยอย่างมีประสิทธิภาพจะช่วยให้สามารถอยู่ในระบบได้นานขึ้นโดยไม่ถูกจับได้

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