第12次作业 《网络攻防实践》课程总结

内容总结

第一次作业 攻防环境搭建 该实验主要内容为:VMware虚拟机安装,蜜网网关(蜜罐)安装,虚拟机网段划分,网络拓扑图构建。

第二次作业网络信息收集与扫描 该实验主要内容为:渗透过程中的信息搜集,nmap端口扫描器使用,Nessus漏洞扫描器常规网站扫描

第三次作业网络嗅探与协议分析 该实验主要内容为使用tcpdump和Wireshark对访问网站、Telnet登录等网络行为进行抓包分析,并对listen.cap中的网络扫描行为进行流量分析取证。

第四次作业TCP/IP协议栈攻击 该实验主要内容为借助kali arpspoof,wireshark,ettercap进行ARP缓存欺骗、ICMP重定向、SYN Flood、TCP RST 和TCP会话劫持等协议攻击实验。通过观察攻击效果。

第五次作业防火墙与入侵检测 该实验主要内容为配置防火墙规则,并使用Snort对给定pcap文件进行入侵检测,同时分析蜜网网关中防火墙与IDS/IPS规则的作用

第六次作业Windows远程渗透攻击 该实验主要内容为使用Metasploit对Windows靶机的MS08-067漏洞进行远程渗透攻击,并分析一次成功的NT系统破解攻击流量,并进行分析真实解接触攻击过程。

第七次作业Linux远程渗透攻击 该实验主要内容为使用Metasploit的Samba usermap_script模块攻击Metasploitable靶机,获取远程shell,并在攻防对抗中分析攻击者IP、目标端口、漏洞利用过程和执行命令。

第八次作业恶意代码分析 该实验主要内容为借助IDA以及脱壳工具,对木马程序进行逆向分析,并分析出其主要攻击流程以及攻击方式,在其中能发现很多有趣漏洞。

第九次作业缓冲区溢出攻击 该实验主要内容为,使用IDA重新patch二进制文件,更换关键汇编语句,实现程序劫持。再就是借助栈溢出漏洞,再程序执行过程中注入payload劫持函数运行。第三则是使用手动payload找到栈地址计算偏移获取最终shell权限。

第十次作业SQL注入与XSS跨站脚本攻击该实验主要内容为借助,seedhub平台对其内置靶场进行SQL注入攻击,以及XSS跨站脚本攻击,实现自动化蠕虫病毒。

第十一次作业Web浏览器渗透攻击与取证分析 该实验主要内容为浏览器渗透、网页木马取证和攻防对抗三个角度展开。攻击部分使用Metasploit构造MS06-014等浏览器漏洞利用页面;取证部分从最开始的start.html一步步展开,中间涉及,混淆解码,二进制逆向分析等,最终了解使用什么漏洞,如何绕过杀毒程序。

最喜欢且做得最好的实践是哪次?

在所有实践中,我最喜欢的是第九次实验,这次 PWN 漏洞分析与利用实验。相比于单纯使用现成工具进行漏洞扫描,这次实验需要结合 IDA Pro、GDB、Pwntools 等多种工具,对程序的执行流程、栈帧结构和汇编代码进行深入分析,让我对二进制安全有了更加直观的认识。

在实验过程中,我首先利用 IDA 对程序进行静态分析,了解了函数调用关系和程序逻辑,并通过修改 call foo 为 call getShell 完成程序补丁,体验了直接修改可执行文件控制程序流程的方法。随后,在栈溢出实验中,我借助 checksec 检查程序保护机制,分析 gets() 函数导致的缓冲区溢出漏洞,计算缓冲区、保存的 EBP 和返回地址之间的偏移,成功构造 Payload 覆盖返回地址,使程序跳转到 getshell() 函数获取 Shell。这一过程让我真正理解了函数调用栈的布局以及控制流劫持的原理。

