20252810 2025-2026-2 《网络攻防实践》课程总结
20252810 2025-2026-2 《网络攻防实践》课程总结
1.内容总结
第1次实践 虚拟机的安装以及环境搭建:
对六个虚拟机(Win2kServer_SPO_target、kali-linux-2025.4-vmware-amd64、WinXPattacker、SEEDUbuntu9、Metasploitable_ubuntu、HoneyWall2)进行安装,保证至少有一个攻击机和一个靶机,部署蜜网网关,保证虚拟机之间的连通性。
第2次实践 网络攻防中的信息收集技术:
配置Kali和SEED虚拟机的NAT网络环境,使用nslookup进行域名解析;通过Whois和APNIC查询域名注册信息及IP归属地;学习Nmap的多种扫描技术(主机发现、端口扫描、系统识别、服务探测);安装并利用Nessus进行漏洞扫描以分析靶机风险;以及借助Windows资源监视器查看应用程序通信IP并溯源,结合搜索引擎回溯个人网络足迹。
第3次实践 网络嗅探和取证分析:
学习网络环境配置、域名/IP信息查询、Nmap扫描、Nessus漏洞检测及个人网络足迹溯源,练习tcpdump抓包、观察HTTPS普及、感受Telnet明文传输风险,并通过对一个pcap文件的分析,完成攻击者IP、扫描工具、半开扫描、开放端口及操作系统指纹的溯源取证。
第4次实践 TCP/IP协议栈安全攻击实验:
利用TCP/IP协议栈的设计缺陷(如缺乏认证、资源管理不足),实现对网络通信的监听、劫持、中断或拒绝服务,发现协议层的安全风险。
第5次实践 网络安全与防护技术:
练习防火墙(iptables)的规则配置,以及开源入侵检测系统Snort的安装、配置与流量分析,理解基于主机的访问控制和基于特征的入侵检测工作原理。
第6次实践 Windows系统远程渗透攻击与网络取证分析:
通过Metasploit框架对Windows靶机实施MS08_067漏洞远程渗透及后渗透操作,结合Wireshark流量取证分析IIS Unicode目录遍历与MSADC RDS DataFactory漏洞的攻击链
第7次实践 漏洞渗透与流量取证分析:
通过Metasploit框架对Linux靶机实施Samba Usermap_script漏洞远程渗透及后渗透操作,结合Wireshark流量取证分析攻击流量,提取攻击者IP、目标IP和端口、攻击利用漏洞及反弹Shell过程。
第8次实践 恶意代码与僵尸网络流量分析:
进行恶意代码样本的文件类型识别、查壳脱壳、静态字符串提取及IDA Pro逆向分析,结合Crackme程序的关键字符串定位与控制流图分析,了解后门程序的C2通信、持久化、内网扫描、DDoS攻击等功能及反逆向技术;利用Wireshark、tcpflow、tcpdump等工具对僵尸网络流量进行取证分析,统计在线用户数、攻击源IP,识别IRC协议、SMB漏洞利用、Radmin暴力破解等攻击行为。
第9次实践 Linux缓冲区溢出漏洞利用实践:
Linux可执行文件pwn1的缓冲区溢出漏洞的三种攻击方法:①手工修改二进制文件,将函数调用地址改为getShell;②利用栈溢出覆盖返回地址,触发getShell函数;③注入shellcode并借助NOP滑行,使程序跳转执行恶意代码。实验过程中使用了objdump、gdb、perl、xxd等工具,并涉及关闭NX和ASLR等安全机制。
第10次实践 SQL注入与XSS跨站脚本攻击实践:
利用Admin'#绕过登录认证,并通过UPDATE语句注入越权修改数据,使用参数化查询修复漏洞。针对Elgg社交平台,实施存储型XSS攻击,包括弹窗、窃取Cookie、伪造添加好友请求、修改受害者个人资料,并编写具有自我复制能力的XSS蠕虫;最后通过启用HTMLawed插件对输入进行转义,成功防御XSS攻击。
第11次实践 浏览器渗透攻击与网页木马取证分析:
使用Metasploit的MS06-014漏洞实施浏览器渗透攻击,获取反向Shell;对真实网页木马样本进行多阶段取证,识别ActiveX控件滥用、堆喷射、编码混淆等手法,提取恶意文件;攻防对抗中构造混淆URL并解混淆分析漏洞特征。
2.最喜欢且做得最好的实践是哪次?为什么
第十次实践,第十次实践我是参照着同学的博客做的,整个步骤非常顺利,相比与前一次bug百出的实验这次实验做得让我比较舒心,第十次实践真是个好宝宝,总能让我非常快速的得到我想要的效果😭当然除此之外,我喜欢第十次实验还有以下原因:
第一个是见证攻击成功的感觉,这次实验只是在登录框里打个 Admin'#,就能够直接进去,还有改工资那个,虽然知道是实验环境,但还是觉得这个系统的漏洞确实很大,如果是在现实生活中这么改可能真的要乱套了。
第二个是XSS部分。从最简单的弹窗,到偷别人Cookie,再到替别人发好友请求、改别人的个人资料,最后写出了一个会自动传播的蠕虫。当我在Boby的账号里看到Alice的主页被我改成了“已被攻破”,我才对这个攻击有了实感,让我觉得攻击并不是像以前想的那样深不可测难以掌握,而是需要用正确的方法来体验,来实践。
第三个是防守部分。先用HTMLawed把输入转义,结果之前能弹窗的代码全变成了纯文本,弹不出来了。由此真正明白什么叫“过滤”,什么叫“转义”。
整个实验的过程可视化很强,跟我本科的时候做html一样。每搞定一个小点,拿到Shell、偷到Cookie、搞定蠕虫,看到攻击成功后的页面都有一种成就感。而且Elgg是个真实的社交平台样子,给我一种我的攻击很厉害的感觉。
3.本门课学到的知识总结
第1次实践 虚拟机的安装以及环境搭建
1.攻击机:在渗透测试或攻防演练中,用于发起攻击的机器。通常装有攻击工具。模拟攻击者。
2.靶机:作为攻击目标的主机,存在漏洞的系统。模拟受害者。
3.桥接模式:VMware等虚拟化软件的网络模式,虚拟机直接连接到物理网络,与宿主机处于同一局域网,获得独立IP,可被外部访问。
4.NAT模式:虚拟机的网络通过宿主机进行地址转换,共享宿主机IP访问外网,但外部不能直接访问虚拟机。
第2次实践 网络攻防中的信息收集技术
1、被动信息收集
Whois查询:获取域名的DNS服务器、注册日期、过期日期、注册商、注册人联系方式。
APNIC查询:查询IP地址的地理归属、所属网络运营商(ISP)。
nslookup:命令行工具,向DNS服务器查询域名对应的IP地址。
2、主动信息收集
主机发现:
发送ICMP Echo、TCP SYN/ACK等数据包,发现目标网段内的存活主机。
端口扫描:
TCP SYN扫描(-sS):半开放扫描,发送SYN包,根据返回包判断端口状态,效率高、不易被记录。
其他类型:TCP全连接扫描(-sT)、FIN扫描(-sF)、Null扫描(-sN)等。
操作系统识别(-O):分析TCP/IP协议栈指纹,猜测目标操作系统类型和版本。
服务/版本探测(-sV):连接开放端口,分析返回的Banner信息,确定服务程序及版本。
3、Nessus漏洞扫描
Nessus漏洞扫描是全球部署最广泛的自动化漏洞扫描工具,用于检测已知安全漏洞。
作用:
发现漏洞、评估风险、生成报告、合规检查、持续监控
总结:
信息收集分为被动与主动两种方式。被动收集不直接接触目标,包括Whois查询域名注册信息、APNIC查询IP归属地、nslookup进行DNS解析,隐蔽性较高。主动收集则需要与目标交互,包括主机发现、端口扫描(如SYN半开扫描)、操作系统识别和服务版本探测,信息更精确但易留痕迹。Nessus作为自动化漏洞扫描工具,用于检测已知漏洞、评估风险并生成报告,是从信息收集过渡到漏洞利用的关键环节。
第3次实践 网络嗅探和取证分析
1.tcpdump:命令行网络抓包工具
关键参数作用:
-n:不解析主机名与服务名(以IP地址和端口号数字形式显示)
host:过滤指定主机的流量
端口过滤:限制抓取特定端口的流量
网络协议演进:现代网站普遍使用HTTPS(443端口),而非传统的HTTP(80端口)
2.Telnet:明文传输协议,所有数据(包括密码)均不加密
风险本质:在网络中传输时,数据可被监听者直接读取
3.Wireshark功能点:
Follow TCP Stream:重组并显示TCP会话的完整传输内容
4.网络扫描取证分析
(1)攻击者与目标识别
通过分析SYN包特征,可确定攻击者IP和目标IP
(2)扫描工具识别
依据相同的源端口、变化的窗口大小等特征,可判断扫描工具为Nmap
(3)扫描方法识别
TCP SYN半开扫描:发送SYN包,根据返回包判断端口状态,不完整建立TCP三次握手
工作原理:收到SYN+ACK表示端口开放,收到RST表示端口关闭
(4)开放端口发现
筛选SYN+ACK响应包,可列出目标主机开放的端口
(5)操作系统指纹识别
基于TTL值(生存时间) 推断操作系统类型
TTL=57可推断为Linux系统(巩固网络层特征的操作系统识别方法)
总结:
网络嗅探与取证分析的核心:使用tcpdump抓包观察到HTTPS普及与Telnet明文传输风险。通过Wireshark分析pcap文件,可确定攻击者IP、靶机IP,根据特征识别Nmap的半开扫描,筛选SYN+ACK确认开放端口,并根据TTL=57推断目标为Linux系统。
第4次实践 TCP/IP协议栈安全攻击实验:
1.ARP 缓存欺骗攻击
利用 ARP 协议无认证的缺陷,攻击者伪造 ARP 响应,将目标主机的 IP 与攻击者的 MAC 地址绑定,使流量被重定向到攻击者,实现中间人劫持。
2.ICMP 重定向攻击
攻击者伪造 ICMP 重定向报文,告知目标主机存在更优的网关(实际为攻击者),从而诱导目标将后续流量发往攻击者,达到流量劫持或拒绝服务的目的。
3.SYN Flood 攻击
攻击者向目标服务器发送大量伪造源 IP 的 SYN 请求,但不完成三次握手,使服务器维护大量半连接,占满连接队列,导致无法响应正常用户的连接请求,属于拒绝服务攻击。
4.TCP RST 攻击
攻击者通过嗅探获取合法 TCP 连接的序列号等信息,伪造 RST 报文发送给通信一方,强制中断该 TCP 连接,常用于切断特定会话或破坏通信。
5.TCP 会话劫持攻击
攻击者在合法通信双方建立连接后,通过猜测或嗅探获得序列号,向会话中注入恶意数据或替代一方通信,从而劫持控制权,实现未经授权的操作。
总结:
利用TCP/IP协议缺乏认证的缺陷:ARP欺骗实现中间人劫持;ICMP重定向诱导流量转向攻击者;SYN Flood耗尽连接队列造成拒绝服务;TCP RST强制中断连接;TCP会话劫持注入恶意数据夺取控制权。
第5次实践 网络安全与防护技术:
1.PDR模型
PDR安全模型是一个基于时间的动态安全模型,以经典的网络安全不等式P>Dt+Rr为本质基础,并提出安全性可量化和可计算的观点。如果信息系统的防御机制能够抵御入侵的时间P,能够超过检测机制发现入侵的时间D和响应机制有效应对入侵的时间Rt之和,那么这个信息系统就是安全的。
- P²DR模型
20世纪90年代末RSS公司在PDR模型的基础上进一步扩展出P2DR安全模型,基本描述为:网络安全=根据风险分析制定安全策略(Policy)+执行安全防护策略(Protection)+实时检测(Detection)+实时响应(Response)。
- 防火墙
防火墙指的是置于不同的网络安全域之间,对网络流量或访问行为实施访问控制的安全组件或设备。从技术范畴上说,防火墙属于一种网络上的访问控制机制,通过在不同的网络安全域之间建立起安全控制点,对通过的网络传输数据进行检查,根据具体的安全需求和策略设置决定是否允许网络访问通过防火墙,达到保护特定网络安全域免受非法访问和破坏的安全目标。其具备以下功能:
1.检查控制进出网络的网络流量
2.防止脆弱或不安全的协议和服务
3.防止内部网络信息的外泄
4.对网络存取和访问进行监控审计
5.防火墙可以强化网络安全策略并集成其他安全防御机制
缺点如下:
1.来自网络内部的安全威胁
2.通过非法外联的网络攻击
3.计算机病毒传播
4.针对开放服务安全漏洞的渗透攻击。
5.针对网络客户端程序的渗透攻击
6.基于隐蔽通道进行通信的特洛伊木马或僵尸网络。
4.入侵检测
入侵检测,顾名思义,就是对入侵行为的检测与发现。在网络攻防技术领域,一次入侵可被定义为任何尝试破坏信息资源的保密性、完整性或可用性的行为。入侵检测即为通过对计算机网络或计算机系统中若干关键点信息的收集和分析,从中发现入侵行为的一种安全技术。
5.开源网络入侵检测系统Snort
Snort是一款非常著名的开源网络入侵检测系统软件,它被设计成一个跨平台、轻量级的网络入侵检测系统,用C语言编写,并采用了标准的捕获数据包函数库libpcap,具有非常好的可移植性。Snort软件的基本架构主要由四个基本部分组成
数据包嗅探/解码器(sniffer)
预处理器/插件(preprocessor)
检测引|擎/插件(detection engine)
输出模块/插件(output modules)
总结:
PDR模型强调防御时间需大于检测与响应时间之和;P²DR模型将安全策略作为核心要素。防火墙能控制访问、防止信息泄露,但无法防御内部威胁和病毒传播等攻击。Snort作为开源入侵检测系统,通过解码、预处理、检测和输出模块实现入侵分析。
第6次实践 Windows系统远程渗透攻击与网络取证分析:
1.Metasploit 框架应用
MS08_067 漏洞利用
漏洞原理:了解微软Windows Server服务中的远程代码执行漏洞(CVE-2008-4250)。该漏洞影响SMBv1协议,允许攻击者在未打补丁的系统上远程执行任意代码。
漏洞影响:Windows 2000、XP、Server 2003、Server 2008等旧版操作系统。
利用过程:
msfconsole:进入Metasploit交互式控制台。
search ms08_067:在漏洞库中搜索目标漏洞的模块。
use exploit/windows/smb/ms08_067_netapi:加载对应的漏洞利用模块。
show options:查看当前模块需要配置的参数(靶机IP RHOST、本机IP LHOST等)。
show payloads:查看该漏洞可利用的载荷(payload,即攻击成功后执行的操作代码)。
set payload windows/shell_reverse_tcp:设置一个反向TCP Shell载荷,靶机会主动连接攻击者的IP和端口,从而获得Shell控制权。
exploit:执行攻击。
流量对比分析:在攻击过程中使用Wireshark抓包,筛选ip.addr == <攻击机IP> && ip.addr == <靶机IP>,对比攻击前后的网络流量特征。
2.网络取证与流量分析
Wireshark过滤与追踪
使用ip.addr == 172.16.1.106 && http等组合过滤条件,精准定位特定主机和协议的流量。
使用“Follow--TCP Stream”功能,完整还原攻击者与靶机之间的整个会话过程。
IIS Unicode目录遍历漏洞(CVE-2000-0886)
原理:旧版IIS服务器对URL编码解析存在缺陷。攻击者利用%C0%AF等“超长编码”绕过路径检查。
利用方式:将%C0%AF与..组合,构造如/..%C0%AF../..%C0%AF../boot.ini的请求,实现目录向上跳转,读取系统敏感文件。
MSADC RDS DataFactory漏洞(CVE-1999-1011)
原理:微软RDS组件中的AdvancedDataFactory.Query方法允许执行SQL查询,但由于输入过滤不严,可被注入系统命令。
恶意行为:读取敏感文件、探测漏洞、植入后门、下载黑客工具。
识别蜜罐:通过发现README.NOW.Hax0r提示文件和/wiretrip目录下的安全工具,判断目标为实验室环境。
行为特征:非破坏性操作,如浏览文件、阅读源码、留下文本记录,符合“研究型”或“渗透测试者”的行为模式。
总结:
利用Metasploit对Windows靶机实施MS08_067漏洞渗透,成功获取反向Shell。通过Wireshark流量分析,发现攻击者利用IIS Unicode目录遍历漏洞(%C0%AF编码绕过)读取敏感文件,并利用MSADC RDS DataFactory漏洞注入命令、植入后门。流量中的提示文件和工具目录表明目标为蜜罐环境,攻击者行为以浏览研究为主,非破坏性操作。
第7次实践 漏洞渗透与流量取证分析:
1.Samba服务Usermap_script漏洞(CVE-2007-2447)
Samba 3.0.20到3.0.25rc3版本中,当配置了username map script选项时,远程攻击者可以通过发送一个包含恶意命令的用户名(例如/nohup sh -c ...)来执行任意系统命令,从而获取服务器权限。
2.Metasploit基本操作流程
msfconsole:启动框架。
search samba:搜索相关漏洞模块。
use exploit/multi/samba/usermap_script:选用特定漏洞利用模块。
show payloads:查看可用的载荷(payload)。
set payload cmd/unix/bind_netcat或cmd/unix/reverse:设置载荷类型(正向绑定shell或反向shell)。
set LHOST / set RHOST:配置攻击机IP和靶机IP。
show options:检查参数是否齐全。
exploit:执行攻击。
3.正向Shell与反向Shell的区别
bind_netcat:靶机在某个端口(如4444)监听,攻击机主动连接该端口获得shell。适合靶机有公网IP或防火墙允许入站连接。
reverse:攻击机监听一个端口,靶机主动连接攻击机获得shell。更适合靶机在内网、防火墙阻止入站但允许出站的情况。
4.后渗透基本命令
ifconfig:查看靶机网络配置。
whoami:确认当前用户身份(实验中获得root)。
pwd:查看当前目录路径。
总结:
利用Samba服务usermap_script漏洞(CVE-2007-2447),通过Metasploit框架实施渗透。基本流程包括搜索漏洞模块、设置载荷(正向bind_shell或反向reverse shell)、配置攻击机与靶机IP后执行攻击,成功获取Linux靶机root权限。后渗透阶段使用ifconfig、whoami、pwd等命令进行信息收集。正向Shell适用于靶机可被直连的场景,反向Shell则更适合靶机在内网且防火墙限制入站的情况。
第8次实践 恶意代码与僵尸网络流量分析:
1.文件类型识别与查壳脱壳
使用 file 命令识别 PE 文件格式与平台。
通过 PEiD 检测加壳类型(如 UPX 壳)。
利用脱壳机(如超级巡警)对加壳样本进行脱壳处理。
2.静态字符串提取与逆向分析
使用 strings 命令提取可读字符串。
使用 IDA Pro 分析脱壳后样本,查找作者信息、函数调用图与控制流图。
3.Crackme 程序分析
通过命令行参数试探程序行为。
使用 IDA Pro 定位关键字符串与成功输出信息。
分析函数调用关系与控制流,确定正确输入参数。
恶意代码样本摘要与基本信息提取
计算 MD5 哈希值作为样本唯一标识。
从字符串中提取编译时间、作者信息。
4.后门程序功能分析
识别 C2 通信方式(HTTP、IRC)。
解析支持的命令(文件上传/下载、截屏、休眠、DDoS 攻击)。
分析持久化机制(注册表 Run 键)。
识别内网扫描与横向移动行为。
5.反逆向技术识别
加壳(UPX)导致静态字符串乱码。
字符串混淆/加密(运行时解密)。
反虚拟机检测(检查 VMware Tools 注册表路径)。
6.恶意代码分类
区分后门(RAT)、病毒、蠕虫的特征。
基于远程控制、持久化、无自主传播判定为后门程序。
7.流量分析与工具使用
使用 Wireshark 过滤语法(ip.src、tcp.dstport)分析特定通信。
使用 tcpflow 提取 TCP 流并输出到文件。
使用 tcpdump 结合管道命令(grep、sed、tr、sort、uniq、wc)统计在线用户数和攻击源 IP。
8.IRC 协议分析
IRC 基本概念:客户端-服务器聊天协议。
IRC 注册消息(USER、PASS、NICK)。
常用端口 6667 及其变体。
解析 353 响应获取频道用户列表。
9.僵尸网络分析
僵尸网络定义:受控主机组成的网络,通过 C2 信道接收命令。
常见用途:DDoS、垃圾邮件、信息窃取、恶意软件扩散。
10.攻击溯源与漏洞利用分析
提取去重攻击源 IP 地址。
识别 SMB 协议(445 端口)的 PsExec 远程执行行为。
识别 SAMR 接口的域用户枚举。
识别 Radmin(4899 端口)暴力破解、arepa-raft(3025 端口)探测。
11.攻击成功判定
根据流量特征(如文件创建、命令执行)判断攻击是否成功。
分析攻击链:从空会话/SMB 漏洞到上传后门、执行命令、信息枚举。
总结:
对恶意代码样本进行查壳脱壳、静态字符串提取及IDA Pro逆向分析,提取C2通信方式、持久化机制及DDoS等攻击指令,并识别反虚拟机等反逆向技术。流量分析方面,使用Wireshark、tcpflow和tcpdump统计在线用户数、解析IRC协议、识别攻击源IP,分析SMB漏洞利用、Radmin暴力破解等行为,最终梳理完整攻击链并判定攻击成功与否。
第9次实践 Linux缓冲区溢出漏洞利用实践:
1.缓冲区溢出原理
当程序使用不安全的函数(如 gets、strcpy、sprintf 等)向栈上分配的固定长度缓冲区写入数据时,若未对输入长度进行边界检查,超出的数据会溢出并覆盖相邻内存区域。通过精心构造溢出数据,可以覆盖函数的返回地址,从而劫持程序控制流,使程序跳转到攻击者指定的地址执行恶意代码。
2.x86 函数调用栈帧结构
每个函数被调用时,会在栈上分配一个栈帧。
栈向低地址方向增长(高地址在上,低地址在下)。
典型栈帧布局(从高地址到低地址):
调用者传入的参数
函数返回地址(call 指令自动压入)
旧的 ebp 值(调用者的栈帧基址,被压入保存)
局部变量区(包含字符数组等缓冲区)
ret 指令从栈顶弹出返回地址,并跳转到该地址继续执行。
3.漏洞利用的三种基本方法
修改可执行文件:直接编辑二进制文件,修改 call 指令的目标地址或函数指针,使程序静态地跳转到恶意函数(如 getShell)。
代码复用攻击(跳转至已有函数):不注入新代码,而是通过栈溢出覆盖返回地址,使其指向程序或共享库中已有的恶意函数(如 system、execve 等)。
Shellcode 注入攻击:当目标程序中没有可利用的函数时,攻击者将一段机器码(shellcode,例如启动 /bin/sh 的代码)作为输入注入栈中,然后将返回地址覆盖为 shellcode 的起始地址,使其执行。
4.Shellcode 与 NOP Sled
Shellcode:一段实现特定功能(如获取 shell、反弹连接)的机器码,通常体积小巧、不含空字符。
NOP Sled:连续多个 0x90(NOP 指令)组成的滑行区。当返回地址指向 NOP 区域时,CPU 会连续执行 NOP 直至遇到 shellcode,从而提高溢出命中率。
5.关键调试与分析工具
objdump -d:反汇编可执行文件,查看函数地址、指令编码及程序逻辑。
gdb:动态调试程序,可设置断点、查看内存与寄存器内容、精确定位溢出偏移量、寻找 shellcode 在栈上的地址。
perl / python:生成二进制 payload,如 perl -e 'print "A"x32 . "\x7d\x84\x04\x08"'。
xxd:将二进制数据以十六进制形式显示,便于验证 payload 内容。
execstack:修改 ELF 文件的栈可执行标志(-s 开启,-c 关闭),用于控制 NX/DEP 保护。
6.现代操作系统的安全防御机制
NX(No-eXecute)/ DEP(Data Execution Prevention):将内存页标记为不可执行,阻止在栈或堆上执行代码。攻击者若想注入 shellcode,需先关闭此保护(如 execstack -s)或使用 ROP 技术绕过。
Stack Canary(栈 Cookie):在函数返回地址之前放置一个随机值,函数返回前检查该值是否被篡改。若缓冲区溢出覆盖了 canary,程序会终止执行。
ASLR(Address Space Layout Randomization):随机化进程的关键内存区域(栈、堆、共享库)的基址,使攻击者难以预测 shellcode 或库函数的绝对地址。绕过 ASLR 通常需要信息泄露或暴力猜解。
7.小端字节序
x86 架构采用小端存储,即多字节数据的低字节存放在低地址处。在覆盖返回地址时,需将目标地址按小端顺序写入 payload(例如地址 0x0804847d 应写为 \x7d\x84\x04\x08)。
总结:
利用不安全函数(如strcpy)向固定长度缓冲区写入超限数据,覆盖返回地址劫持程序控制流。实现三种攻击:修改二进制文件调用地址、栈溢出跳转至已有函数、注入shellcode配合NOP滑行。使用objdump、gdb、perl、xxd等工具,理解NX、ASLR等防御机制及小端字节序。
第10次实践 SQL注入与XSS跨站脚本攻击实践:
1.SQL注入攻击原理
SELECT语句注入:攻击者在登录表单等输入点提交经过精心构造的字符串(如Admin'#),利用后端SQL语句的字符串拼接漏洞。输入的#符号使后续的密码验证部分被数据库当作注释忽略,从而绕过身份认证,以管理员或其他用户身份登录系统。
UPDATE语句注入:在个人信息更新等操作界面,攻击者同样可以通过修改请求参数或表单数据,拼接额外的SQL命令,从而越权修改数据库中本无权修改的字段(如薪资、密码等)。
2.SQL注入防御方法
避免使用字符串拼接的方式构建SQL语句,改用参数化查询(Prepared Statement)。通过将用户输入当作参数绑定,而非SQL代码的一部分来执行,可以从根本上防止注入攻击。
3.XSS(跨站脚本攻击)原理
存储型XSS:攻击者将恶意JavaScript代码提交并存储到服务器端(如个人简介、留言板等)。当其他用户访问包含该恶意代码的页面时,浏览器会解析并执行脚本,导致攻击发生。
反射型XSS:恶意脚本包含在URL参数等请求中,服务器将输入直接反射回响应页面,导致脚本在受害者浏览器中执行。
4.XSS攻击常见利用方式
弹窗测试:通过验证漏洞存在性。
窃取Cookie:通过document.cookie获取用户Cookie,并利用图片请求等方式将Cookie发送至攻击者控制的服务器,从而实现会话劫持。
伪造请求(CSRF-like操作):利用JavaScript中的XMLHttpRequest对象,携带受害者的安全令牌(__elgg_ts和__elgg_token),在受害者不知情的情况下代表其发送HTTP请求,完成添加好友、修改个人资料等操作。
XSS蠕虫:编写能够自我复制和传播的恶意脚本。当受害者查看包含蠕虫代码的页面时,蠕虫代码执行并修改受害者的个人资料,将自身代码复制进去,使后续访问受害者主页的用户也被感染,实现病毒式传播。
5.XSS攻击防御方法
对用户输入进行严格的过滤和转义,例如使用HTMLawed等插件将特殊字符(如<、>)转换为HTML实体,使浏览器不再将其解析为可执行脚本。
总结:
SQL注入:利用Admin'#绕过登录认证,通过UPDATE语句越权修改数据,防御方法为参数化查询。XSS攻击:在Elgg平台实施存储型XSS,包括弹窗、窃取Cookie、伪造添加好友请求、修改受害者资料,并编写具有自我复制能力的XSS蠕虫。防御方法为启用HTMLawed插件对输入进行转义。
第11次实践 浏览器渗透攻击与网页木马取证分析:
1.浏览器渗透攻击基础
(1)漏洞利用原理
浏览器渗透攻击通常利用目标浏览器或其插件(如ActiveX控件)的安全漏洞,通过构造恶意网页脚本,在用户无感知的情况下执行任意代码。
典型漏洞如 MS06-014(Microsoft Data Access Components 中的漏洞,CVE-2006-0003),攻击者可通过创建特定的 ActiveX 对象(CLSID:BD96C556-65A3-11D0-983A-00C04FC29E36)绕过安全限制,实现远程代码执行。
(2)Metasploit 攻击流程
使用 msfconsole 启动框架,通过 search 查找特定漏洞模块。
选择漏洞模块(如 exploit/windows/browser/ie_createobject),配置 payload(如 windows/shell/reverse_tcp 或 generic/shell_reverse_tcp)。
设置本地主机 LHOST(攻击机 IP)和可选 URIPATH,运行 exploit 生成恶意 URL。
当目标访问该 URL 时,攻击模块会发送构造的恶意 HTML/JS 代码,触发漏洞并建立反向 shell 会话。
(3)反向连接与会话管理
反向 TCP payload 使靶机主动连接攻击机的监听端口(默认 4444),可绕过防火墙入站限制。
使用 sessions 查看已建立的会话,sessions -i 进入交互式 shell,可执行系统命令(ipconfig、getuid 等)。
2.恶意脚本分析与取证技术
(1)多阶段恶意链
网页木马常采用多层跳转与解密:start.html → 解密得到新 URL → 下载下一级脚本 → 最终释放可执行文件。
每层资源通过 MD5 哈希值 进行标识,分析时可计算哈希并从指定仓库下载对应文件。
(2)ActiveX 控件滥用
恶意代码通过 document.createElement("object") 并设置 classid 创建风险控件。
常见的被滥用控件包括:
Adodb.Stream:实现文件读写、下载。
Shell.Application:执行系统命令。
MPS.StormPlayer、POWERPLAYER.PowerPlayerCtrl.1、BaiduBar.Tool 等第三方控件,用于下载或执行恶意载荷。
(3)堆喷射(Heap Spray)技术
通过大量分配填充块(如 NOP 滑板 %u9090 + shellcode)来占据内存的特定地址范围,提高漏洞利用成功率。
(4)编码与混淆绕过
攻击者常用 Unicode 小端序(%uXXXX)、十六进制转义(\xXX)、八进制转义、XXTEA 加密等混淆手段隐藏真实 URL 和执行逻辑。
分析时需要反向转换:提取混淆字符串 → 字节序还原 → 解密 → 得到明文字符串。
(5)持久化与反重复触发
恶意代码通过设置 cookie(如 ce=windowsxp)和过期时间,避免同一浏览器多次执行相同攻击行为。
3.攻防对抗实践要点
攻击方
利用 Metasploit 构造至少两个不同浏览器漏洞的恶意 URL,并进行混淆处理(如 URL 路径随机化、JS 代码编码)。
通过欺骗性邮件诱使防守方点击链接。
防守方
从邮件中提取挂马链接,访问后查看网页源码或抓取网络流量。
对混淆代码进行解混淆(可使用在线工具如 JYSHARE、jsnice 等),还原出原始漏洞利用代码。
识别漏洞特征:如 CLSID 对应 MS06-014,或特定函数调用(如 storm.rawParse 对应播放器漏洞)。
分析完毕后,可形成漏洞威胁情报,指导补丁部署或安全策略调整。
总结:
攻击侧利用浏览器或插件漏洞(如MS06-014的ActiveX控件),通过Metasploit生成恶意URL并诱导访问,建立反向Shell会话。恶意脚本常采用多阶段跳转、堆喷射、编码混淆及cookie持久化来绕过检测。取证侧需提取并解混淆代码,识别被滥用的ActiveX控件(如Adodb.Stream、Shell.Application)及漏洞特征,最终形成威胁情报指导防御。
4.课堂的收获与不足
通过这11次循序渐进的实践,我从一个只了解皮毛的初学者,到能够独立完成从环境搭建、信息收集、漏洞利用到流量取证、防御配置的完整过程。整个学习过程既有攻克难题的成就感,也让我清醒地看到了自身的不足。
关于收获,最核心的一点是构建了较为完整的“攻击链”认知。从最基础的虚拟机环境与蜜网网关搭建开始,逐步深入到信息收集、网络嗅探、协议栈攻击、Web注入、系统渗透以及最后的防御技术。我不再只是孤立地学会某个技术点,而是能够理解攻击者从踩点扫描到渗透维持再到痕迹清理的完整行动链条。例如,当我亲手利用MS08_067漏洞获得Windows靶机的Shell,或通过构造Admin'#绕过登录认证时,才真正理解漏洞是如何被触发的。这种攻击者的视角让我在后续学习防火墙规则和入侵检测时有了更强的目的性,跟踪%C0%AF编码绕过IIS目录检查的数据包,也让我对Web攻击的流量特征有了直观认识。
同时,我深刻体会到了“未知攻,焉知防”的实践理念。通过多次使用Wireshark对攻击过程进行复盘,我学会了如何设置过滤条件、追踪TCP流、提取关键攻击载荷,尤其是在分析Samba漏洞反弹Shell和IRC僵尸网络通信时,能够识别出攻击者的C2通信和DDoS攻击指令。而在防御侧,从手动配置iptables规则限制访问,到使用参数化查询和HTMLawed插件防御SQL注入与XSS攻击,我认识到安全应该贯穿于开发和运维的每一个环节,而非事后补救。
说到不足,最明显的一点是对工具的依赖较强,独立编写利用脚本的能力还很薄弱。实验过程中我主要依靠Metasploit、Nmap等成熟工具完成攻击,一旦需要修改或编写POC,比如第9次缓冲区溢出实验中的shellcode构造,就明显力不从心。此外,我对现代安全机制的绕过技术还缺乏实践经验,比如栈保护、地址随机化等缓解措施的绕过方法,这是我需要进一步学习的方向。在流量分析方面,面对较大的pcap文件或多步骤复合攻击时,我虽然能根据提示找到关键证据,但缺乏一套系统化的分析流程,面对海量数据时容易陷入细节而忽略整体攻击脉络。各实验模块之间的知识串联也不够顺畅,将信息收集、漏洞利用、权限维持、痕迹清理等环节整合成一个连贯的渗透测试流程时,仍感到生疏。
总的来说,这门课程为我打下了坚实的网络攻防实践基础,最大的收获是建立了“以攻促防”的核心思维。未来我计划着重提升安全编程能力,学习现代漏洞利用与缓解技术,弥补实战与创新的短板。
浙公网安备 33010602011771号