20252806 2025-2026-2 《网络攻防实践》课程总结

20252806 2025-2026-2 《网络攻防实践》课程总结

1.内容总结

第1次实践 网络攻防实验环境搭建与测试

本次实践主要完成网络攻防实验环境的搭建,利用 VMware 配置 Kali、SEEDUbuntu、WinXPattacker、Win2K、Metasploitable、HoneyWall 等虚拟机环境,并完成 VMnet1、VMnet8 等虚拟网络配置。通过测试各攻击机、靶机与蜜网网关之间的连通性,我初步理解了攻击机、靶机、蜜罐、蜜网、蜜网网关之间的关系,为后续网络攻防实验打下基础。

[第1次实践作业]

第2次实践 网络信息收集、扫描与漏洞检测

本次实践围绕信息收集和漏洞扫描展开,主要使用 whois、nslookup、nmap、Nessus 等工具完成域名信息查询、IP 地址解析、地理位置分析、主机存活探测、端口扫描、服务识别和漏洞扫描。通过本次实践,我熟悉了从目标信息收集到漏洞识别的基本流程,也认识到公开信息、端口服务和弱配置都可能成为安全风险入口。

第3次实践 网络嗅探与协议分析

本次实践主要使用 tcpdump 和 Wireshark 对网络通信过程进行抓包分析。实验内容包括访问网站时的流量捕获、TELNET 登录过程分析、明文用户名和密码识别,以及对 listen.pcap 网络扫描日志进行取证分析。通过本次实践,我更加直观地理解了网络数据包的结构、协议交互过程和明文协议的安全隐患。

第4次实践 网络协议攻击实践

本次实践围绕 ARP 欺骗、ICMP 重定向、SYN Flood、TCP RST 攻击和 TCP 会话劫持等网络协议攻击展开。通过使用 netwox、Wireshark 等工具,我理解了 ARP、ICMP、TCP 等协议在设计上的安全缺陷,以及攻击者如何利用这些缺陷实现流量劫持、拒绝服务、连接中断和会话接管。

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

本次实践主要学习 Linux 防火墙 iptables 的配置方法,以及 Snort 入侵检测工具的使用。实践中完成了 ICMP 数据包过滤、特定 IP 访问控制、HTTP 服务访问限制、Snort 离线分析 pcap 文件、蜜网网关防火墙与 IDS/IPS 配置分析等任务。通过本次实践,我认识到安全防护不仅要发现攻击,也要通过规则控制和日志分析进行持续防御。

第6次实践 Windows 远程渗透与取证分析

本次实践主要使用 Metasploit 对 Windows 靶机的 MS08-067 漏洞进行远程渗透攻击,并结合 Wireshark 对一次成功的 NT 系统攻击过程进行取证分析。在团队对抗部分,攻方使用漏洞获取控制权,防守方通过抓包分析攻击过程。本次实践让我初步掌握了 Metasploit 的基本使用流程,也认识到漏洞利用、远程控制、流量取证之间的联系。

第7次实践 Linux 远程渗透与攻防对抗

本次实践使用 Metasploit 针对 Linux 靶机 Samba 服务中的 usermap_script 漏洞进行攻击,成功获取目标主机的远程 Shell,并在攻防对抗中使用 Wireshark 监听和分析攻击流量。通过本次实践,我进一步熟悉了 Metasploit 模块选择、payload 配置、RHOST/LHOST 参数设置和攻击结果验证流程,也理解了防守方如何从流量中还原攻击行为。

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

本次实践主要包括 RaDa 恶意代码样本分析、Crackme 程序逆向分析、RaDa 恶意样本行为分析,以及 Windows 2000 蜜罐被攻击和僵尸网络关联分析。实验中使用 file、strings、PEiD、脱壳工具、IDA 等工具分析样本特征、加壳情况、作者信息、恶意行为和通信特征。本次实践让我对恶意代码分析和网络取证有了更完整的认识。

第9次实践 缓冲区溢出与 Shellcode 注入

