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

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

1.内容总结

第1次实践 网络攻防实践环境搭建:主要完成 VMware 虚拟机环境搭建,配置 Kali、Win2K、Metasploitable、SEED、Honeywall 等实验主机,理清 VMnet8、VMnet1 和蜜网网关之间的关系。这个实验本身攻击内容不多,但后面所有实验都建立在这套环境上。

第2次实践 网络信息收集技术:主要做 DNS、Whois、IP 归属地查询、Nmap 扫描和 Nessus 漏洞扫描。通过这次实验,我开始意识到信息收集不是“扫一下就完事”,不同工具看到的信息不一样,必须结合环境解释。

第3次实践 网络嗅探与协议分析:主要使用 tcpdump 和 Wireshark 分析网页访问、Telnet 明文登录和 listen.pcap 扫描流量。印象比较深的是 Telnet 的用户名和口令能在 TCP Stream 里直接看到,这比单纯背“明文协议不安全”更直观。

第4次实践 网络协议攻击:主要完成 ARP 缓存欺骗、ICMP 重定向、SYN Flood、TCP RST 和 TCP 会话劫持。这个实验让我对 TCP/IP 协议栈里的“信任关系”有了更具体的认识,比如 ARP 不认证、TCP 连接可以被伪造 RST 打断。

第5次实践 防火墙和入侵检测:主要包括 iptables 防火墙配置、Snort 离线检测和 Honeywall 规则分析。通过这次实验,我把“攻击流量能不能通过”“能不能被发现”“蜜网怎么限制风险”这三个问题联系到了一起。

第6次实践 Windows 远程渗透攻击与取证:主要使用 Metasploit 攻击 Windows MS08-067 漏洞,并分析 NT 系统被入侵的取证材料,还做了团队对抗。这里第一次比较完整地把漏洞利用、会话获取、远程命令执行和抓包分析串起来。

第7次实践 Linux 远程渗透攻击与攻防对抗:主要使用 Metasploit 攻击 Metasploitable 的 Samba usermap_script 漏洞,同时用 Wireshark 分析攻击连接和反向 Shell。这个实验让我理解到,LHOST、路由和网卡选择错了,利用过程就算模块没错也会失败。

第8次实践 恶意代码分析与取证:主要分析 RaDa 恶意代码、两个 crackme 程序和僵尸网络 pcap。内容比较杂,但收获也比较明显:文件类型、哈希、加壳、字符串、作者信息、IRC 僵尸网络和攻击 IP 都可以通过静态分析和流量分析逐步还原。

第9次实践 缓冲区溢出和 Shellcode:主要围绕 Linux 32 位程序 pwn1,完成手工修改机器码、覆盖返回地址跳转到 getShell、注入 shellcode 三个任务。这个实验是我觉得最能把“程序怎么跑”讲清楚的一次。

第10次实践 Web 应用程序安全攻防:主要完成 SEED SQL 注入和 Elgg XSS 实验,包括绕过登录、UPDATE 注入、预编译修复、XSS 弹窗、Cookie 获取、自动加好友、修改资料和 XSS 蠕虫。这里最明显的结论是:Web 程序不能直接信任用户输入。

第11次实践 浏览器安全攻防实践:主要完成 MS06-014 浏览器渗透攻击、网页挂马样本分析、浏览器端攻击对抗和 suspicious-time.pcap 取证分析。这个实验里我重新配置了 Win2kServer 环境,最终在 Kali 中拿到了 Windows 2000 的远程 Shell,也分析了网页挂马从入口页到脚本、下载器、二阶段程序的链路。

为了让课程收获不只是按时间罗列,我把这些实践对应到能力上,整理如下:

能力方向 对应实践 我现在能做到的程度
实验环境搭建与排障 实践1、实践6、实践11 能处理网卡、路由、IP、服务启动等基础问题
信息收集与扫描 实践2、实践3 能用 Nmap、Whois、Wireshark 做基础分析
协议攻击与防御 实践4、实践5 能解释 ARP、ICMP、TCP 和防火墙规则的影响
系统渗透与取证 实践6、实践7 能把 Metasploit 会话和抓包证据对应起来
恶意代码与逆向基础 实践8、实践11 能做文件识别、哈希、字符串和攻击链分析
Web 安全 实践10 能复现 SQL 注入、XSS,并说明修复思路
二进制安全 实践9 能理解返回地址覆盖、NOP 滑道和 shellcode 的基本流程

