20253920 2025-2026-2 《网络攻防实践》第12次作业

20253920 2025-2026-2 《网络攻防实践》第12次作业


1.内容总结

第1次实践 网络攻防环境搭建

第1次实践的主要任务是搭建虚拟攻防实验环境,需要配置的虚拟机比较多,包括 Kali、WinXPattacker、SEED Ubuntu、Metasploitable、Windows 2000 Server 和 Honeywall。刚开始做实验时感觉就是导入几个虚拟机、调整网卡模式、配置一下 IP 地址,后面发现里面涉及的网络拓扑、虚拟网段划分、网关设置以及攻击机和靶机的位置关系都很容易出问题。

在整体拓扑中,攻击机主要连接到 VMnet8,靶机侧连接到 VMnet1,中间通过 Honeywall 进行流量转发、记录和监控。按照实验设计,这样的结构可以让攻击流量经过蜜罐环境,并由 Honeywall 对流量进行管理和限制。但是在后续实验和排查过程中发现,实验中使用的 Honeywall 实际上更接近透明网桥模式,只能被动监听和记录流量,并不能真正起到主动防御作用。

同时在安装靶机镜像的时候,我还遇到了导入镜像时的兼容问题,后期老师帮忙解决才学会要在文件内找到.vmx文件,修改版本才可以解决兼容的问题,由于我得电脑版本存在问题,导入win 2000这个镜像会导致电脑蓝屏,后期也是替换了其他的镜像去完成实验。

总结来说,实验一是本次综合作业遇到的问题最多的一个实验,很多教程版本不一致,有些步骤本身还存在错误,而新的 VMware 版本和老旧实验镜像之间的兼容问题,在以往资料中也很难直接找到完整解决方案。也正是因为这些问题,让我从中学习到了许多解决问题的办法,也更清晰遇到问题后如何进行分析。

第2次实践 网络信息收集与安全扫描

第2次实践主要是围绕信息收集、端口扫描和漏洞评估展开。本次实验先对 baidu.com 进行了 whois 查询、IP 查询和归属地分析,又通过抓包观察网络通信过程。之后使用 nmap 对靶机进行存活探测、端口扫描、系统识别和服务识别,最后使用 Nessus 对 Windows Server 2003 靶机进行了漏洞扫描。这次实验表面上只是使用工具扫描目标,但真正难点在于能不能看懂扫描结果。靶机开放了 135、139、445 等端口,说明 RPC、NetBIOS 和 SMB 服务暴露在外,其中 139 和 445 是重点风险端口。Nessus 进一步扫描出了 SMB 空会话、系统停止支持、MS09-001、MS08-067 等漏洞,尤其是 MS08-067,说明目标可能存在远程代码执行风险,是本次实验中最关键的漏洞点。

实验中遇到的主要问题是 Nessus 插件加载异常。刚开始页面提示没有插件,或者长时间卡在 Initializing。后来通过命令行手动更新插件、重新编译插件索引并重启服务后才解决。另外,Nessus 的漏洞列表会把部分 Critical 漏洞折叠在 MIXED 目录下,如果不展开查看,很容易以为漏洞没有被扫出来。这次实践,我明白了漏洞扫描要按照“主机存活—端口开放—服务类型—漏洞风险—攻击路径”的思路进行分析。后续遇到类似靶机扫描任务时,不能只截图完成步骤,而是要从扫描结果中判断哪些端口和漏洞真正值得重点关注。

第3次实践 网络嗅探与流量取证分析

第3次实践主要是做网络嗅探、协议分析和端口扫描取证。实验中使用 tcpdump 抓取网页访问流量,使用 Wireshark 分析 Telnet 登录过程,又通过 Wireshark、Snort 和 p0f 对 listen.pcap 文件进行取证分析,判断攻击主机、扫描目标、开放端口、扫描方式和攻击机系统。

这次实验让我感觉最明显的是,流量分析比单纯跑工具更需要耐心。比如 Telnet 登录时,用户名会直接以明文出现在数据包里;分析 listen.pcap 时,也可以根据 SYN 包、SYN+ACK 包和 RST 包判断出这是 Nmap 发起的 TCP SYN 半开放扫描。攻击主机是 172.31.4.178,目标蜜罐是 172.31.4.188,开放端口包括 21、22、23、25、53、80、139、445、3306 等。

实验中我也遇到了一些问题,主要是工具和环境配置。传输 listen.pcap 文件时,因为桥接网络、防火墙和端口监听问题,导致 Kali 一开始下载失败;安装 Snort 时也遇到了软件源和版本不兼容的问题。最后通过调整网络模式、关闭防火墙、检查 8000 端口监听、更新 Kali 源并改用 Snort 3 的命令解决。本次实验我收获了许多,我开始明白抓包分析不能只看表面数据,而要从源 IP、目的 IP、端口、协议标志位和响应包里推断真实行为。后续再遇到异常流量或端口扫描分析时,我会先看通信双方是谁、发了什么包、目标怎么回应,再判断背后的攻击方式。

第4次实践 TCP/IP协议栈攻击

第4次实践主要是围绕 TCP/IP 协议栈中的经典攻击展开,实验内容比前几次更偏“真正动手攻击”。本次主要完成了 ARP 缓存欺骗、ICMP 重定向、SYN Flood、TCP RST 攻击和 TCP 会话劫持这几类实验,使用 Kali 作为攻击机,SEEDUbuntu9 和 Metasploitable Ubuntu 作为靶机。整体来看,这次实验不只是简单抓包,而是要真正理解协议本身为什么会被利用。

这次实验最明显的感受就是,很多攻击其实并不复杂,关键是协议本身太“信任”对方了。ARP 没有身份验证,所以可以被伪造;ICMP 重定向原本是路由优化机制,但也能被拿来劫持流量;TCP 三次握手中的半连接状态可以被 SYN Flood 消耗;RST 报文可以直接打断连接;Telnet 这种明文协议在中间人环境下更是基本没有安全性。以前只是在理论上知道这些协议有问题,这次真正做完之后,才发现这些漏洞不是抽象概念,而是能在实验环境里直接看到效果。

