進階幽靈木馬即時監控腳本

份進階幽靈木馬即時監控腳本,會:

  • 每 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

瀏覽次數:9