这张表也暴露出我的短板:工具基本会用,但自动化分析和独立逆向能力还不够,后面如果继续学安全,应该重点补这两块。

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

我最喜欢、也觉得自己做得最好的是第9次缓冲区溢出和 shellcode 实验。

原因不是它最简单,正好相反,它一开始是我看得最懵的一次。前面的很多实验更多是配置工具、填参数、看结果,而第9次必须真的理解程序执行流程:main 调用哪里、call 指令的机器码怎么改、返回地址为什么能被覆盖、x86 小端序为什么要把 0x0804847d 写成 7d 84 04 08。这些东西如果只是照抄命令,很容易一错就不知道错在哪里。

这次我做得比较扎实的一点是,没有完全依赖脚本生成 payload,而是尽量按实验要求手工用 vim + xxd 修改二进制和构造输入。中间也踩过坑,比如把十六进制内容输到终端里、payload 里多出换行、shell 退出后段错误等。后来逐个排掉之后,反而对“覆盖返回地址”这件事理解得更清楚了。

我觉得这次实验带来的改变比较明显:以前看到缓冲区溢出,我更多把它当成一个名词;做完之后,我能把它对应到栈、返回地址、NOP、shellcode 这些具体东西上。虽然现在还谈不上熟练写利用代码,但至少知道漏洞利用不是玄学,而是程序执行路径被人为改掉了。

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

这门课给我的感觉是范围很广,从环境搭建、扫描、抓包、协议攻击,到系统渗透、恶意代码、Web 安全、浏览器攻击、缓冲区溢出都有涉及。刚开始做的时候,经常觉得每次实验都是一个新方向,后来做多了才发现它们之间是连着的:先要搭环境和收集信息,再理解协议和服务,再做漏洞利用,最后还要能抓包、取证和防御。

3.1 安全加固和检测技术

在安全加固和检测方面,我主要接触了 iptables、Snort、Honeywall、Nmap 和 Nessus。Nmap 更适合做端口、服务和系统指纹识别,Nessus 更偏漏洞扫描,Snort 用规则识别可疑流量,iptables 则直接控制流量能不能进出。以前我容易把这些工具混在一起,后来慢慢分清楚了:扫描是发现问题,检测是发现异常,防火墙是限制访问,蜜网网关还要兼顾记录攻击过程和控制攻击外溢。

实践中也能看到,安全加固不是简单地“全部关掉”。比如 iptables 规则要考虑源地址、目标端口和规则顺序;Honeywall 既要让攻击者能打进蜜罐,又不能让蜜罐继续危害外部网络。这比单纯写一条拒绝规则复杂一些。

3.2 Web 安全技术

Web 安全部分主要是 SQL 注入和 XSS。SQL 注入的根本原因是后端把用户输入直接拼进 SQL 语句,所以攻击者可以通过闭合引号、注释后半句等方式改变原来的查询逻辑。XSS 的根本原因是网站把用户输入当成页面内容输出,却没有过滤脚本,导致脚本在其他用户浏览器中执行。

我印象比较深的是第10次 XSS 实验。弹窗只是最基础的效果,后面的自动加好友、修改资料和蠕虫传播才真正说明 XSS 的危害。防御上,SQL 注入要用预编译和参数绑定,XSS 要做输入过滤、输出编码和 Cookie 安全配置。实际写 Web 程序时,不能只想着页面能不能显示,还要考虑用户输入会不会被当成代码执行。

3.3 逆向分析技术

逆向分析主要体现在第8次 RaDa、crackme 和第9次 pwn1。RaDa 分析里,我用文件类型识别、哈希、节区信息、脱壳后字符串来判断样本功能;crackme 里通过字符串和程序行为找到正确输入;pwn1 里用反汇编看函数地址和机器码。

这部分让我认识到,静态分析不是只看“有没有可疑字符串”,而是要把字符串、导入函数、节区、控制流和运行环境联系起来。比如 RaDa 中出现 upload.cgidownload.cgiCurrentVersion\\Runscreenshot,这些字符串放在一起看,才能判断它像一个带远控功能的后门程序。pwn1 则说明 ELF 程序中函数地址、机器码和实际执行流程是可以对应起来的。

