#!/bin/sh
# nezha_probe.sh — iKuai 路由器 nezha 木马特征探针
# 云端下发用。检测到任意中招特征即在 /etc/log 下创建 webauth_mark 标记文件。
# 兼容 busybox ash，无 bash 依赖。

MARK=/etc/log/webauth_mark
FINDINGS=""

# ---------- 特征1: nezha 进程在跑 ----------
if ps w 2>/dev/null | grep -i nezha | grep -qv grep; then
    FINDINGS="${FINDINGS}PROC_RUNNING;"
fi

# ---------- 特征2: nezha 二进制文件存在 ----------
if [ -f /etc/log/nezha/agent/nezha-agent ]; then
    FINDINGS="${FINDINGS}FILE_EXISTS;"
fi

# ---------- 特征3: crontab 含 nezha 行 ----------
if grep -q nezha /etc/crontabs/root 2>/dev/null; then
    FINDINGS="${FINDINGS}CRON_ENTRY;"
fi

# ---------- 特征4: config.db 的 webauth.whiteip 字段含注入 ----------
if [ -x /usr/bin/sqlite3 ] && [ -f /etc/mnt/ikuai/config.db ]; then
    WIP=$(sqlite3 /etc/mnt/ikuai/config.db \
        "SELECT whiteip FROM webauth WHERE id=1;" 2>/dev/null)
    # 合法 whiteip 只含 IP/IP段，有分号或 nezha 字样即为注入
    case "$WIP" in
        *nezha*|*nezhacloud*|*Y9dJUCy7*|*42054ef8*|\
        *;/bin/*|*;/usr/*|*\$\{IFS\}*|*&#*)
            FINDINGS="${FINDINGS}DB_INJECT;"
            ;;
    esac
fi

# ---------- 特征5: 已知 C2 域名/IP 有活跃连接 ----------
if netstat -tn 2>/dev/null | grep -qE '104\.18\.28\.|13\.33\.|monitor\.nezhacloud'; then
    FINDINGS="${FINDINGS}C2_CONN;"
fi

# ---------- 写标记 ----------
if [ -n "$FINDINGS" ]; then
    # 标记文件内容: 时间戳 + 命中的特征列表
    printf '%s %s\n' "$(date '+%Y-%m-%dT%H:%M:%S')" "$FINDINGS" > "$MARK"
    # 同时尝试写 syslog（面板日志可见）
    logger -t nezha_probe "INFECTED: $FINDINGS" 2>/dev/null
    exit 1   # 非零退出便于云端判断
else
    # 干净: 如果之前有标记就移除
    rm -f "$MARK"
    exit 0
fi