本次实践围绕 Linux 下 pwn 程序展开,完成了手工修改可执行文件跳转到 getShell 函数、利用 foo 函数中的 BOF 漏洞覆盖返回地址、注入自制 Shellcode 并执行等任务。通过 objdump、gdb、vim 十六进制编辑、Perl 构造 payload 等操作,我对栈帧结构、返回地址覆盖、小端序、NOP、Shellcode 和程序控制流劫持有了更深理解。

第10次实践 Web 应用 SQL 注入与 XSS 攻防

本次实践基于 SEED SQL 注入实验和 Elgg XSS 实验,完成了数据库查询、SELECT 语句注入、UPDATE 语句注入、SQL 注入防御、XSS 弹窗、Cookie 窃取、自动添加好友、资料篡改和 XSS 蠕虫传播等内容。通过本次实践,我认识到 Web 应用中用户输入未过滤、SQL 语句拼接、脚本未转义等问题会带来严重风险,也掌握了参数化查询、输入过滤和插件防护等基本防御思路。

第11次实践 Web 浏览器渗透攻击与网页木马分析

本次实践主要使用 Metasploit 的 MS06-014 浏览器漏洞模块构造网页木马,使靶机访问恶意链接后建立远程控制会话;同时对网页木马样本进行逐层分析,包括 start.html、new09.htm、MD5 哈希匹配、Base64、XXTEA、packed 混淆、ActiveX 组件漏洞和恶意 EXE 文件分析。通过本次实践,我理解了浏览器客户端攻击、网页挂马、恶意脚本混淆、下载器 Shellcode 和取证分析流程。

2.最喜欢且做得最好的实践是哪次?为什么?

我最喜欢也觉得自己做得最好的是第10次实践(SQL注入攻击与防御实验和XSS跨站脚本攻击实验)。说实话,和其他实验相比,这次实践给我带来的冲击明显更大一些。它不是简单地在命令行里敲几行指令就能搞定的,而是需要自己去理解Web应用的前后端交互逻辑、数据库查询语句的拼接方式、以及JavaScript在浏览器中的执行机制,这些都是需要实打实地把理论和操作结合起来才能做好的。刚开始做的时候,我确实觉得有些头大,很多地方都要反复看源码、反复抓包分析。但也正因为这样,当我最终用一条 Admin'# 就绕过了登录验证、看到管理员页面被我成功打开时,心里那种成就感是没法用语言形容的。

这次实验里,我印象最深的地方是SQL注入攻击的整个过程。刚开始做的时候,我其实对"用户输入被拼接到SQL语句中"这件事只停留在概念层面,并不真正理解它为什么会造成安全问题。后来我一边查看后端PHP源码,一边在浏览器里反复修改输入内容,才慢慢看明白:原来网站在处理登录请求时,直接把用户在表单里输入的用户名和密码拼接成了一条SQL查询语句,完全没有做任何过滤和转义。当我在用户名栏输入 Admin'# 的时候,# 后面的密码检查部分就被注释掉了,整条SQL语句变成了只验证用户名、不验证密码的形式。等我理解到这一点的时候,整个实验的思路才真正清晰起来——原来一个小小的特殊字符,就能让整个登录验证形同虚设。这个过程虽然一开始比较绕,但也让我第一次直观地感受到,Web应用的安全性其实和开发者的编码习惯密切相关。

再说XSS实验,同样让我印象深刻。从最简单的弹窗脚本 alert("zsh") 开始,到后面一步步实现Cookie窃取、自动加好友、篡改受害者资料,再到最终写出能够自我传播的XSS蠕虫,整个过程像是一层层剥洋葱,每一层都比上一层更深入。特别是编写蠕虫代码的时候,我一开始完全搞不清楚该怎么让脚本"感染"别人的页面,后来通过分析Elgg加好友和修改资料的HTTP请求,弄清楚了GET和POST参数的格式以及CSRF令牌的获取方式,才最终把代码调通。看到Boby访问Alice主页后自动被感染、再用Admin访问Boby主页也被感染的时候,那种"蠕虫真的在自动传播"的感觉让我既兴奋又警觉。

