Home » เทคโนโลยีสารสนเทศ

เมื่อต้องค้นหา Content ในไฟล์ เพื่อแก้ไขปัญหามัลแวร์ บน LINUX Server

15 กันยายน 2009 No Comment

เมื่อ LINUX Server ถูกบุกรุก จะค้นหา ปัญหาจาก Content ในไฟล์ได้อย่างไร?

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

และครั้งนี้ก็เช่นกัน เมื่อประมาณช่วงกลางวัน ของวันอาทิตย์ที่ผ่านมา มีผู้ไม่ประสงค์ดีบางตัว ได้รุกล้ำเข้ามาในระบบเว็บไซต์ที่ผมดูแลอยู่ และได้วางมัลแวร์ไว้ 1 ตัว ชื่อ WIN.EXE โดยที่ได้เข้ามาแก้ไขไฟล์ index.php ของระบบด้วยการเพิ่มโค๊ด java applet ลงไป เพื่อให้ผู้ที่เข้ามาชมหน้าเว็บนั้นๆ จะถูกติดตั้งโปรแกรมมัลแวร์ที่วางไว้ลงไปในระบบ ถ้าผู้ใช้ตอบตกลงที่จะยินยอมให้มีการติดตั้งซอฟต์แวร์นั้นลงไป ทั้งนี้มัลแวร์ดังกล่าวใ้ช้วิธีการหลอกล่อให้เชื่อว่า เป็นการติดตั้งหรืออัพเดทโปรแกรม Flash Player ใหม่ ซึ่งผู้ใช้ส่วนใหญ่จะคิดว่าโปรแกรม Flash Player มีการอัพเดทใหม่ จึงหลวมตัวคลิกยอมรับการติดตั้งลงไป

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

  1. หากเข้าสู่เว็บไซต์ใดๆ ก็ตาม แล้วปรากฎว่ามี Dialog box ขึ้นมาแจ้งว่าจะมีการติดตั้งซอฟต์แวร์ Flash Player ใหม่ ให้ยกเลิกการติดตั้งไปก่อน
  2. ให้วิวซอร์สโค๊ดของหน้าเว็บนั้นๆ ดูส่วนท้ายๆ ว่ามีโค๊ดเหล่านี้อยู่ด้วยหรือไม่
    <applet width=’1′ height=’1′ code=’FlashPlayer.class’ archive=’http://ชื่อเว็บไซต์/พาทที่ไฟล์นั้นถูกวางไว้/…/… /flash.jar’>
    <param name=’first’ value=’cmd.exe …….. และอื่นๆ อีกยาวพอควร
  3. ให้ความกรุณาแจ้งผู้ดูแลเว็บไซต์นั้นๆ ถ้ารู้ำจัก e-mail หรือโทรศัพท์ เพื่อให้รู้ตัวว่าเว็บไซต์นั้นอยู่ในสถานะที่เสี่ยงต่อผู้ใช้ ก่อนที่จะถูกแบนจาก Search Engine ทั้งหลาย
  4. ในกรณีที่สงสัยว่าถูกมัลแวร์ตัวนี้ติดเข้าไปในระบบแล้วให้ตามลบไฟล์ชื่อ poq.vbs และ xxx.exe ในเครื่องของเราโดยด่วนที่สุด ก่อนที่จะทำให้ระบบของเราได้รับความเสียหาย และพื้นที่ ที่ไฟล์นี้ถูกเขียนลงไปเท่าที่พบ สำหรับผู้ใช้ IE ให้สังเกตที่หน้า Desktop และสำหรับผู้ใช้ Fire fox ให้ตรวจดูที่ C:\Program files\Mozilla Firefox\ เมื่อพบไฟล์ดังกล่าวให้ลบทิ้งทันที

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

  1. ไฟล์ win.exe จะถูกเขียนลงไปในพื้นที่ที่ถูกอนุญาตให้ผู้ใช้ทั่วไปมีสิทธิทุกประการ (Permission 777) ดังนั้น ผู้ดูแลระบบให้หมั่นตรวจสอบด้วยก็แล้วกัน (ลบทิ้งไปแล้ว)
  2. เส้นทางที่เข้ามาเขียนไฟล์ได้ ผมเองก็ไม่แน่ใจว่าเข้ามาจากทางไหน เพราะจากการตรวจสอบ Log ของทั้งระบบจะไม่พบเลยว่ามีการ POST เข้ามาทาง http หรือมีการ Upload เข้ามาทาง FTP จะพบก็แต่ LOG ของการใช้งานเว็บว่ามีใครที่ GET หรือ Load ไฟล์ win.exe ไปแล้วบ้างเท่านั้น (ลบไฟล์ win.exe ทิ้งแล้ว) ตัวอย่าง
    • ./httpd/web-access_log:187.88.121.27 – - [13/Sep/2009:18:49:41 +0700] “GET /xxx/xxx/…/win.exe HTTP/1.1″ 304 – (ไม่มีขนาดของไฟล์ แสดงว่าผู้ใช้ได้ปฏิเสธการติดตั้งไปแล้ว)
    • ./httpd/web-access_log:112.142.130.101 – - [14/Sep/2009:08:21:11 +0700] “GET /xxx/xxx/…/win.exe HTTP/1.1″ 200 131072 (มีขนาดของไฟล์ที่ถูกโหลด เท่ากับขนาดของไฟล์จริง 131072 แสดงว่าผู้ที่ใช้ IP นี้ติดมัลแวร์ไปแล้ว)
    • ./httpd/web-access_log:172.16.15.246 – - [15/Sep/2009:08:06:24 +0700] “GET /xxx/xxx/…/win.exe HTTP/1.1″ 200 131072
  3. ไฟล์ index.php ถูกเปลี่ยนแปลงสิทธิ์ของไฟล์ เป็น 666 ซึ่งหมายถึงผู้ใดก็ตามที่เข้าถึงไฟล์นี้ได้ ก็มีสิทธิ์ อ่านและเขียนไฟล์นี้ได้เช่นกัน
  4. ผมทดสอบเข้าถึงสิทธิ์ของ root ปรากฎว่าเข้าไม่ได้ เป็นไปได้ว่าผมลืมรหัสผ่าน root หรือผู้ใช้ที่มีสิทธิ์สูงสุดถูกยึดครองแล้ว ผมจึงยึดคืนกลับมา แล้วค่อยมาดูกันต่อว่าจะถูกยึดไปอีกหรือไม่

