防火墙规则篡改与放行链路取证分析

防火墙规则篡改与放行链路取证分析

很多人把防火墙看成“网络边界设备”的问题,但在真实入侵里,主机本地防火墙规则同样是攻击链里的关键节点。攻击者一旦拿到权限,常见动作包括:

  • 放行 338922445 供横向或远控使用
  • 打开特定后门端口
  • 为代理隧道和远程服务添加白名单
  • 阻断安全产品进程的网络通信
  • 删除原有规则,降低拦截概率

因此,防火墙规则检查0x03 阶段,重点已经不是“规则列表长什么样”,而是要弄清楚:哪些规则被新增、修改或删除,这些变化是否在为攻击链让路。


0x01 公开案例一:Medusa 利用 netsh 放开 RDP 与 WMI

Splunk Threat Research Team 在 2025 年关于 netsh 规避技巧的研究里,明确引用了 Medusa 勒索软件的做法:

  • 使用 netsh advfirewall firewall add rule ... localport=3389 action=allow
  • 打开 RDP 端口
  • 同时启用 WMI 规则组

这类案例非常适合作为取证模板,因为它直接说明了防火墙规则篡改并不是抽象的“配置变更”,而是在为后续远控与横向做基础设施准备。

公开来源:


0x02 公开案例二:Sarwent 使用 netsh 放开 3389

Sigma 规则库中关于:

  • netsh advfirewall firewall add rule
  • 3389

的检测规则,明确引用了 Sarwent 恶意软件案例。这个点对蓝队很有用,因为它说明:

  • “放开 RDP”不是管理员排障专属行为
  • 也是恶意软件后渗透和稳定控制的高频动作

公开参考:

  • Sigma / SentinelLabs 引用的 Sarwent 相关行为规则

0x03 公开案例三:WFP 规则被用于阻断安全产品遥测

Elastic 针对 Windows Filtering Platform 的规则专门提到:

  • 攻击者可能添加恶意 WFP 规则
  • 阻止安全软件发送遥测
  • 从而影响检测与响应

这一点的关键意义在于,防火墙规则篡改不一定只是“放行攻击者”,也可能是“封住防守方”。

公开来源:


0x04 Windows 现场排查命令

1. 直接枚举当前规则

netsh advfirewall firewall show rule name=all
Get-NetFirewallRule | Select-Object DisplayName,Direction,Action,Enabled,Profile

2. 重点查高风险端口和远控方向

Get-NetFirewallRule -Enabled True |
  Get-NetFirewallPortFilter |
  Where-Object {$_.LocalPort -in 22,80,135,139,443,445,3389,5985,5986} |
  Select-Object Name,Protocol,LocalPort,RemotePort

3. 查近期是否有人用 netsh / PowerShell 改规则

$start=(Get-Date).AddDays(-3)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688; StartTime=$start} |
  Where-Object {
    $_.Message -match 'netsh\.exe|New-NetFirewallRule|Set-NetFirewallRule|Remove-NetFirewallRule'
  } |
  Select-Object TimeCreated, Message

4. 查看 WFP 拦截 / 放行相关安全日志

Get-WinEvent -FilterHashtable @{LogName='Security'; Id=5152; StartTime=$start} | Select-Object TimeCreated, Message
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=5157; StartTime=$start} | Select-Object TimeCreated, Message

5. 重点查规则是否针对安全产品或远程管理

Get-NetFirewallRule | Where-Object {
  $_.DisplayName -match 'RDP|Remote|WMI|WinRM|Defender|EDR|Security|Sense'
} | Select-Object DisplayName, Direction, Action, Enabled

0x05 Linux 现场排查命令

1. iptables / nftables

iptables -S
iptables -L -n -v
nft list ruleset

2. ufw / firewalld

ufw status numbered
firewall-cmd --list-all
firewall-cmd --list-rich-rules

3. 查近期修改命令

grep -RInE 'iptables|nft|ufw|firewall-cmd' /root/.bash_history /home/*/.bash_history 2>/dev/null
ausearch -m EXECVE -ts recent | egrep 'iptables|nft|ufw|firewall-cmd'

4. 查配置文件时间

stat /etc/ufw/* 2>/dev/null
stat /etc/sysconfig/iptables 2>/dev/null
stat /etc/firewalld/* 2>/dev/null

0x06 一条现场可执行的排查流程

建议按下面顺序做:

  1. 先导出当前规则全量列表
  2. 再聚焦高风险端口:3389/445/22/5985/5986
  3. 再回查 4688 / shell 历史,确认是谁改的
  4. 再看规则改动后是否马上出现远控、横向、外联或隧道行为
  5. 最后确认有没有针对安全产品的阻断规则

0x07 三类高风险规则变化

1. 放行类

典型表现:

  • 新增入站允许规则
  • 打开远控或代理端口
  • 放开 WMI / WinRM / RDP

2. 阻断类

典型表现:

  • 阻断安全产品、EDR、更新程序出网
  • 阻断特定进程或服务的通信

3. 清理类

典型表现:

  • 删除原有安全规则
  • 禁用默认防护配置
  • 重置配置后重建恶意规则

0x08 如何区分运维改动和恶意改动

1. 看规则名和命名习惯

恶意规则经常出现:

  • 随意命名
  • 伪装系统组件
  • 与现有命名规范不一致

2. 看时间窗

如果规则改动发生在:

  • 异常登录之后
  • 样本落地之后
  • 隧道启动之前

恶意概率会明显升高。

3. 看后续用途

只要规则改动后马上出现:

  • RDP 登录
  • SMB 访问
  • 隧道回连
  • EDR 遥测异常

就已经不是普通配置调整。


0x09 恢复与保全建议

1. 先导出规则

netsh advfirewall export C:\Temp\fwpolicy.wfw
iptables-save > /tmp/iptables.backup
nft list ruleset > /tmp/nft.backup

2. 再清理恶意规则

netsh advfirewall firewall delete rule name="rdp"
Remove-NetFirewallRule -DisplayName "Suspicious Rule Name"
iptables -D INPUT -p tcp --dport 3389 -j ACCEPT
ufw delete allow 3389/tcp

0x0A 建议的交付结构

这类事件适合整理为如下表格:

时间证据源事件关联对象结论
10:01:104688 / 历史命令执行 netsh advfirewallnetsh.exe防火墙规则被修改
10:01:22规则列表新增允许规则3389/TCP远控端口被放开
10:03:14登录日志新 RDP 会话建立管理员账号规则被实际利用
10:05:41WFP / 网络日志安全产品流量异常EDR 进程存在防御绕过

0x0B 总结

防火墙规则篡改在 0x03 阶段的真正价值,不是证明“有人改过规则”,而是要继续回答:

  • 改的是放行、阻断还是删除
  • 它是在给谁让路
  • 它和后续的远控、横向、EDR 规避是否构成闭环

当你把规则变更、命令执行、后续连接和攻击行为串起来时,一条看似普通的 netshiptables 命令,就会变成非常清晰的攻击链证据。