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

1. 内容总结

  在这个学期的学习中,我们一共进行了十一次上机实践。这些实践从最基础的虚拟机环境搭建开始,一步步过渡到网络底层协议、操作系统漏洞利用、恶意代码分析以及Web应用安全。下面总结这十一次实践的具体内容。

  第1次实践 网络攻防实验环境的原理与构建方法
  这是整个课程的基础。在没有一个隔离且可控的网络环境之前,直接进行攻防测试是存在风险的。实验中,我通过虚拟网络编辑器划分了仅主机模式模拟内网和NAT模式模拟外网。外网部分安装了Kali Linux和Windows XP作为攻击机;内网部署了Windows 2000 Server、Metasploitable2和SEED Ubuntu作为靶机。比较花时间的是Honeywall蜜网网关的架设,我为它分配了三块虚拟网卡,并在其配置界面设置了透明网桥。这样做的目的是在不改变攻击机和靶机原本IP路由的情况下,记录所有进出内网的数据包。实验中途遇到了无法在主机浏览器访问网关Web界面的问题,后来通过底层终端添加IP白名单放行规则成功解决。

  第2次实践 网络信息收集与漏洞扫描
  这次实践主要练习渗透测试前期的信息收集工作。在开源情报收集方面,我使用了whois和nslookup命令,获取了目标域名的注册商、联系邮箱和DNS解析IP;同时通过资源监视器抓取了通信软件的UDP流量,结合在线IP查询找出了好友的大致地理位置。在主动探测部分,我练习了Nmap扫描器的常见命令,对Metasploitable2靶机进行了扫描,查出了它开放的端口及Linux内核版本。随后在Kali中安装了Nessus扫描器,通过终端调用命令更新插件,最终出具了包含VNC弱口令、Bindshell后门等漏洞的完整扫描报告。

  第3次实践 网络嗅探与协议分析
  这次实验学习使用抓包工具分析网络流量。首先使用tcpdump命令抓取了本机访问门户网站的流量,并在Wireshark中通过端点统计功能,直观分析了浏览器后台连接的多个分布式CDN服务器节点。其次针对局域网靶机的23端口,通过Wireshark的追踪TCP流功能,截获了完整的Telnet登录明文,包括密码和退格转义字符,验证了无加密协议的风险。最后对一份真实的蜜罐日志进行逆向取证,通过过滤特定的TCP标志位,提取了攻击者的IP,并根据固定的窗口大小和生存时间,判定攻击者使用了Nmap执行TCP半开扫描。

  第4次实践 网络层和传输层协议攻防
  这次实验验证了TCP/IP协议早期设计时缺少认证机制的问题。在链路层,我使用了arpspoof工具,不断向靶机发送伪造的ARP应答包,把网关的MAC地址替换成了攻击机的MAC地址,造成了局域网内的ARP欺骗。在网络层,用netwox工具箱里的特定工具伪装成网关,向靶机发送ICMP重定向报文,把它的网络下一跳地址改到了攻击机上。在传输层,利用hping3工具伪造随机IP向靶机发起了SYN洪水攻击,导致靶机的半连接队列被占满。最后结合Ettercap工具,对局域网内的TCP会话注入了RST复位包,断开了两台虚拟机之间正常的Telnet连接。

  第5次实践 网络安全防范技术
  前几次都是攻击,这次开始学习防火墙配置和入侵检测。防火墙方面,我学习了Linux下的iptables命令。为了防止主机被探测,我添加了规则拦截ICMP报文;然后练习了配置白名单的思路,先允许特定主机访问网站,再在后面加一条拒绝规则拦截其他所有IP。入侵检测方面,使用了Snort工具对以前的攻击流量包进行离线分析。从输出的统计模块里,看到了数万次的SYN握手记录,从而判断出流量里包含了高频的端口探测行为。此外还查看了蜜网网关里的防火墙脚本,了解了它是如何限制蜜罐每天向外发起的连接数量。

  第6次实践 Windows操作系统应用层安全攻防
  这次实践针对Windows系统的老旧漏洞。在实操环节,打开Metasploit搜索并使用了MS08-067的漏洞模块。这个漏洞利用了SMB服务的缓冲区溢出,配置好目标IP和反弹TCP的载荷后,很顺利就拿到了Win2k靶机的命令行控制权。在取证分析环节,拿到了一份NT蜜罐的流量日志。在Wireshark里过滤HTTP请求后,发现攻击者提交了包含特殊字符的路径,触发了IIS目录遍历漏洞。接着发现攻击者利用漏洞执行了FTP命令,让蜜罐主动去下载netcat工具建立后门,并且还下载了特定程序试图把系统的密码哈希值给导出来。

  第7次实践 Linux操作系统安全攻防机制
  这次是针对Linux靶机的攻防。攻击方面,靶机上的Samba服务配置有问题,在使用非默认用户名映射脚本时没有对输入参数过滤。我在Metasploit里调用对应模块,在用户名参数里加上了反引号包裹的Shell命令,触发了命令注入漏洞拿到root权限。防守和抓包分析方面,从Wireshark里过滤了139端口的TCP流,在SMB协议的数据包里找到了攻击者注入的代码,一段结合了命名管道和网络工具的反弹Shell脚本。另外还看到了攻击者执行的信息收集命令,以及用删除命令清理痕迹的操作。

  第8次实践 恶意代码分析与逆向工程
  这次实验使用各种工具去分析未知程序。首先是RaDa木马样本,先用命令查看了它的格式,查出加了压缩壳。用脱壳软件把壳去掉后导入IDA Pro查看。在字符串窗口找到了作者的名字,还有程序准备修改注册表实现开机自启的路径,以及带有DDoS攻击功能的提示字符串。然后是Crackme程序的破解,用IDA Pro看它的流程图,发现它除了比对输入的密码之外,还会检查自身的文件名。修改文件名并带上正确参数运行后看到了破解成功的提示。最后对一个僵尸网络的抓包文件进行分析,分离出流量找到了和IRC服务器通信的记录,还原了靶机被感染并加入僵尸网络的经过。

  第9次实践 软件安全攻防--缓冲区溢出和shellcode
  这次实验偏向底层,研究怎么利用C语言函数的溢出漏洞。第一步手工修改文件,用十六进制编辑器把调用正常函数的汇编指令直接改成了跳转到后门函数的地址。第二步利用栈溢出,分析了函数的栈帧布局,算出需要输入多少字节的垃圾字符才能碰到返回地址,用Python生成字符串把返回地址覆盖成了后门函数的地址。第三步自己注入Shellcode并运行。关闭系统的地址随机化并把程序的栈改成可执行,在调试时发现环境会有细微差别导致程序报段错误。通过查看Linux的内核日志找到了崩溃地址,修正了偏移量,最终让程序执行了注入的代码。

  第10次实践 Web应用程序安全攻防
  这次练习常见的Web漏洞。在SQL注入实验里,在用户名框输入闭合字符把前面的查询语句闭合,把后面的密码检查代码注释掉,直接登录进了后台。在修改个人信息的页面,把输入框里的内容改成了一段更新语句,把别人的薪水改成了自己的学号。之后修改了后端的PHP代码,把拼接查询改成了预编译语句修复了漏洞。在跨站脚本实验中,写了一段脚本让别人的浏览器自动添加好友。因为浏览器在渲染网页时会把特殊符号自动转义,我使用了读取源码文本的方法重新组装,实现了蠕虫自动复制传播。防御方面配置了Apache服务器,加上了内容安全策略响应头,浏览器收到响应头后拒绝了内联脚本的执行。

  第11次实践 Web浏览器安全攻防与恶意代码取证
  这次实验模拟了用户访问恶意网页中招的过程。用Metasploit调出了两个针对IE浏览器的旧漏洞。为了不被轻易发现,把含有漏洞的URL转换成了十六进制数组放在隐藏框架里。靶机用IE浏览器打开伪装的网页就会被植入木马并反弹Shell。在分析挂马网页时,发现代码被层层加密。把代码放进解密网站里,解了一层Base64发现里面还套了一层对称加密。猜出密钥后解密看到了原本的代码。这些代码依次去探测电脑上有没有安装特定的控件,如果有漏洞就下载对应的木马。最后比对了下载下来的文件哈希值,发现攻击者用了不同的漏洞但最终下发的是同一个木马本体。


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

  我最喜欢且自认为做得比较好的一次实践是第10次实践 Web应用程序安全攻防。

  之所以觉得这次做得好,首先是因为Web攻防的反馈非常直观,做起来比较有成就感。不像之前做缓冲区溢出实验时算错一个字节程序就直接崩溃;在SQL注入实验中,只要逻辑对了,输入特定的闭合字符后敲下回车,后台管理界面就直接出来了。这种能够马上看到效果的过程,让我对漏洞利用有了更真实的感受。更重要的是,这次实验要求我们不仅要会攻击还要会修复。我亲自打开了靶机里的PHP文件,把原本存在缺陷的代码替换成了预编译的写法,通过重新测试确认漏洞被堵上,这让我觉得学到的知识非常实在。

  其次,在写跨站脚本蠕虫的时候,我花了很多时间去调试排错。一开始写的代码只能感染一个人,再去感染第二个人时就报错了。打开浏览器控制台慢慢排查,才发现是因为页面树解析时会自动把某些特殊符号给转义掉,导致伪造的请求格式被破坏。为了解决这个问题,我改变了思路,使用了JavaScript读取文本的方法,直接从内存里把当前函数的源码读取出来,这就避开了网页渲染时的转义问题。看到蠕虫能在各个账号之间自动传播时,觉得自己的思考过程是值得的。

  最后是关于防御策略的部署。之前了解过使用应用层代码去过滤字符的方法,但我查资料后发现现在更通用的是部署内容安全策略。我尝试在系统里修改Web服务器的配置,加上了对应的响应头。当再次访问带蠕虫的页面时,控制台直接报红拦截了脚本执行。这种通过底层配置解决同类问题的思路,让我对安全防护的架构有了更清晰的认识。


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

  按照课程的要求和知识体系,我将本门课学到的知识梳理成以下几个主要部分:

