วิธีตรวจสอบเว็บไซต์ที่โดน Hack #11

ตั้งแต่ วิธีตรวจสอบเว็บไซต์ที่โดน Hack #1 เป็นต้นมา เป็นการแสดงให้เห็นถึง ปัญหา, การตรวจสอบ, การค้นหา หลังจากเกิดปัญหาแล้วทั้งสิ้น ก็จะเห็นได้ว่า ยุ่งยาก และเป็นเรื่องยากมาก ที่จะค้นหา Backdoor ให้หมด และการจะกำจัดให้หมดนั้นเป็นภาระอย่างมาก

ในบทความนี้ จะกล่าวถึง การสำรองข้อมูลไว้ พร้อมๆกับ สามารถตรวจสอบได้ว่า มี Backdoor ใดเกิดขึ้น, มีการแก้ไขไฟล์เพื่อวาง Backdoor ไว้บ้าง, มีการเปลี่ยนแปลงไฟล์ของระบบเป็น Backdoor บ้างหรือไม่ และยังสามารถ กู้ระบบกลับมาได้ แล้วจึงดำเนินการป้องกันไม่ให้เกิดขึ้นซ้ำอีกได้

การสำรองข้อมูล หรือการ Backup มี 2 แบบ

  1. Full Backup: สำรองทุกไฟล์และไดเรกทอรี่
  2. Incremental Backup: สำรอง “เฉพาะ” ไฟล์และไดเรกทอรี่ ที่มีการเพิ่ม หรือเปลี่ยนแปลง เท่านั้น

เครื่องมือในการ Backup มีหลายอย่าง ในบทความนี้ ขอใช้ tar เพราะสามารถใช้งานได้ง่าย
โดยยกตัวอย่าง เป็นการ Backup /var/www/joomla15

1. Full Backup ทำได้โดยการสร้างไฟล์ fullbackup.sh และมีข้อมูลดังนี้

d=$(date "+%Y%m%d%H%M%S")
cp /dev/null joomla15.snar
tar -zcvf joomla15-full-$d.tar.gz -g joomla15.snar /var/www/joomla15

2. Incremental Backup ทำได้โดยการสร้างไฟล์ incrementalbackup.sh และมีข้อมูลดังนี้

d=$(date "+%Y%m%d%H%M%S")
tar -zcvf joomla15-inc-$d.tar.gz -g joomla15.snar /var/www/joomla15

โดยคำสั่ง tar มีคำสั่งเพิ่มเติม เล็กน้อย คือ -g ตามตัว joomla15.snar ซึ่ง จะเก็บสถานะของการ Backup ล่าสุดเอาไว้ ทำให้สามารถทราบได้ว่า มีต้อง Backup ไฟล์ใดบ้าง, ส่วน ชื่อไฟล์ .tar.gz ก็จะนำหน้าด้วย วันเวลานาที ของการทำ backup ไว้

เมื่อทำคำสั่ง

sh fullbackup.sh

จะได้ไฟล์นี้

joomla15-full-20140105004433.tar.gz

ต่อมา สมมุติ มีการโจมตี Joomla ด้วยช่องโหว่ของ JCE แบบนี้

jce01

เมื่อใช้คำสั่ง

find /var/www/ -name "*.php" -type f | grep 'images/stories'

ได้ผลดังนี้

/var/www/joomla15/images/stories/0day.php

และ สมมุติ Hacker ใช้งาน Backdoor 0day.php ดังกล่าวทาง URL

http://localhost/joomla15//images/stories/0day.php

และ แก้ไขไฟล์

/var/www/joomla15/CREDITS.php

ดังนี้

jce02

สรุปคือ Hacker สามารถ สร้างและเปลี่ยนแปลงไฟล์

/var/www/joomla15/images/stories/0day.php
/var/www/joomla15/CREDITS.php

เมื่อใช้คำสั่ง

sh incrementalbackup.sh

จะได้ไฟล์

joomla15-inc-20140105021906.tar.gz

วิธีตรวจสอบ ไฟล์ที่เพิ่มเข้ามา และมีการเปลี่ยนแปลง ใช้คำสั่ง diff โดยเอารายการของไฟล็ใน .tar.gz มาเปรียบเทียบกัน ด้วยคำสั่ง

diff <(tar -ztvf joomla15-full-20140105004433.tar.gz) <(tar -ztvf joomla15-inc-20140105021906.tar.gz) |grep '>'

ผลที่ได้คือ จะทราบว่ามีไฟล์ ต่อไปนี้ เพิ่ม/เปลี่ยนแปลง

> -rw-r--r-- www-data/www-data 15571 2014-01-05 02:10 var/www/joomla15/CREDITS.php
> -rw-r--r-- www-data/www-data 14315 2014-01-05 01:55 var/www/joomla15/images/stories/0day.php

หาก ต้องการไฟล์ต้นฉบับของ CREDITS.php ก็ใช้คำสั่ง

tar -zxvf joomla15-full-20140105004433.tar.gz var/www/joomla15/CREDITS.php

ก็สามารถกู้ไฟล์เดิมกลับมาได้ครับ

ขอให้โชคดี

Comments are closed.