ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

内网横向移动与中间人攻击攻防实战解析

内网横向移动与中间人攻击攻防实战解析 1. 内网横向移动的本质与攻击面分析在真实的攻防对抗环境中横向移动Lateral Movement是攻击者突破边界防御后在内网中扩大战果的核心手段。不同于互联网边界的严密防护内网往往存在大量基于信任关系的脆弱点。工作组局域网环境尤其典型——没有域控的集中管理各主机间依赖NetBIOS、LLMNR等协议进行通信这为中间人攻击MITM创造了天然温床。我曾在一次红队演练中仅用ARP欺骗就接管了整个财务子网的流量。这种攻击之所以高效是因为内网通信普遍缺乏加密验证机制。当攻击者伪装成网关或关键服务器时受害主机通常毫无察觉。更可怕的是这种攻击可以同时实现数据截获和会话劫持为后续的凭证窃取、权限提升打开通道。2. 中间人攻击的技术实现路径2.1 ARP欺骗局域网流量的隐形劫持者ARP协议的先天缺陷在于其无状态性——主机不会验证ARP响应的真实性。利用这一特性攻击者可以持续发送伪造的ARP响应包迫使目标主机更新ARP缓存表。以下是经典的ARP欺骗命令示例# 单向欺骗仅欺骗目标主机192.168.1.100使其认为攻击者192.168.1.66是网关 arpspoof -i eth0 -t 192.168.1.100 192.168.1.1 # 双向欺骗同时欺骗目标主机和网关实现全流量拦截 arpspoof -i eth0 -t 192.168.1.100 192.168.1.1 arpspoof -i eth0 -t 192.168.1.1 192.168.1.100实际对抗中我推荐使用双向欺骗。虽然这会增加流量负载但能避免因目标主机与网关直接通信导致的ARP缓存刷新问题。关键技巧在于控制发包频率——通常每秒2-5个ARP响应包即可维持欺骗状态过于频繁反而容易触发安全设备的异常检测。2.2 DNS劫持应用层的精准打击相比ARP欺骗的暴力全收DNS劫持更具针对性。当攻击者成功实施ARP欺骗后可以进一步搭建恶意DNS服务器。以下是使用dnschef进行DNS投毒的配置示例# dnschef.py配置文件示例 [*.example.com] ip 192.168.1.66 # 攻击者控制的钓鱼服务器 [*.bank.com] ip 192.168.1.66 # 重点针对金融类域名这种攻击对依赖域名访问的内部系统尤为有效。我曾遇到某企业ERP系统通过http://oa.internal访问劫持该域名后直接获取到系统管理员cookie。值得注意的是现代浏览器会缓存DNS记录因此需要配合TTL过期时间设置建议设为10-30秒。3. 攻防对抗中的技术细节3.1 流量转发与拦截的平衡术单纯的ARP欺骗会导致网络中断因此需要开启IP转发功能。在Linux系统中的标准做法是echo 1 /proc/sys/net/ipv4/ip_forward但这样会暴露攻击流量。进阶技巧是使用iptables进行选择性转发# 只转发特定端口的流量如80、443其余丢弃 iptables -A FORWARD -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -j DROP在对抗EDR设备时更隐蔽的做法是使用raw socket直接处理二层帧避免内核协议栈的日志记录。这需要自定义开发嗅探工具但能极大降低被检测概率。3.2 断网攻击的致命变种传统ARP欺骗可能导致网络波动引起警觉。通过研究交换机MAC地址老化机制默认300秒可以设计周期性断网攻击先实施5秒的ARP欺骗使目标更新缓存停止攻击295秒让网络恢复正常循环上述过程这种间歇性攻击既能截获关键数据如登录瞬间的流量又不会引发持续断网的投诉。实测中90%的用户会将短暂网络抖动归咎于WiFi信号不好。4. 防御体系构建实战指南4.1 网络架构层面的硬防护端口安全在交换机启用端口MAC绑定这是最根本的解决方案。Cisco配置示例switchport port-security switchport port-security maximum 1 switchport port-security violation restrictDHCP SnoopingDAI动态ARP检测需要与DHCP监听配合使用。当检测到非法ARP包时交换机会自动阻断端口。华为交换机配置关键命令dhcp snooping enable arp anti-attack check user-bind enable4.2 主机层面的深度检测基于流量的检测存在滞后性建议在关键服务器部署ARP监控脚本。以下是Python实现示例import os import re from collections import defaultdict def check_arp_cache(): arp_table defaultdict(list) with os.popen(arp -an) as f: for line in f: if re.match(r\?, line): ip re.findall(r\((.*?)\), line)[0] mac re.findall(rat (.*?) , line)[0] arp_table[ip].append(mac) for ip, macs in arp_table.items(): if len(macs) 1: # 同一IP对应多个MAC即为异常 print(f[!] ARP Spoofing detected: {ip} - {macs}) while True: check_arp_cache() time.sleep(60) # 每分钟检查一次4.3 加密通信的终极防御即使采取所有防护措施物理层攻击仍可能发生。因此必须对敏感通信实施端到端加密强制HTTPS使用HSTS头确保浏览器不会降级到HTTPadd_header Strict-Transport-Security max-age63072000; includeSubDomains; preload;证书钉扎HPKP防止攻击者使用伪造证书Public-Key-Pins: pin-sha256base64; max-age5184000在内部系统间推荐使用mTLS双向TLS认证这是目前防御中间人攻击最彻底的方式。OpenSSL生成双向证书的关键步骤# 生成CA证书 openssl req -x509 -newkey rsa:4096 -keyout ca-key.pem -out ca-cert.pem -days 365 # 签发服务端证书 openssl req -newkey rsa:2048 -keyout server-key.pem -out server-req.pem openssl x509 -req -in server-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 60 # 签发客户端证书 openssl req -newkey rsa:2048 -keyout client-key.pem -out client-req.pem openssl x509 -req -in client-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 605. 攻击痕迹的深度排查当怀疑网络中存在中间人攻击时可按以下流程取证ARP缓存比对在所有主机执行arp -a检查同一IP是否对应不同MAC流量镜像分析通过交换机端口镜像捕获异常流量重点关注同一MAC出现在不同物理端口TCP连接中的RST异常包可能是攻击者中断会话DNS日志审计检查DNS服务器日志中的异常查询特别是TTL被篡改的记录SSL证书验证使用openssl检测网站证书指纹是否变化openssl s_client -connect example.com:443 | openssl x509 -noout -fingerprint在一次应急响应中我们通过分析交换机MAC地址表发现某台打印机竟然在十分钟内出现在三个不同端口最终定位到攻击者连接的会议室网口。这提醒我们即使是物联网设备也可能成为攻击跳板。
返回列表