这次实验中,我觉得自己做得比较好的一点是,没有只停留在"能成功攻击"这个层面,而是尽量去弄明白每一步背后的原理。比如SQL注入为什么要用单引号闭合字符串,为什么要用 # 注释掉后续语句;XSS为什么要用 XMLHttpRequest 发请求,为什么需要携带 __elgg_ts__elgg_token 这两个参数。刚开始我只是照着步骤去做,但后来慢慢意识到,这些操作其实都不是随便安排的——单引号是为了闭合SQL语句中的字符串边界,# 是MySQL的注释符,__elgg_ts__elgg_token 是Elgg用来防范CSRF攻击的安全令牌。当这些问题一点点想明白之后,我对SQL注入和XSS漏洞的理解明显比之前深了很多,也感觉这次实验不只是"做成功了",而是真的学到了东西。

当然,实验过程中我也遇到了不少问题。比如在做XSS自动加好友的时候,我一开始不小心写错了自己的用户ID,结果脚本把攻击者自己当成了"好友添加"的目标,改了半天才发现问题出在ID上。还有SQL注入修复阶段,用预编译语句替换原来的字符串拼接时,一开始没注意绑定参数的顺序,导致查询结果一直不对。不过通过反复调试和对比源码,这些问题最终都被我一一解决了。

这次实践也让我深刻认识到,SQL注入和XSS是Web应用中最常见也最容易被忽视的两类安全威胁。一个简单的输入框,如果没有做好过滤和转义,就可能成为攻击者入侵整个系统的入口。实验最后通过启用HTMLawed插件成功防御了XSS攻击、通过参数化查询修复了SQL注入漏洞,这些防御手段虽然并不复杂,但前提是开发者必须在编码阶段就意识到安全问题的存在。正如爱迪生先生所言:"天才就是百分之一的灵感加上百分之九十九的汗水。"这次实验对我来说也是如此,真正让我完成它的并不是一开始就理解所有攻击原理,而是在一次次调试、抓包、查资料中慢慢接近答案。也正是在这个过程中,我体会到Web安全看似门槛不高,但要做到真正理解和防范,需要的不仅仅是技术能力,更是对细节的敏感和对安全的敬畏之心。

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

这门课学到的东西比较杂,但不是那种只停留在书本上的“杂”。很多知识点都是在一次次实验里被迫学会的:环境不通就去查网络配置,命令报错就去看参数,抓不到包就回头检查协议和端口。做完 11 次实践之后再回头看,我对网络安全的理解比刚开始清楚了很多。以前听到“攻防”两个字,更多想到的是工具和攻击效果,现在会更自然地想到环境、协议、漏洞原理、日志、修复方案等等。

3.1 安全加固和检测技术

这部分最直观的收获是学会了用工具看清楚一台主机“暴露了什么”。第2次实践里用 Nmap 扫描主机、端口和服务,用 Nessus 看漏洞结果;第5次实践里又用 iptables 配防火墙规则,用 Snort 分析流量包。以前我对“安全加固”的理解比较空,觉得就是装个防火墙、关几个端口。做完实验之后才发现,加固其实是一个很细的过程:先知道主机开了什么服务,再判断哪些服务没必要开放,最后通过防火墙、补丁、访问控制和日志监测去减少风险。一个端口开在那里,如果没人管,它就可能变成后面被攻击的入口。

3.2 Web安全技术

Web 安全部分主要集中在第10次实践,SQL 注入和 XSS 给我的印象都很深。SQL 注入最让我震撼的是,只是在输入框里多写了几个特殊字符,就能绕过密码登录,甚至修改数据库里的工资字段。这样我感觉很神奇!XSS 也是一样,本来只是个人资料里的一个简介框,但如果没有过滤脚本,别人访问页面时就会执行恶意代码。以前我觉得 Web 漏洞离自己比较远,做完之后发现很多漏洞的根源其实很简单,就是程序太相信用户输入了。防御方法也不是一句“加强安全意识”就行,而是要落实到参数化查询、输入过滤、输出编码、Token 校验这些具体措施上。

3.3 逆向分析技术

