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

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

姓名:李佳橦  学号:20253909
课程:2025-2026-2 《网络攻防实践》


  这篇文章是对本学期《网络攻防实践》课程 11 次实践的完整总结。
  和每一次单独的实验报告不同,这篇博客更像是一次“回头看”:把我这一学期搭过的环境、用过的工具、踩过的坑、理解到的原理,以及还存在的不足都重新梳理一遍。

  从第 1 次搭建虚拟蜜网开始,到第 11 次浏览器挂马与网页取证结束,整门课基本围绕一条比较完整的攻防链路展开:

  环境搭建 → 信息收集 → 流量分析 → 协议攻击 → 防御检测 → 系统渗透 → 恶意代码分析 → 底层漏洞利用 → Web 攻防 → 浏览器挂马与取证


目录


1. 十一次实践内容总结

这一部分先按照 1-11 次实践的顺序总结。为了方便回看,我把每一次实践对应的博客链接都放在标题里。


第1次实践:虚拟蜜网环境搭建

  第 1 次实践是整个课程的基础,主要任务是搭建后面所有实验都会用到的虚拟蜜网环境。当时做这次实验的时候,我其实还没有真正开始“攻击”任何目标,但是配置过程并不轻松,因为要同时考虑攻击机、靶机、蜜网网关、虚拟网段和管理口之间的关系。

  这次实践中,我在 VMware 中配置了 VMnet8(NAT)VMnet1(Host-Only) 等虚拟网络。攻击机放在 NAT 网段,靶机放在 Host-Only 网段,中间通过 Honeywall Roo 作为透明网关进行连接和监控。Honeywall 配置了三块网卡:一块面向攻击机,一块面向靶机,一块作为管理口。这样设计的好处是,攻击者看不到网关的存在,但所有进出蜜罐区的流量都会经过 Honeywall,从而方便后续检测和分析。

  这次实验里我印象最深的是虚拟网络模式的区别。以前使用 VMware 时,我经常只是随便选择 NAT 或桥接,只要虚拟机能上网就觉得没问题。但做完这次实验以后,我才明白网络模式会直接影响后面实验能不能成功。比如 NAT 模式适合攻击机访问外部网络,Host-Only 适合构建隔离靶场,桥接模式则更像让虚拟机直接接入真实局域网。后面做 Nmap 扫描、Nessus 漏洞扫描、Metasploit 攻击、Wireshark 抓包时,很多问题其实都和这次搭建的网络结构有关。

这次实验的体会:
  这次实验让我认识到,网络攻防不是一上来就运行攻击工具,而是要先有一个稳定、清晰、可控的实验环境。环境搭错了,后面工具再熟也很难得到正确结果。


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

  第 2 次实践围绕信息收集展开,内容比较多,包括 DNS 域名信息查询、IP 地理位置查询、获取 QQ 好友 IP、Nmap 扫描靶机、Nessus 漏洞扫描,以及利用搜索引擎进行 OSINT 信息收集。

  这次实验让我第一次比较系统地体会到:攻击前的信息收集不是可选项,而是必须项。如果不了解目标有什么主机、开了什么端口、运行什么服务、服务版本是什么,就很难判断后面应该从哪里入手。

  在 DNS 信息收集部分,我以 baidu.com 为例,通过 ICANN WHOIS 查询域名注册信息,又通过 nslookup 查询解析 IP,再结合 IP2Location 等工具查看 IP 的归属地和运营商信息。这个过程让我把“域名 → IP → 机构 → 地理位置”这条链串了起来。以前访问网站时只看到域名,这次才意识到域名背后还可以挖出注册商、DNS 服务器、IP 地址段、运营商和地理位置等信息。

  Nmap 部分则是对靶机进行主动扫描。我使用了主机发现、TCP SYN 扫描、UDP 扫描、操作系统识别和服务版本探测等方式。通过扫描可以看到 Metasploitable 开放了 FTP、SSH、Telnet、HTTP、MySQL、PostgreSQL、Tomcat 等服务,而 Windows 2000 靶机则开放了 SMB、RDP、DNS 等服务。这个过程非常像给目标做一张“资产画像”。

  Nessus 部分进一步把开放服务和漏洞联系起来。Nmap 只能告诉我“服务开着”,而 Nessus 会进一步告诉我这些服务可能有哪些漏洞,风险等级如何。比如某些老版本服务存在高危漏洞,某些配置存在弱口令或不安全协议。通过这次实验,我开始理解漏洞扫描器的意义:它不是替代人工判断,而是帮助我们缩小分析范围,快速发现值得重点关注的风险点。

  这次实验中获取 QQ 好友 IP 的部分也让我意识到隐私泄露问题。通过资源监视器观察 QQ 进程网络连接,再用 IP 查询工具定位大致地理位置,虽然实验环境是为了课程要求,但它提醒我:很多软件通信过程中都会留下网络连接痕迹,个人隐私保护不能只依赖“我没有主动公开”。

