告警需监控非预期混杂模式:用ip link show | grep -B1 'promiscuity 1'检测,每5分钟脚本巡检并邮件告警,结合auditd审计ip/ifconfig调用,限制普通用户权限,辅以SMB/Kerberos流量分析。

新手配置混杂模式本身不难,但“告警及时发现内网身份窃听”不是靠开启混杂模式实现的——关键在于监控本机网卡是否被**非预期启用混杂模式**,因为这是攻击者实施中间人、ARP欺骗或凭证嗅探(如抓取NTLM哈希、HTTP明文账号)的典型前置动作。真正要做的,是建立主动发现+快速响应机制。
确认当前哪些网卡处于混杂模式
这是所有安全监控的基础。混杂状态会在接口标志中明确体现:
- 用 ip link 检查(推荐):
ip link show | grep -B1 'promiscuity 1'—— 显示含 promiscuity 1 的接口及前一行设备名 - 用 ifconfig 检查(兼容老系统):
ifconfig | grep -A1 'PROMISC'—— 输出中带 PROMISC 标志即为混杂 - 快速排除回环口,只看物理/虚拟网卡:
ip -br link | awk '$1 !~ /^lo$/ && $3 ~ /PROMISC/ {print $1}'
设置每5分钟自动巡检并触发告警
无人操作却突然出现混杂模式,极可能意味着已有恶意进程(如伪装成合法服务的窃听木马)在后台启用抓包。建议部署轻量级定时检测:
- 新建脚本
/usr/local/bin/check-promisc.sh,内容如下:
ACTIVE_PROMISC=$(ip link show | awk '/promiscuity [1-9]/ {print $2}' | sed 's/://')
if [ -n "$ACTIVE_PROMISC" ]; then
logger -t "PROMISC-ALERT" "Unexpected promiscuous interfaces: $ACTIVE_PROMISC"
echo "$(date): ALERT — promisc mode detected on: $ACTIVE_PROMISC" | mail -s "PROMISC ALERT on $(hostname)" admin@example.com
fi
- 赋予执行权限:
sudo chmod +x /usr/local/bin/check-promisc.sh - 添加到 root 的 crontab:
sudo crontab -e,加入:*/5 * * * * /usr/local/bin/check-promisc.sh
限制非授权启用行为并审计调用来源
仅靠轮询不够,需从源头收紧权限、追踪异常行为:
-
最小权限控制:普通用户不应能执行
ip link set ... promisc或ifconfig promisc。可移除 setuid 位:sudo chmod u-s /sbin/ip /sbin/ifconfig(操作前请验证系统网络管理是否依赖此机制) -
审计关键命令:启用 auditd 监控:
sudo auditctl -a always,exit -F path=/sbin/ip -F perm=x和sudo auditctl -a always,exit -F path=/sbin/ifconfig -F perm=x;事后用ausearch -m execve -i | grep -i 'promisc\|set.*promisc'追溯谁、何时、哪个进程调用的 -
检查可疑进程:发现混杂后立即运行
sudo lsof -i -P -n | grep LISTEN和sudo ss -tulpn,重点排查非标准端口上监听的未知二进制文件
辅助验证:结合流量与身份行为交叉分析
混杂模式只是入口,真实窃听往往伴随特定协议行为。可同步关注:
- 是否出现异常的 SMB/NBT-NS 请求(可能在尝试获取 Net-NTLMv2 哈希)
- 是否有未授权的 LDAP 查询或 Kerberos TGT 请求激增(暗示黄金票据或白银票据滥用)
- 使用
sudo tcpdump -i eth0 -c 100 'port 445 or port 139 or port 88' -w suspicious.pcap快速捕获相关流量样本 - 检查
/var/log/auth.log或journalctl -u sshd中是否存在高频失败登录+源IP与混杂网卡同子网


















