Backdoor WordPress là cơ chế giúp một bên duy trì hoặc lấy lại quyền truy cập trái phép sau khi website đã bị compromise. Backdoor không đồng nghĩa với toàn bộ malware: nó mô tả chức năng truy cập/persistence. Payload nhìn thấy có thể là SEO spam, redirect, injected JavaScript hoặc file độc hại; backdoor là thứ khiến attacker có thể quay lại hoặc tái tạo các payload đó. Một failure mode cụ thể là Redirect, JavaScript Injection và SEO Spam Malware trên WordPress.
Điều tra backdoor đáng tin cậy phải dựa trên provenance, behavior, timeline và baseline. Một MU-plugin, cron event, admin account hay file PHP không tự động là backdoor chỉ vì “trông lạ”. Nếu finding ban đầu chỉ là file PHP thay đổi ngoài expected state, xem case File PHP thay đổi bất thường để phân biệt update hợp lệ với tampering trước khi nâng thành backdoor finding.
Backdoor, Malware và Persistence khác nhau thế nào?
| Khái niệm | Vai trò | Câu hỏi điều tra |
|---|---|---|
| Malware | Khái niệm rộng cho thành phần/hành vi độc hại | Payload đang làm gì? |
| Backdoor | Cơ chế truy cập trái phép hoặc lấy lại quyền | Attacker dùng gì để quay lại? |
| Persistence | Nhóm cơ chế giúp access/payload tồn tại hoặc tái tạo | Cái gì làm payload/account quay lại? |
| Entry point | Điểm truy cập ban đầu | Attacker vào lần đầu bằng cách nào? |
Xem thêm điều tra persistence WordPress malware để phân biệt persistence với payload nhìn thấy. Nếu entry point nghi liên quan component có lỗ hổng, đối chiếu với case plugin WordPress có lỗ hổng dẫn tới website bị xâm nhập.
Điều tra backdoor theo evidence
Các layer thường phải kiểm khi nghi backdoor
| Layer | Finding có thể gặp | Evidence cần xem |
|---|---|---|
| PHP/file | Code cho phép execution/access ngoài quy trình; xem case PHP Backdoor trong wp-config.php, .htaccess và index.php | Diff, checksum, path, hash, access log |
| Plugin/MU-plugin | Component tự nạp hoặc không rõ owner; xem case Admin lạ, Plugin lạ và MU-plugin Persistence | Provenance, callback, package/repo/change history |
| Account/role | Admin hoặc credential cho phép quay lại | Role/capability, auth log, owner |
| Scheduled task | Job tái tạo file/account/payload; xem case Cron, Database Persistence và Malware tái nhiễm | Hook, callback, schedule, owner |
| Token/API key | Secret cho phép access không qua login thông thường | Owner, creation time, usage log |
| Database/config | Loader, option, redirect hoặc injected code | DB diff, config owner, timeline |
Backdoor Triage Matrix: legitimate hay suspicious?
| Artefact | Có thể hợp lệ khi | Đáng ngờ khi | Evidence cần kiểm |
|---|---|---|---|
| MU-plugin | Do host/plugin/stack quản lý, có owner | Tên/file lạ, không owner, callback bất thường | Source, deploy history, hash, behavior |
| Cron event | Plugin tạo, callback và schedule rõ | Callback/file đích không rõ, tái tạo payload | Hook, owner, timeline, output |
| PHP trong uploads | Hiếm và có use case rõ | Executable payload/obfuscation không owner; failure chain thực tế xem case Webshell qua File Upload và PHP Execution | Path, request log, source creation |
| Admin account | Business owner xác nhận | Tạo ngoài change window hoặc tự tái tạo | Audit/auth/recovery trail |
| API token/key | Integration owner rõ | Không owner hoặc dùng từ nguồn mới | Creation/use log, scope, owner |
| Core/plugin file mismatch | Known customization/deploy | Không có change record | Checksum/package/source diff |
Indicators làm tăng nghi ngờ backdoor
- File/plugin/account đã xóa nhưng quay lại.
- Payload tái xuất hiện sau cleanup.
- Artefact khác baseline mà không có change record.
- Login/request trái phép xuất hiện quanh thời điểm artefact được tạo.
- Admin hoặc credential đặc quyền được tái tạo.
- Cron/job gọi tới file hoặc domain không có owner.
- Artefact chỉ hoạt động khi nhận parameter/header/cookie đặc biệt.
- Nhiều persistence mechanism cùng xuất hiện trong một timeline.
Nếu Admin lạ là finding chính, dùng workflow xác minh tài khoản Admin lạ. Nếu backdoor đã bị xóa nhưng website tiếp tục tái nhiễm, đối chiếu case Backdoor còn tồn tại sau Cleanup để kiểm chain tái tạo thay vì lặp lại cleanup bề mặt.
Workflow phát hiện backdoor theo evidence
- Khóa scope: xác định site/host/account nào nằm trong investigation.
- Inventory artefact: file, plugin, MU-plugin, cron, account, token, option/config đáng ngờ.
- Baseline comparison: so với package/source/version/deploy state tin cậy.
- Record provenance: ai/tiến trình nào tạo, khi nào, từ đâu.
- Behavior analysis: artefact làm gì; không chạy payload nguy hiểm trên production.
- Timeline correlation: đối chiếu với login, request, file change, incident events.
- Classification: legitimate, suspicious, confirmed-malicious hoặc unknown.
- Persistence pivot: nếu một artefact được xác nhận, tìm mechanism khác có thể tái tạo nó.
- Remediation + verification: xử lý source và kiểm tra recurrence.
Không chỉ tìm filename hoặc chuỗi “đáng ngờ”
Backdoor có thể nằm trong file mới hoặc chèn vào file hợp lệ. Grep tên như shell.php, hack.php, eval hoặc base64 chỉ là triage signal; các chuỗi đó cũng có thể xuất hiện trong code hợp lệ.
Với WordPress core, có thể dùng wp core verify-checksums để đối chiếu với checksum chính thức. Mismatch vẫn phải được giải thích theo version, locale hoặc deploy history; checksum mismatch không tự động là proof malicious.
Backdoor Triage Record mẫu
Worksheet này để điền bằng evidence thật; không phải kết quả đã quan sát sẵn.
case_id: BACKDOOR-YYYY-NNN
asset: ...
artifact_type: file|mu-plugin|plugin|cron|account|token|database|config
artifact: ...
location_or_id: ...
first_seen_utc: ...
owner_confirmed: yes|no|unknown
baseline_match: yes|no|unknown
change_record: ...
related_auth_event: ...
related_request: ...
behavior: ...
persistence_capability: yes|no|unknown
recreates_other_artifact: ...
created_by_or_source: ...
evidence_refs: [...]
classification: legitimate|suspicious|confirmed-malicious|unknown
confidence: low|medium|high
next_action: ...
Classification Gate
- Legitimate: owner + purpose + source/change record + behavior đều khớp baseline.
- Suspicious: một hoặc nhiều yếu tố không khớp nhưng evidence chưa đủ kết luận malicious.
- Confirmed malicious: behavior/provenance/timeline đủ chứng minh artefact phục vụ access/persistence trái phép.
- Unknown: không đủ evidence; không được xóa mù nếu còn giá trị forensic.
Tìm và loại bỏ persistence chain
Phát hiện một backdoor chưa đủ: phải tìm persistence chain
Nếu xóa file A nhưng file A quay lại, cần tìm source tái tạo: cron, loader, account, database, remote task hoặc một backdoor khác. Remediation chỉ đóng khi chain đã được hiểu đủ để ngăn recurrence. Case Cron/Database Persistence và Malware tái nhiễm minh họa failure mode khi cleanup chỉ xử lý payload nhìn thấy.
entry point
-> privileged context
-> persistence mechanism A
-> backdoor B
-> payload C
-> recurrence after cleanup
Removal phải bảo toàn evidence khi incident còn mở
Trước khi xóa artefact có khả năng malicious, lưu path/ID, hash, timestamp, owner, source evidence và liên kết timeline nếu quy trình incident yêu cầu. Với workflow chi tiết, xem loại bỏ backdoor và bảo toàn evidence.
Nếu activity đang diễn ra hoặc blast radius chưa rõ, containment có thể cần ưu tiên trước cleanup.
Remediation Verification Matrix
| Kiểm tra | PASS | FAIL |
|---|---|---|
| Artefact removal | Artefact malicious không còn | Artefact vẫn tồn tại hoặc tái tạo |
| Source closure | Cơ chế tạo/tái tạo đã xử lý | Không biết source |
| Identity | Compromised account/session/token đã xử lý | Credential path còn mở |
| Persistence sweep | Không còn mechanism liên quan chưa giải thích | Finding mới vẫn xuất hiện |
| Behavior | Request/payload không tái xuất hiện | Malicious behavior quay lại |
| Business function | Site vẫn hoạt động đúng | Cleanup làm hỏng chức năng |
Nếu evidence cho thấy attacker quay lại bằng account, session hoặc token cũ thay vì một file persistence mới, xem case Credential Leak khiến Website bị tái xâm nhập để tách re-entry qua credential khỏi reinfection do backdoor.
Route task: detect → remove → verify
- Detect: với PHP, xem phát hiện PHP backdoor WordPress.
- Remove: loại bỏ nhưng giữ evidence cần thiết.
- Verify: xác minh WordPress sạch malware sau cleanup.
PASS/FAIL/HOLD cho investigation backdoor
- PASS: artefact có classification và confidence; source/persistence chain đã xử lý; không recurrence trong observation window; business flow vẫn PASS.
- FAIL: chỉ xóa filename; không biết provenance/source; artefact/payload quay lại; account/token liên quan chưa xử lý.
- HOLD: artefact chưa rõ owner hoặc còn evidence gap có thể thay đổi classification. HOLD cần preservation + investigation.
Khi nào nên escalation?
Nếu backdoor liên quan nhiều host/account, activity vẫn đang diễn ra, cần containment/forensics hoặc chưa xác định được persistence/entry point, nên chuyển sang Incident Response. WordPress đơn lẻ cần cleanup + recovery + verification có thể theo Malware Removal.
Nguồn kỹ thuật tham khảo
Kết luận
Backdoor WordPress là bài toán access + persistence + provenance, không phải một filename. Điều tra tốt phải phân loại artefact dựa trên baseline, owner, behavior và timeline, sau đó xử lý cả source tạo/tái tạo và xác minh rằng malicious access không còn quay lại.