3.4 代码审计和漏洞原因理解

课程里没有专门安排很完整的代码审计项目,但 SQL 注入、XSS 和缓冲区溢出都要求看代码或反汇编。本质上,代码审计就是找“用户可控数据到了哪里”。如果用户输入进了 SQL 拼接,就可能有注入;如果用户输入原样进了 HTML 页面,就可能有 XSS;如果用户输入进了固定长度缓冲区但没有边界检查,就可能有溢出。

我觉得这部分最重要的是思路,而不只是记某个危险函数。比如 gets 危险,是因为它不检查长度;eval 危险,是因为它把字符串当代码执行;SQL 拼接危险,是因为数据和语句混在一起。以后看代码时,我会更注意输入、处理、输出这条链路。

3.5 程序设计和脚本能力

这门课里用得最多的还是 Linux 命令和少量 Python。Python 主要用于处理字符串、URL 编码、生成或检查一些实验数据;Linux 命令则包括 grepstringsfilemd5sumobjdumptcpdumpnetstat 等。第9次让我接触到底层二进制和 C 程序栈,第10次和第11次又接触到 PHP、JavaScript 和 HTML。

我现在的感觉是,安全实验不一定要求写很复杂的程序,但至少要能写一些小脚本辅助验证。比如批量算 MD5、还原 URL 编码、筛选日志、分析 pcap 中的关键字段,这些如果完全手工做会很慢,也容易错。

3.6 恶意代码和病毒技术

恶意代码部分主要集中在第8次和第11次。第8次分析 RaDa,看到它的远程控制地址、上传下载接口、自启动位置和作者信息;第11次分析网页挂马,看到从 start.htmlnew09.htmkl.htm、ActiveX 控件、脚本、下载器再到二阶段 EXE 的完整链路。

这部分让我对病毒、木马、蠕虫和下载器的区别更清楚。木马和后门更强调控制和隐蔽,蠕虫强调传播,下载器本身可能不做太多破坏,但会继续拉取后续程序。防范上,隔离环境、快照、静态分析、不要在宿主机直接运行样本,这些基本原则非常重要。

3.7 网络溯源和取证分析

取证分析贯穿了很多实验。第3次分析扫描流量,第6次分析 NT 系统攻击,第7次分析 Samba 攻击流量,第8次分析僵尸网络 pcap,第11次分析浏览器挂马流量。开始时我看 pcap 容易只盯着某一个包,后来慢慢习惯先找主线:谁访问谁、访问了什么端口、有没有跳转、有没有反向连接、时间顺序是什么。

比如第11次 suspicious-time.pcap 中,关键不是单独某一条 GET 请求,而是 rapidshare.com.eyu32.rusploitme.com.cn 的跳转链。第7次里,重点也不是单独看到 4444 端口,而是要把 139/445 的攻击连接和后面的反向 Shell 联系起来。取证分析需要耐心,不能看到一个关键词就直接下结论。

3.8 加密、哈希和编码

课程里虽然没有单独做密码学实验,但 MD5、URL 编码、Base64、XXTEA、哈希文件名这些内容反复出现。第8次用 MD5 标识样本,第11次网页挂马中按 URL 的 MD5 找对应文件,也用到了 Base64 和 XXTEA 混淆。

我现在对哈希的理解更具体了:它不是用来“加密还原”的,而是用来标识文件或数据是否一致。编码和加密也不是一回事,URL 编码、Base64 更多是表示形式转换,真正的加密还需要密钥和算法。恶意代码经常把这几种东西混在一起用,目的就是让分析人员第一眼看不出真实 URL 和脚本逻辑。

3.9 系统运维和实验环境排障

这门课实际花了很多时间在环境排障上。比如 Kali 多网卡导致 LHOST 填错,Win2k 网卡显示断开,SEED 粘贴和服务启动问题,Wireshark 打开文件找不到等。虽然这些看起来不像“安全知识”,但最后发现它们很重要。环境不通,后面的攻击和分析都做不下去。