实验中遇到的问题也不少。最开始 SEEDUbuntu 和 Metasploitable 之间 ping 不通,排查后发现是子网掩码和网段划分导致的隔离问题,看起来 IP 很接近,但实际上不在同一个广播域里。后来通过修改 IP 和网络配置,才让三台机器正常互通。ARP 欺骗一开始也没有生效,普通构造报文覆盖不了目标主机的 ARP 缓存,最后改用 arpspoof 持续发送伪造 ARP 应答,才成功看到缓存表被篡改。ICMP 重定向实验中还出现过靶机断网的问题,原因是流量被引到 Kali 后没有正常转发,这也让我意识到中间人攻击不是“骗到流量”就结束了,还要考虑后续转发链路是否完整。

这次实验给我的收获比较直接:我开始能从协议运行过程去理解攻击,而不是只记工具命令。比如 ARP 欺骗本质上是修改 IP 和 MAC 的对应关系,SYN Flood 是消耗半连接资源,TCP RST 是伪造连接复位包,TCP 会话劫持则依赖中间人位置和明文通信环境。只要理解这些底层逻辑,看到抓包结果时就不会只盯着一堆数据包发懵,而是能判断这些包到底在干什么、攻击为什么会成功。

总体来说,第4次实践比前几次更折磨,但也更有意思。前几次更多是在扫描、嗅探和分析,这次是真正把攻击链条跑起来了。它让我更清楚地认识到,网络安全不是只会配置防火墙或者跑扫描工具,而是要理解协议、网络拓扑、主机状态和流量变化之间的关系。后面如果再遇到靶机不通、ARP 表异常、连接突然断开、流量被劫持这类问题,我会先回到这次实验形成的思路:先看网络是否互通,再看协议交互是否正常,最后再判断是不是攻击或配置问题导致的异常。

第5次实践 防火墙入侵检测

第5次实践主要围绕网络边界防护和入侵检测展开,内容包括 iptables 防火墙配置、Snort 入侵检测分析,以及蜜网网关防火墙和 IDS/IPS 规则分析。相比前几次偏攻击和抓包的实验,这次更像是从防守角度去理解网络安全:不仅要知道攻击怎么发生,还要知道怎么拦、怎么检测、怎么记录。

实验中首先使用 iptables 完成了两类防护配置。一类是过滤 ICMP 数据包,让主机不能被直接 ping 通,实现简单的“禁 Ping”效果;另一类是基于源 IP 做访问控制,只允许指定主机访问靶机服务,其他主机即使网络能连通,也无法正常访问。这个过程让我感觉防火墙规则看起来只是几条命令,但实际很容易因为默认策略、规则顺序、网段配置出问题,一旦写错就可能直接把自己也挡在外面。

第二部分是使用 Snort 对 listen.pcap 文件进行离线入侵检测。通过 Snort 读取流量包并生成告警,可以识别出其中的大规模 Nmap 端口扫描行为。这里让我印象比较深的是,前面实验中我们是用 Wireshark 人工分析 SYN 包、SYN+ACK 包和端口响应,而这次是让 IDS 根据规则自动检测攻击行为。也就是说,Wireshark 更像是自己一点点看证据,Snort 更像是用规则帮我们自动报警,两者结合起来才比较完整。

第三部分是分析 Honeywall 蜜网网关的防火墙和 IDS/IPS 配置规则。通过查看 rc.firewall、snortd、hw-snort_inline、honeywall.conf 等配置文件,可以看到蜜网网关并不是单纯“放一个蜜罐让别人打”,而是通过黑名单、白名单、围栏规则、日志链和 Snort 检测规则,对攻击流量进行捕获、记录和限制。它既要让攻击者能够进入蜜罐产生数据,又不能让蜜罐被利用后继续攻击外部主机,这里面其实是在“诱捕”和“管控”之间做平衡。

这次实验遇到的问题也挺多。最麻烦的还是网络配置问题,靶机一开始无法访问外网,后来发现是默认网关没有配好,导致外部流量根本转发不出去。还有一次打开 rc.firewall 文件时内容为空,刚开始还以为文件没了,最后通过刷新和重启 Honeywall 才恢复正常。除此之外,iptables 规则测试也很容易受旧规则、路由缓存和网卡配置影响,所以不能只看命令有没有执行成功,还要实际 ping、telnet、查看规则链来验证。

总体来说,第5次实践让我对“防御不是一句话”这件事有了更深的体会。以前可能觉得防火墙就是拦截,IDS 就是报警,但真正做完之后发现,防御配置必须考虑规则顺序、默认策略、可信主机、日志记录、误拦截和后续溯源。尤其是蜜网网关部分,让我意识到安全防护不是只把攻击挡掉,而是要在可控范围内观察攻击、记录攻击,并限制攻击继续扩散。

这次实验最大的收获是,我开始从防守视角去看网络攻防流程。前几次实验更多是在发现漏洞、发起攻击、分析流量,而这次则是思考怎么通过规则把风险控制住。后续如果再遇到网络不通、服务访问失败、告警日志异常或者防火墙规则不生效的问题,我会先检查网段和网关,再看 iptables 默认策略和规则顺序,最后再结合 Snort 日志判断是不是被规则拦截或检测到了。

第6次实践 Windows漏洞利用与NT入侵取证

第6次实践主要围绕 Windows Server 2003 的远程渗透攻击和流量分析展开,核心是利用 MS08-067 漏洞获取靶机控制权,并通过 Wireshark 还原攻击过程。相比前几次实验,这次更像是把前面学过的漏洞扫描、端口分析、抓包取证真正串了起来,不再只是单独做某一个步骤,而是完整走了一遍“发现漏洞—利用漏洞—获得权限—分析流量”的过程。

实验中使用 Kali 作为攻击机,Windows Server 2003 作为靶机。前期先确认两台主机在同一网段,并通过 nmap 检查靶机 445 端口是否开放。之后在 Metasploit 中加载 MS08-067 对应模块,配置靶机 IP 和攻击机 IP,成功获得靶机的远程会话。拿到权限后,可以查看靶机系统信息、执行命令,甚至获取用户哈希,这也让我更直观地感受到老旧系统高危漏洞的破坏力。

