份進階幽靈木馬即時監控腳本,會:
- 每 2 秒偵測一次是否有新幽靈進程(已刪除執行檔)。
- 一旦發現新幽靈進程,馬上記錄時間、PID、USER、檔案名到 log 檔。
- 立即查出「誰」產生它(追溯 parent process,顯示 PPID 及 parent 的啟動指令)。
- 若發現多個同時出現,也都會記錄與追查。
#!/bin/bash LOGFILE="/var/log/ghost_malware.log" SCAN_INTERVAL=2 # 秒 declare -A SEEN echo "=== Ghost Malware Watcher 啟動 ($(date '+%Y-%m-%d %H:%M:%S')) ===" | tee -a $LOGFILE while true; do for exe in /proc/[0-9]*/exe; do if [ -L "$exe" ]; then target=$(ls -l "$exe" 2>/dev/null | awk '{print $NF}') if [[ "$target" == *"(deleted)"* ]]; then pid=$(echo "$exe" | grep -oE '[0-9]+') # 若已記錄則略過 if [[ -n "${SEEN[$pid]}" ]]; then continue fi SEEN[$pid]=1 user=$(ps -o user= -p $pid) cmdline=$(tr '\0' ' ' < /proc/$pid/cmdline 2>/dev/null) # 追溯 Parent process ppid=$(ps -o ppid= -p $pid | xargs) parent_user=$(ps -o user= -p $ppid | xargs) parent_cmd=$(tr '\0' ' ' < /proc/$ppid/cmdline 2>/dev/null) timestamp=$(date '+%Y-%m-%d %H:%M:%S') echo "[$timestamp] 檢測到幽靈木馬 PID=$pid USER=$user EXE=$target" | tee -a $LOGFILE echo " 指令列: $cmdline" | tee -a $LOGFILE echo " 父進程: PPID=$ppid USER=$parent_user CMD=$parent_cmd" | tee -a $LOGFILE echo "------------------------------------------------------------------" | tee -a $LOGFILE fi fi done sleep $SCAN_INTERVAL done