这次实验的体会:
  信息收集阶段越扎实,后续攻击或防御分析就越有方向。真正的渗透测试不是“看见漏洞就打”,而是先了解目标,再选择合适的验证路径。


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

  第 3 次实践主要使用 tcpdump 和 Wireshark 做网络嗅探与协议分析。这一次实验让我开始真正从“数据包”的角度理解网络,而不是只停留在 IP、端口、协议这些抽象概念上。

  第一部分是使用 tcpdump 嗅探访问 www.tianya.cn 的过程。我通过设置过滤条件,只捕获本机访问 HTTP/HTTPS 时发起的新连接,最后统计浏览器访问了多少个不同 Web 服务器。做完以后我发现,打开一个网页并不是只连接一个服务器,而是可能同时连接主站、图片服务器、脚本服务器、广告服务器、CDN 节点等多个 IP。网页加载背后其实有很多资源请求,只是平时浏览器帮我们隐藏了这些细节。

  第二部分是使用 Wireshark 分析 TELNET 登录 BBS 的过程。这部分对我的冲击比较大。以前知道 TELNET 是明文协议,但只是理论上知道“不安全”。真正用 Wireshark 过滤 telnet 流量,再使用 Follow TCP Stream 还原会话时,我才看到用户名、输入内容甚至密码都可能以明文形式出现在 TCP 流里。密码在终端中“不显示”,并不代表它在网络中“被加密”。这个实验让我直观理解了为什么现在远程登录必须使用 SSH,而不是 TELNET。

  第三部分是对 listen.pcap 进行取证分析。我通过过滤 SYN 包、统计通信双方、观察端口变化,判断出攻击主机和目标主机,并推测这是一次端口扫描行为。这个过程让我意识到,流量文件本身就是证据。即使攻击已经结束,只要保留了 pcap,就可以通过协议特征、时间顺序和数据包字段还原攻击过程。

这次实验的体会:
  Wireshark 不是只用来看“有没有包”,更重要的是用它理解协议行为。攻击者的动作最终都会变成网络流量,而防守方能不能看懂这些流量,决定了能不能发现问题。


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

  第 4 次实践集中做了多种 TCP/IP 协议攻击,包括 ARP 缓存欺骗、ICMP 重定向、SYN Flood、TCP RST 攻击和 TCP 会话劫持。这次实验是我第一次比较完整地体验“协议本身也可能成为攻击点”。

  ARP 欺骗实验中,攻击机通过伪造 ARP Reply,让受害机把网关 IP 对应的 MAC 地址错误地更新为攻击机 MAC。这样受害机发往网关的流量就会先到攻击机。以前我知道中间人攻击这个概念,但通过这次实验才真正理解:中间人位置不是凭空出现的,而是通过欺骗受害机的二层转发表实现的。

  ICMP 重定向实验则利用了主机对 ICMP Redirect 报文的信任。攻击者伪造来自网关的重定向报文,告诉受害机去往某个目标的下一跳应该改成攻击机。这个实验让我看到,ICMP 不只是 ping,它还承担网络控制功能,而这些控制功能如果没有认证,就可能被滥用。

  SYN Flood 实验让我理解了拒绝服务攻击的基本思想。攻击者不一定要拿到系统权限,只要让服务无法处理正常请求,也能造成严重影响。通过 hping3 发送大量伪造源 IP 的 SYN 包后,服务端需要维护大量半连接,正常用户访问就会受到影响。这让我第一次把 TCP 三次握手和 DoS 攻击联系起来。

  TCP RST 攻击和 TCP 会话劫持则进一步说明,TCP 连接虽然“可靠”,但可靠性是建立在序列号、确认号等机制上的。一旦攻击者能够嗅探到会话信息,就可能构造合法范围内的报文,强制断开连接甚至注入数据。

这次实验的体会:
  很多经典攻击并不是因为程序写错了,而是因为早期协议默认网络环境是可信的。ARP、ICMP、TELNET 等协议在设计时没有充分考虑恶意攻击者,所以才会留下被利用的空间。


第5次实践:防火墙、Snort 与蜜网网关分析

  第 5 次实践开始明显转向防御方向,主要包括 Linux iptables 防火墙配置、Snort 入侵检测,以及 Honeywall 蜜网网关的防火墙和 IDS/IPS 规则分析。

  iptables 部分,我在 Kali 上配置了规则,使主机不响应 Ping,并限制只有指定主机可以访问 HTTP 服务。这个实验看似简单,但实际让我理解了几个很关键的点。第一,防火墙规则是有顺序的,白名单必须写在黑名单前面,否则可能还没匹配到允许规则就已经被丢弃。第二,DROP 和 REJECT 的效果不同,DROP 是直接丢弃不回应,对扫描者来说更像“没有回应”;REJECT 则会明确返回拒绝信息。第三,配置完规则后必须验证,不能只看命令执行成功。

  Snort 部分,我对离线 pcap 文件进行检测,并编写自定义规则识别 TCP SYN 包。Snort 的价值在于它能根据规则、协议解析和统计结果自动发现异常。例如大量 SYN 包、异常 RST、ARP 欺骗等行为,都可以通过规则或模块体现出来。这让我明白 IDS 不是“神奇判断攻击”,而是通过可解释的规则和特征进行匹配。

  Honeywall 分析部分更接近蜜网防御思路。蜜网网关要做两件看似矛盾的事情:一方面要允许攻击者进入蜜罐,以便捕获攻击行为;另一方面又要控制蜜罐不能被攻击者利用去攻击外部网络。这种“数据捕获”和“数据控制”的平衡,是蜜网系统的核心。

  这次实验让我认识到,防御工作比想象中细。攻击时只要找到一个突破口就可以推进,而防御时需要考虑每一条规则、每一种流量、每一个出口是否可能被滥用。


