วิธีตรวจสอบเว็บไซต์ที่โดน Hack #4
(ตอนนี้ จะเน้นการตรวจสอบ Joomla เป็นหลักครับ) จาก “วิธีตรวจสอบเว็บไซต์ที่โดน Hack #3” ซึ่ง เป็นการตรวจสอบเบื้องต้นว่า มีการบุกรุกผ่านช่องโหว่ต่างๆของ Web Server เข้ามาวาง Backdoor หรือไม่ ซึ่ง ตั้งสมมุติฐานว่า Hacker จะเอาไฟล์ .php มาวางไว้ในไดเรคทอรี่ images/stories เท่านั้น แต่ความจริงแล้ว … ไม่ใช่เช่นนั้น เพราะ Hacker ต้องคิดต่อไปอีกขั้นหนึ่ง คือ ต้องวางไฟล์ Backdoor ไว้ในที่อื่นๆด้วย รวมถึง พยายามแก้ไขไฟล์ .php ของ Joomla เพื่อไม่ให้ผิดสังเกต และเป็นช่องในการกลับเข้ามาในภายหลัง ในบทความนี้ เป็นแนวทางปฏิบัติที่พึงดำเนินการ เพื่อการสืบสวน ค้นหา และทำลาย Backdoor ที่อื่นๆ รวมถึง เสนอแนวทางปฏิบัติ เพื่อผู้ดูแลระบบจะได้ทราบว่า มีไฟล์ใดบ้างที่เปลี่ยนแปลง ในอนาคต ภาพรวมขั้นตอนการปฏิบัติ 1. ทำการตรวจสอบไฟล์ .php ใน images/stories แล้วเก็บเป็น List เอาไว้ 2. ดึงไฟล์ Backdoor ที่พบ มาเก็บไว้ก่อน ด้วยคำสั่ง tar 3. ค้นหาไฟล์ ที่เกิดขึ้นหรือถูกแก้ไข ในเวลาใกล้เคียงกันกับ Backdoor นั้นๆ แล้วเก็บเป็น List เอาไว้ 4. ดึงไฟล์ ต้องสงสัย มาเก็บไว้ก่อน แล้ว ตรวจสอบ เป็นรายไฟล์ 5. ลบไฟล์ Backdoor จาก List ในข้อ 1. 6. ลบไฟล์ ต้องสงสัย หลังจากการตรวจสอบในข้อ 4. 7. ตรวจสอบ Web User คือใคร 8. ค้นหา Directory ที่ Web User จากข้อ 7. ที่สามารถเขียนได้ 9. ค้นหา Backdoor พื้นฐานเพิ่มเติม รายละเอียดการปฏิบัติ คำสั่งต่อไปนี้ อยู่บนพื้นฐานที่ว่า Document Root ของ Web Server อยู่ใน /var/www/ ของแต่ละผู้ใช้ ดังนั้น ขอให้ปรับเปลี่ยนตามระบบของท่าน 1. ทำการตรวจสอบไฟล์ .php ใน images/stories แล้วเก็บเป็น List เอาไว้ ใช้คำสั่งต่อไปนี้ find /var/www/ -name “*.php” -type f | grep ‘images/stories’ > /tmp/backdoor.txt 2. ดึงไฟล์ Backdoor ที่พบ มาเก็บไว้ก่อน ด้วยคำสั่ง tar เพื่อให้ในการตรวจสอบ และภายหลัง cat /tmp/backdoor.txt | xargs tar -cvf /tmp/backdoor.tar ลองตรวจสอบว่า คำสั่งดังกล่าว เก็บไฟล์ได้จริงหรือไม่ ด้วยคำสั่งต่อไปนี้ tar -tvf /tmp/backdoor.tar 3. ค้นหาไฟล์ ที่เกิดขึ้นหรือถูกแก้ไข ในเวลาใกล้เคียงกันกับ Backdoor นั้นๆ แล้วเก็บเป็น List เอาไว้ ให้สร้างไฟล์ ชื่อ findbackdoor.sh แล้วใส่เนื้อหาตามนี้ #!/bin/sh BD=”/tmp/backdoor.txt” TMP01=”/tmp/otherbackdoor.txt” DMROOT=”/var/www/” for f in $(cat $BD) ; do echo “:: $f ::”