逆向分析是我认为最具挑战性同时也最引人入胜的一个环节。无论是第8次对RaDa和Crackme的剖析,第9次对pwn程序的拆解,还是第11次对网页木马的追踪,每一次都需要耐心地将程序隐藏的真实行为一层层还原出来。最初接触IDA、objdump以及各种字符串提取和地址分析手段时,我常常感到无从下手,面对密密麻麻的反汇编代码,很难判断哪一部分才是真正值得关注的核心。不过随着实践的积累,我逐渐意识到,逆向分析的关键并不在于把每一行指令都弄得一清二楚,而在于敏锐地捕捉那些不寻常的蛛丝马迹——可疑的字符串常量、非常规的函数调用链、条件跳转的逻辑走向,以及涉及网络通信或文件读写的关键操作。RaDa的加壳机制更是给了我一个深刻的教训:恶意代码从来不会主动暴露自己的真实面目,它会用各种手段将自身伪装和隐藏起来,而安全分析人员的职责,就是凭借专业知识和不懈耐心,把这些伪装层层剥离,最终揭示出它本来的面貌。

3.4 主流代码审计技术

代码审计这部分虽然课程里没有单独做一个完整项目,但在 SQL 注入和 XSS 实验中已经能感受到它的重要性。比如看 PHP 源码的时候,发现用户输入直接拼接进 SQL 语句,漏洞就很明显了。以前我写代码更多关心功能能不能跑通,现在会多想一步:这个参数是不是用户可控?有没有过滤?会不会进入数据库、文件系统或者命令执行函数?这门课让我意识到,很多安全问题不是系统突然坏了,而是代码一开始就埋下了隐患。

3.5 程序设计

程序设计能力在这门课里是隐形但很重要的基础。第9次缓冲区溢出实验让我重新认识了 C 语言里的数组、函数调用和内存边界;Web 实验又涉及 JavaScript、Cookie、Ajax 请求;SQL 注入需要会基本数据库语句;构造 payload 时还会用到 Perl、Shell 命令这些小工具。以前可能觉得“会用工具”就够了,但做实验时发现,如果完全不懂程序是怎么跑的,就只能照着教程做,一出错就不知道怎么改。真正想理解安全问题,还是绕不开编程和底层原理。

3.6 计算机病毒技术

恶意代码分析让我对病毒、蠕虫、木马、后门这些概念有了更具体的认识。以前背概念时会觉得它们差不多,都是“坏程序”。但分析 RaDa 和网页木马之后,我发现它们的行为侧重点不一样:有的负责隐藏和驻留,有的负责远程控制,有的负责下载更多恶意程序,有的依靠漏洞自动传播。RaDa 会创建目录、复制自身、修改注册表、连接远程服务器;网页木马则通过浏览器漏洞和脚本下载执行文件。这些实验让我明白,恶意代码不是单独一个文件那么简单,它往往是一整条攻击链中的一环。

3.7 网络溯源及防范技术

网络溯源这部分主要是在取证分析和攻防对抗里练出来的。用 Wireshark 追踪 TCP 流时,可以看到攻击者访问了什么、下载了什么、输入了什么命令;用 Snort 分析 pcap 时,也能从告警里看出扫描和攻击特征。刚开始我以为溯源就是查 IP,后来发现远远不止这样。IP 只是线索之一,更重要的是把时间、端口、协议、数据包内容、攻击载荷和后续行为串成一条线。只有知道攻击是怎么发生的,后面才谈得上封禁、修补、加固和预警。

3.8 加密解密技术

这门课里接触到的加密解密更多是跟样本分析结合在一起的。第11次网页木马分析时,要对 URL 算 MD5,根据哈希值找文件,还要处理 Base64、十六进制、XXTEA 和 packed 混淆。做的时候很像拆盲盒,一层解开以后发现里面还有一层。这个过程让我分清了哈希、编码、加密和混淆的区别:哈希更多用于标识和校验,编码不等于加密,加密需要密钥,混淆则是为了让人看不懂。恶意代码经常把这些手段混在一起用,目的就是拖慢分析人员的速度。

