份進階幽靈木馬即時監控腳本,會:
- 每 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