这次实验比较关键的一点是载荷选择。刚开始使用 Meterpreter 时,虽然功能更强,也能成功控制靶机,但抓包后发现 Wireshark 里看到的内容基本是乱码,没法还原具体命令。后来改用 windows/shell/reverse_tcp 这种明文反弹 shell,才可以在 TCP 流中直接看到 CMD 提示符和执行过的命令。这个地方让我意识到,实验不是工具越高级越好,而是要看实验目标是什么。如果目标是流量分析和攻击还原,明文 shell 反而比 Meterpreter 更合适。

实验中遇到的问题也比较典型。Windows Server 2003 系统太老,很多新工具都不兼容,靶机端没法方便地抓包,新版 Wireshark 装不了,系统自带的抓包命令也不支持。最后只能换思路,直接在 Kali 端监听 VMnet8 网卡,利用同网段流量经过虚拟交换环境的特点完成抓包。还有一个问题是攻击流量阶段比较多,如果不过滤端口和 IP,很容易在 Wireshark 里看得很乱,后来通过过滤 4444 端口才比较清楚地定位到反弹 shell 阶段。

本次实验还分析了一次 NT 系统被攻陷的历史攻击日志。通过 Wireshark 查看日志文件,可以还原攻击者先探测 IIS 服务,再利用 Unicode 目录遍历和 msadcs.dll 相关漏洞,最后借助 nc 建立远程 shell 的过程。攻击者进入系统后执行了目录查看、用户枚举、文件读取、写入留言等操作。这个过程让我感觉很真实,因为它不是简单告诉你“系统被攻击了”,而是可以从每一个请求、每一条命令中慢慢拼出攻击者到底做了什么。

总体来说,第6次实践让我最大的收获是明白了攻防实验不能只追求“打进去”,还要能解释“怎么打进去”和“打进去之后发生了什么”。攻方关注的是漏洞能不能利用、权限能不能稳定拿到;防守方关注的是流量能不能追踪、命令能不能还原、攻击路径能不能复盘。以前我可能只会看 Metasploit 有没有弹出 session,但这次之后,我会更关注漏洞利用前的端口条件、载荷选择、通信端口、抓包过滤和后续行为分析。这次实验主要折磨在老系统兼容性和流量分析上。很多地方不是照着教程就能一步到位,而是要根据实际环境不断换方法。也正是因为这些问题,我对远程渗透和取证分析的理解更清楚了:真正有价值的不是单纯拿到一个 shell,而是能把整个攻击链条从头到尾讲明白。

第7次实践 Linux漏洞利用与攻击流量分析

第7次实践主要是围绕 Linux 靶机的 Samba 服务漏洞渗透和流量分析展开,核心漏洞是 Samba 的 usermap_script 命令注入漏洞。实验中使用 Kali 作为攻击机,Metasploitable Ubuntu 作为靶机,先通过 nmap 扫描确认靶机开放了 139、445 等 Samba 服务端口,然后使用 Metasploit 加载 exploit/multi/samba/usermap_script 模块,配置好 RHOST、LHOST 和反向 Shell 载荷,最终成功拿到了靶机的 root 权限。

这次实验和第6次有点像,都是利用 Metasploit 打漏洞并进行抓包分析,但区别是这次目标从 Windows 换成了 Linux,漏洞也从 MS08-067 变成了 Samba 命令注入。做完之后我最大的感觉是,Linux 靶机并不是天然安全,只要服务版本老、配置不当,同样可以被远程直接打穿。尤其是这次 Samba 漏洞,不需要复杂的前置条件,利用成功后直接就是 root 权限,确实很离谱。

实验中比较关键的一步是防守方抓包分析。攻击前用 tcpdump 监听 445 和 4444 端口,把攻击全过程保存成 attack.pcap。之后用 Wireshark 打开数据包,先分析 SMB 阶段,可以看到攻击者通过恶意用户名字段注入了 nohup sh -c 开头的反弹 Shell 命令;再分析 4444 端口,可以看到反向 Shell 建立后的命令交互,比如 whoami、ifconfig、cat /etc/issue、uname -a、cat /etc/passwd 等。这个过程让我感觉很直观,因为攻击不是只停留在 Metasploit 里弹出 session,而是能在流量里一点点还原出来。

这次实验遇到的问题主要有三个。第一个是靶机 IP 会变化,导致 Metasploit 里的 RHOSTS 和 tcpdump 过滤规则不匹配,攻击和抓包都会失败,所以每次开始前必须重新确认 IP。第二个是 Wireshark 用 sudo 启动时出现图形界面连接错误,后来通过把 pcap 文件移动到 kali 用户目录并修改所有者解决。第三个是 SMB 流里有很多乱码,一开始看起来很乱,但后来明白 SMB 本身就是二进制协议,不需要强行看懂全部内容,只要找到其中可读的 ASCII Payload,就能抓住攻击关键。

通过本次实验我对“攻击成功”和“攻击可追溯”之间的关系理解更清楚了。攻击方只关心漏洞能不能打通、Shell 能不能反弹、权限是不是 root;但防守方要做的是从流量中找到证据,判断攻击者是谁、打了哪个端口、利用了什么漏洞、执行了哪些命令。也就是说,同一次攻击,从攻方看是拿权限,从守方看就是还原攻击链。

总体来说,第7次实践比单纯跑 Metasploit 更有意义。因为如果只是拿到 root shell,其实只能说明攻击成功;但通过 tcpdump 和 Wireshark 把 SMB 注入、反弹连接、命令执行这些过程都分析出来,才算真正理解这个漏洞是怎么被利用的。后面再遇到类似的 Linux 服务漏洞,我会先确认服务端口和版本,再看漏洞利用条件,最后结合抓包判断攻击流量和后渗透行为,而不是只看工具有没有返回 session。

第8次实践 恶意代码分析与僵尸网络取证

第8次实践主要围绕恶意代码分析、简单逆向和僵尸网络流量分析展开。实验内容包括 RaDa 恶意样本分析、crackme 程序逆向,以及 botnet_pcap_file.dat 僵尸网络抓包分析。相比前几次偏渗透和扫描的实验,这次更像是从“攻击发生之后”去看程序和流量里到底留下了什么痕迹。

在 RaDa 样本分析中,我先通过文件类型识别、查壳、脱壳、字符串提取和 IDA Pro 分析,确认它是 Windows 平台下的 32 位 PE 程序,并且存在加壳痕迹。脱壳后可以看到作者信息为 Raul Siles 和 David Perez。动态运行时,还发现它会创建 C:\RaDa\tmp 目录,并在注册表 Run 项中写入 rada,实现开机自启动,说明这个样本具有比较明显的持久化驻留特征。

