20251910 2025-2026-2 《网络攻防实践》课程总结
- 20251910 2025-2026-2 《网络攻防实践》课程总结
- 1.内容总结
- 第1次实践 环境搭建
- 第2次实践 网络信息收集
- 第3次实践 网络嗅探与协议分析
- 第4次实践 TCP/IP网络协议攻击
- 第5次实践 网络安全防范技术
- 第6次实践 Windows系统攻防
- 第7次实践 Linux系统攻防
- 第8次实践 恶意代码分析实践
- 第9次实践 软件安全攻防--缓冲区溢出和shellcode
- 第10次实践 Web应用程序安全攻防
- 第11次实践 浏览器安全攻防实践
- 2.最喜欢且做得最好的实践是哪次?为什么?
- 3.本门课学到的知识总结
- 第1次实践 环境搭建
- 第2次实践 信息搜集与漏洞扫描
- 第3次实践 网络嗅探与协议分析
- 第4次实践 TCP/IP协议攻击
- 第5次实践 防火墙与入侵检测
- 第6次实践 Windows远程渗透与取证
- 第7次实践 Linux远程渗透与攻防对抗
- 第8次实践 恶意代码分析
- 第9次实践 缓冲区溢出与Shellcode
- 第10次实践 Web应用安全
- 第11次实践 网页木马与浏览器攻击
- 网络攻防实践课总结:收获与不足
- 1.内容总结
1.内容总结
第1次实践 环境搭建
-
简要介绍:第一次实践的主要目的是构建网络攻防虚拟环境、熟悉虚拟化工具VMware Workstation的使用方法、配置各虚拟机内部的设置,以便为后续的网络攻防实践提供实践环境基础,通过配置NAT与HOST-ONLY网络,实现靶机专网与攻击机内网的逻辑隔离与通信。部署了Metasploitable、Windows Server、Kali、SEED、WinXP Attacker及HoneyWall等虚拟设备,并对整个网络环境的连通性进行了测试。
-
实验体会:由于我本科专业同样为网络空间安全,所以第一次实验对我来说比较简单,但是我在其中明白了很重要的道理:我们想要严谨并且可复现地进行网络攻防实践的学习,我们就一定要建立一个统一的实验环境,并且要深入理解系统中各个组件在其中的作用,这样才能达到实践的效果,能够排除很多外部的干扰,专注于学习实践中的知识。
第2次实践 网络信息收集
-
简要介绍:本次实践的目的是学习网络信息搜集与漏洞扫描技术,学习使用了DNS与IP信息查询的相关工具,查询到了域名和IP地址的注册信息及地理位置等相关信息,从另一个层面了解了个人隐私信息的重要性。并使用Nmap完成了对靶机的存活探测、端口扫描、系统与服务识别等信息收集操作。最后借助Nessus开展了漏洞扫描。
-
实验体会:这次实践让我明白了攻击前信息收集的重要性,一个系统哪里存在缺陷,如何进行攻击,绝不是仅存在于工程师头脑中的经验又或是我们攻击过程中的凭空猜测,凭借这些信息收集工具以及漏洞扫描攻击,我们就能在攻击前制定一系列行之有效的策略。这为后续的实践以及我学习网络攻防技能打下了信息搜集和攻击路径策划方面的基础。
第3次实践 网络嗅探与协议分析
-
简要介绍:本次实践的主要目的是,让我们利用网络嗅探工具对之前进行的漏洞扫描和信息收集过程有一个更深的理解。要求使用Tcpdump命令,嗅探本机进行的网络活动,并使用wireshark对抓包数据和网络协议活动过程进行深入的分析。
-
实验体会:本次实践紧密衔接了上次实践的内容,让我们从反方向对整个网络嗅探和信息收集的过程有了更加深刻的理解。我对于,我们该如何使用网络嗅探工具以及如何通过网络嗅探工具真实地获取并学习网络中运行的各种协议有了更深刻的理解。为后续再次使用网络嗅探工具抓包并分析更为复杂的协议打下了基础。
第4次实践 TCP/IP网络协议攻击
-
简要介绍:本次实践的主要目标是学习并复现网络攻防技术中的几种常见攻击方式,包含了ARP缓存欺骗、ICMP重定向、SYN Flood、SYN Rst以及TCP会话劫持攻击。并通过分别对每种攻击的执行过程进行详细分析,能够深入理解其原理与应用场景。
-
实验体会:通过本次实践,我对TCP/IP协议栈的安全性有了更直观的认识。ARP协议缺乏认证机制、ICMP重定向可被伪造等这些协议层面的缺陷,在亲手复现攻击之前,只是一些抽象的知识,实际攻击过程中才知道为什么理论上的协议设计要与实际相结合。每次在wireshark利用筛选中看到攻击数据包按照预期出现时,我就加深了一层对协议交互机制的理解,后续学习防火墙和入侵检测时也能自然地想到这些攻击在流量上会留下什么特征。
第5次实践 网络安全防范技术
-
简要介绍:本次实践的主要目的是掌握防火墙配置、入侵检测工具Snort的使用以及蜜网网关安全规则分析等防御技术。在防火墙部分,使用iptables完成了ICMP数据包过滤和特定IP访问控制两类规则的配置与测试;在Snort部分,使用Snort对listen.pcap流量文件进行离线入侵检测,生成了报警日志并分析了其中的攻击类型;在蜜网网关部分,分析了HoneyWall中iptables防火墙规则脚本和Snort/Snort_inline的IDS/IPS配置规则,理解了蜜网网关如何利用防火墙和入侵检测技术完成攻击数据捕获与控制。
-
实验体会:这次实践让我从防御者的视角去审视我们进行的攻击,也认识到了对于网络攻击的防御是多层次成体系的。就像Snort的报警日志一样,入侵检测系统并不像想象中那样能精确无误地识别攻击,大量告警需要人工分析筛选,如何区分真正的威胁和误报,是IDS在实际部署中绕不开的问题。蜜网网关的设计理念也让我印象十分深刻它不是简单地阻断攻击,而是在受控环境中捕获和分析攻击行为,这种系统设计的思路,在我看来是一种比单纯防御更高明的安全策略。
第6次实践 Windows系统攻防
-
简要介绍:本次实践的主要目的是学习利用MS08-067漏洞对Windows靶机实施远程渗透攻击、对一次NT系统攻击进行了取证分析,以及与身边的同学进行了团队攻防对抗。在渗透部分,使用msfconsole中的MS08-067模块对Windows 2000靶机发起攻击,成功获取了系统访问权限。在取证分析过程中,通过wireshark分析了一个真实的攻击日志文件,还原了攻击者利用RDS漏洞和Unicode漏洞入侵蜜罐主机的完整过程,追踪了攻击者获取权限后执行的命令。
-
实验体会:相比于之前手动敲命令发起的TCP/IP攻击,msfconsole的模块化操作让我感受到了自动化渗透的效率和复杂性,msfconsole中。本次实验中的取证分析环节给我的收获比较大。顺着HTTP数据流一步步还原攻击者的操作:探测、利用RDS漏洞、通过Unicode漏洞下载工具、建立后门、清除痕迹,这种逐层推进的分析过程需要足够的耐心。攻击者最后发现了这是蜜罐并留言,这意味着真实的攻击者在入侵后会做侦察和试探,不仅仅是按照预定的攻击流程死板地行动,蜜罐的设计需要在细节上经得起这种威胁和攻击。这次分析综合运用了之前学到的协议分析和攻击识别能力。
第7次实践 Linux系统攻防
-
简要介绍:本次实践的主要目的是使用Metasploit对Linux靶机实施远程渗透攻击,并与同学进行团队攻防对抗。实践选取了Metasploitable2靶机上Samba服务的usermap_script漏洞,通过msfconsole加载相关模块,获取靶机的远程控制权限。在团队对抗环节中,一方作为攻击方使用Metasploit发起渗透,另一方作为防守方使用wireshark抓包分析攻击过程,还原出攻击者的IP地址、攻击端口、利用的漏洞及攻击载荷等信息。
-
实验体会:本次实践从Windows渗透转向了Linux系统,但msfconsole的操作流程基本一致,渗透测试框架统一接口极大降低了跨平台攻击的学习门槛。团队攻防对抗让我能同时站在攻防两方思考问题:作为攻击方,用模块化的方式完成了渗透;作为防守方,从wireshark的抓包数据中还原出对手的操作步骤。当我同时了解攻击和防御的套路之后,更清楚哪些地方容易出问题、哪些攻击手段有明显的攻击特征。
第8次实践 恶意代码分析实践
-
简要介绍:本次实践的主要目的是学习恶意代码分析的基本方法,实践内容包含四个子任务。一是对rada恶意代码样本进行文件类型识别、脱壳与字符串提取,确认了其使用UPX加壳并提取出作者信息;二是使用IDA Pro对crackme1.exe和crackme2.exe进行逆向分析,通过分析程序的控制流和判断逻辑找到了正确的输入参数;三是对rada样本进行了全面的恶意代码分析报告撰写,包括其行为特征、网络通信、反分析技术和分类判断;四是对一个Windows 2000系统被攻破并加入僵尸网络的场景进行了取证分析,通过wireshark和tcpflow等工具识别了IRC通信、僵尸网络规模和攻击来源。
-
实验体会:由于本科期间有过逆向工程相关的学习经验,本次实践的内容对我来说比较熟悉。不过,将逆向分析技能应用到恶意代码分析的场景中,还是有一些不同的感受:首先,分析恶意代码时不仅需要理解程序的执行逻辑,还需要关注它的网络通信行为、持久化机制和反分析手段,分析的维度比单纯的逆向去分析一个算法的运行结果要更广。crackme2中程序会检查自身文件名这一设计,也提醒我们在分析恶意样本时,样本的行为可能因运行环境的不同而变化。
第9次实践 软件安全攻防--缓冲区溢出和shellcode
-
简要介绍:本次实践的主要目的是学习并实践缓冲区溢出攻击与Shellcode注入技术,实验分为三个递进的任务。第一个任务是手工修改可执行文件的机器码,通过十六进制编辑器将程序中调用foo函数的指令修改为跳转到getShell函数,直接改变了程序的执行流程。第二个任务是利用foo函数中gets函数存在的缓冲区溢出漏洞,构造特定长度的输入字符串覆盖栈上的返回地址,使程序执行完foo后跳转到getShell函数。第三个任务是注入一段自定义的shellcode,通过开启堆栈可执行权限并关闭地址随机化,使程序执行我们注入的指令从而获得shell。
-
实验体会:这是整个课程中技术密度较高的一次实验。从手工修改机器码到构造缓冲区溢出payload,再到注入执行shellcode,三个环节环环相扣。我的体会是,这些攻击能够成功,根子在于程序对用户输入缺乏边界检查,通过gdb调试确定偏移量、计算返回地址、构造payload,让我对栈溢出这个词有了更深刻的理解。关闭地址随机化和开启堆栈可执行这些步骤,也让我清楚了现代操作系统的安全机制具体在防什么。同样揭示了网络攻防中攻击和防御这种螺旋上升的循环。
第10次实践 Web应用程序安全攻防
-
简要介绍:本次实践的主要目的是学习Web应用安全中的SQL注入攻击与防御以及XSS跨站脚本攻击技术。在SQL注入部分,通过在登录表单的用户名中输入 Admin'# 绕过了密码认证,利用SELECT语句的SQL注入漏洞实现无密码登录;随后通过构造UPDATE语句注入payload,实现了对其他用户数据的越权修改;最后使用参数化查询的方法修复了SQL注入漏洞。在XSS部分,基于Elgg社交网络平台,逐步完成了从弹窗显示cookie到窃取cookie并发送给攻击者、再到编写XSS蠕虫实现自我传播的一系列XSS攻击实验。
-
实验体会:亲手复现SQL注入和XSS之后我对它们的本质有了切实的理解,SQL问题存在核心问题都是对用户输入的无条件信任。一个 Admin'# 就能绕过登录,一串JavaScript就能在用户间传播蠕虫,这种攻击的简洁和破坏力之间的反差,让人很是震撼。参数化查询和HTMLawed过滤插件的修复演示也说明,防御方案本身并不复杂,关键在于开发者在写代码时有没有安全意识。XSS蠕虫从注入到被防御方发现并启用过滤插件清除,这个过程完整展示了Web安全中攻防对抗的循环防御。
第11次实践 浏览器安全攻防实践
-
简要介绍:本次实践的主要目的是学习Web浏览器渗透攻击方法、掌握网页木马攻击场景的取证分析技术以及进行浏览器渗透攻击的攻防对抗。在渗透攻击部分,使用Metasploit中的MS06-014漏洞模块构造了恶意网页链接,在靶机浏览器中访问后成功建立了远程控制会话。在取证分析部分,对一个真实的网页木马攻击场景进行了多层次的解密分析——从start.html出发,通过解密JavaScript代码、分析MD5散列对应的文件、还原shellcode等手段,逐步剖析了攻击者利用多种浏览器插件漏洞挂载木马的完整攻击链。
-
实验体会:作为最后一次实践,网页木马的取证分析是对前面所有学习的一次综合运用。从start.html出发,经过xxtea解密、base64解码、shellcode还原等多轮分析,最终还原了攻击者的攻击路径。这个过程让我认识到,真实的网络攻击不是单一技术的运用,而是多种技术和漏洞的组合利用,相应的防御也应当是分层次的。课程从搭建实验环境开始,到信息收集、网络攻击、防火墙与IDS、系统渗透、恶意代码分析、二进制漏洞利用、Web安全,最后以这次攻击链条分析收尾,整个实践体系让我从只会使用单个工具,逐步过渡到能够从攻防两端系统地看待安全问题。
2.最喜欢且做得最好的实践是哪次?为什么?
在本学期的网络攻防实践课程中,让我印象最深的且最喜欢的一次实践是实验十。
在这次实践之前,我对于攻击的理解或者说对于防御网络攻击的理解还停留在我设置好防火墙,设置好杀毒软件,就能保护自己的电脑和数据安全。前几次实践虽然在网络协议攻击、系统渗透等方面拓宽了我的认知,但攻击的目标始终是一台台具体的虚拟机,防御的思路也围绕着主机加固和流量过滤展开。
但通过这次实践,我认识到了一个至关重要的问题,也就是我们在网络空间中的安全其实不止于我们的计算机本身,其实更多的数据和资产都在服务器中,在我们的账户当中。SQL注入攻击让我看到,攻击者完全不需要触碰我的个人电脑,就能绕过密码认证进入系统,进而读取、篡改数据库中我个人的敏感信息。XSS跨站脚本攻击则更加直接,一段注入到网页中的JavaScript代码,就能在用户毫无察觉的情况下窃取其cookie、伪装成该用户发送请求、甚至编写蠕虫在用户之间自动传播。
这些攻击的共同特点是,它们不是系统漏洞,不能被防火墙所防御,也不触发杀毒软件,却能够直接触及用户最核心的资产。这让我意识到,网络安全是一个多层次的问题,操作系统和网络层面的防护只是其中的一环,应用层的安全同样不能忽视。一个配置完善的服务器,如果上面运行的Web应用程序存在SQL注入漏洞,攻击者仍然可以长驱直入。这也解释了为什么现实中大量数据泄露事件并非源于黑客攻破了服务器的操作系统,而是利用了Web应用程序本身的缺陷。
3.本门课学到的知识总结
第1次实践 环境搭建
-
虚拟化技术 :使用VMware Workstation工具进行实验,包括虚拟机的创建、快照管理、网络适配器配置。通过虚拟机可以在隔离的环境中安全地进行各类攻击与防御实验,不会对真实系统和网络造成影响。
-
NAT与Host-Only网络模式 :NAT模式让虚拟机通过主机共享IP访问外部网络,Host-Only模式则在主机和虚拟机之间构成一个私有网络,与外部隔离。两种模式的组合使用可以实现靶机专网与攻击机内网的逻辑隔离。
-
Metasploitable :一款专门为安全测试设计的Linux靶机,基于Ubuntu构建,内置了Samba、FTP、MySQL等多个服务的大量已知漏洞,在实践中作为渗透攻击的目标。
-
Kali Linux :基于Debian的Linux发行版,集成了大量渗透测试和安全分析工具,包括Metasploit、Nmap、Wireshark、Snort等,在课程中承担攻击机的角色。
-
SEED Ubuntu :雪城大学开发的安全教学实验平台,预装了Web服务器、数据库、Firefox浏览器及调试工具等,为SQL注入、XSS等Web安全实验提供了实验环境。
-** Windows Server与WinXP** :Windows Server提供IIS、SMB等网络服务,在实验中作为服务端靶机;WinXP作为客户端系统,也用于测试浏览器漏洞和恶意代码分析等实验。
- HoneyWall :蜜网网关系统,部署在蜜罐网络与外部网络之间,利用防火墙和入侵检测技术对进出流量进行监控与控制。
第2次实践 信息搜集与漏洞扫描
-
DNS与IP信息查询 :DNS域名系统负责将域名解析为IP地址,是互联网的基础服务之一。通过whois工具可以查询域名的注册人、注册时间、注册机构等注册信息;通过nslookup或dig工具可以查询域名对应的IP地址;通过IP地址归属地查询可以了解目标主机的大致地理位置。
-
Nmap网络扫描 :Nmap是常用的网络扫描工具,功能包括主机存活探测( -sn 参数,通过发送探测包判断目标是否在线)、端口扫描( -sS 参数进行SYN半开扫描,识别目标主机开放了哪些网络端口)、操作系统识别( -O 参数,通过分析返回包的特征判断目标的操作系统类型和版本)、服务版本识别( -sV 参数,探测端口上运行的应用程序及其版本号)。使用Nmap工具,可以在不接触目标系统的情况下尽可能多地获取信息。
-
Nessus漏洞扫描 :Nessus是一种自动化的漏洞扫描工具,内置了大量的漏洞检测插件。与Nmap不同,Nessus不仅识别端口和服务,还会根据服务版本和配置信息匹配已知漏洞数据库,自动检测目标系统存在的安全漏洞,并生成包含漏洞描述、危害等级和修复建议的扫描报告。
第3次实践 网络嗅探与协议分析
-
Tcpdump抓包 :Tcpdump是Linux下常用的命令行网络抓包工具,可以通过过滤条件捕获指定协议、指定端口的网络流量。
-
Wireshark协议分析 :Wireshark是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
第4次实践 TCP/IP协议攻击
-
ARP缓存欺骗攻击
-
原理:ARP协议用于将IP地址解析为MAC地址,但协议本身没有认证机制。攻击者向目标主机发送伪造的ARP响应包,将自己的MAC地址与网关的IP地址绑定在一起,目标主机收到后会更新ARP缓存表,从而将本该发往网关的数据包发往攻击者。
-
目的:使受害主机无法将数据正确发送到目标主机或网关,从而实现中间人攻击,劫持、监听或阻断网络通信。
-
ICMP重定向攻击
-
原理:ICMP协议用于在网络设备之间传递控制信息。ICMP重定向报文原本是路由器用来通知主机前往某目的地址存在更优路径的机制。攻击者伪装成网关,向目标主机发送伪造的ICMP重定向报文,声称存在一条更好的路由,目标主机接收后会据此更新自己的路由表。
-
目的:使受害主机更新错误的路由信息,将数据发往攻击者指定的地址,从而实现流量劫持和监听。
-
**SYN Flood攻击 **
-
原理:TCP建立连接需要三次握手,服务器在收到客户端的SYN请求后会为该连接分配资源进入半连接状态,等待客户端的ACK确认。攻击者向服务器发送大量源地址经过伪造的SYN包,服务器响应SYN-ACK后由于源地址是假的,永远不会收到ACK,这些半连接会一直占用服务器资源直到超时。
-
目的:耗尽目标主机的半连接队列资源,使其无法处理正常的连接请求,最终导致服务不可用。
-
TCP RST攻击
-
原理:TCP头部中的RST标志位用于在异常情况下强制终止连接。攻击者通过嗅探获取正在通信的双方的IP地址、端口号和序列号等信息,然后伪造带有RST标志的TCP报文,伪装成通信其中一方向另一方发送,接收方收到后会认为连接出现异常。
-
目的:强制中断受害主机已建立的正常TCP连接,使其通信断开、服务异常终止。
-
TCP会话劫持攻击
-
原理:攻击者首先通过嗅探获取正在通信双方的数据包,从中提取源IP、源端口、目的IP、目的端口以及当前的序列号和确认号。然后攻击者根据这些信息,伪造带有恶意载荷的TCP报文发送给通信中的一方,使目标主机对下一个合法报文的确认号期望值发生变化,导致合法主机发送的报文被拒绝。
-
目的:夺取正常TCP通信双方的会话控制权,冒充合法主机发送恶意数据或篡改通信内容。
第5次实践 防火墙与入侵检测
-
iptables防火墙 :iptables是Linux内核自带的防火墙工具,通过定义规则来控制数据包的流向。常用的规则链包括INPUT(控制进入本机的包)、OUTPUT(控制本机发出的包)和FORWARD(控制转发的包)。
-
Snort入侵检测系统 :Snort是一种开源的网络入侵检测系统(IDS),以旁路监听的方式接入网络,对流量进行分析,通过预定义的规则匹配来发现攻击行为并生成警报。它的特点是只检测不处理,不会对网络流产生任何影响。
-
Snort_inline入侵防御系统 :Snort_inline是在Snort基础上发展而来的入侵防御系统(IPS),与Snort不同,它采用串接方式部署在网络路径中,不仅可以检测攻击行为,还能主动丢弃或修改恶意数据包。
第6次实践 Windows远程渗透与取证
-
Metasploit :Metasploit是目前使用最广泛的渗透测试框架,可以通过选定漏洞模块、配置攻击参数、选择攻击载荷等方式设定参数,然后进行攻击。
-
**MS08-067漏洞 **
-
漏洞原理:该漏洞存在于Windows的Server服务对RPC(远程过程调用)请求的处理过程中。当Server服务接收到一个特殊构造的RPC请求时,由于对请求中路径字符串的处理存在缺陷,会触发缓冲区溢出,攻击者精心构造的数据可以覆盖函数的返回地址,从而执行任意代码。
-
适用的系统:主要影响Windows 2000、Windows XP和Windows Server 2003等较老版本的操作系统。Windows Vista及之后的系统不受此漏洞影响。
-
攻击方式:攻击者通过向目标主机的445端口发送一个恶意构造的RPC请求包即可触发漏洞。由于Server服务在Windows系统中默认开启并以SYSTEM权限运行,攻击者无需任何身份验证即可完成攻击。
-
危害:攻击成功后可以获得目标主机的SYSTEM最高权限,能够控制目标主机,执行任意命令。
第7次实践 Linux远程渗透与攻防对抗
-
SMB/Samba服务 :SMB是Windows网络中文件与打印共享的核心协议,Samba是其在Linux系统上的开源实现,通常监听139和445端口。
-
CVE-2007-2447漏洞
-
漏洞原理:Samba服务中有一个名为username map script的功能选项,用于将客户端提供的用户名映射为系统用户。在处理这一映射过程中,Samba服务对外部传入的用户名参数过滤不严,攻击者可以在用户名中嵌入shell元字符(如反引号、管道符等),这些特殊字符会被直接传递给系统shell执行,从而造成远程命令注入。
-
适用的系统:主要影响Samba 3.0.20到3.0.25之间的版本,Metasploitable2等实验靶机中预装的就是存在该漏洞的Samba版本。
-
攻击方式:攻击者通过向目标主机的139或445端口发送一个包含恶意用户名的认证请求即可触发漏洞,整个过程不需要提供有效的登录凭据。
-
危害:攻击成功后可以直接获得目标主机的root权限,能够执行任意系统命令、读取或修改文件、安装后门程序等。
-
反向Shell与正向Shell :正向Shell是攻击机主动连接靶机获取shell,反向Shell是靶机主动连接攻击机回传shell。反向Shell更常用的原因是,大多数防火墙对从外部进入内部的连接管控较严,而对从内部发起的外连相对宽松,因此反向Shell更容易穿透防火墙。
第8次实践 恶意代码分析
-
PE文件 :PE是Windows系统下的可执行文件格式。
-
UPX加壳 :UPX是一种常见的可执行文件压缩工具,攻击者常用它对恶意代码进行加壳,既能减小文件体积,也能隐藏原始代码中的字符串特征,增加分析的难度。使用upx -d命令或使用动态调试技术修改文件入口点即可脱壳。
-
逆向分析基本流程 :逆向分析是对二进制程序进行解析以理解其功能和执行逻辑的过程,主要分为静态分析和动态分析两种方法。
-
静态分析:在不运行程序的情况下,直接对二进制文件本身进行分析。通过反汇编工具将机器码转换为汇编代码,查看程序的函数结构、控制流程图、字符串常量和导入导出表等信息。常用的静态分析工具包括IDA Pro和objdump。静态分析的优点是不会触发程序的运行行为,缺点是无法观察到程序在运行时的动态变化。
-
动态分析:在程序运行过程中进行分析,通过调试器控制程序的执行流程,观察寄存器值、内存数据和函数调用等运行时信息。常用的动态分析工具包括gdb和OllyDbg。动态分析可以观察到程序运行时的实际行为,但可能会触发程序的反调试机制。在实际的分析过程中,通常将静态分析和动态分析结合使用,互相印证分析结果。
-
恶意代码分类 :常见的类型包括病毒(需依附宿主文件传播)、蠕虫(可自主网络传播)、木马(伪装合法软件)、后门程序(绕过认证远程控制)、僵尸网络客户端(受控于命令与控制服务器)。
第9次实践 缓冲区溢出与Shellcode
-
核心汇编指令 :NOP(空操作)、CMP(比较指令)、JE/JNE(条件跳转)、JMP(无条件跳转)、CALL(函数调用)。
-
objdump反汇编 :objdump是静态反汇编工具,用于查看二进制文件的机器码和汇编代码。
-
gdb调试 :gdb是动态调试工具,可以调试运行中的程序、查看寄存器和内存内容。
-
缓冲区溢出原理 :函数调用时将返回地址压入栈中,局部变量也在栈上分配空间。当向栈上缓冲区写入大量数据时,会覆盖到返回地址所在的位置,从而控制程序跳转到攻击者指定的地址。
第10次实践 Web应用安全
-
SQL注入
-
原因:Web应用程序在构造SQL查询语句时,直接将用户输入拼接到SQL语句中,没有做充分的过滤或转义。
-
常见攻击方式:绕过登录认证(在用户名字段输入 Admin'# 使密码验证部分被注释掉)、越权读取数据(通过UNION注入将其他表的数据附加到查询结果中)、篡改数据(在UPDATE语句中注入额外的赋值操作修改任意字段)。
-
危害:漏洞被利用后,攻击者可以读取、修改、删除数据库中的任意数据。
-
XSS跨站脚本攻击
-
根本原因:Web应用程序在输出用户提交的内容到页面时,没有对特殊字符进行HTML实体编码处理,导致浏览器将用户输入的内容当作代码来解析执行。
-
常见攻击方式:反射型XSS(恶意脚本附加在URL参数中,需诱骗用户点击链接才触发)、存储型XSS(恶意脚本存储在服务器端,任何访问页面的用户都会被攻击,具有持久性)、DOM型XSS(通过修改浏览器端DOM结构触发,不经过服务器)。实践中使用的为存储型XSS。
-
危害:攻击者可以实现窃取用户Cookie、伪造用户操作、篡改页面内容、编写自我传播的XSS蠕虫等。
第11次实践 网页木马与浏览器攻击
-
MS06-014漏洞
-
漏洞原理:MDAC是Windows系统中用于提供数据库访问功能的一组组件,其中的RDS.Dataspace ActiveX控件在对客户端请求的处理上存在缺陷。攻击者可以构造一个恶意网页,在页面中嵌入针对该ActiveX控件的恶意脚本。当用户使用IE浏览器访问该页面时,ActiveX控件会被触发,由于对传入参数缺乏有效校验,攻击者可以向控件传递恶意参数从而执行任意代码。
-
适用的系统:主要影响安装了MDAC 2.5到2.8版本的Windows系统,包括Windows 2000、Windows XP和Windows Server 2003等,这些系统上的IE浏览器均可被利用。
-
攻击方式:攻击者使用Metasploit中的MS06-014模块生成一个包含恶意脚本的网页链接,诱导靶机用户使用IE浏览器访问该链接即可触发漏洞,整个过程属于被动式攻击,需要目标用户的交互。
-
危害:攻击成功后可以在目标主机上以当前登录用户的权限执行任意命令,进而下载和执行木马程序、窃取敏感文件、建立持久化后门等。
-
代码混淆与加密 :攻击者常用xxtea加密、base64编码、八进制编码等手段对恶意代码进行混淆,增加分析难度。取证分析需要对混淆后的代码逐步解密还原。
-
xxtea加密 :xxtea是一种轻量级的对称加密算法,是TEA加密算法的改进版本。它的特点是算法实现简单、运算速度快,常用于网页木马中对恶意代码进行简单加密,以绕过杀毒软件的静态特征检测。
-
base64编码 :base64是一种将二进制数据转换为可打印字符的编码方式,它将3个字节的数据映射为4个可打印字符。base64本身不是加密手段,只是改变数据的表示形式,攻击者常用它来隐藏恶意代码中URL地址或shellcode等敏感字符串。
-
八进制编码 :。在JavaScript中,字符串可以用八进制转义序列来表示,攻击者将恶意代码中的字符全部转换为八进制形式后,原始的攻击逻辑在表面上被隐藏了起来,但JavaScript仍然会正常解析执行。
网络攻防实践课总结:收获与不足
通过本学期的网络攻防实践课程,我在理论认识和动手能力两个方面都有了一定的提升。
在认识层面,最大的收获是建立起了对网络攻防整个流程的系统认识。课程之前,我对网络安全的理解无论是在防御方面还是攻击方面都比较零散。在防御方面知道要装防火墙、装杀毒软件,但并没有系统性地思考过攻击者会从哪些层面发起攻击;在攻击方面,我知道有ARP欺骗攻击等,但是我不知道具体使用什么工具发起攻击,也不知道这些攻击能达到什么效果。通过这十一次实践从基础知识开始学习,我对网络攻击的层次有了比较清晰的认知,从网络层的ARP欺骗和SYN Flood,到系统层的漏洞利用和缓冲区溢出,再到应用层的SQL注入和XSS跨站脚本,攻击的入口和方式远比我想象的要多,同时我也了解了该使用什么工具和方法来进行攻击。在防御方面,我也了解到了想要保护系统和自己数据的安全,要建立全方面的保护措施,从防火墙、IDS、IPS等,并且除了自身电脑的安全,也应该避免访问可能出现威胁的不良网站,以免收到web病毒的攻击。
在技能层面,课程让我掌握了一批常用的攻防工具和分析方法。从最初使用Nmap做信息收集、用Wireshark分析协议,到后来使用kali msfconsole进行渗透测试、用Snort做入侵检测、用IDA Pro做逆向分析,这些工具的使用虽然还远谈不上熟练,但至少让我知道了在面对一个安全问题时可以借助什么工具来分析、从什么角度去入手。另外,本科期间积累的逆向工程基础也在实践中得到了应用,也让这门课的学习轻松了一些。
自身不足之处主要有两点。一是对工具的使用停留在按照实验指导按部就班操作的问题,如果脱离实验指导独立面对一个新的渗透或分析任务,可能还需要摸索比较长的时间,很多时候都需要参考和学习同学们的思路和方法,有的时候缺乏自己的独立思考。二是课程中各次实践之间的跨度较大,从网络协议到逆向分析再到Web安全,每一次都需要接触新的知识领域,实践的知识点掌握得还不够扎实,在最后写这篇总结的时候,发现很多一开始学习的知识存在忘记的情况。