第6次实践:Windows 远程渗透与 NT 攻击取证

  第 6 次实践主要围绕 Windows 系统远程渗透和取证分析展开。内容包括使用 Metasploit 攻击 Windows 2000 的 MS08-067 漏洞,分析 Honeynet Project 中一次 NT 蜜罐被攻陷的过程,以及团队攻防对抗。

  MS08-067 是一个非常经典的 Windows SMB 远程代码执行漏洞。实验中我使用 Metasploit 的 exploit/windows/smb/ms08_067_netapi 模块,配置目标 IP、payload、LHOST 等参数后,成功获得了 Windows 2000 靶机的 shell。这个过程让我第一次完整体验了 Metasploit 的基本工作流程:选择模块、设置 payload、配置参数、执行 exploit、获得 session、验证权限。

  不过这次实验对我影响更大的其实是取证分析部分。在 Honeynet 的案例中,攻击者并不是简单利用一个漏洞后就结束,而是经历了完整攻击链。先浏览网页和探测服务,再尝试 IIS Unicode 和 MSADC 漏洞,通过漏洞执行命令,然后上传或下载工具,使用 netcat 建立后门,尝试 dump 密码,最后还清理痕迹、留下留言。这个过程非常接近真实入侵。

  我以前对攻击的理解比较片面,觉得“打下 shell”就是结束。但这次取证让我意识到,对于攻击者来说,拿到初始入口只是开始;对于防守者来说,发现初始漏洞利用也只是调查的第一步。真正重要的是还原攻击者之后做了什么,有没有横向移动,有没有创建账号,有没有留下后门,有没有清理痕迹。

这次实验的体会:
  一次真实攻击不是一条命令,而是一条链。取证分析要看的也不是单个数据包,而是攻击动作之间的先后关系。


第7次实践:Linux 远程渗透与团队对抗

  第 7 次实践主要围绕 Linux 靶机 Metasploitable 上 Samba usermap_script 漏洞展开。这个漏洞和前一次 Windows 的 MS08-067 不一样,它不是典型的缓冲区溢出,而是命令注入问题。

  Samba 在处理用户名映射时,会把客户端传来的用户名拼接进 shell 命令中。如果没有正确过滤特殊字符,攻击者就可以把命令放进用户名字段,让 Samba 在服务端执行。Metasploit 的 exploit/multi/samba/usermap_script 模块正是利用这一点,通过 SMB Session Setup 阶段的 Account 字段传入恶意命令,最终拿到 root shell。

  我在第一部分中作为攻击方,使用 Metasploit 成功攻击 Metasploitable,获得 root 权限。这个过程让我认识到,不是所有远程渗透都依赖内存破坏,有些漏洞来自程序逻辑错误、命令拼接错误或者输入过滤不足。

  第二部分团队对抗中,我作为防守方使用 Wireshark 抓包。这个角色转换很有意义。作为攻击方时,我只关心 session 是否打开;作为防守方时,我需要从 SMB 流量中找出攻击证据。通过过滤 SMB 包、查看 Session Setup AndX Request,我能在 Account 字段中看到恶意命令,例如创建命名管道、使用 netcat 监听 4444 端口、把 shell 输入输出重定向过去等。

  这次实验让我体会到,攻防其实是同一件事的两个视角。攻击者看到的是模块执行成功,防守者看到的是协议字段异常、连接建立、命令执行痕迹。只有两个视角都了解,才能更完整地理解漏洞。


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

  第 8 次实践是我最喜欢的一次,主题是恶意代码分析与僵尸网络取证。相比前面的实验,这一次更像是在“解剖样本”和“还原事件”,需要自己根据线索推断,而不是只运行工具。

  RaDa 样本分析是这次实践的重点之一。我先用 file 判断它是 Windows PE32 GUI 程序,再用 strings 查看可读字符串。最开始 strings 输出几乎都是乱码,只能看到少量 API 和 DLL 名称,这让我怀疑它加了壳。随后通过 UPX 和脱壳工具确认它是 UPX 加壳,并成功脱出 RaDa_unpacked.exe。脱壳以后,字符串明显丰富起来,出现大量 VB6 运行时函数、注册表路径、命令参数、C2 页面和作者信息。

  在 IDA 和 Process Explorer 中,我看到很多关键字符串。例如 HKLM\Software\Microsoft\Windows\CurrentVersion\Run 指向注册表自启动,C:\RaDa\binC:\RaDa\tmp 指向本地安装目录,RaDa_commands.html 暗示远程命令控制,Starting DDoS Smurf remote attack... 表明它具有攻击功能,WMI 查询语句则说明它会收集网络配置信息。这些线索不是孤立的,必须组合起来才能推断出样本的行为。

  crackme 分析部分也很有意思。我通过 IDA 的 Strings 发现 I know the secretcrackmeplease.exeWe have a little secret: Chocolate 等字符串,再结合程序运行输出和流程图,最终找到了正确输入。这让我明白,逆向分析并不总是从头硬读汇编,很多时候要先从字符串、错误提示、函数调用这些“软线索”开始。

  僵尸网络取证部分则让我接触到 IRC C2 的分析思路。通过分析蜜罐流量,可以识别 IRC 服务器、频道、客户端数量和攻击指令。它让我看到,恶意代码不只是本地程序,还会和网络通信结合,形成受控的 botnet。

这次实验的体会:
  恶意代码分析最有意思的地方,是从一个看似不可读的二进制文件里,一点点挖出它的目的、行为和作者线索。这个过程比单纯复现攻击更需要耐心和推理。