3.9 信息系统运行维护

这门课也算是狠狠补了一遍 Linux 和虚拟机运维。几乎每次实验都离不开查 IP、改配置、装工具、改权限、启动服务、看日志、重启虚拟机。很多时候实验失败不是因为原理不懂,而是因为环境没配好。比如虚拟机网络模式不对、网段不一致、共享文件夹挂不上、工具缺依赖、文件没有执行权限,这些问题都很耗时间。虽然当时很烦,但现在回头看,这些排错经历其实很有用。安全工作本来就不是只点工具按钮,很多时候要先把系统环境摸清楚。

3.10 网络协议分析

网络协议分析是贯穿整门课的一条主线。TELNET 抓包让我直观看到明文传输用户名和密码有多危险;ARP 欺骗和 ICMP 重定向让我看到局域网协议缺少认证会带来什么后果;SYN Flood 让我理解 TCP 三次握手和半连接队列;TCP RST 和会话劫持让我意识到序列号、连接状态这些细节并不是课本上的空概念。以前学计算机网络时,很多协议知识是为了考试背的;这门课把这些知识重新拉回了真实场景里,让我知道协议设计上的一个小缺陷,放到攻防里可能就是一个入口。

3.11 数据库

数据库部分主要是在 SQL 注入实验里学到的。通过 MySQL 查询 credential 表,我重新熟悉了基本 SQL 语句,也看到了数据库里存储的密码、工资、SSN 等敏感信息。一旦 Web 应用没有处理好输入,数据库里的数据就可能被查询、修改甚至泄露。这个实验让我对“数据库安全”有了更直观的感受:数据库不是简单的数据仓库,它往往是攻击者最想拿到的目标。保护数据库不仅要写安全的 SQL,还要控制权限、隐藏错误信息、保护敏感字段。

3.12 法律

做完这些攻防实验之后,我对法律边界的感受比以前更强了。很多实验如果放在真实环境里,都是非常危险甚至违法的行为,比如扫描、入侵、抓取账号密码、执行木马、控制主机等。课程里的所有操作都是在授权的虚拟机和靶机环境中完成的,这一点非常重要。学习《网络安全法》《数据安全法》《个人信息保护法》以及相关条例,不只是为了背概念,而是为了提醒自己:技术越强,越要知道边界在哪里。网络安全不是炫技,更不是随便攻击别人,而是为了发现问题、修复问题和保护系统。

3.13 基础

最后感受最深的一点是,网络安全真的很吃基础。计算机组成原理、操作系统、计算机网络、数据库、程序设计,这些课以前看起来是分开的,但在网络攻防实践里全部会碰到。分析缓冲区溢出要懂栈和寄存器,分析流量要懂 TCP/IP,做 Web 安全要懂前后端和数据库,配防火墙要懂操作系统和网络服务。基础不牢的时候,实验就会做得很吃力;基础稍微打通一点,很多现象就能解释清楚。也正因为这样,我觉得这门课最大的作用不是让我“学会几个工具”,而是让我重新意识到基础知识的重要性。

4.课堂的收获与不足

走到写这份课程总结的尾声,十几年的读书时光一幕幕在脑海里翻涌。从懵懂入学到如今读研,这条路走得磕磕绊绊,却也实实在在地走到了今天。重新坐在实验室里和一堆虚拟机、代码、漏洞打交道,恍惚间觉得自己又变回了那个本科时代对着终端发愁的自己。

印象最深的还是环境搭建这一关。虚拟机网络不通、地址配串了、依赖包死活装不上、一条命令打错一个字符就要对着报错信息琢磨好久。很多时候实验本身还没碰到,光是把环境弄顺就已经消耗了大量精力。最让人抓狂的时刻,就是眼看着别人一切顺利,自己这边却怎么都跑不通,心里那股不服气的劲儿反而被彻底点燃了——非得把它搞出来不可。等到网络终于通了、反弹Shell连上了、数据包在抓包工具里清清楚楚地呈现出来时,之前所有的烦躁一下子就被冲淡了,觉得那些熬夜的时光终究没有白费。