crackme 分析部分主要是用 IDA Pro 找程序的判断逻辑。crackme1 的核心就是比较输入参数是否为 I know the secret;crackme2 在此基础上又增加了对程序文件名的检查,所以不仅参数要对,文件名也要改对。这个过程让我感觉逆向分析不是一上来就看一堆汇编,而是先从字符串、函数调用和关键跳转入手,慢慢定位真正的判断位置。

僵尸网络流量分析部分则是对 botnet 抓包文件进行统计和过滤。通过 Wireshark 和 tcpdump 分析,发现蜜罐主机与多个 IRC 服务器通信,其中 209.196.44.172 是主要通信对象;同时有大量外部 IP 访问蜜罐主机,攻击目标集中在 25、80、135、139、445、4899 和 UDP 137 等端口。尤其是 445 端口流量中出现了 ADMIN$ 管理共享和 PSEXESVC.EXE,说明攻击者尝试通过 SMB 管理共享进行远程控制或文件投递。

这次实验遇到的问题主要是分析对象比较杂。RaDa 样本直接看字符串不够清楚,需要结合脱壳、IDA 和 Process Explorer;crackme 一开始看入口函数容易跑偏,必须通过字符串交叉引用找到真正的判断函数;僵尸网络流量单靠 Wireshark 很难统计清楚,还要结合 tcpdump、awk、cut、sort、uniq 这些命令来提取 IP 和端口信息。

总体来说,第8次实践让我感觉安全分析不能只靠一个工具。恶意代码要静态分析和动态行为结合看,逆向要从字符串和逻辑分支慢慢定位,流量分析也要把协议内容和统计结果放在一起判断。最大的收获是,我开始能从文件、进程、注册表、网络流量这些不同角度去还原攻击痕迹,而不是只看某一个单独现象。

第9次实践 二进制漏洞利用与Shellcode注入

第9次实践主要围绕缓冲区溢出、返回地址覆盖和 shellcode 注入展开,实验对象是 Linux 下的 32 位 ELF 程序 pwn1。相比前几次网络攻防实验,这次更偏底层软件安全,不再是扫描端口、利用服务漏洞,而是直接从程序内存、栈结构和机器指令角度去理解漏洞是怎么被利用的。

实验中先使用 file、nm、objdump 等工具分析程序结构,确认程序中有 main、foo 和 getShell 三个关键函数。其中 main 正常调用 foo,而 foo 中使用了不安全的 gets() 函数,存在缓冲区溢出风险。实验第一步是手工修改可执行文件中的机器码,把原本调用 foo 的流程改成直接调用 getShell,从而改变程序执行逻辑。这个过程让我第一次比较直观地感受到,程序执行流程本质上就是由机器指令控制的,改一个字节就可能完全改变程序行为。

第二部分是利用 foo 函数的缓冲区溢出覆盖返回地址。通过分析反汇编代码,计算出从缓冲区起始位置到返回地址的偏移是 32 字节,于是构造填充数据加 getShell 地址的输入,使程序返回时不再回到原流程,而是跳转到 getShell。这个地方比较关键,因为一开始不能只凭感觉填数据,必须结合栈布局、ebp、返回地址位置和小端序来算清楚。

第三部分是自己注入 shellcode。这个过程比前两个更折磨,因为返回地址稍微不准就会段错误。最开始直接使用 gdb 里看到的缓冲区地址,结果正常运行时不稳定。后来通过构造测试输入观察 EIP 和 ESP,确认返回地址被覆盖后 ESP 指向输入区域,再结合 NOP sled 和 shellcode,最终成功执行 /usr/bin/dash。这一步让我感觉缓冲区溢出不是简单“输入长一点就行”,而是需要非常细地理解栈地址、跳转位置和运行环境变化。

实验中遇到的问题主要有两个。一个是偏移量和返回地址不好确定,需要反复通过 objdump 和 gdb 去验证;另一个是 shellcode 注入时经常出现段错误,原因可能是返回地址不稳定、NOP 区太短或者跳转位置不准。另外安装 gdb 时还遇到软件源连接问题,最后通过强制使用 IPv4 才解决。总体来说,第9次实践让我对缓冲区溢出的理解从“概念”变成了“过程”。以前只知道 gets() 不安全、返回地址可以被覆盖,但这次真正看到了从反汇编分析、计算偏移、构造 payload、覆盖 EIP 到执行 shellcode 的完整链条。最大的收获是明白了软件漏洞利用并不是单纯靠工具,而是建立在对程序结构、栈空间、机器码、小端序和调试信息的理解之上。后续再遇到二进制漏洞分析,我会先看函数调用关系和危险函数,再分析栈布局和返回地址,而不是直接盲目尝试 payload。

第10次实践 SQL注入与XSS攻击防御

第10次实践主要围绕 Web 安全漏洞展开,内容包括 SEED SQL 注入实验和 SEED XSS 跨站脚本攻击实验。相比前几次偏系统、网络和二进制层面的实验,这次更偏 Web 应用安全,重点是理解用户输入、数据库查询、浏览器脚本执行和服务器防护策略之间的关系。

SQL 注入部分主要是在员工管理系统中进行实验。通过查看源码可以发现,后端直接把用户输入拼接进 SQL 语句,没有使用参数化查询,所以可以通过构造特殊输入绕过登录验证,也可以在修改资料时利用 UPDATE 注入篡改数据库内容。比如实验中通过构造输入成功修改了 Alice 的 Salary 字段。这个过程让我很直观地看到,SQL 注入不是“输入框的小问题”,而是后端查询逻辑被攻击者改写了。

XSS 部分是在 Elgg 社交网站环境中完成的。实验中先通过简单脚本弹窗验证页面存在 XSS,再进一步读取 Cookie、向攻击者发送 Cookie、自动加好友、修改受害者资料,最后实现 XSS 蠕虫传播。做完之后感觉 XSS 的危害比表面上的弹窗严重得多,因为它可以利用受害者已经登录的浏览器身份,自动发起原本需要用户手动完成的操作。