第9次实践:缓冲区溢出与栈区代码注入

  第 9 次实践围绕一个 32 位 ELF 程序 pwn1 展开,是我对底层安全理解提升最大的一次。之前我知道“缓冲区溢出可以控制程序执行流”,但一直只是概念。通过这次实践,我真正从机器码、栈帧、返回地址和 shellcode 的角度理解了它。

  第一部分是直接修改二进制文件。通过 objdump -d 查看反汇编,我找到 main 函数中调用 foo 的 call 指令,又找到隐藏函数 getShell 的地址。由于 x86 的 call 使用相对偏移,我计算出新的偏移值后,用 vim + xxd 修改机器码,把 call foo 改成 call getShell。修改完成后程序一运行就直接进入 shell。这个过程让我第一次体会到:程序的控制流最终就是由几个字节的机器码决定的。

  第二部分是不修改二进制,而是利用 gets() 函数造成的缓冲区溢出。通过分析 foo 的栈帧,我计算出需要填充多少字节才能覆盖返回地址,然后把返回地址改成 getShell 的入口地址。这里我真正理解了小端序的重要性:地址 0x0804847d 在 payload 中要写成 \x7d\x84\x04\x08。如果字节顺序错了,程序就不会跳到正确位置。

  第三部分进一步把 shellcode 注入栈中执行。为了让它成功运行,需要处理两个保护机制:关闭 ASLR,让栈地址不再随机;使用 execstack 设置栈可执行,避免 NX 阻止 shellcode 执行。然后通过 GDB 查看栈布局,确定返回地址应该跳到 NOP 滑梯或 shellcode 附近。这个过程让我把“漏洞利用”和“操作系统保护机制”联系了起来。

  这次实验让我认识到,底层漏洞利用不是简单地“输入很长字符串”,真正关键的是精确控制内存布局。填充多少字节、覆盖哪个地址、地址如何编码、跳到哪里、目标内存能不能执行,每一步都要对。


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

  第 10 次实践主要是 Web 安全,包括 SQL 注入攻击与防御,以及 XSS 跨站脚本攻击与防御。这次实验和前面系统渗透、协议攻击不同,它更多发生在 Web 应用逻辑层面。

  SQL 注入部分使用 SEED SQL Injection Lab。最开始我先熟悉了 MySQL 数据库中的 credential 表,里面包含用户姓名、EID、薪水、生日、SSN 和密码哈希。之后在登录页面中输入 admin'#,成功绕过管理员登录;输入 samy'#,也能绕过普通用户登录。通过查看源码,我发现后台直接把用户输入拼接进 SQL 语句中,导致输入中的单引号和注释符改变了原本的 SQL 逻辑。

  UPDATE 注入部分更让我意识到注入漏洞的危害不只是登录绕过。我在资料编辑页面的 NickName 字段中构造 payload,把 Samy 的薪水改成了自己的学号。一个本来只能修改昵称的输入框,因为后端 SQL 拼接不安全,变成了修改敏感字段的入口。

  防御部分我使用 prepared statement 修复漏洞。修复之后,同样输入 admin'# 就不再能绕过登录,因为数据库会把它当成普通字符串,而不是 SQL 语法。这让我真正理解了参数化查询的意义。

  XSS 部分围绕 Elgg 社交平台展开。从最简单的 alert 弹窗,到弹出 Cookie、外带 Cookie,再到自动加好友、自动修改资料,最后编写 XSS 蠕虫,难度逐步增加。做完以后我对 XSS 的理解发生了变化:它不是一个“弹窗漏洞”,而是可以借助用户登录态执行操作的浏览器端攻击。

这次实验让我总结出一句话:
  SQL 注入是把用户输入当成数据库命令执行,XSS 是把用户输入当成浏览器脚本执行。两者的共同问题都是代码和数据边界混淆。


第11次实践:浏览器渗透、网页挂马与取证分析

  第 11 次实践是浏览器端攻防,主要包括 MS06-014 浏览器渗透、网页挂马取证分析和团队攻防对抗。

  第一部分中,我使用 Metasploit 的 MS06-014 模块搭建恶意网页。Windows 2000 靶机使用 IE 访问该页面后,攻击机成功获得反弹 shell。这个过程让我认识到,攻击入口不一定是服务器端开放端口,也可能是用户浏览器。只要浏览器或插件存在漏洞,用户打开一个网页就可能触发代码执行。

  第二部分是网页挂马取证分析。入口文件 start.html 伪装成 404 页面,但底部隐藏了一个宽高为 0 的 iframe,加载下一层页面。之后又遇到 Base64、XXTEA、十六进制编码、八进制编码、JavaScript packer 等多层混淆。每解开一层,才能看到下一步加载的脚本或下载地址。最终分析到脚本通过 ActiveX、XMLHTTP、ADODB.Stream 等方式下载并执行 EXE 木马。

  这次取证分析让我理解了网页挂马的隐蔽性。普通用户看到的可能只是一个错误页面,但浏览器后台已经加载了隐藏 iframe、执行了混淆脚本、触发了漏洞利用、下载了恶意程序。攻击链条很长,而且每一层都尽量隐藏真实意图。

  第三部分团队攻防对抗中,我进一步理解了挂马页面的构造和解混淆思路。攻击方会把多个浏览器漏洞利用页面组合起来,通过编码隐藏 URL;防守方则需要从 HTML 和 JavaScript 代码中提取真实链接,解码混淆内容,判断使用了哪些漏洞。