我现在比课程刚开始时更熟悉 Linux 基本命令,也更习惯先确认 IP、路由、网卡、服务状态和文件路径。以后遇到实验不通,不能只怀疑漏洞模块或工具,应该先把网络、权限、路径这些基础问题查清楚。

3.10 网络协议分析

协议分析是这门课的主线之一。通过 Telnet,我看到明文传输的风险;通过 ARP、ICMP、TCP RST、SYN Flood 和会话劫持,我看到协议设计中的信任假设;通过 HTTP 抓包,我理解了 Host、Referer、302 跳转和 Cookie 的作用。

以前学习 TCP/IP 时更多是背三次握手、四次挥手、端口号。做完这些实验后,我感觉协议分析更像是在看“通信过程的证据”。一个 SYN 包、一个 RST 包、一个 Referer 字段,放到正确上下文里都能说明问题。

3.11 数据库

数据库部分主要在第10次 SQL 注入中体现。通过查看 Users 数据库和 credential 表,我复习了 selectupdatewhere、表结构查询等 SQL 基础,也理解了为什么登录、修改资料这类功能最容易出问题。

SQL 注入防御中,预编译语句和参数绑定是最关键的。它把 SQL 语句结构和用户输入分开,让用户输入只能作为数据,而不能变成语句的一部分。这个思路其实和很多安全问题类似:不要让不可信输入控制程序逻辑。

3.12 法律和授权边界

这门课一直强调实验环境和授权边界。网络安全技术本身有两面性,Nmap、Metasploit、漏洞利用、恶意代码分析这些内容,如果放在未授权目标上就是违法行为。课程实验之所以能做,是因为目标都在自己的虚拟机和老师提供的数据范围内。

我对“三法”和相关法规的理解是:网络安全法强调网络运行安全和责任,数据安全法强调数据处理活动的安全管理,个人信息保护法强调个人信息收集、使用和处理的边界。做安全实验时,不扫描真实无授权目标、不传播样本、不泄露他人信息,是最基本的要求。

3.13 基础知识

这门课也让我重新认识到基础知识的重要性。计算机网络决定了能不能看懂流量,操作系统决定了能不能理解进程、服务、权限和注册表,计算机组成和汇编基础决定了能不能理解缓冲区溢出,数据结构和程序设计基础决定了能不能读懂代码逻辑。

很多问题最后都不是单点知识,而是多个基础知识叠在一起。比如浏览器挂马实验同时涉及 HTTP、JavaScript、ActiveX、Windows 系统、恶意代码下载和流量取证;缓冲区溢出同时涉及 C 语言、栈、汇编、地址和操作系统保护机制。基础越牢,排错时越不容易乱。

5.课堂的收获与不足

这门课最大的收获是,我对“网络攻防”这件事的理解从单个工具变成了一条链路。以前我可能会觉得会用某个扫描器、会跑某个 Metasploit 模块就算会一点安全了。现在回头看,真正重要的是知道每一步在干什么:为什么先做信息收集,为什么要确认网络连通性,为什么 payload 要回连到正确网卡,为什么抓包能证明攻击是否真的发生,为什么修复时不能只堵一个表面现象。

另一个收获是,我比以前更敢排查问题了。课程里很多时间不是花在“成功截图”上,而是花在为什么 ping 不通、为什么 no session、为什么 Wireshark 过滤不到、为什么文件路径不对。虽然当时很烦,但这些问题解决之后,反而比直接照着步骤成功更有记忆点。

不足也比较明显。第一,我对一些工具还停留在“会用常见参数”,没有系统理解全部功能,比如 Nmap、Snort、Wireshark、Metasploit 都还有很多参数和插件没有深入。第二,代码能力还不够,遇到需要自己写脚本自动化分析时,还是比较依赖现成命令。第三,对漏洞原理的理解有些地方还不够深入,比如浏览器漏洞和复杂恶意代码反混淆,目前更多是按材料分析,离独立分析真实样本还有差距。

如果后面继续学,我觉得自己应该重点补三块:一是 Linux 和网络协议基础,二是 Python 自动化分析能力,三是逆向和漏洞原理。这样再做类似实验时,就不会只是“把步骤做完”,而是能更快判断问题出在哪里。

6.参考文献

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