应封目标端口(如59876),而非随机源端口;通过windows防火墙创建出站规则阻断特定remoteport,启用日志记录(事件id 1110)并联动网络保护实现可观测、可拦截、可追溯闭环。

配置针对特定网络服务端口的深度连接审计,关键在于“可观测、可拦截、可追溯”三者闭环。不是简单封端口,而是围绕目标端口建立从发现、分析到阻断的完整链路。重点不在协议类型,而在通信行为是否符合预期。
一、精准识别异常出站连接(盯住目标端口)
异常出站往往藏在高位随机端口或非标端口里,比如59876、49152这类端口极少是合法业务所用。要快速定位,优先用系统原生工具减少依赖:
- 执行 PowerShell命令提取近24小时所有已建立的出站TCP连接:
Get-NetTCPConnection -State Established | Where-Object { $_.CreationTime -gt (Get-Date).AddHours(-24) } | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,CreationTime | Sort-Object RemotePort | Format-Table -AutoSize - 重点关注 RemotePort 列中非常规值(如大于49151的端口、非80/443/22/3389等标准端口)
- 配合 TCPView 工具实时查看进程级连接,确认是哪个程序在连这个端口
二、用Windows防火墙出站规则做外科手术式拦截
误区是去封本地源端口——它每次连接都变,毫无意义。真正有效的是封目标端口(RemotePort),无论源程序是谁、源端口是多少,只要往那个端口发包就拦。
- 打开“高级安全 Windows 防火墙” → “出站规则” → “新建规则”
- 选择“端口”,协议选TCP,目标端口填具体数字(如59876)或范围(如50000-60000)
- 操作选“阻止连接”,配置文件保持默认(域、专用、公用全选)
- 命名规则时注明用途,例如“BLOCK_C2_PORT_59876”
三、增强审计能力:日志+告警双驱动
只拦截不记录等于没审计。必须让每一次被阻断的连接留下可查痕迹:
- 在新建的出站规则中,右键→“属性”→“常规”页勾选“记录被此规则阻止的数据包”
- 确保Windows事件日志中的“安全”和“Microsoft-Windows-Windows Firewall With Advanced Security/Firewall”日志启用
- 用PowerShell定期导出最近1小时的拦截日志:
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Windows Firewall With Advanced Security/Firewall'; StartTime=(Get-Date).AddHours(-1)} | Where-Object {$_.Id -eq 1110} | Select-Object TimeCreated,Message | Format-List
四、补充防护:网络保护+自定义指示器联动
对于基于域名或URL的外联(如恶意C2域名),单靠端口规则不够。可叠加Windows自带的网络保护功能:
- 启用网络保护(需Defender for Endpoint或企业版Windows)并设为“阻止模式”
- 导入自定义指示器:将已知恶意域名、IP或完整URL路径加入策略,覆盖HTTP/HTTPS/TCP全协议
- 注意:该机制对非浏览器进程(如PowerShell、curl、Python脚本)同样生效,弥补端口规则盲区