这次实验的体会:
  浏览器不是单纯的网页显示工具,它本身也是复杂的代码执行环境。网页挂马的危险在于,用户以为自己只是打开了一个网页,但攻击可能已经在后台完成。


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

  我最喜欢、也觉得自己做得最好的是 第8次实践:恶意代码分析与僵尸网络取证

  之所以选择第 8 次,不是因为它最容易,恰恰相反,是因为它最需要自己分析。前面一些实验虽然也有原理,但很多时候可以按步骤运行工具。而第 8 次拿到的是样本和流量,需要自己判断文件类型、是否加壳、如何脱壳、字符串说明什么、恶意代码可能做什么、网络通信对应什么行为。整个过程更像是一次小型案件分析。

  我最满意的是 RaDa 样本分析部分。最开始样本几乎不可读,strings 输出只有少量 DLL 和 API。通过判断加壳、脱壳、重新提取字符串,再结合 IDA 和 Process Explorer,我逐渐看到了程序内部的结构。比如注册表 Run 项说明它会自启动,RaDa_commands.html 暗示远程命令控制,WMI 查询说明它会收集主机网络信息,DDoS 字符串说明它带攻击功能。这些线索不是单独成立的,必须组合起来才能推断出恶意代码的整体行为。

  我觉得自己这次做得比较好的一点是,不只是把工具结果贴出来,而是写出了判断过程。比如为什么怀疑加壳,为什么确认 UPX,脱壳前后字符串有什么变化,作者信息如何通过静态字符串和动态运行交叉验证。相比单纯“我运行了某工具,得到某结果”,这样的过程更像真正的分析。

  crackme 部分也让我印象深。通过程序提示、字符串、IDA 流程图和实际运行结果,逐步找到正确输入。这让我意识到逆向分析不一定一开始就钻进复杂汇编,先从字符串和程序行为入手,往往能更快找到关键逻辑。

  僵尸网络取证则让我看到恶意代码和网络通信的结合。一个样本不是孤立运行的,它可能连接 IRC 服务器,加入频道,等待控制命令。分析恶意代码时,既要看本地行为,也要看网络行为。

  如果用一句话总结第 8 次实践: 它让我第一次感觉自己不是在“复现实验”,而是真的在做恶意代码分析和安全取证。


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

  这一部分是本篇博客的重点。我没有完全按 1-11 次实验顺序机械罗列,而是按照知识方向重新整理。


3.1 安全加固和检测技术

  本学期最早接触的是安全检测工具和加固方法。第 2 次实践中,我使用 Nmap 和 Nessus 对靶机进行扫描;第 3 次、第 5 次和后面的多次实验中,又反复使用 Wireshark、tcpdump、Snort、iptables 和 Honeywall。

  Nmap 让我学会从网络侧识别目标。通过主机发现可以判断哪些主机在线,通过 TCP/UDP 扫描可以发现开放端口,通过服务版本探测可以看到服务类型和版本,通过 OS 探测可以推测操作系统。不过我也发现,扫描结果并不总是完全准确。例如 Linux 靶机因为运行 Samba/NetBIOS 服务,可能被误判为 Windows。因此扫描结果需要结合实际环境和服务版本一起分析,不能完全依赖工具判断。

  Nessus 则让我理解漏洞扫描器的价值。它不是只告诉我们端口开放情况,而是把服务版本和漏洞库关联起来,给出风险等级和修复建议。通过 Nessus 扫描靶机,我能更快知道哪些服务值得重点分析。但同时我也认识到,扫描器只能发现“可能存在”的问题,最终是否能利用,还需要人工验证。

  Wireshark 和 tcpdump 是我本学期用得最多的流量分析工具。tcpdump 适合在命令行中快速抓取特定条件的流量;Wireshark 更适合逐层查看协议字段和还原会话。通过它们,我分析过 TELNET 明文登录、ARP 欺骗、ICMP 重定向、SYN Flood、SMB 漏洞利用、浏览器挂马下载等流量。

  Snort 和 iptables 则代表防御侧。iptables 让我学会了用规则控制主机访问,Snort 让我理解了入侵检测系统如何通过规则和统计特征发现攻击。Honeywall 进一步让我看到蜜网环境中如何既诱捕攻击,又防止蜜罐反向危害外部网络。

  安全加固方面,我总结出几个常见方向:关闭不必要端口,限制服务访问来源,及时修补漏洞,禁用明文协议,配置防火墙白名单,使用 IDS 检测异常流量,保留日志用于取证,Web 应用中使用参数化查询和输出编码。它们共同目标都是减少攻击面、阻断攻击路径、提高发现能力。


3.2 Web 安全技术

  Web 安全部分主要集中在第 10 次实践,也延伸到第 11 次网页挂马分析。

  SQL 注入让我理解了拼接 SQL 的危险。用户输入如果直接进入 SQL 字符串,就可能改变原本语句逻辑。登录绕过只是最基础的危害,UPDATE 注入还能修改数据库敏感字段。通过实际修改 Samy 的薪水,我认识到 SQL 注入不仅能“查”,还能“改”,甚至在更高权限下可能删除数据或控制数据库服务器。

  XSS 则让我认识到浏览器端安全同样重要。最开始的 alert() 只是为了验证脚本能执行,后面读取 Cookie、外带 Cookie、自动加好友、自动修改资料、XSS 蠕虫,才真正体现了 XSS 的危害。XSS 的危险在于脚本运行在受害者浏览器中,可以借助受害者登录态发起请求。

  CSRF 和 XSS 在实验中也有所联系。XSS 脚本可以自动发请求,本质上利用了浏览器会自动携带 Cookie 的特点。防御时不能只依赖 Cookie 识别身份,还需要 Token、SameSite Cookie、Referer/Origin 校验等机制。

  文件上传漏洞虽然不是我实践报告里最核心的内容,但课程知识点中也提到过。其风险主要来自后缀检查不严、MIME 类型信任客户端、上传目录可执行、文件名可控等问题。防御时应采用白名单、重命名、目录隔离、禁止执行权限和内容检测。

  我对 Web 安全最大的总结是:Web 漏洞往往不是工具问题,而是代码边界问题。SQL 注入是把输入当 SQL 执行,XSS 是把输入当脚本执行,CSRF 是把请求当成用户真实意愿。


