20252920卢兴宇 2025-2026-2 《网络攻防实践》课程总结
20252920卢兴宇 2025-2026-2 《网络攻防实践》课程总结
1.内容总结
第1次实践 蜜网网关部署与配置:搭建网络攻防实验环境,配置VMware虚拟网络(攻击网段与蜜罐网段),部署Kali攻击机、Metasploitable靶机、WinXP攻击机及ROO蜜网网关,实现蜜罐网关的数据捕获与控制功能。
第2次实践 网络信息收集与扫描:通过whois查询域名注册信息,利用nslookup获取域名对应IP地址,使用资源监视器获取好友IP并定位地理位置,使用Nmap对靶机进行端口扫描、操作系统识别与服务探测,使用Nessus对靶机进行漏洞扫描与安全评估。
第3次实践 网络嗅探与协议分析:使用tcpdump对访问网站过程进行嗅探抓包,使用Wireshark捕获TELNET登录流量并进行协议分析(发现明文传输密码的安全缺陷),使用Wireshark/Snort/p0f对listen.pcap进行取证分析,识别攻击者IP、扫描工具(Nmap)、扫描方式(SYN半开扫描)、靶机开放端口及攻击者操作系统。
第4次实践 TCP/IP协议攻击:实践了ARP缓存欺骗攻击(使用netwox 80工具伪造ARP响应)、ICMP重定向攻击(使用netwox 86劫持流量)、SYN Flood拒绝服务攻击(使用hping3伪造大量SYN请求)、TCP RST攻击(使用netwox 78强制中断连接)及TCP会话劫持攻击(使用ettercap实现中间人攻击)。
第5次实践 防火墙与入侵检测:配置iptables实现ICMP数据包过滤和特定IP访问控制,使用Snort对pcap文件进行入侵检测并分析报警日志,分析蜜网网关HoneyWall的防火墙规则和IDS/IPS配置规则。
第6次实践 Windows远程渗透攻击:使用Metasploit中的MS08-067漏洞模块对Windows靶机进行远程渗透攻击,获取系统访问权;对NT系统破解攻击进行取证分析(识别Unicode编码攻击、RDS漏洞SQL注入、nc后门等攻击链);完成团队攻防对抗实践。
第7次实践 Linux远程渗透攻击:使用Metasploit针对Samba usermap_script漏洞对Linux靶机进行渗透攻击,获取远程Shell;利用vsftpd_234_backdoor后门漏洞进行攻防对抗,同步使用Wireshark进行流量捕获与分析溯源。
第8次实践 恶意代码分析:对RaDa恶意代码样本进行文件类型识别(PE文件)、UPX脱壳处理及字符串提取分析;使用IDA Pro对crackme1.exe和crackme2.exe进行静态逆向分析;对僵尸网络流量进行取证分析,统计僵尸网络规模(3461台主机)、识别攻击IP(165个)及攻击手段。
第9次实践 缓冲区溢出攻击:手工修改可执行文件机器码(将call指令目标重定向至getShell函数),利用foo函数的BoF漏洞构造攻击Payload覆盖返回地址,注入自定义Shellcode并执行(涉及关闭地址随机化、设置堆栈可执行、GDB调试定位栈地址等操作)。
第10次实践 Web安全——SQL注入与XSS攻击:完成SEED SQL注入实验(SELECT语句注入绕过登录验证、UPDATE语句注入修改他人薪资、参数化查询修复漏洞);完成SEED XSS跨站脚本攻击实验(弹窗显示Cookie、窃取Cookie发送至攻击者、自动添加好友、修改受害者信息、编写XSS蠕虫、HTMLawed插件防御)。
第11次实践 Web浏览器渗透攻击:使用Metasploit的MS06-014漏洞模块构造恶意网页木马,实现对Windows靶机的浏览器渗透攻击和远程控制;对网页木马攻击场景进行取证分析(XXTEA+Base64解密、识别四种ActiveX控件漏洞利用、提取shellcode中隐藏的恶意URL、脱壳分析下载的木马文件);完成浏览器攻防对抗实践。
2.最喜欢且做得最好的实践是哪次?为什么?
我最喜欢且做得最好的实践是第10次实践——SQL注入与XSS跨站脚本攻击。
选择这次实践的原因有几点:第一,Web安全漏洞是当今互联网最普遍、危害面最广的安全问题之一,SQL注入和XSS常年位居OWASP Top 10前列,学习这两类攻击具有极高的现实意义。第二,这次实践的内容设计非常完整且层层递进——从最简单的登录绕过,到UPDATE语句注入修改他人数据,再到XSS弹窗、窃取Cookie、自动加好友、篡改个人资料,最后到编写自我复制的XSS蠕虫,每一步都让我感受到攻击者是如何由浅入深、一步步扩大攻击效果的。第三,实践中不仅学习了攻击方法,还实际动手修复了漏洞——通过PHP参数化查询修复SQL注入、启用HTMLawed插件防御XSS,这种"攻防结合"的学习方式让我对安全防护有了更立体的理解。
在这次实践中,我做得最好的是XSS蠕虫的编写部分。我深入分析了Elgg平台添加好友和修改资料的HTTP请求机制,理解了__elgg_ts和__elgg_token的作用,成功构造出了具有自我复制能力的XSS蠕虫代码,实现了从Alice到Boby再到Samy的自动传播链。这个过程让我真正理解了XSS蠕虫的工作原理,也让我更加警惕实际Web应用中用户输入过滤的重要性。
3.本门课学到的知识总结
3.1 安全加固和检测技术
通过11次实践,我系统掌握了多款核心安全工具的原理与操作:Nmap(端口扫描:TCP SYN半开扫描、操作系统指纹识别、服务版本探测)、Wireshark(流量捕获与过滤、协议分析、TCP流追踪、取证分析)、Nessus(漏洞扫描与风险评估)、Metasploit(漏洞利用框架、payload选择与参数配置、session管理)、Snort(入侵检测规则配置、pcap文件分析)、tcpdump(命令行抓包与流量过滤)。在安全加固方面,学习了iptables防火墙规则配置(过滤ICMP包、基于IP的访问控制)、系统安全基线配置(关闭不必要端口、Telnet服务权限管理)以及如何针对扫描结果制定加固方案。
这部分让我认识到,安全检测不能只停留在“扫出结果”这一步。比如Nmap扫描到开放端口后,还需要结合服务版本、操作系统类型和实际业务判断风险;Nessus给出漏洞等级后,也不能完全照搬结论,而要看漏洞是否真的能在当前环境中被利用。防护时也不是简单地关闭所有端口,而是要在业务可用和安全控制之间做取舍。通过防火墙和入侵检测实验,我对“发现问题—分析原因—制定规则—验证效果”这个流程有了比较完整的认识。
另外,Snort和iptables的实验让我对检测和防护之间的关系有了更清楚的认识。Snort更偏向发现异常行为,通过规则匹配、日志记录和报警帮助管理员了解攻击发生的时间、来源和类型;iptables更偏向访问控制,可以根据源地址、目标端口、协议类型等条件直接限制流量。二者结合起来,才能形成比较完整的防护效果。以前我容易把安全工具看成单独的软件,现在更能理解它们在防御体系里的不同位置。
3.2 Web安全技术
深入学习了SQL注入的原理与实践:通过构造Admin'#绕过登录验证(注释符绕过密码检查),通过构造', Salary='2920' where name='Admin'; #实现UPDATE语句注入修改他人薪资。掌握了修复方法:使用prepare+bind_param实现参数化查询,从根源上杜绝SQL注入。在XSS方面,掌握了存储型XSS的完整攻击链:注入恶意脚本→弹窗测试→窃取Cookie→构造自动加好友/修改资料的Ajax请求→编写自我复制的XSS蠕虫→使用HTMLawed插件进行防御。在浏览器渗透方面,学习了MS06-014漏洞利用、恶意网页木马的构造与部署,掌握了XXTEA+Base64解密、shellcode分析、ActiveX控件漏洞(Adodb.Stream、MPS.StormPlayer、PowerPlayer、BaiduBar)的识别与利用方法。
Web安全实验让我印象比较深的是,很多漏洞的根本原因并不复杂,往往就是对用户输入过于信任。SQL注入利用的是后端把输入直接拼接进SQL语句,XSS利用的是前端或后端没有正确处理用户提交的脚本内容。通过实际修改PHP代码和启用过滤插件,我也理解了防御不能只靠前端限制,真正可靠的防护应该放在服务端,结合参数化查询、输出编码、输入过滤、权限校验和安全Token等机制一起使用。
在XSS实验中,我还进一步理解了Cookie、Session和Token之间的联系。攻击者一旦通过脚本拿到用户Cookie,就可能冒充用户身份继续操作;而__elgg_ts和__elgg_token虽然能提高请求伪造难度,但如果页面本身存在XSS,脚本仍然可以读取这些参数并构造合法请求。所以Web安全不能只靠某一个机制解决,输入输出处理、会话保护、权限控制和浏览器安全策略都需要同时考虑。
3.3 逆向分析技术
掌握了文件类型识别工具(file命令)、加壳检测工具(PEiD)的使用方法,实践了UPX壳的脱壳操作(超级巡警脱壳机)。熟练使用IDA Pro进行静态反汇编分析:通过Strings窗口查看可打印字符串定位关键信息(作者信息、口令字符串),通过Function Call图分析程序调用逻辑,通过流程图分析分支判断条件。完成了crackme程序的逆向分析,通过strcmp函数定位口令验证逻辑。在恶意代码分析中,还使用Process Explorer动态监控程序行为(HTTP连接、注册表操作、文件创建等)。
逆向分析和恶意代码分析相比前面的网络扫描更难一些,因为它要求把程序行为和底层实现联系起来。静态分析时,需要从字符串、导入函数、函数调用关系中猜测程序意图;动态分析时,又要观察进程、文件、注册表和网络连接的变化。通过RaDa样本和网页木马分析,我体会到恶意代码往往会使用加壳、编码、混淆等方式隐藏真实逻辑,因此分析时不能只依赖单一工具,而要把多种证据放在一起判断。
crackme分析让我第一次比较直接地接触到程序验证逻辑。通过IDA查看字符串和函数调用,可以发现程序并不是“神秘地判断对错”,而是通过比较函数、条件跳转等指令完成验证。网页木马分析中,面对被编码和加密的脚本,也需要先还原代码,再分析它加载了哪些远程文件、调用了哪些控件、最终执行了什么行为。这些过程让我认识到逆向分析需要耐心,也需要不断把小线索连起来。
3.4 主流代码审计技术
在SQL注入实验中,阅读并分析了PHP后端源码(unsafe_home.php、unsafe_edit_backend.php),识别出直接拼接用户输入的SQL语句存在的注入风险。在XSS实验中,通过浏览器开发者工具分析Elgg平台的前端代码结构,定位__elgg_ts和__elgg_token的生成方式,理解了前端安全令牌机制。在逆向分析中,通过阅读IDA Pro反编译的汇编代码,分析程序的控制流和数据流逻辑。
通过这些实验,我对代码审计的基本思路也有了一些认识。审计时不能只看某一行代码是否“看起来危险”,还要顺着数据流去看用户输入从哪里来、经过了哪些处理、最后进入了数据库、HTML页面、系统命令还是文件操作。比如SQL注入要重点关注拼接SQL的位置,XSS要关注输出到页面的位置,命令执行类风险则要关注是否调用了系统命令函数。虽然目前我还只是入门,但已经能意识到代码审计本质上是在追踪不可信数据的流向。
3.5 程序设计
熟练使用Python相关的安全工具生态。掌握Perl语言构造二进制Payload:perl -e 'print "A" x 32;print "\x7d\x84\x04\x08"'生成精确的溢出攻击载荷。理解C/C++程序的内存模型:栈帧结构(缓冲区→EBP→返回地址)、小端序字节序、缓冲区溢出原理。具备阅读PHP代码的能力,能够识别不安全的数据库查询和输入处理逻辑。掌握了shellcode的编写与注入:NOP sled填充、execve("/bin/sh")系统调用机器码的构造。
程序设计能力在网络攻防中非常重要。很多实验虽然可以依靠现成工具完成,但如果想进一步理解漏洞原理,就需要能读懂代码,甚至自己构造测试脚本。比如缓冲区溢出实验中,Payload长度、返回地址、小端序写法都需要精确控制;XSS实验中,需要用JavaScript构造Ajax请求;SQL注入修复中,又需要修改PHP数据库查询代码。通过这些内容,我认识到编程不是附加能力,而是理解和复现安全问题的基础。
3.6 计算机病毒技术
通过RaDa恶意代码分析,理解了病毒、蠕虫、木马的区别:病毒需要宿主程序,蠕虫可自我复制传播,木马伪装为正常程序。掌握了恶意代码的传播途径(HTTP下载、漏洞利用)。了解了常见的隐藏方式:注册表启动项、进程注入、系统目录伪装。在僵尸网络分析中,理解了IRC协议在僵尸网络控制中的应用,掌握了僵尸网络规模统计方法(通过IRC频道用户列表去重统计,发现3461台被控主机)。学习了恶意代码的防止分析技术:UPX加壳、代码混淆等。
这部分还让我认识到,恶意代码并不只是一个单独的可执行文件,它背后往往还有下载、通信、控制和隐藏等多个环节。比如木马可能先通过网页脚本或漏洞利用被下载到本地,再通过注册表或启动项实现持久化,随后连接远程服务器接受命令。僵尸网络分析则让我看到,当大量主机被控制后,攻击者可以通过统一的控制通道组织扫描、攻击或传播。理解这些链条以后,防御时才知道应该从入口、执行、持久化和通信多个阶段进行拦截。
3.7 网络溯源及防范技术
掌握了网络攻击溯源分析的完整方法论:通过Wireshark过滤分析攻击流量的源IP、目标IP、攻击时间线;通过数据包特征(如Window size=2048)识别攻击工具(Nmap);通过特征字符串(如ADM!ROX!YOUR!WORLD)识别具体攻击工具(msadc.pl);通过p0f被动识别攻击者操作系统。在僵尸网络分析中,统计出攻击蜜罐主机的165个源IP地址,识别出针对TCP 135/139/445/4899/80端口和UDP 137端口的攻击尝试。掌握了防御策略制定:IP封禁、流量清洗、端口过滤等。
溯源分析让我体会到,攻击发生后不能只关注“有没有被攻破”,还要尽量还原攻击过程。分析pcap文件时,需要先找出可疑连接,再根据时间顺序整理扫描、探测、利用和连接等行为。不同攻击工具和系统会在流量中留下不同特征,这些细节可以帮助判断攻击方式。虽然真实环境中的溯源会更复杂,源IP也可能经过代理或跳板隐藏,但实验让我建立了基本思路:先保留证据,再分析时间线,最后结合日志和流量判断攻击路径。
3.8 加密解密技术
在网页木马取证分析中,实践了多种加密解密操作:XXTEA+Base64加密的识别与解密(密钥\x73\x63\x72\x69\x70\x74即"script")、十六进制编码转换、MD5哈希计算与对比验证。理解了对哈希算法的应用:通过MD5值识别相同文件、验证文件完整性。在SQL注入实验中,了解了数据库密码的哈希存储机制(SHA256哈希)。
通过这些操作,我区分了编码、加密和哈希的不同作用。Base64和十六进制更多是编码,主要用于改变数据表示形式;XXTEA这类算法属于加密,需要密钥才能还原明文;MD5和SHA256则是哈希,通常用于完整性校验或口令摘要,不能直接“解密”回原文。在网页木马分析中,如果不能先识别出这些处理方式,就很难看到真正的脚本内容。这个过程让我明白,加密解密知识在取证和恶意代码分析中非常实用。
3.9 信息系统运行维护
通过全部实验的虚拟机部署,精通了Linux系统管理:网络配置(ifconfig、route、修改/etc/network/interfaces)、服务管理(telnet服务启用与配置、inetd.conf修改)、用户权限管理(root切换、sudo使用、文件权限设置)、软件安装与管理(apt-get、dpkg)。掌握了常见的故障排查方法:网络连通性测试(ping、traceroute)、端口状态检查(netstat)、进程管理(ps、kill)、日志查看。熟悉了VMware虚拟网络配置(NAT模式、桥接模式、仅主机模式)和虚拟网段划分。
运维能力贯穿了整门课程。很多时候实验失败并不是漏洞利用方法错了,而是环境本身没有配置好,比如IP不在同一网段、防火墙规则影响通信、服务没有监听对应端口、虚拟机网卡模式选错等。通过一次次排查,我对Linux命令和虚拟机网络配置更熟悉了,也意识到安全工作离不开基础运维。只有先保证系统、网络和服务状态清楚,后面的扫描、抓包、攻击和防御实验才有可靠前提。
3.10 网络协议分析
深入掌握了TCP/IP协议栈核心协议的工作原理与安全缺陷:ARP协议(无身份验证,易受缓存欺骗攻击)、ICMP协议(重定向报文无验证,可被伪造劫持流量)、TCP协议(三次握手缺陷导致SYN Flood攻击,RST报文可强制断开会话,序列号可预测导致会话劫持)、UDP协议(无连接特性)。熟悉了HTTP/HTTPS协议:请求方法与状态码、Cookie机制、会话管理。熟练使用Wireshark分析各类协议异常流量,如通过ICMP过滤识别ping扫描、通过SYN过滤识别端口扫描、通过TELNET追踪发现明文密码传输。
通过抓包分析,我更加直观地理解了协议不是课本上的概念,而是真实网络通信中一条条可以被观察的数据流。比如TELNET明文传输密码的实验让我直接看到用户名和密码出现在数据包里,ARP欺骗和TCP RST攻击则说明协议设计中的信任假设一旦被利用,就可能影响正常通信。以后分析网络问题时,我会更倾向于先抓包看真实流量,而不是只凭现象猜测。
同时,协议分析也帮助我把多个实验联系了起来。端口扫描依赖TCP连接行为,SYN Flood利用三次握手过程中的资源消耗,TCP会话劫持需要理解序列号和确认号,HTTP中的Cookie又和Web会话安全密切相关。以前这些知识点比较分散,做完实验后能感觉到它们其实都建立在协议细节之上。掌握协议分析能力,不仅能帮助发现攻击,也能帮助解释攻击为什么能够生效。
3.11 数据库
通过SEED SQL注入实验,掌握了MySQL数据库的基本操作:登录认证、数据库切换、表结构查看(SHOW TABLES)、数据查询(SELECT语句)。理解了SQL语句的构造逻辑和注入原理。能够识别数据库安全漏洞(如不安全的字符串拼接),并掌握了参数化查询等修复方法。
数据库安全不仅是会写SQL语句,还包括权限控制和敏感数据保护。实验中通过注入修改薪资信息,让我认识到数据库一旦被越权操作,影响的不只是登录功能,还可能涉及用户隐私、业务数据和系统完整性。实际开发中应避免使用高权限账号连接数据库,重要字段要合理加密或哈希存储,错误信息也不应该直接暴露给用户。参数化查询是基础防线,但还需要结合最小权限、日志审计和备份恢复等措施。
3.12 法律
本课程涉及的网络安全法律合规意识主要涵盖:网络攻击的法律边界(仅在授权实验环境中进行渗透测试)、个人信息保护(通过搜索引擎自检隐私泄漏)、数据安全责任(不得非法获取、传播他人数据)。在实验中始终遵守安全操作规范,所有攻击操作均限制在隔离的实验网络环境中。
学习网络攻防技术时,法律意识非常重要。同样的扫描、渗透和漏洞利用技术,在授权实验环境中是学习和测试,在未授权环境中就可能违法。课程中的所有攻击都限定在靶机、蜜罐和虚拟网络中,这让我明白技术能力必须和边界意识同时建立。以后如果进行安全测试,必须提前获得授权,明确测试范围、时间和方式,不能因为“只是试一下”就扫描或攻击真实系统。
3.13 基础
计算机组成基础:理解x86处理器架构(通用寄存器EAX/EBX/ECX/EDX、栈指针ESP、基址指针EBP、指令指针EIP)、内存管理(虚拟地址空间、栈帧布局、小端序存储)、机器指令编码(call指令的偏移地址计算、NOP的机器码0x90)。操作系统基础:Linux进程管理、地址空间随机化(ASLR)机制及关闭方法、堆栈可执行权限(NX bit)管理。网络基础:TCP/IP协议栈各层功能、IP地址分类与子网划分、端口与服务映射。数据结构基础:缓冲区概念、栈的后进先出特性及其在函数调用中的应用。
这些基础知识虽然看起来和工具使用距离较远,但在后期实验中作用很明显。比如不理解栈帧和返回地址,就很难真正理解缓冲区溢出;不理解进程和权限,就很难分析木马为什么能够持续运行;不理解TCP/IP分层,就很难解释扫描、嗅探和会话攻击的原理。通过这门课,我也发现自己基础知识还有不少薄弱点,后续需要把计算机网络、操作系统和汇编语言再系统复习一遍。
5.课堂的收获与不足
收获:这门课最大的收获是让我真正动手接触了网络攻防的完整流程。刚开始做实验时,我经常卡在虚拟机网络不通、服务没启动、命令参数写错这些小问题上,后来慢慢学会了先查IP、网关、端口和进程,再去判断问题出在哪里。做完这些实验后,我对“攻击不是凭空发生的”这一点理解更深了,很多漏洞其实都和输入校验、权限控制、协议缺陷、版本过旧有关。写报告的过程也让我把很多原本只是照着做的步骤重新想了一遍,哪些地方是真懂了,哪些地方只是会操作,也看得更清楚。还有一点比较明显的变化是,我现在遇到报错不会像一开始那样慌,而是会先把现象记录下来,再一步步排查。
不足:不足主要是底层基础和编程能力还不够。缓冲区溢出、shellcode、恶意代码逆向这些内容,我能跟着步骤做出来,但如果换一个新题目,独立分析还是比较吃力。还有就是自动化脚本写得少,很多时候更依赖现成工具。后面我想重点补汇编、操作系统内存管理和Python脚本,把实验里的操作尽量和原理对应起来,而不是只停留在完成截图。另外,有些实验当时为了赶进度,只验证了最基本结果,没有继续尝试更多参数和变形场景,这一点以后需要改。
6.参考文献
- 诸葛建伟.《网络攻防技术与实践》[M]. 机械工业出版社
- SEED Labs Project. SQL Injection Attack Lab & XSS Attack Lab. https://seedsecuritylabs.org/
- OWASP Top 10 - 2021. https://owasp.org/www-project-top-ten/
posted on 2026-06-17 10:41 20252920卢兴宇 阅读(10) 评论(0) 收藏 举报
浙公网安备 33010602011771号