ร้านอาหารทะเลในพัทยาโทรหาเราตอน 7:48 น. เช้าวันอังคาร เว็บของเขาเปิดดูปกติดีในมุมของเขาเอง แต่ลูกค้าประจำคนหนึ่งทักหาเจ้าของร้านตอนกลางดึกว่า Google ขึ้นคำเตือน "เว็บไซต์นี้อาจถูกแฮก" อยู่ข้าง ๆ รายชื่อธุรกิจของร้าน
สิ่งที่เราเจอตอน 8 โมงเช้า
ภายใน 15 นาทีหลังจากได้รหัสเข้า ระบบหลังบ้าน WordPress เราก็เห็นภาพรวมว่าเกิดอะไรขึ้น
- โพสต์ใหม่ 4,827 รายการ ในฐานข้อมูล ทั้งหมดลงวันที่ภายใน 36 ชั่วโมงที่ผ่านมา
- แต่ละโพสต์ตั้งชื่อด้วย คีย์เวิร์ดคาสิโนออนไลน์ภาษาไทย แบบแปลตรงตัว ("แทงบอลออนไลน์ pantip", "สมัครสล็อต 100 บาท" ฯลฯ)
- โพสต์ถูกเผยแพร่ภายใต้บัญชีแอดมินปลอมชื่อ `wp-svc-utils` (ปลอมตัวให้ดูเหมือนบัญชีของระบบ)
- มีการแก้ไขไฟล์ `.htaccess` ที่เปลี่ยนเส้นทาง user-agent ใด ๆ ที่มีคำว่า `googlebot` ไปยังหน้าที่ต่างจากที่ผู้เข้าชมทั่วไปเห็น
- ไฟล์ PHP แบ็คดอร์ในโฟลเดอร์ `/wp-content/uploads/2024/` ชื่อ `wp-cache-config.php` — ปลอมตัวให้ดูเหมือนไฟล์ของปลั๊กอินแคช
นี่คือการโจมตีแบบ ฝังสแปมคาสิโน (casino spam injection) ตามตำราเป๊ะ ๆ ตรรกะทางเศรษฐกิจของมันคือ แฮกเกอร์ได้โฮสติ้งฟรีบวกกับโดเมนที่ (ชั่วคราว) ยังน่าเชื่อถือ ไว้ดันสแปมพันธมิตรคาสิโนขึ้น Google ไทยอยู่ไม่กี่วัน ก่อนที่ Google จะจับได้แล้วถอดทุกหน้าออกจากดัชนี
มันกำลังทำให้ร้านเสียอะไรไปบ้าง
ร้านอาหารยังไม่รู้ตัวว่าเสียเงินไปแล้ว
- คำเตือน "เว็บไซต์นี้อาจถูกแฮก" ขึ้นอยู่ในผลการค้นหา Google ไทยมาอย่างน้อย 12 ชั่วโมง — ทุกคนที่กำลังจะจองโต๊ะเห็นมันหมด
- Google Search Console แสดงว่ามีการดำเนินการด้านความปลอดภัยโดยทีมงาน (manual security action) ยื่นเข้ามาตั้งแต่เย็นวันก่อน
- ทราฟฟิกออร์แกนิกที่เข้ามาตรง ๆ ลดลง 73% ภายในข้ามคืน (จาก Search Console)
- การยกเลิกการจอง 1 รายการ ในเช้าวันนั้น โดยลูกค้าระบุว่าเห็นคำเตือนดังกล่าว
สำหรับร้านที่มียอดจองช่วงสุดสัปดาห์ราว 40% มาจากการค้นหาแบบออร์แกนิก ทุกวันที่มีคำเตือนค้างอยู่ ทำให้ร้านเสียการจองไปราว 8-12 รายการ
ขั้นตอนการเคลียร์เว็บ ชั่วโมงต่อชั่วโมง
08:00-09:30 — แยกระบบออกมา นำเว็บออฟไลน์โดยขึ้นหน้าปิดปรับปรุง เพื่อให้ผู้เข้าชมไม่เห็นหน้าที่ถูกฝังสแปมอีก ใช้ Cloudflare บล็อกช่วง IP ของผู้โจมตี (เราระบุเครือข่าย VPS ของรัสเซียและอินโดนีเซียได้ 5 เครือข่ายจากไฟล์ log)
09:30-11:00 — สแกนไฟล์ รัน ClamAV ร่วมกับสแกนเนอร์มัลแวร์ WordPress ที่เราเขียนเองทั่วทั้งระบบไฟล์ เจอไฟล์แบ็คดอร์ 3 ไฟล์ ไฟล์ `.htaccess` ที่ถูกแก้ไข 2 ไฟล์ และไฟล์ PHP อีก 47 ไฟล์ที่ถูกฝังโค้ด payload แบบเข้ารหัส base64 ลบออกทั้งหมด แล้วกู้ไฟล์แกนหลักของ WordPress จากไฟล์ ZIP รุ่นทางการ
11:00-12:30 — เคลียร์ฐานข้อมูล เขียนคำสั่ง SQL ลบโพสต์สแปม 4,827 รายการ (จับคู่ด้วยช่วงวันที่ + ID ผู้เขียน + รูปแบบ slug) ลบบัญชีแอดมินปลอม ตรวจตาราง `wp_options` หาค่าที่ถูกแก้ไข — เจอ 2 จุด: ค่า site_url ถูกชี้ไปยังโดเมนเปลี่ยนเส้นทาง
12:30-13:30 — ปิดช่องโหว่ ระบุจุดที่เป็นช่องทางเข้า: ปลั๊กอิน Slider Revolution เวอร์ชันเก่า (CVE-2014-9734 ที่ยังไม่เคยอัปเดต) ลบปลั๊กอินออกทั้งหมดเพราะร้านไม่ได้ใช้งานอยู่แล้ว
13:30-15:30 — เพิ่มความปลอดภัย อัปเดตแกนหลัก WordPress ปลั๊กอินที่เหลือทุกตัว และธีม ติดตั้ง Wordfence ในโหมด บล็อกแบบเรียลไทม์พร้อมเพิ่มความแข็งแกร่งระดับเซิร์ฟเวอร์ และบังคับใช้ 2FA กับทุกบัญชีแอดมิน บังคับรีเซ็ตรหัสผ่านของแอดมินตัวจริงทั้ง 2 บัญชี
15:30-16:30 — ยื่นคำขอพิจารณาใหม่ ส่งคำขอพิจารณาใหม่ (reconsideration request) ใน Search Console พร้อมคำอธิบายความยาว 600 คำว่าเจออะไรและแก้อย่างไร แล้วนำเว็บกลับมาออนไลน์
รวมเวลาทั้งหมด: 8 ชั่วโมง 32 นาที
ไทม์ไลน์การฟื้นตัว
วันที่ 1
คำเตือน "เว็บไซต์นี้อาจถูกแฮก" ยังเห็นในผลการค้นหา Google
วันที่ 3
คำเตือนหายไป (Google รวบรวมข้อมูลใหม่และยอมรับคำขอพิจารณาใหม่)
วันที่ 10
การดำเนินการด้านความปลอดภัยถูกยกเลิกใน Search Console
วันที่ 21
ทราฟฟิกออร์แกนิกกลับมาที่ 50% ของระดับก่อนถูกแฮก
วันที่ 45
ทราฟฟิกออร์แกนิกกลับมาที่ 80% ของระดับก่อนถูกแฮก
วันที่ 60
อันดับใน Map Pack กลับมาที่อันดับ 2 (เดิมอยู่อันดับ 2 ตกไปอันดับ 7 ระหว่างเกิดเหตุ แล้วฟื้นกลับมาเต็มที่)
วันที่ 90
ทราฟฟิกออร์แกนิกที่เข้ามาตรง ๆ สูง กว่า ระดับก่อนถูกแฮก 12% — ส่วนหนึ่งเพราะเราเคลียร์ปัญหาเทคนิคเก่า ๆ ไปพร้อมกันด้วย
สิ่งที่เราทำต่างจากงาน "เคลียร์เว็บ WordPress" ทั่วไป
งานเคลียร์เว็บส่วนใหญ่จบลงหลังลบมัลแวร์ออก แต่เราทำเพิ่มอีก 3 อย่าง
- เก็บหลักฐานเชิงนิติวิทยา (forensic logging) — เราเก็บสำเนาไฟล์อันตรายและภาพ snapshot ของ `.htaccess` ไว้ เพื่อว่าหากเกิดซ้ำ เราจะจำผู้โจมตีรายเดิมได้
- สำรองข้อมูลนอกเซิร์ฟเวอร์ทุกวัน ในช่วง 30 วันแรกหลังเคลียร์ (เผื่อกรณีที่เคลียร์แล้วยังหลงเหลืออะไรอยู่)
- ตรวจซ้ำฟรีเมื่อครบ 30 วัน — เราตรวจเว็บอีกครั้งเพื่อหาการติดเชื้อใหม่ที่อาจหมายความว่ายังมีแบ็คดอร์หลงเหลือ
ค่าใช้จ่าย
เราเสนอราคา ฿18,500 สำหรับการเคลียร์ฉุกเฉินบวกการเฝ้าระวัง 30 วัน ร้านตกลงตอน 9:45 น. เราไม่คิดค่างานนอกเวลาเพิ่ม เพราะถือว่าเราอยู่ในช่วงทำงานอยู่แล้ว — นั่นเป็นส่วนหนึ่งของโมเดลการตอบสนองฉุกเฉิน
ไม่ต้องมีค่ารายเดือนผูกมัดหลังพ้น 30 วัน ตอนนี้ร้านใช้แพ็กเกจดูแลรักษาพื้นฐาน ฿2,500/เดือน ที่ครอบคลุมการอัปเดต WordPress + การตรวจสอบไฟล์สำรอง + การตรวจสอบความปลอดภัยรายไตรมาส
สิ่งที่คุณควรเรียนรู้จากเคสนี้
1. คำเตือน "เว็บไซต์นี้อาจถูกแฮก" จาก Google คือสัญญาณจากฝั่งลูกค้าที่สำคัญที่สุด — เจ้าของส่วนใหญ่รู้ตัวว่าถูกแฮกจากตรงนี้ ไม่ใช่จากระบบหลังบ้านของตัวเอง 2. การฝังสแปมคาสิโน / ลามก / ยาปลอม คือรูปแบบการโจมตี WordPress อันดับ 1 ในปี 2026 — และมันถูกออกแบบมาให้ซ่อนตัวจากแอดมินที่ล็อกอินอยู่ 3. การเคลียร์เว็บเร็วกว่าที่คนคิด (โดยทั่วไป 8 ชั่วโมง) แต่การฟื้นอันดับใช้เวลาเป็นสัปดาห์ — ต้องวางแผนรับมือกับช่วงที่ทราฟฟิกหายไป 4. ปลั๊กอินที่คุณลืมไปแล้วว่าเคยติดตั้งไว้ มักเป็นช่องทางเข้า — การตรวจสอบปลั๊กอินประจำปีจึงไม่ใช่เรื่องที่จะข้ามได้
หากคุณกำลังอ่านบทความนี้เพราะเพิ่งเจอเหตุการณ์คล้ายกัน ช่วงเวลาตอบสนองฉุกเฉิน ของเราคือต่ำกว่า 2 ชั่วโมงนับจากที่ได้รหัสเข้าระบบ ทักหาเราทาง WhatsApp แล้วเราจะเริ่มจับเวลาทันที