3.3 逆向分析技术

  逆向分析主要体现在第 8 次、第 9 次和第 11 次实践中。

  Windows PE 分析中,我使用了 file、strings、PEiD、UPX、超级巡警脱壳器、IDA Pro、W32Dasm 和 Process Explorer。基本流程是先判断文件类型,再判断是否加壳,如果加壳就先脱壳,然后提取字符串、查看导入函数、分析控制流和关键 API。RaDa 样本就是典型案例:加壳前字符串很少,脱壳后出现大量 VB6 运行时函数和行为线索。

  crackme 分析让我体会到字符串和程序输出的重要性。很多简单程序会把关键提示和目标字符串直接放在二进制中,通过 Strings 可以快速找到突破口。再结合流程图和函数调用,就能判断程序逻辑。

  Linux ELF 分析则让我接触了 objdump、xxd 和 GDB。通过反汇编可以找到函数入口、call 指令、返回地址和栈布局;通过 xxd 可以直接修改机器码;通过 GDB 可以观察运行时内存。这些工具让我对程序执行过程有了更底层的认识。

  第 11 次网页挂马中的二进制木马分析,也让我看到逆向在取证中的作用。通过字符串可以看到下载地址、注册表路径、自删除脚本、服务伪装、进程注入相关 API 等内容。即使不完全反编译出源码,也能推断样本行为。


3.4 主流代码审计技术

  代码审计贯穿多个实验。PHP 审计主要出现在 SQL 注入实验中,重点是追踪用户输入如何进入 SQL。只要看到 $_GET$_POST 获取的数据未经处理就拼进 SQL,就要高度警惕。修复时使用 prepared statement,是最直接有效的方法。

  JavaScript 审计主要出现在 XSS 和网页挂马分析中。XSS 中要看用户输入是否被插入 DOM 并执行;网页挂马中要看是否存在隐藏 iframe、eval、document.write、unescape、ActiveX 创建、外部脚本加载等行为。尤其是恶意脚本经常使用 Base64、十六进制、八进制、packer 等混淆方式,审计时需要逐层还原。

  C 程序审计主要体现在缓冲区溢出实验。gets() 是典型危险函数,因为它不检查长度。类似的危险点还包括 strcpy()sprintf()scanf("%s") 等。审计 C 代码时,需要关注缓冲区大小、输入长度、边界检查、格式化字符串和命令执行函数。

  我现在对代码审计的理解是:它不只是找“危险函数”,更重要的是看数据流。用户输入从哪里来,经过了什么处理,最终进入了 SQL、HTML、命令行、文件系统还是内存,这些决定了漏洞类型和危害。


3.5 程序设计

  虽然这门课不是程序设计课,但几乎每次实验都离不开编程能力。

  脚本能力非常重要。无论是构造缓冲区溢出 payload,还是处理编码、计算 MD5、批量分析日志,都可以通过脚本提高效率。第 9 次实践中用 Perl 构造特定字节序列,本质就是通过程序精确控制输入。第 11 次网页挂马分析中,很多编码和混淆如果手工处理会很慢,用脚本会更方便。

  Shell 命令能力也贯穿整个课程。Linux 下配置网络、启动服务、修改规则、查看日志、分析二进制,都离不开命令行。刚开始我有些命令只是照着敲,后面逐渐理解每个参数的作用,这对排错帮助很大。

  C 语言和汇编基础对缓冲区溢出和逆向分析非常关键。如果不理解函数调用、栈帧、返回地址、寄存器和系统调用,就很难真正理解漏洞利用。Web 部分则需要 PHP、HTML、JavaScript、SQL 的基础,否则看不懂注入和 XSS 的根源。


3.6 计算机病毒与恶意代码技术

  恶意代码技术主要体现在第 8 次和第 11 次实践中。

  通过 RaDa 分析,我认识到恶意程序通常会包含多个模块:安装模块、持久化模块、C2 通信模块、命令解析模块、信息收集模块和攻击模块。一个恶意样本不一定很复杂,但只要能自启动、接收命令、执行操作,就已经具备后门特征。

  网页挂马分析中,我看到另一种传播方式:攻击者不是直接把木马发给用户,而是诱导用户访问网页。网页通过隐藏 iframe 加载恶意脚本,脚本触发浏览器漏洞,然后下载并执行 EXE。整个过程中,用户可能只看到一个 404 页面或普通网页。

  病毒、蠕虫、木马、下载者、僵尸程序之间既有区别,也可能组合。病毒强调感染文件,蠕虫强调自动传播,木马强调伪装和远程控制,下载者负责拉取更多恶意程序,僵尸程序则连接 C2 接收命令。现实样本往往不会只属于一种类型。