这次实验遇到的问题主要集中在环境和浏览器配置上。SQL 和 XSS 实验都需要 Docker 容器环境,刚开始拉取镜像时出现超时,只能配置镜像加速后重新构建。XSS 实验中,HTTP Header Live 插件一开始因为 Firefox 安全策略无法启用,后来通过修改 about:config 才解决。还有一次脚本写入后没有执行,而是被当成普通文本显示,排查后发现必须切换到 HTML 源码模式粘贴代码。

这次实验最大的收获是,我对 Web 攻击的理解更完整了。SQL 注入的关键在于后端把“数据”当成了“代码”执行,XSS 的关键在于浏览器把攻击者输入当成了页面脚本执行。前者主要攻击数据库逻辑,后者主要攻击用户浏览器上下文。防御时也不能只靠简单过滤,SQL 注入更应该使用参数化查询,XSS 则需要输出编码、输入过滤、Cookie 安全属性和 CSP 等多种措施配合。总体来说,第10次实践让我意识到 Web 安全问题很多时候不是工具多高级,而是开发时一个输入处理细节没做好,就可能导致认证绕过、数据篡改、Cookie 泄露甚至蠕虫传播。后续再看 Web 系统时,我会更关注输入是否被安全处理、请求参数是否可信、Token 是否能被脚本读取,以及服务器是否配置了 CSP 这类浏览器侧防护策略。

第11次实践 浏览器漏洞利用与网页木马分析

第11次实践主要是围绕浏览器漏洞利用和网页木马分析展开。实验内容主要包括三部分:一是使用 Metasploit 的 MS06-014 模块构造恶意网页,让 Windows XP 靶机用 IE 访问后触发漏洞并反弹 Shell;二是分析网页木马的加载链,从 start.html 到 new09.htm,再到 kl.htm 和后续脚本,逐步还原恶意代码;三是进行攻防对抗,把 MS06-055 和 MS06-014 两个浏览器漏洞封装成混淆页面,再从防守方角度还原真实漏洞地址和攻击逻辑。

这次实验和之前几次远程渗透不太一样。前面像 MS08-067、Samba 漏洞,都是直接打靶机开放的服务端口;这次则是利用浏览器作为入口。靶机表面上只是打开了一个网页,但实际上浏览器在后台解析恶意脚本、加载漏洞页面、执行 payload,最后攻击机就能拿到远程命令行会话。这个过程让我感觉比较直观,也更能理解为什么网页木马危险,因为用户可能根本没意识到自己已经触发了攻击。

实验中网页木马分析部分比较麻烦。它不是一个文件直接写明恶意行为,而是通过 iframe、script、多层跳转和混淆代码一点点加载。尤其是 kl.htm 里面用了 Base64 和 XXTEA 混淆,直接打开基本看不懂,必须先找到密钥,再按照解码流程还原脚本。解出来之后才能看到它会检测 ADODB.Stream、暴风影音、PPS、百度工具栏这些 ActiveX 控件,然后根据不同环境加载不同脚本,最后投递同一个木马样本。

这次实验遇到的问题主要是调试和分析过程比较碎。Metasploit 同时跑多个浏览器漏洞模块时,端口容易冲突,需要先清理旧的 jobs 和 sessions;Apache 部署挂马页面时,也要确认服务是否启动、文件路径是否正确,不然页面根本打不开。网页木马分析中,多个下载路径看起来像是多个不同木马,但通过 MD5 校验后发现最后其实是同一个样本,这个地方如果不仔细比对,很容易重复分析。

通过这次实践,我最大的收获是对“网页木马攻击链”有了更完整的认识。以前可能觉得网页木马就是一个恶意网页,但这次分析后发现,它其实是一整套流程:入口页面负责诱导访问,隐藏 iframe 负责跳转,混淆脚本负责隐藏真实逻辑,漏洞脚本负责探测和利用浏览器控件,最后再下载并执行木马程序。攻击者不是只赌一个漏洞,而是准备多条利用路径,只要受害者环境中有一个组件存在漏洞,就可能中招。

总体来说,第11次实践让我把前面学过的 Metasploit、Web 安全、恶意代码分析和取证分析串起来了。它也让我意识到,浏览器安全不只是浏览器本身的问题,还和系统补丁、插件版本、ActiveX 控件、安全配置都有关系。后面如果再分析类似网页木马,我会先看页面加载顺序,再解混淆代码,然后提取下载链接和样本,最后通过哈希和静态分析判断木马行为,而不是只盯着一个网页文件看。

2.最喜欢且做的最好的实践

最喜欢且做的最好的实践

如果让我从这些实践里选一个最喜欢、也觉得自己做得最好的,我会选第10次 Web 安全实践,也就是 SQL 注入和 XSS 跨站脚本攻击实验。

主要原因是这次实验不是单纯跑工具,也不是只看扫描结果,而是真的能看到一个 Web 漏洞是怎么从“输入框”一步步变成实际攻击效果的。SQL 注入那里,我一开始只是知道“拼接 SQL 不安全”,但真正做到绕过登录、修改 Alice 的工资字段之后,才发现这个漏洞的危害很直观。它不是理论上有风险,而是真的可以直接改数据库里的东西。

XSS 部分我印象更深。刚开始只是弹窗,看起来好像没什么,但是后面做到读取 Cookie、自动加好友、修改别人资料,甚至 XSS 蠕虫传播的时候,就感觉这个实验一下子完整起来了。它让我明白 XSS 不是简单弹个 alert,而是可以利用受害者已经登录的身份,在用户完全没感觉的情况下替他发请求、改资料、继续传播。这个过程确实比单纯看概念刺激很多,也更容易理解为什么 Web 安全里面 XSS 一直是重点问题。

这次实验我觉得自己做得比较好的地方,是没有只停留在“脚本能跑”这个层面,而是把请求过程也跟着看了。比如自动加好友和修改资料时,我用 HTTP Header Live 去抓请求,分析里面的 GUID、Token、时间戳和接口路径,再根据这些参数去构造脚本。这个过程虽然一开始很麻烦,插件也有问题,脚本还出现过直接显示成文本、不执行的情况,但最后都一点点排出来了。所以这次不是照着教程敲完就结束,而是真的把浏览器、服务器、请求参数和脚本执行之间的关系理清楚了。