3.1 安全加固和检测技术

  在安全检测方面,我学会了使用Nmap和Wireshark等基础工具。熟悉了Nmap的端口扫描、服务识别功能,了解了它怎么通过TCP半开扫描等方式来探测目标。学会了使用Nessus和Sqlmap等自动化工具。Nessus能够依据漏洞库发现系统缺失的补丁、弱口令等;Sqlmap则能自动化检测出SQL注入的类型并读取数据。
  在安全加固方面,明白了系统安全基线配置的重要性,比如定期进行补丁管理和账户密码策略的加强。掌握了基于Linux平台制定加固方案的能力,能够根据检测结果写出关闭冗余端口、限制可疑IP访问的防火墙规则。

3.2 Web安全技术

  重点学习了Web领域的常见漏洞及其修复方法。
  对于SQL注入,熟悉了联合查询注入、盲注等测试手法。明白了防范SQL注入最好的办法不是去过滤所有的标点符号,而是使用预编译语句,让数据库把用户的输入当成单纯的数据对待,不进行语法解析。
  对于跨站脚本攻击,了解了存储型和反射型漏洞的区别,学会了如何利用漏洞执行窃取凭证的代码。防范上除了要对输入进行过滤和输出进行转义外,配置内容安全策略也是很有效的手段。
  对于跨站请求伪造,懂得了它利用了浏览器自动带凭证的特点,防御时需要在表单里添加不可预测的验证码。对于文件上传漏洞,了解了仅靠前端校验后缀是容易被绕过的,还需要在后端进行类型验证和重命名处理。

