20253912-网络攻防实践-课程总结
20253912 2025-2026-2 《网络攻防实践》课程总结
1. 内容总结
第1次实践 网络攻防实验环境搭建与蜜网拓扑配置——第一次作业。
这次实践是整门课程的基础,主要完成 VMware 虚拟网络环境配置,理解桥接、NAT、仅主机模式之间的区别,并搭建攻击机、蜜网网关HoneyWall、靶机之间的隔离实验拓扑。通过这次实践,我初步认识到网络攻防实验不能只关注工具使用,首先要保证网络环境可控、IP规划清晰、攻击流量能够被观测和记录。
第2次实践 网络信息收集与漏洞评估——第二次作业。
这次实践围绕域名、IP、端口、服务、系统版本和漏洞信息展开,使用Whois、DNS查询、Nmap、Nessus等方法完成目标画像构建。它让我理解了信息收集在攻防链条中的起点作用:只有先知道目标暴露了什么服务、可能存在什么漏洞,后续的漏洞验证和防御加固才有依据。
第3次实践 网络嗅探、协议分析与流量取证——第三次作业。
这次实践重点使用tcpdump和Wireshark对TCP、HTTP、TELNET、ICMP、UDP等流量进行抓包分析,学习BPF抓包过滤和Wireshark显示过滤器。通过分析明文TELNET、端口扫描、主机探测等流量,我认识到抓包不是简单看数据包数量,而是要把数据包还原为通信过程和安全事件。
第4次实践 TCP/IP 协议攻击与会话劫持——第四次作业。
这次实践围绕ARP 欺骗、ICMP重定向、SYN Flood、TCP RST、TCP会话劫持等攻击展开。之前在本科时期,计算机网络课程中学习到了TCP/IP协议,通过这次学习,我更加直观地理解TCP/IP协议栈中的信任问题:ARP、ICMP、TCP等协议如果缺少身份认证和完整性保护,就可能被攻击者用于路径操控、连接破坏和命令注入。
第5次实践 网络防御机制:防火墙、IDS 与蜜网——第五次作业。
这次实践从攻击理解转向防御实现,主要学习iptables访问控制、Snort入侵检测规则以及HoneyWall蜜网网关的数据捕获和数据控制功能。通过这次实践,我认识到防御不是单一工具完成的,而是由访问控制、检测告警、流量审计和攻击行为约束共同组成。
第6次实践 Windows 远程渗透攻击与网络取证复盘——第六次作业。
这次实践使用Metasploit对Windows SMB/MS08-067漏洞进行验证,并通过Wireshark分析SMB、DCERPC、反向Shell等流量;同时对NT/IIS入侵流量进行取证复盘,识别Unicode目录穿越、MSADC/RDS远程命令执行、工具下载、后门控制和痕迹清理等行为。同时,这也是我第一次比较完整地看到“漏洞利用—会话建立—后渗透—证据还原”的链条。
第7次实践 Linux Samba 服务远程渗透攻击——第七次作业。
这次实践以Samba Usermap Script远程命令执行漏洞为入口,使用Metasploit配置exploit、payload、RHOST、LHOST等参数,最终建立Linux反向Shell。相比第6次Windows远程渗透,完整的完成这次实践让我理解了不同操作系统、不同服务漏洞之间的共性:攻击者都是利用网络服务暴露面触发远程命令执行,再通过payload建立控制通道。
第8次实践 恶意代码分析、Crackme 逆向与 IRC 僵尸网络取证——第八次作业。
这次实践内容较综合,包括RaDa恶意代码样本分析、UPX加壳与脱壳、IDA字符串和函数分析、Crackme口令逻辑逆向,以及IRC僵尸网络和蜜罐流量取证。通过这次实践,我对“样本分析”和“流量取证”有了更深入理解:静态字符串、反汇编逻辑、协议命令和网络会话都可以成为判断攻击行为的证据。
第9次实践 Pwn 基础:ELF 分析、缓冲区溢出与 Shellcode——第九次作业。
这次实践围绕Linux 32位ELF程序 pwn1 展开,完成了修改机器码跳转getShell、利用 gets() 缓冲区溢出覆盖返回地址、注入shellcode并尝试执行等任务。之后我逐渐从底层理解了函数调用、栈帧、返回地址、相对偏移和程序控制流劫持之间的关系。
第10次实践 Web 安全:SQL 注入与 XSS 攻防——第十次作业。
这次实践基于SEED Lab环境,分别完成SQL注入攻击与防御、Elgg平台XSS攻击与防御。SQL注入部分包括登录绕过、UPDATE注入和预编译语句修复;XSS部分包括弹窗验证、Cookie窃取、自动加好友、自动修改资料和自复制XSS蠕虫。通过这次实践,我慢慢理解了Web安全的核心问题往往来自用户输入没有被正确处理。
第11次实践 Web 浏览器渗透攻击与网页木马取证——第十一次作业。
这次实践从浏览器客户端攻击角度出发,使用Metasploit构造浏览器漏洞利用页面,并对网页木马链式加载过程进行取证分析,包括入口页面、隐藏iframe、混淆JavaScript、二阶段脚本、CAB文件和最终EXE样本。通过这次实验,我开始认识到浏览器攻击不是一个单点漏洞,而是入口诱导、脚本加载、漏洞触发、payload执行和样本落地组成的完整攻击链。
2. 最喜欢且做得最好的实践是哪次?为什么?
我最喜欢且感觉自己做得最好的是第9次实践:Pwn 基础、缓冲区溢出与 Shellcode——第九次作业。
这次作业我认为对我很有挑战性,然后通过不断的试错、调试、以及询问同学和AI大模型老师最终完成了,收获颇多。
因为我本科阶段《计算机组成原理》学得不是特别扎实,汇编语言也没有系统学过。所以一开始看到反汇编代码、寄存器、栈地址和机器码时,我其实是比较陌生的,虽然机组的东西有些许印象,但主要内容也忘得差不多了。
但正因为基础比较薄弱,这次实践让我收获很大。通过分析 pwn1 程序,我第一次比较深刻且直观地理解了程序在底层是如何运行的。以前我更多是从C语言代码层面理解程序,而这次实验让我看到,程序真正执行时依靠的是一条条机器指令、函数地址和寄存器状态。只要程序的执行流被改变,程序行为也会随之改变。
这次实践让我真正理解了栈溢出的基本原理。以前听到“缓冲区溢出”“覆盖返回地址”时,只知道它们是漏洞利用方式,但不清楚具体过程。通过实验我明白了,gets() 这类不安全函数如果不限制输入长度,就可能把栈上的返回地址覆盖掉,从而让程序跳转到指定位置执行,例如跳到 getShell 函数或者执行注入的shellcode。
这次实验也锻炼了我的调试和分析能力。实验过程中并不是一次成功,中间遇到了段错误、地址不准确、GDB和普通终端运行结果不一致等问题。通过使用GDB查看栈、寄存器和程序跳转过程,我逐渐学会了根据现象分析原因,而不是只看最后有没有成功。
总体来说,第九次实践让我补充了很多之前比较薄弱的底层知识,也让我对二进制程序、栈结构、返回地址覆盖和shellcode注入有了更清楚的认识。它不仅让我学到了具体的漏洞利用方法,更重要的是锻炼了我的底层理解能力、动手调试能力和问题排查能力,所以这是我最喜欢、收获也最多的一次实践。
3. 本门课学到的知识总结
本门《网络攻防实践》课程的11次实践内容比较完整地覆盖了网络安全学习中的多个方向,包括实验环境搭建、信息收集、协议分析、协议攻击、防御配置、远程漏洞利用、恶意代码分析、逆向工程、Pwn、Web安全和浏览器客户端攻击等。通过这些实践,我对网络攻防的认识不再停留在“会用某个工具”上,而是逐渐理解了攻击链、证据链和防御链之间的关系。
为了更清楚地说明本门课中学到的知识,下面按照知识模块进行总结,并标明这些知识主要来源于哪些实践作业。
3.1 安全加固和检测技术
在安全检测方面,我主要学习了Nmap、Nessus、Wireshark、tcpdump、Snort、iptables、HoneyWall等工具和技术。第2次作业中,我通过Nmap进行主机发现、端口扫描、服务识别,通过Nessus进行漏洞评估,理解了安全检测首先要知道目标开放了什么服务、可能存在什么漏洞。第3次作业中,我通过tcpdump和Wireshark对流量进行捕获和分析,学习了如何从数据包中判断通信过程和异常行为。第5次作业进一步学习了iptables访问控制、Snort入侵检测规则和HoneyWall蜜网网关,使我认识到防御不仅是阻断攻击,还包括检测、记录和控制攻击行为。第6次和第7次作业中的Windows、Linux远程渗透实验,也让我理解了为什么需要防火墙、IDS、补丁管理和出站流量控制。
3.2 Web 安全技术
Web安全部分主要来自第10次SQL注入与XSS实验。通过SQL注入实验,我理解了如果后端程序直接拼接用户输入,攻击者就可以利用单引号、注释符等改变SQL语句逻辑,从而绕过登录或修改敏感数据。通过XSS实验,我理解了恶意JavaScript一旦被存储到页面中,就可能在其他用户浏览器中执行,造成Cookie窃取、自动加好友、自动修改资料,甚至形成XSS蠕虫传播。
第11次作业中的网页木马和浏览器渗透攻击也进一步加深了我对 Web 安全的理解。它让我认识到浏览器端脚本不仅可能造成弹窗或Cookie泄露,还可能通过隐藏iframe、混淆JavaScript、ActiveX控件和漏洞利用页面形成完整攻击链。因此,Web安全不能只看表单输入,还要关注浏览器执行环境、脚本加载链路和客户端漏洞。
3.3 逆向分析技术
逆向分析主要体现在第8次恶意代码分析、Crackme逆向和第11次网页木马取证中。第8次作业中,我使用file、strings、PEiD、脱壳工具和IDA Pro分析RaDa恶意代码样本,学习了如何通过文件类型、字符串、加壳情况、函数调用和可疑URL判断程序行为。同时,通过Crackme程序分析,我认识到逆向分析需要结合字符串、比较函数和分支跳转来判断程序逻辑。
第9次Pwn作业中,我又接触了ELF文件、反汇编、函数地址和机器码修改,这让我对二进制程序的底层执行过程有了更直接的认识。第11次作业中,网页木马分析涉及混淆JavaScript、Base64、URL 编码、XXTEA、shellcode编码、CAB文件和EXE样本分析,使我认识到逆向分析不只局限于可执行文件,也包括脚本、网页和多层加载链的还原。
3.4 主流代码审计技术
代码审计思想虽然不是单独一次实验,但在多次实践中都有体现。第10次作业中,SQL注入需要检查后端代码是否直接拼接SQL,XSS需要分析用户输入是否未经编码直接输出到页面。第9次Pwn作业中,需要关注 gets() 这类不安全函数,因为它不检查输入长度,容易造成缓冲区溢出。第11次网页木马分析中,需要识别 eval、unescape、ActiveXObject、外链脚本等高风险代码特征。
通过这些实践,我认识到代码审计的关键是看“输入如何流动”:用户输入从哪里来,经过了哪些处理,最后进入了数据库、页面、系统命令、内存缓冲区还是脚本解释器。如果中间缺少过滤、编码、参数化或边界检查,就可能形成安全漏洞。
3.5 程序设计能力
本课程中很多次作业都涉及了Python、Shell、SQL、JavaScript、C语言和汇编相关知识。第9次作业中,我使用Python构造payload,计算填充长度和返回地址;第10次作业中,我复习了SQL查询、更新语句,也接触了JavaScript脚本构造;第11次作业中,网页木马解码和MD5计算也需要借助脚本完成。第8次作业中的Crackme和恶意代码分析,则让我认识到程序逻辑、函数调用和字符串处理在安全分析中的重要性。
通过这些实践,我认识到网络安全离不开程序设计能力。很多时候,工具只能给出初步结果,真正要完成分析、复现和验证,还需要自己写脚本处理数据、构造输入或自动化重复操作。
3.6 计算机病毒技术
计算机病毒、木马、蠕虫和僵尸网络相关知识主要来自第8次、第10次和第11次作业。第8次作业中的RaDa样本分析让我认识到恶意程序可能具有远程命令获取、文件上传下载、注册表持久化等行为;IRC僵尸网络分析让我理解了受感染主机如何通过 NICK、USER、JOIN 等命令加入控制频道并等待控制者指令。第10次XSS蠕虫实验则展示了脚本也可以通过用户访问行为进行自复制传播。第11次网页木马实验进一步展示了浏览器漏洞如何下载并执行最终恶意样本。
这些实践让我认识到,恶意代码分析不能只看文件本身,还要结合网络通信、文件落地、注册表变化、脚本加载和控制通道综合判断。
3.7 网络溯源及防范技术
网络溯源和取证贯穿了多次实践。第3次作业中,我通过Wireshark和tcpdump分析TELNET、HTTP、ICMP、TCP等流量,学习了如何从数据包中还原通信行为。第6次作业中,我通过pcap分析Windows入侵过程,识别漏洞触发、工具下载、后门控制和痕迹清理等阶段。第7次作业中,我通过抓包分析Samba漏洞利用和反向Shell流量。第8次作业中,我分析IRC僵尸网络和蜜罐流量。第11次作业中,我又学习了从网页入口逐层还原网页木马加载链。
通过这些实践,我认识到网络溯源的核心是证据链完整。不能只看到某个端口连接就判断攻击成功,还要结合协议交互、时间顺序、请求内容、响应结果和后续行为综合分析。
3.8 加密解密技术
加密、编码和混淆相关知识主要体现在第8次和第11次作业中。第8次恶意代码分析中,需要通过字符串、壳识别和脱壳还原样本真实内容。第11次网页木马取证中,涉及URL编码、Base64、十六进制转义、八进制转义、XXTEA、shellcode编码以及MD5计算等内容。第10次Web安全实验中,也涉及Cookie、Token、Session等机制。
通过这些内容,我也是第一次认识到编码、混淆和加密并不是同一回事。很多恶意脚本并不是真正加密,而是通过编码和混淆降低可读性、隐藏真实URL或绕过简单检测。分析时要先判断数据属于编码、压缩、加壳还是加密,再选择合适的方法处理。
3.9 信息系统运行维护
信息系统运维能力主要来自第1次实验环境搭建,以及后续多次实验中的服务配置和故障排查。第1次作业中,我学习了VMware虚拟网络、NAT、Host-Only、桥接模式、静态IP、网关、子网规划和HoneyWall三网卡配置。第2次作业中,需要保证扫描目标网络可达,才能进行Nmap和Nessus检测。第5次作业中,iptables和HoneyWall配置也要求理解Linux网络和服务状态。第10次SEED Lab实验中,还涉及Apache、MySQL、虚拟机镜像和Web服务启动等环境配置。
通过这些实践,我认识到了安全实验失败不一定是漏洞不存在,也可能是网络不通、服务没启动、权限不足、IP配错、端口被占用或虚拟机配置错误等等。
3.10 网络协议分析
网络协议分析是本课程中最核心的能力之一。第3次作业中,我学习了TCP、HTTP、TELNET、ICMP、UDP等协议流量分析。第4次作业中,我进一步学习了ARP欺骗、ICMP重定向、SYN Flood、TCP RST和TCP会话劫持,理解了协议缺少认证、完整性保护或状态保护时可能带来的安全问题。第6次和第7次作业中,我接触了SMB、DCERPC、Samba、反向Shell等协议和通信过程。第8次作业中,我学习了IRC僵尸网络协议命令。第10次和第11次作业中,我又结合HTTP请求、Cookie、Token、iframe和脚本加载理解Web攻击过程。
这些实践让我认识到,攻击工具的结果只能说明表面现象,而真正的证据往往存在于协议字段和数据包中。只有理解协议,才能判断一次行为到底是正常访问、扫描探测、漏洞触发、命令控制还是恶意下载。
3.11 数据库
数据库知识主要来自第10次SQL注入实验。通过员工管理系统实验,我复习了 SELECT、UPDATE、WHERE、字段赋值、注释符、字符串闭合等SQL基础语法,也理解了数据库与Web应用安全之间的关系。Web应用如果直接拼接SQL语句,攻击者就可能绕过登录、读取敏感信息或修改工资等字段。
在防护方面,我学习到SQL注入的根本防御不是简单过滤关键字,而是使用预编译语句和参数绑定,把SQL语句结构和用户输入数据分离。同时,还应结合最小权限原则、输入校验、错误信息隐藏和日志审计等措施提高数据库安全性。
3.12 法律法规与安全伦理
法律法规与安全伦理贯穿整门课程。无论是第2次的信息收集、第4次的协议攻击、第6次和第7次的漏洞利用,还是第8次的恶意代码分析、第9次的Pwn、第10次的 Web 攻防、第11次的浏览器渗透,都必须限定在课程授权的实验环境中进行。
通过这些实践,我更加明确网络安全技术具有双重属性。同样的扫描、漏洞利用、抓包和逆向技术,在授权环境中可以用于教学、检测和防护,但如果用于真实互联网中的无授权目标,就可能造成违法后果。因此,进行网络攻防实践必须遵守授权边界、最小影响原则和证据保护原则,不攻击无授权目标,不传播恶意代码,不泄露他人数据。
3.13 基础知识
本课程让我认识到底层基础知识非常重要。第1次作业让我重新理解了IP、子网、网关、NAT、路由和虚拟网络;第3次和第4次作业让我加深了对TCP/IP协议、端口、报文、标志位和会话状态的理解;第9次作业则让我补充了计算机组成原理、汇编、栈帧、寄存器、返回地址和shellcode等方面的知识。
以前我有时会觉得安全实验主要是工具操作,但通过这门课发现,真正要把实验做明白,必须依靠计算机网络、操作系统、数据库、程序设计、Web开发、汇编和法律伦理等多方面基础。基础越扎实,面对复杂问题时越能找到原因,而不是只停留在复制命令和截图结果上。
总体来说,这门课让我把很多分散的知识串联起来:第1次作业解决实验环境问题,第2次作业解决信息收集和攻击面识别问题,第3次作业解决流量证据问题,第4次作业解释协议为什么会被攻击,第5次作业学习防御和检测,第6次、第7次作业学习远程漏洞利用和取证复盘,第8次作业学习恶意代码和逆向分析,第9次作业深入二进制漏洞利用,第10次作业学习Web应用安全,第11次作业扩展到浏览器客户端攻击和网页木马取证。通过这些实践,我对网络攻防形成了更加完整、系统和真实的认识。
5. 课堂的收获与不足
通过这门课,我最大的收获是对网络攻防形成了比较完整的链条式认识。刚开始做实验时,我更多关注的是“命令怎么敲、截图怎么截、结果对不对”。但随着实践逐渐开展,网络攻防在我脑海中有了清晰的认识,我逐渐意识到一次安全事件背后往往包含多个阶段:前期信息收集、服务识别、漏洞验证、payload 执行、会话建立、后渗透操作、防御检测和取证复盘。只有把这些阶段串起来,才能真正理解攻击为什么发生、防御应该在哪里介入、证据应该从哪里寻找。
第二个收获是工具理解更加深入了。以前看到Nmap、Wireshark、Metasploit、Snort、IDA等工具时,容易把它们当作孤立软件。现在我能更清楚地区分它们的作用:Nmap用于发现攻击面,Wireshark用于还原流量证据,Metasploit用于验证漏洞利用链,Snort用于检测攻击特征,IDA用于理解程序内部逻辑。这些工具服务于不同阶段,不能互相替代。
第三个收获是对“证据链”的重视提高了。攻击是否成功不能只看终端里有没有shell,样本是否恶意也不能只看某一个字符串,Web漏洞是否存在也不能只看页面有没有弹窗。更可靠的做法是把终端结果、源代码、网络流量、文件行为、系统状态和日志证据结合起来分析。这种思路对以后做安全实验、写报告和开展研究都很重要。
当然,我也存在一些不足。首先是基础命令和工具参数还不够熟练,有些实验中需要反复查命令,说明平时积累不够。其次是底层知识还需要加强,特别是汇编、操作系统内存管理、调试技巧和二进制漏洞利用部分,虽然通过第9次实践有了明显进步,但距离真正熟练分析还有差距。第三是自动化能力不足,很多重复分析如果能用Python脚本处理会更高效,比如批量提取字符串、解码网页脚本、统计流量特征等。第四是代码审计和漏洞修复能力还需要提高,目前更多是根据实验提示复现漏洞,后续应加强自己发现问题、定位代码、提出修复方案的能力。
6. 参考文献
[1] Gordon Fyodor Lyon. Nmap Network Scanning: The Official Nmap Project Guide to Network Discovery and Security Scanning.
[2] Wireshark Foundation. Wireshark User’s Guide.
[3] Rapid7. Metasploit Documentation.
[4] Cisco. Snort User Manual.
[5] OWASP Foundation. OWASP Top 10 Web Application Security Risks.
[6] SEED Labs. Computer Security Education Labs.
[7] Aleph One. Smashing The Stack For Fun And Profit.
[8] W. Richard Stevens. TCP/IP Illustrated, Volume 1: The Protocols.
[9] William Stallings. Cryptography and Network Security: Principles and Practice.
[10] 《中华人民共和国网络安全法》《中华人民共和国数据安全法》《中华人民共和国个人信息保护法》及相关配套法规。

浙公网安备 33010602011771号