20253913 2025-2026-2 《网络攻防实践》课程总结
《网络攻防实践》第十二次作业报告
1. 内容总结
这学期一共完成了11次《网络攻防实践》实验。回头来看,它们不是11个彼此孤立的技术点,而是沿着一条比较清晰的主线往前推进:先搭建可控环境,再做信息收集和流量分析;先理解协议本身,再利用协议缺陷;先会复现漏洞,再能从防守方角度还原证据;最后把Web、浏览器、逆向、取证和攻防对抗串到一起。
如果按技术递进关系来归纳,我把这11次实验分成六个阶段:环境基础与信息收集、流量分析与协议攻击、防御与检测、漏洞利用与恶意代码分析、二进制与Web安全、客户端攻击与综合对抗。下面按这个脉络回顾每次实验的内容、过程和收获。
1.1 环境基础与信息收集
第1次实验:网络攻防环境搭建——第一周作业
第一次实验主要是搭建后续课程要用的网络攻防环境。环境中包括三台攻击机(Kali、SEEDUbuntu、WinXPattacker)、两台靶机(Win2000Server、Metasploitable_ubuntu)以及一台HoneyWall蜜网网关。表面看是虚拟机导入、网卡配置、IP地址设置和连通性测试,但真正难点在于理解这个实验环境到底是怎样转发和监测流量的。
我在这一周踩的最大坑是对HoneyWall工作模式的理解。一开始我把它想成普通的三层网关,以为它应该像常规路由器一样有内外网业务地址。实际检查后发现,HoneyWall只有管理接口eth2配置了192.168.5.8,eth0和eth1没有配置业务IP。后来在HoneyWall上执行tcpdump -i eth0 icmp,同时让攻击机ping靶机,能够抓到ICMP请求和应答。这说明HoneyWall确实位于攻击机和靶机之间的流量路径上,但它不是靠三层路由转发,而是透明桥接监测。
这个认识对后面实验很关键。第5周分析HoneyWall防火墙规则时,需要理解它为什么重点约束FORWARD链;第8周分析蜜罐日志时,也要知道蜜网的价值不只是“拦住攻击”,而是尽量完整地观察、记录和分析攻击过程。
第2次实验:网络信息收集——第二周作业
第二次实验围绕信息收集展开,内容包括Whois查询、DNS解析、IP归属和地理位置查询、Nmap端口扫描、Nessus漏洞扫描以及Google Hacking。最直接的收获是:信息收集不是简单地“查一个域名”或“扫一下端口”,而是要从域名、IP、组织归属、开放端口、服务版本、操作系统和漏洞情况等多个维度建立目标画像。
以baidu.com为例,Whois得到的是域名注册相关信息,DNS解析得到的是域名对应的一组IP,IP归属和ASN查询得到的是网络运营主体。这几类信息看起来都与同一个目标有关,但实际属于不同层面。如果不区分清楚,很容易把“域名注册人”“IP网络归属方”和“实际业务主体”混在一起。
对两台靶机的扫描进一步体现了Nmap和Nessus的分工。Nmap更适合回答“目标是什么”:是否在线、开放哪些端口、运行哪些服务、可能是什么系统。Nessus进一步回答“目标有什么问题”:服务是否过期、是否存在高危漏洞、有哪些CVE编号和风险等级。两者结合,才能从资产发现走到攻击面判断。后续第6、7周真正做漏洞利用时,其实就是在这个阶段建立的目标画像基础上继续推进。
1.2 流量分析与协议攻击
第3次实验:网络嗅探与协议分析——第三周作业
第三次实验开始真正进入流量分析。tcpdump实验中,我用"tcp[13] & 18 = 2"过滤本机访问网站时发出的SYN包。刚开始这个表达式看起来有点绕,后来理解到它是在TCP首部标志位字节上做位运算,只抓特定标志组合的报文。这个实验让我意识到,抓包分析不是数据越多越好,而是要围绕目标设计过滤条件,把复杂流量压缩成可回答的问题。
TELNET嗅探实验最直观。Wireshark追踪TCP流后,guest用户名和交互内容直接以明文出现。以前看到“TELNET不安全,应使用SSH替代”只是概念,这次在抓包中看到用户名和命令明文传输,感受完全不同。它说明协议安全问题不只是理论上的“没有加密”,而是攻击者只要处在合适的位置,就能直接读取通信内容。
listen.pcap取证分析是这一周的重点。攻击者172.31.4.178针对蜜罐172.31.4.188进行了多种探测。一开始只看大量SYN包,很容易把结论停在“Nmap SYN扫描”。继续分析后发现,流量中还包含UDP OS Detection Probe、ICMP存活探测以及FIN+PSH+URG标志位组合的Xmas Scan。因此攻击者不是只做了一种扫描,而是综合使用了SYN扫描、OS探测、ICMP存活探测和Xmas扫描。这个过程让我第一次比较清楚地体会到:取证分析不能只抓一个特征就下结论,而要尽量还原行为组合。
这一周我还额外做了一个应急响应靶场,从29个IP的扫描识别,到冰蝎3.0 JSP木马、挖矿程序miner.jar、矿池地址、定时任务后门persistence.sh的定位和清除。这个靶场不是课程主线要求,但它把流量分析和主机侧排查结合起来,比单纯分析一个pcap更接近真实事件。
第4次实验:TCP/IP协议栈攻击——第四周作业
第四次实验集中在TCP/IP协议栈攻击,是我自认为完成质量比较高的一次。实验包括ARP欺骗、ICMP重定向、SYN Flood、TCP RST和TCP会话劫持。前几个实验分别展示了协议控制机制如何被攻击者利用,而TCP会话劫持则把前面的中间人位置、抓包分析和手工构造报文串了起来。
ARP欺骗是整个实验链条的入口。通过netwox 80伪造ARP应答,SEEDUbuntu的ARP缓存被污染,发往Metasploitable的数据先经过Kali。ARP协议本身没有认证机制,这一点和第3周TELNET明文传输有相似之处:协议设计默认局域网或通信环境可信,一旦这个默认假设被破坏,原本正常的协议机制就会变成攻击入口。
ICMP重定向、SYN Flood和TCP RST分别体现了“改变路由路径”“消耗服务资源”和“强制中断连接”的思路。它们本身相对独立,但放在一起看,可以更清楚地理解协议攻击对机密性、完整性和可用性的不同影响。
最花时间的是TCP会话劫持。我的实现过程大致分为四步:先用Ettercap做ARP欺骗取得中间人位置;再在Ettercap和Wireshark中观察Telnet明文会话;然后从Wireshark中提取seq、ack、窗口等参数;最后用netwox 40手工构造TCP报文往会话里注入命令。最开始注入pwd没有回显,后来排查出三个问题:Wireshark默认显示的是相对序列号,不是报文中的真实序列号;Telnet命令末尾缺少回车换行;seq和ack必须与当前会话状态严格匹配。修正后,pwd、ls、cat flag.txt都能正常注入并拿到回显。
进一步尝试交互式shell时,又遇到载荷兼容性问题。bash -i>/dev/tcp、nc -e /bin/bash、nc -c等方式都没有成功,最后发现靶机有Python环境,用Python反向shell才成功弹回。这件事让我印象很深:命令能执行和能拿到稳定交互式会话是两回事,攻击载荷必须适配目标环境。
1.3 防御与检测
第5次实验:防火墙与入侵检测——第五周作业
第五次实验从攻击转向防御,主要包括iptables规则配置、Snort入侵检测和HoneyWall机制分析。iptables实验中,一条iptables -A INPUT -p icmp -j DROP可以让主机不再响应Ping,iptables -P INPUT DROP配合白名单规则可以实现只允许指定主机访问FTP服务。看起来命令不复杂,但真正要注意的是默认策略、规则顺序和可用性的关系。如果先把默认策略设成DROP,却忘记放行必要管理流量,就可能把正常连接也断掉。
Snort实验让我理解了防火墙和入侵检测的分工。防火墙解决的是“让不让进”,Snort解决的是“进来的流量是否可疑”。端口扫描、Xmas扫描、异常TCP标志位组合等行为,即使还没有造成破坏,也能反映攻击意图。防火墙不能替代入侵检测,入侵检测也不能替代访问控制,两者是配合关系。
HoneyWall分析则把这两类能力放到蜜网场景中理解。/etc/init.d/rc.firewall脚本中,模块加载、规则清空、链创建、严格转发策略和管理接口放行各自承担不同职责。FORWARD链默认DROP,再配合显式放行和Snort_inline内联检测,体现的是“允许攻击进入可控环境,但限制其进一步扩散”的思路。这与普通防火墙单纯阻断攻击不同,更强调观察价值和安全控制之间的平衡。
1.4 漏洞利用与恶意代码分析
第6次实验:Windows远程渗透——第六周作业
第六次实验开始系统使用Metasploit进行Windows远程渗透。MS08-067模块的操作流程本身不算复杂:选择模块,设置payload、RHOST、LHOST等参数,执行后拿到shell。但真正有价值的是通过Wireshark观察漏洞利用在网络中的表现。
抓包中可以看到攻击流量围绕445端口展开,从TCP三次握手,到SMB协商、Session Setup、Tree Connect、访问IPC$,再到LSARPC、SPOOLSS等命名管道交互。这里容易误判的一点是:抓包里看到多个RPC管道,并不代表利用了多个漏洞。本次利用的核心仍是MS08-067,LSARPC和SPOOLSS只是利用路径上的通信通道。这个细节让我认识到,漏洞归因不能只看抓包中出现了什么名字,还要结合模块、协议上下文和实验目标判断。
取证分析部分的题目写着“NT系统破解攻击”,但根据流量还原,攻击者不是靠口令爆破进入系统,而是利用IIS Unicode目录穿越和MDAC/RDS相关漏洞实现远程命令执行,随后复制cmd.exe、下载nc.exe、pdump.exe、samdump.dll,建立后门并外传文件。这个过程强化了一个很重要的习惯:题目描述只是入口,最终结论必须以证据为准。
团队对抗环节则让我第一次比较完整地同时站在攻击方和防守方看问题。攻击方关心漏洞模块、监听地址、payload能否回连;防守方要从时间、端口、协议路径和执行命令中还原事实。这种双重视角在后面第7周和第11周继续被强化。
第7次实验:Linux远程渗透——第七周作业
第七次实验与第六次形成对照:Windows侧是MS08-067和SMB 445端口,Linux侧是Samba usermap_script漏洞和139端口。使用Metasploit打通后,可以获得root权限,说明这类老版本服务漏洞的危害非常直接。
这一周最重要的收获是区分“漏洞利用入口端口”和“反向shell回连端口”。Samba服务运行在139端口,这是漏洞触发入口;攻击成功后靶机主动连接Kali的4444端口,这是payload回连通道。如果把4444当成目标服务端口,或者看到4444上的交互就误认为是Telnet,后续取证结论会偏掉。安全分析中,端口号不能孤立看,要结合通信方向、协议内容和攻击阶段来判断。
团队对抗部分继续训练攻防双视角。攻击方完成漏洞利用后,防守方通过Wireshark还原攻击者IP、目标IP、目标端口、漏洞类型、payload类型、攻击时间以及成功后执行的命令。相比单纯“session opened”,这种还原更能说明自己理解了攻击过程。
第8次实验:恶意代码与僵尸网络——第八周作业
第八次实验是我花时间最长、也最满意的一次。它包括rada恶意代码样本分析、Crackme逆向、恶意代码综合分析和Windows 2000蜜罐加入IRC僵尸网络的日志取证。
rada样本分析先从文件格式识别开始,确认其为PE32 GUI程序,再用PEiD识别UPX壳,脱壳后通过strings和IDA继续分析。只看原始字符串时,很多关键信息并不完整;切换到Unicode编码后,才更清楚地看到作者信息、注册表路径、URL、download.cgi和upload.cgi等特征。结合Process Explorer观察运行行为,可以看到样本创建C:\RaDa目录、修改注册表Run项并尝试访问远程地址。最终我把它判定为后门木马类恶意代码,而不是病毒或纯蠕虫,因为它的核心行为是落地、持久化、外联控制端并接收指令。
Crackme部分则提醒我,逆向不能只靠字符串。crackme1.exe通过字符串窗口找到I know the secret后,还要结合函数调用和strcmp逻辑验证。crackme2.exe不仅检查输入字符串,还检查程序文件名是否为crackmeplease.exe。如果只找到密码而不看程序控制流,仍然无法通过验证。
botnet日志分析是这一周的核心。面对5天蜜罐流量,最重要的不是把所有可疑端口都写成“攻击成功”,而是根据证据强度分层判断。445端口上,攻击者完整走完访问IPC$、访问ADMIN$、System32目录出现PSEXESVC.EXE、通过svcctl调用OpenSCManagerA、CreateServiceA创建服务、StartServiceA启动服务等链条,证据闭合,可以判定为PsExec式远程控制成功。80端口有明显漏洞利用请求,如NULL.IDA、cmd.exe?/c+dir、/_mem_bin/和多种目录穿越变形,但没有看到命令回显、文件落地或后续控制流量,所以只能写成明确攻击尝试。4899端口存在持续双向二进制交互,明显比普通探测严重,但缺少文件写入、服务创建或命令执行证据,因此只能定性为高度可疑,不能直接写成成功。
IRC僵尸网络部分,蜜罐最终与209.196.44.172:6667完成有效通信,出现NICK、USER、001 Welcome、JOIN频道等IRC入网过程。通过统计353 NAMES响应,可以估算频道中有3461台主机。这个数字说明它不是小规模测试,而是具有真实规模的僵尸网络控制通道。
1.5 二进制与Web安全
第9次实验:二进制漏洞利用——第九周作业
第九次实验从底层理解程序控制流。任务一是手工修改call指令跳转到getShell函数,关键在于call rel32保存的不是目标地址,而是“目标地址 - 下一条指令地址”的相对偏移。getShell地址为0x0804847d,下一条指令地址为0x080484ba,偏移为-0x3d,小端写入c3 ff ff ff。这个任务让我真正理解了机器码里的跳转并不是直观写一个地址那么简单。
任务二是栈溢出覆盖返回地址。foo函数中使用gets(),缓冲区起点在ebp-0x1c,返回地址在ebp+4,中间相差32字节。因此payload由32字节填充加getShell函数地址构成。这个过程把“缓冲区溢出”从概念变成了具体的栈帧距离计算。
任务三是shellcode注入。execstack安装失败后,我没有继续卡在工具步骤上,而是用readelf检查GNU_STACK权限,发现栈已经是RWE,可以继续实验。随后关闭ASLR,用GDB在foo函数ret指令处断下,通过0x01020304标记值确认栈位置,计算返回地址,再构造NOP sled和execve("/bin//sh") shellcode。这个任务让我意识到,漏洞利用不只是“写payload”,更是对内存布局、执行权限、地址稳定性和指令语义的综合把握。
第10次实验:SQL注入与XSS——第十周作业
第十次实验围绕Web安全中的SQL注入和XSS。SQL注入部分,Admin' #可以绕过登录,是因为输入闭合了用户名条件,并用MySQL注释符截断了后面的密码判断。UPDATE型注入则通过修改昵称字段改变了原本的SQL更新逻辑,把其他用户的工资字段改掉。两者本质相同:用户输入没有被当作数据处理,而是被拼接进SQL语句结构中执行。
修复思路也因此很明确:使用参数化查询,把SQL结构和用户数据分开;密码使用安全哈希;关键操作使用POST和CSRF Token;数据库账号遵循最小权限;错误信息不要直接回显给用户。这些措施不是彼此替代,而是纵深防御。
XSS部分从简单弹窗开始,到读取Cookie、把Cookie发送到监听端口、自动添加好友、修改受害者资料,再到编写存储型XSS蠕虫。这个递进过程说明,XSS不是“弹个窗”这么简单。一旦恶意脚本被持久化保存,它就可能随着用户之间的访问关系传播。Elgg启用HTMLawed插件后,攻击失效,说明服务端过滤有效;但实际防护还需要输出编码、Cookie安全属性、CSP和CSRF Token等机制共同配合。
1.6 客户端攻击与综合对抗
第11次实验:浏览器漏洞利用与网页木马——第十一周作业
第十一次实验是我最喜欢的一次,因为它把前面学过的很多能力集中用上了:Metasploit漏洞利用、Wireshark流量分析、网页木马链式取证、JavaScript解混淆、散列文件匹配、静态分析、模拟钓鱼和防守归因。
浏览器漏洞利用部分分别验证了MS06-055和MS06-014。MS06-055对应ms06_055_vml_method模块,利用VML Fill Method远程代码执行,成功后反向shell回连4455端口。MS06-014对应ie_createobject模块,利用旧版IE中ActiveX/COM对象创建相关问题,反向shell回连5544端口。与服务端漏洞不同,浏览器端攻击依赖用户访问、浏览器版本、脚本和ActiveX设置以及浏览器进程稳定性,所以实验中出现页面有响应但session不返回、浏览器崩溃、只触发部分路径等现象,本身也很有分析价值。
网页木马取证部分最能体现链式分析。入口文件start.html指向new09.htm,new09.htm再通过隐藏iframe加载kl.htm,通过script标签加载1299644.js。题目资源不是直接按URL访问,而是把URL的MD5值作为文件名放在hashed目录中,所以每发现一个URL,都要计算MD5、匹配散列文件、继续分析下一跳。1299644.js是关键节点:它把主要脚本做了Base64和XXTEA处理,密钥藏在十六进制字符串中,解出来是script。解密后的脚本会探测ActiveX控件,再分发到1.js、b.js、pps.js和bd.cab等二阶段资源。不同二阶段脚本使用不同混淆方式,但最终投递的EXE文件MD5相同,说明攻击者用多条路径投递同一个木马样本。
攻防对抗部分,我把MS06-055和MS06-014的真实URL用十六进制编码藏在统一入口页中,模拟钓鱼邮件诱导访问。实际结果是:MS06-055成功触发并反弹shell,MS06-014没有触发。Wireshark抓包只看到/ms06055请求,没有看到/ms06014请求。排查后较合理的解释是,第一个漏洞触发后IE崩溃或连接被重置,第二个iframe没来得及继续加载。因此结论必须谨慎:源码中可以还原出两个漏洞URL,但统一入口实际流量中只有MS06-055被触发成功。这个结果比简单写“两条都成功”更真实,也更符合防守取证的证据要求。
2. 最喜欢且做得最好的实践
如果只能选一次“最喜欢且做得最好的实践”,我会选第十一次作业:浏览器漏洞利用与网页木马分析。
选择这一周,不是因为它看起来最“高级”,而是因为它最像一次完整的网络攻防分析。前面的很多实验都只关注某一个点,比如扫端口、抓包、打漏洞、配防火墙、看日志、分析样本。第十一次作业不太一样,它把这些内容串到了一起:既要从攻击方角度理解浏览器漏洞怎么触发、payload 怎么回连,也要从防守方角度看源码、看 HTTP 请求、看抓包结果,最后判断攻击到底有没有真正发生。
我最喜欢的是网页木马取证那一部分。刚开始看到 start.html 的时候,其实它并没有直接把所有内容写出来,只是继续加载 new09.htm。再往下看,new09.htm 又通过隐藏 iframe 加载 kl.htm,同时加载 1299644.js。后面的资源也不是直接给出的,而是要把 URL 算成 MD5,再到 hashed 文件夹里找对应文件。这个过程不是简单执行命令,而是一步一步沿着线索往下追,有点像“破案”。
在这条链路里,最有意思的是 1299644.js。它表面上看起来像普通的统计脚本,但继续分析后发现里面用了 Base64 和 XXTEA,把真正的脚本藏了起来。密钥 script 也不是直接明文写出来,而是以十六进制字符串的形式出现。解出来之后,脚本又会探测不同的 ActiveX 控件,再分别加载 1.js、b.js、pps.js 和 bd.cab 等二阶段资源。不同路径使用的混淆方式也不一样,有十六进制、Packer、八进制、CAB 压缩包等,但最后都落到同一个 EXE 上。这个结果让我印象很深,因为它说明网页木马不是为了“展示很多漏洞”,而是通过很多条路径尽量保证同一个木马能落地。
后半部分自己做攻防实践时,我又遇到了一个和预期不一致的问题。我把 MS06-055 和 MS06-014 两个漏洞入口放到统一页面里,并做了十六进制混淆,本来以为两个漏洞都会被访问和触发。但实际抓包时,只看到了 /ms06055 的请求,也只拿到了 MS06-055 的反向 shell,MS06-014 并没有按预期继续触发。刚开始我怀疑是浏览器兼容性问题,也怀疑是不是页面写法或者 Metasploit 服务有问题。后来结合 IE 崩溃、连接中断和抓包结果,我才意识到不能把“源码中设计了两个攻击入口”等同于“流量中两个攻击都实际发生了”。
这也是这次作业给我最大的提醒:网络攻防实验不能只看自己想让它发生什么,而要看证据真正支持什么。源码能说明攻击者的意图,抓包和会话结果才能说明实际执行情况。以前做实验时,我可能更关心“有没有打成功”;这次之后,我更愿意先问“证据能证明到哪一步”。这也是我觉得第十一次作业做得比较好的原因,它既有攻击过程,也有取证分析,而且最后没有把不确定的结果强行写成成功。
从课程整体来看,第十一次作业也把前面的内容用上了。第 2 周的信息收集、第 3 周和第 4 周的流量分析与协议理解、第 6 周和第 7 周的 Metasploit 利用、第 8 周的恶意代码和日志取证、第 10 周的 Web 安全基础,都在这一周有了对应位置。做完这一周后,我对“攻击链”和“证据链”的理解比之前更具体,不再只是知道这两个词,而是能在一个实验里看到它们是怎么连起来的。
3. 知识总结
这门课的 11 次作业内容很多,涉及环境搭建、信息收集、抓包分析、协议攻击、防火墙和入侵检测、系统漏洞利用、恶意代码分析、二进制漏洞、SQL 注入、XSS、浏览器漏洞和网页木马等。现在回头看,我觉得最重要的不是记住每个工具的命令,而是逐渐形成了几种分析问题的习惯。
最开始的几次作业主要是在打基础。第 1 周搭建实验环境时,我对 HoneyWall 的理解一开始是有偏差的,以为它像普通网关一样靠三层 IP 转发。后面通过抓包验证才明白,它更像一个透明桥接监测点。这个认识对后面的防火墙、蜜网和取证分析都有帮助。第 2 周的信息收集让我知道,域名、IP、Whois、DNS、端口、服务版本和漏洞扫描结果不是一回事,不能把它们混在一起写。Nmap 更偏向发现目标,Nessus 更偏向判断风险,两者要结合起来看。
第 3 周和第 4 周让我真正开始理解协议层面的东西。第 3 周 TELNET 抓包很直观,用户名和交互内容都能直接在 TCP Stream 里看到,这比单纯背“TELNET 不安全”更有冲击。listen.pcap 分析也让我明白,一个扫描行为可能同时包含 SYN 扫描、Xmas 扫描、OS 探测和 ICMP 存活探测,不能只看到一个特征就下结论。第 4 周 TCP 会话劫持给我的印象也很深,ARP 欺骗只是拿到中间人位置,真正要注入命令,还要搞清楚真实 seq、ack、窗口值和 Telnet 命令结束符。这里我卡了很久,但也正是因为卡住,才理解了“看到流量”和“能主动影响会话”之间还差很多细节。
第 5 周开始补上防御视角。iptables、Snort 和 HoneyWall 对应的不是同一种能力。防火墙重点是访问控制,IDS 重点是发现异常,蜜网更强调在可控范围内观察攻击。以前我会把这些都笼统理解成“防御工具”,但做完之后能更清楚地分出它们各自解决什么问题。
第 6 周和第 7 周是系统漏洞利用。Windows 的 MS08-067 和 Linux 的 Samba usermap_script 都是用 Metasploit 完成的,但这两次实验让我意识到,不能只看 session opened。在抓包里,还要看目标端口、协议交互、payload 回连端口和命令执行结果。尤其是第 7 周,我才真正区分了漏洞利用入口端口和反向 shell 回连端口。攻击入口在目标服务上,回连通道是攻击成功之后靶机主动连回来,这两个阶段不能混为一谈。
第 8 周和第 9 周是我感觉难度明显上来的部分。第 8 周涉及 rada 样本、Crackme、IRC 僵尸网络和蜜罐日志。因为我之前更多做 Web 方向,对逆向和恶意代码分析并不熟,所以看 IDA、脱壳、字符串、注册表路径、函数调用这些内容时,很多地方都需要反复查资料。第 9 周的二进制漏洞也类似,call 偏移、返回地址覆盖、shellcode、NOP sled、栈权限这些内容对我来说不算轻松。虽然最后实验做出来了,但我能明显感觉到自己在 pwn 和逆向方向的基础还不够扎实。
第 10 周是 Web 安全,SQL 注入和 XSS 相对来说我更熟悉一些。SQL 注入让我再次理解了“输入没有被当成数据,而是被拼进语句结构里执行”这个本质;XSS 从弹窗、窃取 Cookie,到自动添加好友、修改资料和蠕虫传播,也让我看到 Web 漏洞不只是页面效果,而是可以进一步影响用户关系和业务状态。
第 11 周则把前面的很多能力集中起来。网页木马分析里,我需要从入口页面开始,一层一层追踪隐藏 iframe、外部脚本、MD5 文件、Base64/XXTEA 解密、二阶段脚本和最终 EXE。攻防对抗部分又让我遇到“预期和证据不一致”的情况。源码中有两个漏洞入口,不代表实际流量里两个漏洞都触发成功。这个细节让我对证据有了更深的认识。
如果概括这门课中我真正学到的东西,我觉得主要有三点。第一,攻击要按链条看。一次攻击很少是一个孤立动作,通常要从入口、漏洞、载荷、回连、执行和后续控制一步步还原。第二,结论要按证据写。三次握手、扫描请求、漏洞利用请求、命令回显、文件落地、服务创建、外联控制,它们能证明的程度是不一样的。第三,失败也要认真分析。很多时候实验不成功并不是工具没用,而是参数、环境、协议细节或兼容性条件没有满足。把这些原因想清楚,比简单换一个工具更有收获。
4. 课堂的收获与不足
这门课对我最大的影响,是让我不再只把网络攻防理解成“会用工具打漏洞”。刚开始做实验时,我更关心命令有没有执行成功、漏洞有没有打通、截图能不能证明结果。做完整个课程后,我感觉自己更在意证据本身了:一个现象到底能说明什么,不能说明什么,结论应该写到什么程度。
这一点在第 8 周和第 11 周体现得最明显。第 8 周分析蜜罐日志时,445 端口有比较完整的 PsExec 式远程控制证据,可以判定攻击成功;80 端口虽然有明显攻击请求,但缺少命令执行和后续控制证据,只能写成攻击尝试;4899 端口持续双向交互很可疑,但证据还不够闭合,也不能直接写死。第 11 周也是一样,统一入口页源码里确实藏了两个漏洞 URL,但抓包只证明其中一个实际触发。通过这些实验,我才更明确地感受到,网络攻防和电子取证其实联系很紧。攻击是否发生、发生到哪一步、能不能归因,最后都要回到证据上。
另一个收获是排障心态有变化。以前遇到实验不 work,很容易第一反应就是怀疑工具、怀疑环境,或者想直接换一种方法。现在会更愿意先停下来想一想:是哪一步的前提没有满足。比如第 4 周 TCP 会话劫持没有回显,后来发现和 Wireshark 相对序列号、Telnet 结束符、seq/ack 同步都有关系;第 9 周 execstack 安装失败,并不代表 shellcode 注入做不了,还可以通过 readelf 回到栈权限本身去判断;第 11 周统一入口页没有连续触发两个漏洞,也不一定说明实验完全失败,反而说明浏览器端攻击受兼容性和稳定性影响很大。现在回头看,很多真正有用的理解,都是在排查失败时建立起来的。
这门课也让我把以前比较零散的知识串起来了。我之前更多接触 Web 方向,对 SQL 注入、XSS 这类内容会相对熟悉一些,但对 pwn、逆向、恶意代码和底层协议攻击并不熟。通过这学期的实验,我至少把这些方向都走了一遍,知道它们大致在网络攻防体系里的位置。虽然还远谈不上熟练,但以后再看到类似问题,不会完全没有概念。
不足也比较明显。首先是我的逆向和 pwn 基础还不够扎实。第 8 周看样本行为、第 9 周分析栈溢出和 shellcode 时,很多地方都需要反复查资料。比如汇编指令、函数调用关系、返回地址计算、内存权限、shellcode 结构这些内容,我现在能跟着实验理解,但还不能说已经真正熟练掌握。相比 Web 方向,这部分后续需要系统补课。
其次,课程环境整体偏经典,现代攻防内容接触还不算多。Windows 2000、Windows XP、旧版 IE、老版本 Samba 这些环境很适合教学,因为漏洞现象明显,实验也容易复现。但真实环境里更多会遇到 Win10/Win11、现代浏览器沙箱、EDR、防病毒软件、加密流量、云服务和各种日志平台。课程让我打下了基础,但如果以后要面向真实攻防演练或安全工作,还需要继续补现代系统防护、加密流量分析和终端检测响应相关内容。
最后,我觉得自己的自动化分析能力也还需要提升。现在面对课程里的 pcap、脚本和日志,手动用 Wireshark、grep、CyberChef、IDA 这些工具还能慢慢分析出来。但如果数据量更大,比如企业级流量、长时间日志或者大量样本,单靠手工肯定不够。后面需要多练 Python 脚本化处理、日志检索、规则编写和批量分析能力。
总体来说,这门课对我来说不是简单完成 11 次实验,而是一次比较完整的网络攻防入门和梳理。它让我从“做出结果”往“解释结果”走了一步,也让我认识到,攻击能力和证据意识应该放在一起看。以后不管继续做 Web 安全,还是补 pwn、逆向、取证和防御方向,这门课里的很多基本习惯都会继续用得到。
5. 参考文献
11次作业博客链接:
- 20253913 2025-2026-2 《网络攻防实践》第一周作业 - 4eversinc2 - 博客园
- 20253913 2025-2026-2 《网络攻防实践》第二周作业 - 4eversinc2 - 博客园
- 20253913 2025-2026-2 《网络攻防实践》第三周作业 - 4eversinc2 - 博客园
- 20253913 2025-2026-2 《网络攻防实践》第四周作业 - 4eversinc2 - 博客园
- 20253913 2025-2026-2 《网络攻防实践》第五周作业 - 4eversinc2 - 博客园
- 20253913 2025-2026-2 《网络攻防实践》第六周作业 - 4eversinc2 - 博客园
- 20253913 2025-2026-2 《网络攻防实践》第七周作业 - 4eversinc2 - 博客园
- 20253913 2025-2026-2 《网络攻防实践》第八周作业 - 4eversinc2 - 博客园
- 20253913 2025-2026-2 《网络攻防实践》第九周作业 - 4eversinc2 - 博客园
- 20253913 2025-2026-2 《网络攻防实践》第十周作业 - 4eversinc2 - 博客园
- 20253913 2025-2026-2 《网络攻防实践》第十一周作业 - 4eversinc2 - 博客园
实验中使用的外部工具和参考资料:

浙公网安备 33010602011771号