3.7 网络溯源及防范技术

  网络溯源不是简单查一个 IP,而是还原事件经过。本学期多次实践都涉及溯源:第 2 次查询域名和 IP 归属,第 3 次从 pcap 中识别扫描源,第 6 次还原 NT 蜜罐被攻击过程,第 11 次从网页入口还原挂马链。

  我理解的溯源需要回答几个问题:攻击从哪里来,目标是谁,使用了什么漏洞,攻击是否成功,成功后做了什么,留下了哪些文件或连接,应该如何防范。只有把这些问题连起来,才算形成完整分析。

  防范方面,单纯封禁 IP 并不够。攻击者可以换 IP,但漏洞如果还在,风险仍然存在。因此更重要的是修补漏洞、关闭不必要服务、使用安全协议、最小权限、网络隔离、日志留存、IDS 检测和应急响应。


3.8 加密解密技术

  本学期接触到的加密解密更多体现在哈希、编码和混淆分析中。

  MD5 用于样本标识和 URL 映射,第 11 次网页挂马中需要对 URL 做 MD5 后到 hashed 目录取文件。SHA1 出现在 SQL Lab 的密码哈希中。通过这些实践,我理解了哈希不是加密,它不能被正常“解密”,更像是数据指纹。

  编码和混淆在网页挂马中非常常见。Base64、XXTEA、\x 编码、八进制编码和 JavaScript packer 都被用来隐藏真实脚本。分析时要逐层解码,每解开一层都观察是否还有 eval、document.write 或新的外部链接。

  这部分让我认识到,恶意代码经常不是靠强加密保护,而是靠多层混淆增加分析成本。分析者需要耐心,不要看到第一层乱码就放弃。


3.9 信息系统运行维护

  这门课让我意识到,网络安全实践很大一部分其实是在做系统运维和排错。

  Linux 下,我需要配置 IP、查看路由、修改 /etc/hosts、启动 Apache/MySQL/PostgreSQL、配置 Snort、修改 iptables、关闭 ASLR、设置 execstack、使用 GDB 和 objdump。Windows 下,我需要使用命令提示符、资源监视器、IE、注册表、Process Explorer、IDA、W32Dasm 等工具。

  很多实验失败并不是因为原理错了,而是环境问题:网卡模式不对、IP 不在同一网段、服务没启动、权限不足、浏览器版本不匹配、工具路径错误、虚拟机无法连通。通过一次次排错,我对系统环境的敏感度提高了很多。


3.10 网络协议分析

  协议分析是整门课的主线之一。ARP、ICMP、TCP、UDP、DNS、HTTP、TELNET、SMB、IRC 都在实践中出现过。

  ARP 欺骗让我看到二层协议缺少认证的风险;ICMP 重定向让我看到控制报文可能被滥用;TCP 相关实验让我理解 SYN、ACK、RST、序列号、半连接队列和会话劫持;TELNET 抓包让我看到明文协议的危险;SMB 分析让我理解 Windows 和 Samba 服务的攻击面;IRC 分析让我接触到早期僵尸网络 C2 通信。

  以前学协议更多是为了记概念,现在我开始从攻防角度看协议:每一个字段既可能用于正常通信,也可能成为攻击载体或取证线索。


3.11 数据库

  数据库部分主要来自第 10 次 SQL 注入实验。我熟悉了 MySQL 的基本操作,包括查看数据库、切换数据库、查看表、执行 SELECT 查询和 WHERE 条件查询。

  更重要的是,我理解了数据库安全和应用安全之间的关系。数据库本身可能没有漏洞,但应用层如果把用户输入拼接进 SQL,就会导致严重问题。另一方面,如果数据库账号权限过大,SQL 注入后的危害也会被放大。

  安全数据库使用应该包括:参数化查询、最小权限、敏感字段保护、密码加盐哈希、避免直接暴露错误信息、定期备份和审计操作日志。


3.12 法律与伦理

  网络攻防技术必须在授权范围内使用。本课程所有实验都在本地虚拟机、课程靶场、Metasploitable、Honeywall 或老师提供的 pcap 样本中完成,不涉及未授权真实目标。

  这门课让我更加明确:工具本身没有善恶,但使用场景决定性质。Nmap 可以用于资产盘点,也可以被滥用于扫描公网;Metasploit 可以用于授权测试,也可以被用于入侵;Wireshark 可以用于排障,也可以被用于窃听明文信息。

  学习安全技术必须遵守法律边界,尤其是不得非法侵入他人系统、不得非法获取数据、不得传播恶意程序、不得攻击破坏网络服务、不得泄露个人隐私信息。


3.13 基础知识

  这门课虽然是实践课,但背后离不开计算机基础。

  计算机网络基础帮助我理解 IP、子网、网关、路由、NAT、端口和协议;操作系统基础帮助我理解进程、权限、服务、文件系统、注册表、内存和系统调用;计算机组成和汇编基础帮助我理解栈、寄存器、机器码和控制流;数据库基础帮助我理解 SQL 注入;Web 开发基础帮助我理解 XSS、CSRF 和网页挂马。

  我最大的感受是,网络安全不是脱离基础知识单独存在的方向。基础越扎实,理解攻防越快;基础薄弱时,工具报错都不知道从哪里排查。


4. 课堂的收获与不足

4.1 收获

  这门课最大的收获,是让我把很多以前只在书上看过的概念真正做了一遍。

  以前看到 SQL 注入,只知道它能绕过登录;现在我知道它为什么能绕过,后端 SQL 是怎样被改写的,prepared statement 为什么能防住。

  以前知道 TELNET 明文传输不安全;现在我用 Wireshark 亲眼看到用户名和密码出现在 TCP 流里。

  以前知道缓冲区溢出能控制程序执行流;现在我知道怎样计算偏移,怎样覆盖返回地址,怎样构造 shellcode,怎样处理 ASLR 和 NX。

  以前知道恶意代码会自启动、会连接 C2;现在我知道这些行为可以从字符串、注册表路径、API、网络请求和脚本中找到证据。

  另外,这门课让我体验了攻防两端。作为攻击方,我关心漏洞能不能利用、session 能不能打开;作为防守方,我关心流量里有什么证据、日志里有没有痕迹、漏洞应该怎么修。两个视角结合起来,才更接近完整的安全理解。