ทีนี้มาดูว่าขั้นตอนในการตรวจสอบของผมมีวิธีอย่างไรบ้าง

  1. เมื่อพบว่าเปิดหน้าเว็บแล้วมีฟ้องติดตั้ง Flash Player ซึ่งเป็นที่น่าสงสัย จึงปิดการติดตั้งลงไป
  2. ผู้ใช้งานในระบบแจ้งปัญหาการโหลดหน้าเว็บแล้วไม่ขึ้น จึงไปตรวจสอบพบว่ามีการติดตั้งไฟล์ xxx.exe และpog.vbs ไปแล้ว จึงตรวจสอบรหัส html ของเว็บเพ็จที่มีปัญหา พบว่ามีรหัส java applet อยู่ด้วย
  3. เร่งแก้ปัญหาที่เว็บไซต์ในทันที โดยการแก้ไขโค๊ดออก พร้อมทั้งลบพาทที่บรรจุไฟล์ win.exe ที่ระบุในโค๊ดทิ้ง ซึ่งพาทนั้นจะประกอบด้วยไฟล์ 3 ไฟล์คือ
    win.exe, flash.jar และไฟล์ที่เกี่ยวกับการเปิดฐานข้อมูลอีกหนึ่งไฟล์ (จำไม่ได้)
  4. ติดตามเส้นทางของการบุกรุกระบบว่ามาจากไหน ไม่พบเส้นทางการวางไฟล์ของผูุ้บุกรุก จึงยังสรุปไม่ได้ว่าช่องโหว่มาจากไหนกันแน่ แต่สันนิษฐานว่า น่าจะมาจากการอนุญาตให้เข้าถึงสิทธิ์ในโฟลเดอร์นั้นๆ ได้มากเกินไป ซึ่งผู้บุกรุกสามารถที่จะใส่อะไรลงไปในนั้นก็ได้ โดยใช้วิธีการค้นหา content ของ Logs ไฟล์ ทุกไฟล์ที่ตรงตามเงื่อนไขที่กำหนดโดยคำสั่งพื้นฐานของ LINUX คือ find และ grep ดังนี้
    sudo find . -name “*” -print|xargs sudo grep “win.exe”
  5. ตรวจสอบวิธีการที่ผู้บุกรุกสามารถปรับเปลี่ยนไฟล์ index.phpได้ พบว่าไฟล์นั้นถูกเปลี่ยนสิทธิ์เป็นของ root และมี Permission = 666 ที่อนุญาตให้อ่านได้เขียนได้ทุกคน จึงปรับเปลี่ยนสิทธิ์และความเป็นเจ้าของให้กลับเป็นปกติ
  6. สังเกตุว่า ผู้บุกรุกสามารถเปลี่ยนแปลงสิทธิ์เป็น root ได้ จึงตรวจสอบการเข้าถึงสิทธิ์ root พบว่ารหัสผ่านที่เคยใช้(นานมาแล้ว) ไม่สามารถใช้ได้ มีความเป็นไปได้ว่า สิทธิ์ของ root ถูกเปลี่ยนแล้วหรือไม่ก็ ผมเปลี่ยนรหัสผ่านของ root ไปแล้วเกิดลืมรหัสผ่านเองก็ได้ (ปกติไม่ได้ล็อกอินในสถานะ root แต่ใ้ช้ sudo เป็นหลัก) จึงกำหนดรหัสผ่านของ root เสียใหม่
  7. เฝ้ารอและระวังภัยที่อาจหวลคืนกลับมาใหม่

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

sudo find . -perm -o=w > ./fileothers.txt เป็นคำสั่งให้ค้นหาไฟล์ ทุกไฟล์ในโฟลเดอร์ ./ ที่อนุญาตให้ผู้ใช้อื่นๆ มีสิทธิ์เขียนได้ แล้วนำไปรายงานไว้ที่ไฟล์ fileothers.txt เพื่อใช้ในการตรวจสอบการเปลี่ยนแปลงสิทธ์และความเคลื่อนไหวของไฟล์ในพื้นที่เว็บไซต์

เขียนโดย ศุัภชัย  กัลปสันติ

Leave your response!

You must be logged in to post a comment.