更让我印象深刻的是 Shellcode 构造实验。为了保证攻击成功,我需要关闭地址随机化、结合 GDB 调试观察实际栈地址,并分析 gdb.debug 与普通运行方式导致的栈地址差异,不断调整返回地址和 Payload 布局,最终成功执行自己编写的 Shellcode。实验中遇到的问题和调试过程让我认识到,漏洞利用不仅需要掌握理论知识,还需要严谨的分析能力和耐心。

通过这次实践,我不仅掌握了栈溢出攻击、Shellcode 编写和二进制调试等核心技术,还进一步理解了栈保护(Stack Canary)、NX、PIE、ASLR 等安全机制的重要作用。这次实验综合性强、挑战性高、成就感十足,因此成为我印象最深刻、也是最喜欢的一次实践。

本门课学到的知识总结

第一次实验

该实验主要是是借助虚拟机来构建一个虚拟的攻防环境,使用winxpattacker,kali,seedubuntu作为攻击机,而win2kserver 和 metaubuntu作为靶机,来进行实验。在实验中间我学到的主要知识是在密网的配置上,因为很早就做过虚拟机的网关配置所以对我来说并不困难。

第二次实验

该实验主要是做渗透前的信息收集,在常规的渗透测试中,我认为最重要的就是信息收集环节,需要借助网上公开的信息,以及高级语法搜索来确认对方资产,甚至是网络拓扑环境,来协助后面的渗透测试攻击。

第三次实验

该实验偏底层一些,主要涉及到较为底层的一些网络协议,比如TCP/UDP协议等,让我更加直观的了解到真实的网络数据包在互联网中的传输过程,其中还了解到了telnet协议的不安全因素。关于telnet协议,在我初中的时候破解路由器,获取超级管理员密码将光猫改为桥接模式的时候早已经接触过,但那时候并不知道telnet的原理。包括在现在还有很多的路由器存在着telnet协议,不过现在开启方法较为困难。这次实验让我了解了最基础的网络通信协议,还在后面做了流量分析。

第四次实验

这次实验主要是在网络通信协议上来进行攻击,涉及到了ARP攻击、ICMP重定向、SYN Flood、TCP RST和TCP会话劫持。ARP主要cos 对方的物理机地址,并开启信息转发即可劫持对方流量同时让对方正常上网,ICMP重定向也是把流量往不该走的地方引;SYN Flood泛洪攻击主要做的是发出大量请求耗尽对方资源,攻击的是网络设施的可用性。TCP RST和会话劫持则是提供了一种更为粗暴的通信劫持过程,但实施起来相对困难,执行要求较高。

第五次实验

这次主要是iptables、Snort和蜜网网关规则分析。iptables就是防火墙规则,将所有的外网数据按照规则顺序进行过滤,是一种简单的防护手段,能够将大部分异常流量隔绝在外。Snort它靠规则和特征去匹配流量,并发出告警,可以选择留下日志来来做主要的流量分析行为,当然编写规则可以做快速的应急响应,在遭受到攻击后,对流量进行分析,很快就能写出新的流量防护规则来避免后续攻击。蜜网网关主要用来配置蜜罐,而蜜罐作为一种防守方设置好的陷阱,能够借助含有漏洞的服务抓取攻击者的网络指纹,在后续的溯源之中起到关键作用。但在整体实验中,蜜罐几乎没作用,除了感受一下网络的配置。

第6次实践:Windows远程渗透攻击

对于windows的漏洞,我最大的印象是永恒之蓝MS17-010.这次是使用的MS08-067。利用 Metasploit 对 MS08-067 漏洞进行攻击,通过配置目标地址、监听地址和 Payload,最终成功获取目标主机的远程 Shell。与利用 SMB 协议漏洞实现自动化传播、影响范围极大的“永恒之蓝”攻击相比,MS08-067 更像是一次典型的漏洞利用实践,重点在于理解漏洞原理、掌握渗透流程以及分析攻击后的行为,而不是依靠蠕虫机制进行大规模扩散。
攻击方关注的是 Session 是否建立成功以及后续控制能力,而防守方则需要结合 Wireshark 等工具分析网络流量,从数据包中定位源 IP、目标端口、漏洞利用特征以及攻击后的通信行为,逐步还原完整的攻击链路。相比于永恒之蓝这类更偏向自动化利用和大规模传播的攻击案例,本次实验更加注重漏洞利用、后渗透操作和取证分析的完整流程,因此让我对网络攻防有了更加深入和全面的认识。