4.2 不足

  我也清楚自己还有不少不足。

  首先,有些实验前期还是偏“照着步骤做”,真正理解原理是在写报告时才补上。如果以后继续学习安全,我应该在动手前先画攻击流程图,明确每一步为什么要做。

  其次,逆向分析能力还比较初级。目前我主要依赖字符串、工具识别和简单流程图。如果遇到复杂混淆、反调试、动态解密的恶意代码,我还需要继续学习汇编、Windows API、调试器和自动化分析。

  第三,防御能力还停留在实验级。比如我会写 iptables 和 Snort 规则,但真实网络中如何设计策略、如何减少误报、如何和日志平台联动,还需要更多实践。

  最后,报告写作也需要继续改进。有些实验过程很长,截图很多,容易写成流水账。以后写技术博客时,应该更加突出“问题—分析—证据—结论”这条线,让读者更容易抓住重点。


5. 总结

  回顾 11 次实践,这门课的内容确实很多,也很杂。但如果把它们连起来看,其实是一条完整的网络攻防学习路线。

  一开始搭建蜜网环境,是为了有安全可控的实验场地;随后做信息收集和扫描,是为了了解目标;再通过抓包和协议分析看懂网络流量;接着做协议攻击和防御检测,理解攻防基础;然后进入 Windows 和 Linux 系统渗透;再学习恶意代码分析、缓冲区溢出和 Web 安全;最后通过浏览器挂马和取证分析,把客户端攻击链也补上。

  这门课让我认识到,网络安全不是单点技能,而是一种综合能力。会用工具只是开始,真正重要的是理解工具背后的原理;打下靶机只是结果,更重要的是知道为什么能打下、留下了什么痕迹、应该如何修复;分析一个样本也不是终点,还要能把分析过程写清楚,让别人看得懂。

  如果用一句话总结这一学期: 攻击让我理解风险,防御让我理解责任,取证让我理解证据,写报告让我重新梳理知识。

  这一学期我还远远谈不上熟练,但至少已经从“只知道概念”走到了“亲手做过一遍”。这对我来说,就是这门课最大的意义。


6. 参考文献

[1] 诸葛建伟.《网络攻防技术与实践》课程相关实验指导资料.

[2] SEED Labs. SQL Injection Attack Lab.

[3] SEED Labs. Cross-Site Scripting Attack Lab.

[4] The Honeynet Project. Scan of the Month 系列案例资料.

[5] Nmap 官方文档:https://nmap.org/docs.html

[6] Wireshark 官方文档:https://www.wireshark.org/docs/

[7] Snort 官方文档:https://docs.snort.org/

[8] Metasploit Framework 官方文档:https://docs.metasploit.com/

[9] OWASP. SQL Injection Prevention Cheat Sheethttps://cheatsheetseries.owasp.org/

[10] OWASP. Cross Site Scripting Prevention Cheat Sheethttps://cheatsheetseries.owasp.org/

[11] Microsoft. MS08-067 Security Bulletin.

[12] CVE Details. CVE-2007-2447 Samba username map script Command Execution.

[13] Aleph One. Smashing The Stack For Fun And Profit.

[14] UPX 官方项目文档:https://upx.github.io/

[15] IDA Pro / Hex-Rays 官方文档:https://hex-rays.com/documentation/

[16]20253909 2025-2026-2 《网络攻防实践》第1周作业

[17]20253909 2025-2026-2 《网络攻防实践》第2次作业

[18]20253909 2024-2025-2 《网络攻防实践》实验三

[19]20253909 2024-2025-2 《网络攻防实践》实践4报告

[20]20253909 2025-2026-2 《网络攻防实践》实践五报告

[21]20253909 2025-2026-2 《网络攻防实践》实践六报告

[22]20253909 2025-2026-2 《网络攻防实践》实践七报告

[23]20253909 2025-2026-2 《网络攻防实践》实践八报告

[24]20253909 2024-2025-2 《网络攻防实践》实践九报告

[25]20253909 2024-2025-2 《网络攻防实践》实践十报告

[26]20253909 2024-2025-2 《网络攻防实践》实践十一报告

posted @ 2026-06-15 16:02  帅哥KID23  阅读(20)  评论(0)    收藏  举报
MENU
☀️
📖
Jerome-KID
网络安全 · 技术笔记
博客导航
🏠博客首页 📁文章分类 🗂文章归档 🏷标签索引
课程相关
🎓班级首页 👨‍🏫老师博客
个人
✏️写新随笔 👤博客园主页 ✉️联系我 📡RSS 订阅
🏠
A+
A−
👍
🔗
💬
🖨
📋 目录
1 / 1

⌨ 键盘快捷键

  • 显示此帮助?H
  • 切换夜间模式D
  • 打开/关闭目录T
  • 回到顶部G
  • 图片上一张 / 下一张
  • 关闭弹窗Esc
  • 放大 / 缩小字号+
📖 上次阅读到 68%
☀️ 早上好
🎉
您已读完全文
感谢您的认真批阅!