基础网络与系统知识:TCP/IP协议、OSI模型、常见端口与服务、Windows/Linux基础命令
红队与蓝队的对抗,本质上是在网络协议栈与操作系统内核之上展开的攻防博弈。无论是渗透测试中的端口扫描、中间人攻击,还是防御侧的流量分析、日志审计,都离不开对TCP/IP协议族、OSI参考模型、常见服务端口以及双平台命令体系的深刻理解。本章将系统梳理这些地基性知识,并重点剖析攻防视角下的实际应用逻辑,帮助学员建立从“数据包”到“主机控制台”的完整认知链路。
核心原理:从OSI到TCP/IP的攻防映射
OSI七层模型是理论上的网络通信参考框架,而TCP/IP四层模型则是实际互联网运行的协议栈。在攻防实战中,我们更关注TCP/IP模型,因为它直接对应数据包的封装与解析过程。红队在进行网络侦察时,通常从应用层开始向下探测——先识别目标开放了哪些端口(对应传输层),再通过端口判断运行的服务(应用层),进而推断操作系统类型(网络层与数据链路层的TTL值、窗口大小等特征)。蓝队则相反,防御视角是从物理层向上审计,从流量捕获(数据链路层)开始,分析数据包特征,最终定位到应用层的攻击载荷。
TCP协议的三次握手与四次挥手是理解端口扫描原理的基础。以半连接扫描(SYN扫描)为例,攻击者发送SYN包后,若收到SYN+ACK响应,则说明端口开放;若收到RST包,则端口关闭。这种扫描方式不完成完整握手,因此日志记录较少,是红队最常用的隐蔽扫描手段。而蓝队在检测此类行为时,需要关注单位时间内大量SYN包但无后续ACK的异常流量模式。
判断方法:端口扫描与服务识别操作流程
在实际攻防演练中,端口扫描与服务识别是信息收集的关键环节。以下是标准化的操作流程:
- 主机存活探测:使用ICMP Ping或ARP扫描确认目标主机在线,但需注意防火墙可能过滤ICMP,此时可改用TCP Ping(发送SYN到常见端口)。
- 全端口扫描:使用Nmap的
-p-参数扫描1-65535端口,但全端口扫描耗时长且容易被IDS检测,实战中通常先扫描Top 1000端口。 - 服务版本识别:通过
-sV参数进行服务指纹识别,Nmap会发送特定探测包并比对特征库,识别出具体服务及版本号。 - 操作系统指纹:使用
-O参数,通过TTL值、TCP窗口大小、IP ID序列等特征推断操作系统类型。 - 脚本引擎扫描:使用
-sC调用默认脚本,检测服务配置漏洞、弱口令等风险点。
对于蓝队而言,需要熟悉上述扫描特征,在防火墙和IDS中配置相应的检测规则。例如,Nmap的SYN扫描会产生大量源端口为随机高位、目的端口递增的TCP包,且无完整连接记录,这些特征可作为告警规则的基础。
案例拆解:一次针对内网Web服务器的攻防对抗
在某次企业红蓝对抗演练中,红队首先对目标IP段进行快速扫描,发现一台Windows Server 2016主机开放了80端口(HTTP)、443端口(HTTPS)和3389端口(RDP)。通过Nmap服务识别,确认80端口运行IIS 8.5,443端口为自签名证书的HTTPS服务,3389端口开放但启用了NLA(网络级身份验证)。
红队进一步使用curl -I命令查看HTTP响应头,发现X-Powered-By: ASP.NET和Server: Microsoft-IIS/8.5,确认目标为ASP.NET应用。通过目录扫描发现/admin/login.aspx后台登录页面,尝试常见弱口令组合未果后,改用SQL注入测试,最终在用户名参数中发现基于时间的盲注漏洞,成功获取管理员密码哈希。
与此同时,蓝队通过流量监控发现来自攻击IP的异常扫描行为——短时间内大量SYN包且无后续连接,触发IDS告警。安全分析师通过Wireshark抓包分析,确认是Nmap的SYN扫描,随即在防火墙上封禁攻击IP。但红队已提前通过代理池切换IP,并利用HTTP代理继续渗透。蓝队随后调整策略,在IIS日志中启用详细的URL审计,最终在SQL注入尝试阶段发现异常请求,通过WAF规则拦截并溯源到真实攻击IP。
此案例说明:端口扫描只是攻击的第一步,真正的攻防博弈在于服务漏洞利用与日志监控的赛跑。蓝队需要建立多层检测机制,不能仅依赖单一维度的告警。
Windows/Linux基础命令对比与实战应用
掌握双平台命令是红队横向移动和蓝队应急响应的基本功。以下是攻防场景中高频使用的命令对比:
| 功能类别 | Windows命令 | Linux命令 | 攻防用途 |
|---|---|---|---|
| 网络连接查看 | netstat -ano | ss -tulnp | 查看开放端口与对应PID,发现可疑监听 |
| 路由与ARP | route print / arp -a | ip route / ip neigh | 判断网络拓扑,发现ARP欺骗 |
| 进程管理 | tasklist / taskkill | ps aux / kill | 定位恶意进程,结束异常进程 |
| 文件查找 | dir /s /b | find / -name | 搜索敏感文件(如web.config、id_rsa) |
| 系统信息 | systeminfo | uname -a / cat /etc/os-release | 获取补丁版本,判断可利用漏洞 |
| 日志查询 | wevtutil qe | journalctl / grep /var/log | 审计登录日志、服务日志 |
| 远程连接 | mstsc / winrs | ssh / scp | 远程管理,横向移动 |
在红队视角下,Windows环境中常使用whoami /priv查看当前用户权限,net user枚举域用户,wmic process list获取进程详细信息。Linux环境中则常用id查看UID/GID,sudo -l检查sudo权限配置,crontab -l查看计划任务。蓝队应急响应时,应优先执行netstat -ano | findstr ESTABLISHED(Windows)或ss -tnp state established(Linux)查看当前活跃连接,快速定位外连IP。
netstat -b可以显示每个连接对应的可执行文件名称,但需要管理员权限。在Linux上,lsof -i :端口号可以快速定位占用该端口的进程,比ss更直观。红队在获取初始权限后,应第一时间执行这些命令收集网络信息,为后续横向移动做准备。
常见误区与总结复盘
在基础网络与系统知识的学习中,学员常陷入以下误区:
- 误区一:认为OSI模型与实战无关。实际上,理解分层有助于定位问题——例如,能Ping通但无法访问Web服务,问题可能出在传输层(端口未监听)或应用层(服务崩溃),而非网络层。
- 误区二:过度依赖图形化工具。在真实攻防中,目标环境可能没有GUI,只有命令行。熟练使用
curl、nc、telnet等命令行工具进行手工探测,往往比图形化工具更灵活、更隐蔽。 - 误区三:忽略Windows与Linux命令的差异。例如,Windows的
ipconfig与Linux的ifconfig输出格式不同,且Linux的ifconfig已逐渐被ip addr替代。在编写自动化脚本时,必须考虑平台兼容性。 - 误区四:端口扫描只关注开放端口,忽略服务版本。实际上,服务版本信息直接关联到已知CVE漏洞的匹配,是漏洞利用的关键输入。
总结复盘时,建议学员建立自己的命令速查手册,将攻防场景中高频使用的命令按“信息收集、权限提升、横向移动、痕迹清理”四个阶段分类整理。同时,务必在本地虚拟机中搭建Windows和Linux双平台实验环境,反复练习端口扫描、服务识别、日志分析等操作,直到形成肌肉记忆。只有将协议原理与命令操作深度融合,才能在实战中做到快速响应、精准判断。