第7次实践:Linux远程渗透攻击

第7次实践主要围绕 Linux 平台的远程渗透攻击展开,利用的是 Metasploitable 靶机上的 Samba usermap_script 漏洞。与第6次实践中利用 MS08-067 漏洞攻击 Windows 系统不同,这次实验并非典型的缓冲区溢出或系统级远程代码执行,而是由于 Samba 在处理用户名映射时未对外部输入进行安全过滤,将用户可控的数据直接拼接到 Shell 命令中执行,从而导致命令注入漏洞。

第8次实践:恶意代码分析

第8次实践涵盖了 RaDa 恶意样本分析、Crackme 逆向分析以及僵尸网络流量分析等多个内容,是一次综合性很强的实验。与前几次侧重于针对靶机进行漏洞利用不同,这次实践更偏向于对已有样本和数据进行静态、动态分析,通过提取和关联各种线索,还原程序的真实行为和运行机制。在 RaDa 恶意样本分析过程中,我体会到了脱壳的重要性。程序在加壳状态下,利用字符串提取工具很难获得有效信息,而完成脱壳后,大量隐藏内容逐渐显现,包括注册表键值、文件存储路径、远程通信地址以及部分作者信息等。这让我认识到,加壳技术虽然能够提高恶意程序分析难度,但通过正确的方法仍然可以逐步恢复其真实逻辑。我也找到了一些在实验指导书中没有涉及到的内容。Crackme 部分则让我对逆向分析有了更深入的理解。实验并不是一开始就要求分析复杂的汇编代码,而是结合程序提示信息、字符串内容以及关键跳转逻辑,逐步推断程序的验证流程和运行机制。这种由浅入深的分析方式降低了学习门槛,也帮助我建立了逆向分析的基本思路。僵尸网络流量分析进一步将文件分析与网络分析结合起来,通过对 IRC 通信、C2(命令与控制)服务器交互以及被控主机行为的观察,我能够在真实的数据包中对应恶意程序的网络活动。整个实践过程中,我最大的收获并非单纯掌握某个工具的使用,而是学会了将字符串信息、进程行为、注册表修改、文件操作以及网络连接等多方面证据进行关联分析,最终拼接出完整的恶意程序行为链路。这种综合分析能力对于恶意代码分析、事件响应和网络安全取证都具有重要意义。

第9次实践:缓冲区溢出攻击

第9次实践主要围绕缓冲区溢出攻击展开,也是整个课程中实践性和综合性都比较强的一次实验。实验内容包括利用 IDA Pro 对二进制程序进行静态分析、使用 GDB 进行动态调试、借助 Pwntools 编写利用脚本,以及通过构造 Payload 和 Shellcode 实现程序控制流劫持。利用 IDA 对程序进行反汇编分析,结合 checksec 工具检查目标程序的保护机制,发现其未开启 Stack Canary、PIE 等安全防护,并使用了存在安全隐患的 gets() 函数读取用户输入,为栈溢出攻击提供了条件。通过分析函数栈帧布局,我计算出缓冲区、保存的 EBP 和返回地址之间的偏移量,并构造 Payload 成功覆盖返回地址,使程序跳转到预留的 getshell() 后门函数,最终获取 Shell 权限。但更大的收获实际上是,在gdb调试过程中,不同的程序启动方式或者说附加方式会让程序的栈地址改变,即使关闭了ASLR也会因为不同的启动方式导致写的脚本和实际运行时的栈偏移不一样无法正确打通

第10次实践:SQL注入与XSS跨站脚本攻击