漏洞类型 攻击原理与利用目标 核心防御修复方案
SQL注入 在输入框拼接数据库语句片段,欺骗后端引擎执行,导致数据泄露 推行预编译语句和参数化查询;配置最小数据库账户权限
跨站脚本 恶意脚本被渲染至受害者浏览器中执行,窃取凭证或构建蠕虫传播 实施严格的输出实体转义;部署底层内容安全策略
跨站请求伪造 利用浏览器携带同域凭证机制,诱导已登录用户发送敏感请求 强制校验请求来源;在表单请求中引入随机验证令牌

3.3 逆向分析技术

  掌握了对二进制文件进行基础逆向分析的工具和方法。
  静态分析方面,学会了使用反汇编工具对程序进行代码还原,能够通过查看函数调用关系、控制流图以及提取明文字符串,来判断程序的大致逻辑。
  动态分析方面,了解了调试器的使用方法,学会在关键函数处设置断点,通过监控寄存器和内存变化来弄清楚程序的执行过程。此外理解了加壳技术的作用,学会了使用扫描工具识别壳的类型,以及使用脱壳工具恢复程序的真实代码以便进一步分析。

3.4 主流代码审计技术

  在分析各种漏洞产生的原因时,积累了一些代码审计的经验。熟悉了PHP、Python等语言中常见的安全缺陷。例如在代码中看到能够执行系统命令或代码的危险函数时,如果发现它们的参数是从外部用户那里获取的,且没有经过严格过滤,就可以判断这里存在命令注入或逻辑漏洞风险。通过审计代码,能够找出那些未过滤的用户输入点,从源头上发现安全隐患。