还有一件事值得一提,就是这门课要求的英语单词打卡。最初接到这个任务的时候,老实说心里是有点抵触的,觉得不过是走个流程。但一天天坚持下来,居然有种梦回高中苦背单词的感觉。只不过那时候背单词是为了应付高考,现在虽然多多少少也和考核沾边,但更实际的意义在于——当我在查阅安全文献、排查英文报错信息、阅读技术文档的时候,这些积累过的词汇确实在帮我降低障碍。搞安全这一行,英文是绕不过去的,每多掌握一个术语,遇到问题时就少一分茫然。

博客的写作习惯也是这门课带给我的一个意外之喜。最初写博客的动机非常单纯,就是为了完成作业要求,把实验截图、操作步骤、运行结果一股脑地贴上去交差。可写着写着,我开始发现写博客远不是简单的复制粘贴,它其实在倒逼我回顾整个过程:这一步我究竟在做什么?这个操作背后的逻辑是什么?中途栽了什么跟头?还有哪些环节是我知其然而不知其所以然的?如今我读完一篇论文,也会主动把心得整理后发到博客上。这个无心插柳养成的习惯,反而为我打开了一扇新的窗户。

说到不足之处,也必须坦诚面对。我的功底仍然不够扎实,尤其在汇编语言理解、缓冲区溢出原理以及恶意代码深层分析这些板块,很多时候还是得边动手边翻资料。问题排查的效率也有待提高,有些最后发现不过是配置上的一个小失误,但我可能已经为此耗费了大半个晚上。此外,不少安全工具我目前只是停留在"能上手操作"的层面,对于它们内部的运行机制和底层原理,还远远谈不上融会贯通。

这门课的强度不小,过程中也不乏让人头疼的时刻。但也恰恰是这种磨砺,让它在我的记忆里留下了深刻的烙印。那些深夜调试时跳动的光标、反复关机重启的虚拟机、铺满屏幕的截图、博客里一篇篇从青涩到逐渐成型的实验记录,都是这门课最鲜活的见证。它带给我的不仅仅是网络攻防领域的专业知识,更重要的是帮我重新唤醒了那种面对难题绝不退缩、咬牙也要啃下来的韧劲。最后想借用罗曼·罗兰的那句话来收尾——:世界上只有一种真正的英雄主义,那就是在认清生活的真相之后,依然热爱生活~

5.参考文献

[1] 《网络攻防实践》课程实验指导材料,2025-2026-2 学期。

[2] SEED Labs. SEED Labs: Hands-on Labs for Security Education [EB/OL]. https://seedsecuritylabs.org/

[3] Nmap Project. Nmap Reference Guide [EB/OL]. https://nmap.org/book/man.html

[4] Wireshark Foundation. Wireshark User’s Guide [EB/OL]. https://www.wireshark.org/docs/wsug_html_chunked/

[5] Rapid7. Metasploit Documentation [EB/OL]. https://docs.metasploit.com/

[6] Snort. Snort Documents and User Manuals [EB/OL]. https://www.snort.org/documents

[7] OWASP Foundation. OWASP Top 10:2021 [EB/OL]. https://owasp.org/Top10/

[8] PortSwigger Web Security Academy. SQL Injection [EB/OL]. https://portswigger.net/web-security/sql-injection

[9] PortSwigger Web Security Academy. Cross-site Scripting (XSS) [EB/OL]. https://portswigger.net/web-security/cross-site-scripting

[10] Microsoft. Microsoft Security Bulletin MS08-067 - Critical [EB/OL]. https://learn.microsoft.com/zh-cn/security-updates/Securitybulletins/2008/ms08-067

[11] OWASP Foundation. SQL Injection Prevention Cheat Sheet [EB/OL]. https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html

[12] OWASP Foundation. Cross Site Scripting Prevention Cheat Sheet [EB/OL]. https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html

[13] 诸葛建伟. 网络攻防技术与实践. 清华大学出版社, 2012.

posted @ 2026-06-17 14:05  zsher  阅读(11)  评论(0)    收藏  举报