第10次实践主要围绕 Web 安全中的 SQL 注入和跨站脚本攻击(XSS)展开,之前我也做过很多网页的前后端开发。过去学习数据库开发和 Web 编程时,我更多关注的是系统功能是否能够正常实现,例如用户能否登录、数据能否正确存储以及页面是否能够正常展示。而使用了很多现成的框架避免掉了很多安全问题。而在本次实践中,我第一次真正站在攻击者的角度重新审视这些熟悉的功能,认识到许多设计不当的实现方式都可能成为安全漏洞。

第11次实践:Web浏览器渗透攻击与取证分析

第11次实践主要围绕浏览器渗透攻击与网页木马取证分析展开,更像是一次实战环境,可以说是对前面所学 Web 安全、恶意代码分析和取证技术的一次综合运用。实验既包含利用浏览器漏洞实施攻击,也包含对网页木马进行逆向分析和溯源,使我能够从攻击者和防守者两个角度理解完整的攻防流程。
在浏览器渗透部分,我利用 Metasploit 构造浏览器漏洞利用页面,通过访问恶意网页触发漏洞,从而实现对目标主机的控制。这一过程让我认识到,浏览器作为用户最常使用的软件之一,其漏洞一旦被利用,可能直接导致远程代码执行,因此及时更新补丁和限制危险脚本执行具有重要意义。
网页木马取证分析则更加考验分析能力。实验中需要结合网页源码、文件哈希值、混淆脚本以及可执行文件等多方面信息,对恶意网页的真实行为进行还原。虽然用户访问时看到的可能只是一个普通页面,甚至是简单的 404 页面,但后台实际上可能已经加载了隐藏的 iframe、外部恶意脚本或下载器,在用户毫无察觉的情况下完成后续攻击。这使我深刻体会到网页木马良好的隐蔽性和迷惑性。
在具体分析过程中,我还对 start.html 文件进行了层层解码,依次处理 Base64 编码、XXTEA 加密、Packed 混淆以及八进制编码等多种隐藏技术,逐步恢复恶意脚本的真实内容。整个过程虽然较为繁琐,但也让我更加熟悉了恶意代码常见的混淆与隐藏手段,学会了通过多种线索还原攻击链路和程序行为。
但在最后的exe程序里面算是发现了一些很早的病毒软件绕过方式,居然是古法的点击信任按钮,令我大为震惊,我一直以为是有什么别的更高级的方式来绕过,但居然是力大砖飞的获取控件位置模拟点击信任。

课堂收获与不足

课堂收获

通过本学期 11 次实践课程的学习,我最大的收获是建立了较为完整的网络安全攻防知识体系。从最初的实验环境搭建、信息收集,到网络协议分析、漏洞利用、恶意代码分析、缓冲区溢出攻击,再到 Web 安全、浏览器渗透和取证分析,各个实验之间形成了较好的衔接,使我对网络攻击的全过程和防御思路有了更加系统的认识。
在攻防思维方面,需要从从攻击者和防守者两个不同角度思考问题。在 Windows 和 Linux 远程渗透实验中,分别作为攻击方和防守方,体验了一把真正的攻击过程,以及防守方的溯源过程,实地感受了一下攻击的流量包。
其次,在技术能力方面,课程涉及了大量安全工具和分析方法的实践应用,包括 Wireshark、Metasploit、IDA Pro、GDB、Pwntools、Snort 等工具的使用,以及 SQL 注入、XSS、命令注入、缓冲区溢出、恶意代码分析等典型攻击技术的实践操作。之前大部分内容都听说过,没怎么进行实际手操,实践能力不够。
网络安全是一门高度依赖实践的学科。很多知识仅通过理论学习难以真正理解,而只有亲自动手才能够了解事情的全貌,知道每一个坑点所在,解决掉每一个坑点学到的知识就更多

存在的不足

在逆向分析和恶意代码分析方面,目前仍主要依赖 IDA、字符串分析以及静态分析方法,对于复杂样本的动态调试、反调试技术、复杂加壳方式以及高级混淆技术掌握得还不够充分,还没有做过手动脱壳以及真正的动态调试,对于逆向上的问题我还是有所欠缺的。

posted @ 2026-06-18 11:39  Maxn_Rain  阅读(9)  评论(0)    收藏  举报