3.5 程序设计

  在课程实践中,编程语言是必不可少的工具。Python用得比较多,比如利用网络库写一些简单的请求脚本,或者在缓冲区溢出实验中写一小段脚本来精确生成包含特定字节的载荷。了解了C语言在内存管理上的特点,明白了如果不严格限制变量长度就会导致缓冲区溢出。通过这些练习具备了编写简单漏洞利用脚本和自动化小工具的基础能力。

3.6 计算机病毒技术

  通过恶意代码分析实验,理解了计算机病毒、蠕虫、木马在概念和行为上的区别。病毒通常需要寄生在其他正常文件上;蠕虫具有自我复制和主动通过网络漏洞传播的特性;木马则通常伪装成正常软件在后台建立连接。
  了解了它们隐藏自己的常见方式,比如进程注入、修改注册表启动项来达到长期潜伏的目的。在防范措施上,认识到了沙箱隔离和动态行为监控对防范未知病毒的重要性。

3.7 网络溯源及防范技术

  在分析蜜罐和僵尸网络的日志时锻炼了溯源分析能力。能够通过日志和抓包文件分析出攻击源的IP地址、攻击发生的时间线,并根据流量特征识别出具体的攻击手法。例如连续大量的连接失败一般是暴力破解,极短时间内超大规模的半开连接报文则是拒绝服务攻击特征。
  掌握了结合命令行过滤工具进行排查的思路。在确定攻击来源和方式后,能够制定相应的防御策略,如在防火墙上进行IP封禁、在网络边界配置流量清洗规则等。

3.8 加密解密技术

  在网页挂马的解密分析中,对各类加密技术有了实际的接触。
  熟悉了对称加密和非对称加密的原理区别及适用场景。对称加密加解密用同一把钥匙,速度比较快;非对称加密公钥加密私钥解密,解决了密钥传输的安全问题。
  掌握了哈希算法单向、不可逆的特性,常用来校验文件的完整性或保存密码。理解了数字签名验证的流程,即如何利用非对称加密和哈希算法来确认数据的来源和防止数据在传输过程中被篡改。

加密/编码类型 运作机制与特性说明 实战分析应用
对称加密 加解密使用共享的同一把密钥,运算速度较快 分析网页木马时,提取算法密钥以还原被加密的脚本
非对称加密 使用一对公私钥,加密和解密分开,安全性高 理解底层安全协议握手过程及数字签名的认证基础
哈希散列 将任意数据映射为固定长度摘要,单向不可逆 为恶意样本计算唯一数字指纹,进行去重与关联比对
数据编码 不涉及密钥,改变数据格式以适应不同的传输协议 结合数据处理平台,剥离恶意代码逃避检测的复杂编码

3.9 信息系统运行维护

  在搭建和使用各种虚拟机靶场的过程中,熟悉了系统管理和排障的操作。使用了各种命令行工具来查看系统状态、管理进程和服务。当遇到服务启动失败、网络不通等问题时,学会了查看系统日志、排查配置文件,掌握了基本的系统备份和故障处理技能,保证了实验环境的正常运行。

3.10 网络协议分析

  通过多次使用Wireshark抓包,对网络协议的理解变得更加清晰。掌握了TCP/IP协议栈的工作过程,特别是TCP的三次握手、状态转移机制以及UDP的无连接特性。熟悉了HTTP协议的请求方法、状态码和基本流程。在面对异常网络现象时,能够抓取流量通过分析协议字段找出问题所在,例如判断出带有恶意代码的通信报文。