另外,第10次实践和后面的第11次浏览器漏洞利用与网页木马分析其实也能接上。第10次主要让我理解了 Web 页面中的脚本为什么危险,第11次则更进一步,把浏览器漏洞和网页木马联系起来看。这样前后连起来之后,我对“用户只是打开一个网页,为什么也可能被攻击”这个问题理解得更清楚了。

总的来说,第10次实践是我最喜欢也做得最顺的一次。它既有攻击效果,又有防御验证,还能和实际 Web 安全问题联系起来。相比一些纯环境配置或者纯工具扫描的实验,这次让我感觉自己是真的在分析问题,而 不是单纯完成步骤。虽然中间也挺折磨,但做完之后收获很明显,所以我觉得它是我整个实践课里做得最好的一次。

3.本门课学到的知识总结

3.1 网络攻防环境基础

网络攻防实验最基础的东西其实不是工具,而是环境。第1次实践主要就是搭建后面整学期要用的虚拟攻防环境,包括 Kali、WinXPattacker、SEED Ubuntu、Metasploitable、Windows Server 和 Honeywall。这里涉及攻击机、靶机、蜜罐、蜜网网关、虚拟网段、网卡模式、IP 地址和默认网关等内容。

这部分看起来只是“导入虚拟机、配网卡、改 IP”,但后面做实验才发现,很多问题的根源都在这里。比如靶机 ping 不通、nmap 扫不到端口、Wireshark 抓不到流量、Metasploit 连不上目标,本质上都可能是网段、子网掩码、网关或者虚拟机网络模式没配对。所以网络攻防环境不是背景部分,而是后续所有攻击、扫描和抓包能不能顺利进行的基础。

3.2 信息收集和漏洞扫描

信息收集主要解决“目标是谁、在哪里、开了什么服务、可能有什么漏洞”这些问题。第2次实践里做了 whois 查询、nslookup 查询、IP 归属地查询、nmap 扫描和 Nessus 漏洞扫描。nmap 更适合做主机发现、端口扫描、系统识别和服务版本识别;Nessus 更适合进一步给出漏洞名称、风险等级和攻击建议。

这里比较关键的知识点是:端口开放不等于一定有漏洞,但端口背后的服务版本和系统状态决定了风险大小。比如 Windows Server 2003 开放 135、139、445 端口,就要重点想到 RPC、NetBIOS、SMB 这些服务;如果 Nessus 又扫出 MS08-067、SMB 空会话等问题,就说明这个目标已经具备比较明确的攻击路径了。扫描工具只是给信息,真正要看懂的是端口、服务和漏洞之间的关系。

3.3 网络嗅探和流量分析

网络嗅探的核心是通过数据包还原通信过程。第3次实践里用 tcpdump 抓网页访问流量,用 Wireshark 分析 Telnet 登录过程,还分析了 listen.pcap 里的端口扫描流量。tcpdump 适合命令行快速抓包,Wireshark 适合看协议字段、追踪 TCP 流和做取证分析。

这部分知识点里,Telnet 明文传输印象比较深。用户名和交互内容可以直接从数据包里看到,说明明文协议在网络中基本就是“裸奔”。另外,通过 SYN、SYN+ACK、RST 这些 TCP 标志位,也可以判断扫描行为。比如大量 SYN 包发往不同端口,但不完成完整三次握手,就很像 Nmap 的 SYN 半开放扫描。所以抓包不是看包的数量,而是看每个包代表什么行为。

3.4 TCP/IP 协议攻击

第4次实践做的是 ARP 欺骗、ICMP 重定向、SYN Flood、TCP RST 攻击和 TCP 会话劫持。这些攻击的共同点是都利用了 TCP/IP 协议设计里的信任关系或者机制缺陷。

ARP 欺骗利用的是 ARP 协议没有身份认证,攻击者可以伪造 IP 和 MAC 的对应关系,让靶机把攻击机当成网关或目标主机。ICMP 重定向利用的是主机对路由重定向消息的信任。SYN Flood 利用的是 TCP 三次握手中的半连接资源。TCP RST 攻击则利用 RST 报文可以强制中断连接的机制。

所以这些实验不是单纯学攻击命令,而是看清楚协议为什么会被利用。协议本来是为了让通信顺利进行,但如果没有认证、校验和状态保护,就可能被攻击者拿来做流量劫持、拒绝服务和会话破坏。

3.5 防火墙和入侵检测

第5次实践主要是 iptables、Snort 和 Honeywall 规则分析。iptables 的知识点主要是规则链、匹配条件和处理动作,比如 INPUT 链拦截 ICMP 实现禁 ping,或者只允许指定 IP 访问某个服务。规则顺序和默认策略很重要,因为一条规则写错,就可能把正常访问也挡掉。

Snort 的重点是入侵检测,它通过规则匹配和协议分析发现异常流量。比如对 listen.pcap 做检测时,可以识别出端口扫描行为。Honeywall 则更像是蜜网环境里的控制中心,它不是简单拦截所有流量,而是既要允许攻击者进入蜜罐产生攻击数据,又要限制蜜罐被攻陷后继续向外攻击。所以黑名单、白名单、围栏规则、日志记录这些机制,本质上都是在做“诱捕”和“控制”的平衡。

3.6 Windows 远程漏洞利用

第6次实践围绕 Windows Server 2003 的 MS08-067 漏洞展开。这个漏洞和 SMB/RPC 服务有关,攻击者可以通过 445 端口发送特制 RPC 请求,在不需要账号密码的情况下触发远程代码执行。

这里的知识点不仅是“Metasploit 能打进去”,更重要的是 payload 的区别。Meterpreter 功能强、隐蔽性好,但是流量不容易直接看懂;普通 reverse shell 功能简单,但命令交互是明文的,更适合用 Wireshark 做攻击过程还原。所以同一个漏洞,不同 payload 对实验结果影响很大。攻击方关心能不能拿权限,防守方更关心流量能不能还原、命令能不能复盘。

3.7 Linux 服务漏洞利用

第7次实践做的是 Samba usermap_script 漏洞利用,目标是 Metasploitable Linux 靶机。Samba 是 Linux 下实现 SMB/CIFS 的服务,常用于文件共享。这个漏洞的问题在于用户名字段过滤不严格,导致攻击者可以通过恶意用户名插入系统命令。

