網站常遭遇木馬植入:PHP/ASP/HTML/JS 文件被注入惡意代碼(iframe、eval、base64_decode 等)。手動清理耗時且易遺漏,自動化掃描清除成為剛需。
<?php
class ClearVirus {
public $virusFile = 'virus.txt'; // 病毒特徵庫
public $scanFile = 'save.txt'; // 掃描目標文件列表
public $logFile = 'time.txt'; // 掃描日誌
public $triggerFile = 'e.php'; // 觸發檢測文件
private $patterns = []; // 病毒特徵陣列
private $targets = []; // 掃描目標路徑
private $triggered = false;
public function run() {
$this->loadPatterns();
$this->checkTrigger();
if ($this->triggered) {
$this->logTime();
$this->loadTargets();
$this->scanAndClean();
}
}
// ... 內部方法
}
讀取 $triggerFile,若包含任一病毒特徵則啟動全盤掃描。設計意圖:設定一個「蜜罐文件」,一旦被感染即表明系統已淪陷,觸發全量清理。
virus.txt 每行一個特徵字串,支援:
https://evil.com/eval(, base64_decode(, assert(gzinflate(, str_rot13(@$_POST[, $_REQUEST[private function scanAndClean() {
foreach ($this->targets as $path) {
if (!file_exists($path)) continue;
$content = file_get_contents($path);
$infected = false;
foreach ($this->patterns as $pattern) {
if (strpos($content, $pattern) !== false) {
$content = str_replace($pattern, '', $content);
$infected = true;
}
}
if ($infected) {
file_put_contents($path, $content);
$this->logClean($path);
}
}
}
| 問題 | 影響 | 改進方案 |
|---|---|---|
| 字串精確匹配 | 變形/編碼/混淆木馬無法檢測 | 引入正則表達式、YARA 規則、機器學習模型 |
| 單純移除特徵碼 | 可能破壞正常代碼邏輯、留下殘餘語法錯誤 | AST 解析上下文感知清除、備份原文件 |
| 無遞歸掃描目錄 | 需手動維護 save.txt 列表 | RecursiveDirectoryIterator 全目錄遍歷 |
| 無隔離區機制 | 誤殺無法恢復 | 移至 quarantine/ 目錄保留原始文件 |
| 無增量掃描 | 每次全量讀取,IO 開銷大 | 記錄文件 mtime/size,僅掃描變更文件 |
| 無併發控制 | 多進程同時寫入同一文件損壞數據 | flock() 或獨佔鎖 |
| 觸發文件單點故障 | 若 e.php 被刪除/修改失效 | 多觸發點、定時任務、inotify 監控 |
aide、Tripwire、ossec 監控核心文件變更disable_functions、open_basedir、suhosin 限制危險操作# 1. 立即隔離
chattr +i /var/www/html # 鎖定代碼目錄(謹慎使用)
# 2. 尋找入口
grep -r "eval\|base64_decode\|gzinflate" /var/www/html --include="*.php"
find /var/www/html -name "*.php" -mtime -1 # 最近 24h 變更文件
# 3. 分析日誌
awk '$7 ~ /POST/ && $9 ~ /200/ {print $1,$4,$7,$9}' /var/log/nginx/access.log
# 4. 修復與加固
# - 還原乾淨代碼(Git 版本庫)
# - 修補漏洞(SQL注入、文件上傳、反序列化)
# - 更新密鑰、輪換憑證
# - 部署 WAF、啟用 FIM
自寫清除類適合應急臨時處理,但絕不能作為長期安全策略。安全防護應遵循「預防為主、檢測為輔、響應為底」的纵深防御體系,將代碼層面的清理納入 CI/CD 與運行時防護的完整鏈條中。