3.11 数据库

  在学习SQL注入的过程中对数据库的操作有了进一步的熟悉。了解了常见关系型数据库的基础操作,掌握了基本的查询、更新语句。通过理解数据库的表结构和查询机制,能够更清晰地识别出可能导致注入的危险代码写法,并知道如何通过调整数据库配置和代码逻辑来修复这些漏洞,保证业务数据的安全。

3.12 法律

  在法律合规方面,本门课强调了三法两条例的红线要求。
  三法指的是《中华人民共和国网络安全法》、《中华人民共和国数据安全法》以及《中华人民共和国个人信息保护法》。两条例是指《关键信息基础设施安全保护条例》和《网络安全审查办法》。这些法律法规构成了网络空间治理的基础,明确规定了各类组织和个人在网络活动中的权利和义务。
  学习这些内容让我明白,网络攻防技术必须在法律授权的框架内使用。在没有获得目标资产所有者明确授权的情况下,进行端口扫描、漏洞探测或者数据获取都属于违法行为,甚至可能触犯刑法。因此我们在课程中的所有安全测试都严格限制在本地搭建的虚拟机实验靶场中进行。掌握技术是为了维护网络安全,而不是破坏规则。

3.13 基础

  网络攻防的底层依然是计算机科学的基础学科。
  计算机组成原理方面,了解了内存地址分配、寄存器作用以及小端字节序的概念,这在构造缓冲区溢出地址时非常重要,决定了内存数据的读写顺序。操作系统方面,理解了进程管理、内存分页以及权限模型,有助于分析恶意软件如何进行权限提升或隐藏进程。计算机网络的基础知识则帮助我更快地理解网络协议栈的工作方式和抓包数据中的字段含义。这些基础课程共同构成了理解安全技术的垫脚石。


4. 课堂的收获与不足

  主要的收获:
  这门课让我把以前学过的许多孤立的计算机知识串联了起来。在搭建靶场、扫描漏洞、分析抓包数据和执行攻击的过程中,我不再只是死记硬背网络连接的过程,而是直观地看到了数据包在网络中的传递,我也不再只知道缓冲区溢出是个名词,而是亲手计算了堆栈的偏移量。
  此外,这门课培养了我从攻与防两个不同角度看待问题的能力。在作为攻击者时,我学会了如何寻找系统的薄弱点,理解了漏洞是如何被利用的;而在作为防守者分析日志时,我明白了任何攻击都会在系统中留下痕迹。这种结合实际操作的体验,让我对网络安全的理解变得更加具体全面,建立起了整体的防护意识。

  存在的不足与改进方向:
  在实践过程中,我也发现了自己的一些短板。首先,在编程和自动化脚本编写方面还有所欠缺。在面对重复性工作或者需要构造复杂利用代码时,我有时还比较依赖现成的综合性工具。如果让我完全从零开始用代码去复现一个底层漏洞的通信过程,我的开发能力还不太够,还需要进一步加强编程训练。
  其次,对于底层机制和部分逆向分析的掌握还不够熟练。在遇到汇编代码比较长或者有反调试机制的程序时,往往需要花费大量时间去查阅资料,分析起来比较吃力。在以后的学习中,我需要更加注重基础代码能力的提升,多去钻研底层的运行原理,不仅仅停留在会使用安全工具的层面,争取能够独立分析和解决更复杂的安全问题。


5. 参考文献

  1. 第1次作业:网络攻防实验环境的原理与构建方法
  2. 第2次作业:网络信息收集与漏洞扫描
  3. 第3次作业:网络嗅探与协议分析
  4. 第4次作业:网络层和传输层协议攻防
  5. 第5次作业:网络安全防范技术
  6. 第6次作业:Windows操作系统应用层安全攻防
  7. 第7次作业:Linux操作系统攻防
  8. 第8次作业:恶意代码分析实践
  9. 第9次作业:软件安全攻防--缓冲区溢出和shellcode
  10. 第10次作业:Web应用程序安全攻防
  11. 第11次作业:浏览器安全攻防实践
posted @ 2026-06-17 15:45  俞长灿  阅读(5)  评论(0)    收藏  举报