实验里先通过 nmap 扫描确认 139、445 端口开放,再用 Metasploit 的 exploit/multi/samba/usermap_script 模块打漏洞,成功获得 root shell。防守方用 tcpdump 抓包,再用 Wireshark 分析 445 端口的 SMB 利用阶段和 4444 端口的反弹 shell 阶段。这里能看到一个完整攻击过程:先注入命令,再反连攻击机,最后执行 whoami、ifconfig、cat /etc/passwd 等命令。

3.8 恶意代码分析和逆向基础

第8次实践包括 RaDa 恶意代码分析、crackme 程序逆向和僵尸网络抓包分析。恶意代码分析通常分静态分析和动态分析。静态分析看文件类型、哈希、壳、字符串、导入函数和反汇编逻辑;动态分析看程序运行后创建什么进程、文件、注册表项和网络连接。

RaDa 样本里可以看到加壳、脱壳、字符串提取、IDA 分析和 Process Explorer 观察进程行为。它会创建 C:\RaDa\tmp 目录,还会写入注册表 Run 启动项,说明有持久化驻留特征。crackme 逆向则更偏程序逻辑分析,核心是通过字符串、strcmp、条件跳转找到正确输入。这个实验说明,逆向不是一上来硬看所有汇编,而是先找字符串和关键函数,再顺着逻辑慢慢分析。

3.9 僵尸网络和流量取证

第8次实践中的 botnet_pcap_file.dat 分析对应僵尸网络知识。僵尸网络是大量被控制主机组成的网络,攻击者可以通过 IRC、HTTP、P2P 等方式下发命令。早期很多僵尸网络使用 IRC 协议,常见端口是 6667,通信中会出现 NICK、USER、JOIN 这类消息。

流量取证时,不能只盯一个包看,而要统计源 IP、目的端口、会话内容和协议特征。实验里统计出多个 IRC 服务器,还分析了访问蜜罐的外部 IP,以及 25、80、135、139、445、4899、UDP 137 等被攻击端口。445 端口里出现 ADMIN$ 和 PSEXESVC.EXE 这类内容,说明攻击者尝试通过 SMB 管理共享进行远程控制或文件投递。

3.10 缓冲区溢出和 Shellcode

第9次实践是缓冲区溢出和 shellcode 注入。这个实验和前面网络层、系统服务层不太一样,它更偏底层程序漏洞。缓冲区溢出的根本原因是程序没有限制输入长度,导致输入数据覆盖栈上的返回地址。

实验对象是 32 位 ELF 程序 pwn1。先用 file、nm、objdump 看文件类型、函数地址和反汇编,发现 foo 函数里有 gets(),并且程序里还有一个正常不会执行的 getShell 函数。后面分别用了三种方式改变程序流程:第一种是直接改机器码,让 main 调用 getShell;第二种是构造 payload 覆盖返回地址,让程序返回到 getShell;第三种是把 shellcode 放到栈里,再通过 NOP sled 和返回地址跳过去执行。这里涉及小端序、EIP、ESP、栈地址、返回地址偏移和机器码这些底层知识。

3.11 SQL 注入

第10次实践的 SQL 注入实验使用的是 SEED Lab 员工管理系统。SQL 注入的本质是后端把用户输入直接拼接进 SQL 语句,导致用户输入不再只是数据,而变成了 SQL 代码的一部分。

SELECT 注入可以用来绕过登录,比如通过特殊输入让原本的密码判断失效。UPDATE 注入则可以修改数据库内容,比如实验里通过构造输入修改 Alice 的 Salary 字段。这个漏洞的重点不是“输入框能不能过滤符号”,而是 SQL 语句的构造方式是否安全。真正可靠的防御应该是参数化查询,让用户输入只能作为数据传入,而不能改变 SQL 语句结构。同时还要配合最小权限、错误信息隐藏和必要的输入校验。

3.12 XSS 跨站脚本攻击

第10次实践的 XSS 实验是在 Elgg 社交网站上做的。XSS 的问题在于网页把用户输入当成 HTML 或 JavaScript 执行。最简单的是弹窗,但真正危险的是读取 Cookie、自动发请求、修改资料,甚至让脚本复制自己形成 XSS 蠕虫。

实验里先做了 alert 弹窗验证,再做了 Cookie 读取和发送,后面通过 HTTP Header Live 抓取加好友和修改资料的请求,分析 GUID、Token、时间戳等参数,再构造脚本实现自动加好友和修改受害者资料。这里的关键点是:XSS 利用的是受害者已经登录的浏览器上下文,所以脚本发出的请求在服务器看来可能就是正常用户操作。CSRF Token 对普通跨站请求有用,但如果页面本身存在 XSS,脚本可以直接读取页面里的 Token,所以单靠 Token 也不够。

3.13 浏览器漏洞利用和网页木马

第11次实践是浏览器漏洞利用与网页木马分析,它和第10次 Web 安全实验联系很紧。第10次主要说明脚本注入为什么危险,第11次则进一步说明浏览器本身也可能成为攻击入口。网页木马通常不一定让用户主动下载文件,而是通过诱导用户访问恶意页面,利用浏览器、插件或脚本漏洞触发恶意行为。

这类攻击的特点是隐蔽性比较强,用户表面上只是打开网页,但后台可能已经发生漏洞触发、恶意代码下载、重定向或者木马植入。所以浏览器安全不只是服务器端的问题,还和客户端浏览器版本、插件版本、脚本执行策略、下载策略和系统补丁有关。

3.14 安全加固和防范思路

安全加固不是单独靠一个工具就能解决的。系统层面要及时打补丁、关闭不必要端口、禁用危险服务,比如老旧 Windows 系统的 SMB/RPC 服务就要特别注意。网络层面要配置防火墙、IDS、日志审计和访问控制,比如 iptables、Snort、Honeywall 都属于这类防护。Web 层面要做好参数化查询、输出编码、输入过滤、Cookie 安全属性和 CSP。客户端层面则要更新浏览器和插件,减少网页木马利用机会。

3.15 法律和实验边界

端口扫描、漏洞利用、木马分析、SQL 注入、XSS、缓冲区溢出这些内容都有攻击性,所以只能在授权环境和隔离实验环境里做。课程里用的是靶机、蜜罐、SEED Lab 和本地虚拟机,这些都是为了学习攻击原理和防御方法。如果把这些操作拿到真实网站、真实服务器或者别人的电脑上测试,就不是实验问题,而是违法风险。

