ถอดรหัสภัยร้าย: เจาะลึกการตรวจสอบระบบ Linux ที่ถูกบุกรุกและยกระดับสิทธิ์
เมื่อต้องเผชิญหน้ากับ ระบบ Linux ที่ถูกบุกรุก การเริ่มต้นการสืบสวนอย่างเป็นระบบคือหัวใจสำคัญเพื่อทำความเข้าใจสิ่งที่เกิดขึ้น ใครคือ ผู้โจมตี และพวกเขาบรรลุเป้าหมายได้อย่างไร การทำความเข้าใจช่องโหว่และวิธีการ ยกระดับสิทธิ์ ที่ใช้จะช่วยให้เราเสริมความแข็งแกร่งให้กับระบบในอนาคตได้ นี่คือแนวทางในการแกะรอยและเปิดโปงภัยคุกคามที่ซ่อนอยู่
เริ่มต้นการสำรวจ: ตรวจสอบร่องรอยเบื้องต้น
ก้าวแรกในการสืบสวนคือการรวบรวมข้อมูลพื้นฐานเกี่ยวกับ ระบบที่ถูกบุกรุก เราต้องรู้ว่าใครกำลังล็อกอินอยู่ มีสิทธิ์อะไรบ้าง และระบบกำลังทำอะไรอยู่ สิ่งแรกที่ควรตรวจสอบคือผู้ใช้ปัจจุบันและกลุ่มที่เกี่ยวข้อง (id, whoami) รวมถึงข้อมูลเครือข่ายของเครื่อง (ip a)
จากนั้น ลองมองหา กระบวนการทำงาน ที่น่าสงสัยด้วยการดูรายการโปรเซสทั้งหมด (ps aux) หากมีโปรเซสที่ไม่คุ้นเคยหรือดูแปลกปลอม นั่นอาจเป็นสัญญาณเตือน การตรวจสอบ การเชื่อมต่อเครือข่าย ที่เปิดอยู่ (netstat -tunlp) จะแสดงให้เห็นว่ามีพอร์ตแปลกๆ เปิดอยู่หรือมีโปรเซสใดกำลังฟังการเชื่อมต่อภายนอกหรือไม่ พอร์ตเหล่านี้อาจเป็นช่องทางที่ ผู้โจมตี ใช้ในการควบคุม
ที่สำคัญไม่แพ้กันคือการตรวจสอบ Cron jobs หรือตารางงานที่กำหนดเวลาไว้ การทำงานอัตโนมัติเหล่านี้มักเป็นจุดที่ ผู้โจมตี ใช้ในการสร้าง Persistent access หรือรันสคริปต์ที่เป็นอันตรายในภายหลัง การไล่ดู ไฟล์ประวัติคำสั่ง (เช่น ~/.bash_history) ของผู้ใช้ต่างๆ ก็สามารถเปิดเผยคำสั่งที่น่าสงสัยที่ถูกรันไปแล้วได้
เจาะลึกหาเบาะแส: ค้นหาจุดอ่อนที่ซ่อนอยู่
หลังจากสำรวจเบื้องต้น เราจะเริ่มเจาะลึกเข้าไปในรายละเอียดเพื่อหา ช่องโหว่ หรือวิธีการที่ ผู้โจมตี ใช้ในการ ยกระดับสิทธิ์ ลองตรวจสอบบันทึกระบบ (logs) อย่างละเอียด เช่น /var/log/auth.log เพื่อหาการพยายามล็อกอินที่ล้มเหลวหรือสำเร็จจากแหล่งที่ไม่รู้จัก รวมถึง /var/log/apache2/access.log หากเป็นเซิร์ฟเวอร์เว็บ เพื่อหารูปแบบการเข้าถึงที่ผิดปกติ
หนึ่งในจุดที่มักถูกมองข้ามคือการค้นหา SUID binaries (Set User ID) ซึ่งเป็นไฟล์ไบนารีที่เมื่อถูกรันแล้วจะทำงานภายใต้สิทธิ์ของผู้เป็นเจ้าของไฟล์นั้น ไม่ใช่ผู้ที่รัน (เช่น root) หากมี SUID binaries ที่มีช่องโหว่หรือถูกตั้งค่าไว้อย่างไม่เหมาะสม ผู้โจมตี สามารถใช้มันเพื่อ ยกระดับสิทธิ์ ได้เลยทันที
ในหลายกรณี การตรวจพบสคริปต์อัตโนมัติที่รันโดยผู้ใช้ root ผ่าน cron jobs มักจะเป็นกุญแจสำคัญสู่การ ยกระดับสิทธิ์ เช่น สคริปต์ back_up.sh ที่ใช้คำสั่ง unzip หากสคริปต์ดังกล่าวใช้ unzip เพื่อแตก ไฟล์แบ็คอัพ จากไดเรกทอรีที่ผู้ใช้ทั่วไปสามารถเขียนได้ และใช้แฟล็ก -o ที่อนุญาตให้เขียนทับไฟล์เดิมได้โดยไม่ต้องขอ นั่นคือ ช่องโหว่ ประเภท Arbitrary File Write ที่ร้ายแรง
ยกระดับสิทธิ์: ใช้ประโยชน์จากช่องโหว่
เมื่อพบ ช่องโหว่ ประเภท Arbitrary File Write จากการใช้ unzip ในสคริปต์ที่รันโดย root อย่างไม่ปลอดภัย ผู้โจมตี สามารถสร้าง ไฟล์แบ็คอัพ ปลอมขึ้นมาเองได้ โดยภายในไฟล์ .zip นั้นอาจมีไฟล์ที่เป็นอันตรายที่ถูกตั้งชื่อให้ตรงกับไฟล์ระบบสำคัญ หรือสร้างไฟล์ใหม่ในตำแหน่งที่กำหนด
แนวทางที่พบบ่อยคือการสร้างไฟล์ไบนารีเล็กๆ ที่เมื่อรันแล้วจะมอบ สิทธิ์ Root หรือ Root shell ให้ จากนั้นคอมไพล์ไฟล์นี้ และใส่เข้าไปในไฟล์ .zip ที่ถูกสร้างขึ้นมาอย่างระมัดระวัง โดยอาจตั้งชื่อให้กลมกลืนหรือใช้เทคนิค Path Traversal เพื่อให้เมื่อสคริปต์ back_up.sh ถูกรัน มันจะแตกไฟล์อันตรายนี้ไปทับไฟล์ระบบ หรือสร้าง SUID binary ใหม่ในตำแหน่งที่สามารถเข้าถึงได้
เมื่อ ผู้โจมตี วางไฟล์ .zip ที่เป็นอันตรายนี้ไว้ในตำแหน่งที่ถูกต้อง (เช่น /tmp/backup.zip) และรอให้ cron job ทำงาน สคริปต์ back_up.sh ที่รันด้วย สิทธิ์ Root จะทำการแตกไฟล์และติดตั้ง Root shell หรือไบนารีที่ให้สิทธิ์สูงขึ้นโดยไม่รู้ตัว จากนั้น ผู้โจมตี ก็แค่เรียกใช้ไบนารีที่ถูกสร้างขึ้นใหม่นั้น เพื่อเข้าถึง สิทธิ์ Root ของระบบได้อย่างสมบูรณ์
การสืบสวนและการทำความเข้าใจขั้นตอนเหล่านี้ ไม่เพียงแต่เผยให้เห็นถึงความซับซ้อนของการโจมตี แต่ยังเน้นย้ำถึงความสำคัญของการเขียนสคริปต์ด้วยความระมัดระวัง การตรวจสอบ การตั้งค่าที่ปลอดภัย และการประเมินช่องโหว่ในทุกส่วนของระบบอยู่เสมอ เพื่อป้องกันไม่ให้ ระบบ Linux ตกเป็นเหยื่อของการโจมตีที่คล้ายกันนี้อีก