3.16 总体知识链条

这门课的知识点其实可以串成一条完整链路:第1次先搭环境;第2次做信息收集和漏洞扫描;第3次开始学抓包和流量分析;第4次理解 TCP/IP 协议攻击;第5次从防守角度看防火墙、IDS 和蜜网网关;第6次和第7次分别做 Windows 和 Linux 远程渗透;第8次分析恶意代码、逆向程序和僵尸网络流量;第9次进入二进制缓冲区溢出;第10次做 Web 安全里的 SQL 注入和 XSS;第11次进一步看浏览器漏洞和网页木马。

整体看下来,网络攻防不是某一个工具或者某一条命令,而是环境、协议、系统、应用、代码、浏览器和日志分析共同组成的一套体系。前面的实验偏基础和环境,中间的实验偏攻防利用,后面的实验更偏分析和漏洞原理。每个实验单独看是一个知识点,连起来看就是一条比较完整的攻击与防御链路。

4.课堂的收获与不足

4.1 课堂收获

通过这一学期的网络攻防实践课,我最大的收获是把很多原来只停留在书本上的知识真正做了一遍。以前看到端口扫描、漏洞利用、缓冲区溢出、SQL 注入、XSS 这些概念,更多是知道它们“是什么”,但并不清楚它们在真实环境里到底怎么发生、怎么验证、又怎么留下痕迹。经过这 11 次实践后,我对网络攻防的整体流程有了更清楚的认识。

一开始的实验主要是搭环境,虽然当时觉得非常折磨,各种虚拟机兼容问题、网卡模式问题、IP 配置问题都很烦,但后面越做越发现,第1次环境搭建其实特别重要。后面每次遇到靶机不通、抓不到包、服务访问失败,我都会先回头检查网络模式、网段、网关和防火墙状态。也就是说,这门课让我逐渐形成了一个比较固定的排错思路,而不是一出问题就乱试命令。

后面的实验从扫描、抓包、协议攻击,到 Windows 和 Linux 漏洞利用,再到恶意代码分析、缓冲区溢出、Web 漏洞和浏览器木马分析,知识点是一步步加深的。这个过程让我感觉网络安全不是孤立的某一个工具,而是一整条链路。比如先用 nmap 和 Nessus 找端口和漏洞,再用 Metasploit 利用漏洞,攻击成功后再用 Wireshark 还原流量,用 Snort 做检测,用防火墙和安全策略做防护。这样连起来之后,我对“攻击”和“防御”之间的关系理解得更完整了。

这门课还有一个很大的收获是提升了动手能力。很多实验不是照着教程就能一次成功,尤其是老系统、旧工具和新虚拟机版本之间经常不兼容。像 Windows 2000、Windows Server 2003、SEED Ubuntu、Honeywall 这些环境,经常会出现鼠标异常、镜像打不开、插件加载失败、命令不兼容、Docker 拉取超时等问题。虽然过程很烦,但也正是这些问题让我学会了从现象去找原因,再一步步排查,而不是只会复制教程。

另外,这门课也让我对安全边界有了更深的认识。很多实验内容本身攻击性很强,比如 SQL 注入、XSS、远程漏洞利用、木马分析、缓冲区溢出等。如果没有授权和隔离环境,这些操作放到真实网络里就是很危险的行为。所以这些实践的目的不是为了攻击别人,而是为了理解漏洞原理、攻击过程和防御方法。

4.2 存在的不足

虽然这一学期做了很多实验,但我也明显感觉到自己还有不少不足。

首先是基础知识还不够扎实。有些实验刚开始做的时候,我能按照命令跑出结果,但对背后的原理理解还不够快。比如一开始看 Wireshark 里的 TCP 标志位、SMB 流量、反弹 shell 流量时,会觉得包很多很乱,不知道重点该看哪里。后来虽然慢慢能看懂一些,但还是说明自己对协议细节的熟悉程度还不够。

其次是 Linux 命令和工具参数还不够熟练。很多时候问题不是实验思路错了,而是命令路径、参数格式、权限、文件位置这些细节没处理好。比如 Snort、tcpdump、gdb、Docker、iptables 这些工具,每个都有自己的参数规则,稍微写错就会报错。后面还需要继续多练,不能每次都临时查。

还有一个不足是实验过程中有时候太依赖工具结果。比如漏洞扫描时,Nessus 或 nmap 会给出很多结果,但真正重要的是判断哪些端口和漏洞值得关注,哪些只是普通信息。前期我容易看到一堆结果就觉得都很重要,后面才慢慢意识到要结合服务类型、漏洞等级、利用条件和攻击路径去分析。

在逆向和缓冲区溢出这部分,我也感觉难度比较大。虽然最后实验做出来了,但像汇编指令、栈结构、EIP、ESP、返回地址、小端序、shellcode 这些内容,还是需要反复练习才能真正熟。尤其是 shellcode 注入时,一个地址不对就段错误,这部分对细节要求太高,后续还需要继续加强。

Web 安全部分虽然做得比较顺,但也存在理解不够深入的问题。SQL 注入和 XSS 的基本攻击过程能理解,但是如果换成更复杂的过滤规则、更复杂的前后端框架,可能还不能很快分析出来。后面需要继续学习参数化查询、输出编码、CSP、Cookie 安全属性、CSRF 防护这些更系统的防御方法。

总的来说,这门课让我收获很大,但也暴露出自己在协议基础、Linux 操作、工具熟练度、漏洞原理和代码分析能力上的不足。后面如果继续学习网络安全,不能只满足于“实验做出来了”,还要多问一步:为什么能成功,流量里有什么痕迹,防御方应该怎么发现,开发或运维时又该怎么避免。这样才能真正把实践里的内容转化成自己的能力。

5.参考文献

《网络攻防实践》第10次作业

《网络攻防实践》第9次作业

《网络攻防实践》第8次作业

《网络攻防实践》第7次作业

《网络攻防实践》第6次作业

《网络攻防实践》第5次作业

《网络攻防实践》第4次作业

《网络攻防实践》第3次作业

《网络攻防实践》第2次作业

《网络攻防实践》第1次作业

posted @ 2026-06-21 20:43  吹根猫毛  阅读(12)  评论(0)    收藏  举报