#渗透测试#红蓝攻防#HW#漏洞挖掘#漏洞复现02-永恒之蓝漏洞

发布于:2024-11-29 ⋅ 阅读:(34) ⋅ 点赞:(0)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读!!!

目录

永恒之蓝漏洞(EternalBlue)

一、漏洞概述

二、漏洞原理

三、漏洞利用流程

四、漏洞影响范围

五、漏洞修复

六、检测方法

七、防御措施

八、永恒之蓝漏洞影响的行业

 九、永恒之蓝漏洞修复的最佳实践

 十、漏洞复现

十一、脚本编写验证永恒之蓝


永恒之蓝漏洞(EternalBlue)

一、漏洞概述

永恒之蓝(EternalBlue)是一种严重的安全漏洞,主要影响Windows系统的SMB(Server Message Block)协议。该漏洞最早由美国国家安全局(NSA)发现并利用,后来在2017年4月被黑客组织“影子经纪人”(Shadow Brokers)公开,导致全球范围内的大规模网络攻击。

二、漏洞原理

永恒之蓝漏洞存在于Windows系统的SMBv1协议中,具体来说是在处理SMB2协议的压缩功能时出现的。攻击者可以利用这个漏洞远程执行代码,从而获得对目标系统的完全控制权。漏洞的核心在于SMB协议在处理特定类型的网络数据包时存在缓冲区溢出的问题,这使得攻击者能够在未经身份验证的情况下执行任意代码。

三、漏洞利用流程

  1. 扫描目标系统:攻击者首先需要扫描目标系统的网络端口,特别是445端口(SMB服务默认端口)。
  2. 发送恶意数据包:一旦确认目标系统存在漏洞,攻击者会发送特制的恶意数据包,这些数据包设计用来触发SMB协议中的缓冲区溢出。
  3. 执行恶意代码:触发漏洞后,攻击者可以在目标系统上执行任意恶意代码,例如安装后门程序、窃取敏感信息或传播勒索病毒(如WannaCry)。
  4. 控制系统:成功利用漏洞后,攻击者可以获得对目标系统的完全控制权,执行任意操作。

四、漏洞影响范围

永恒之蓝漏洞影响了多个版本的Windows系统,包括但不限于:

  • Windows 7
  • Windows Server 2008
  • Windows XP
  • Windows 10

此外,使用SMBv1协议的其他设备也可能受到影响,例如某些型号的医疗设备。

五、漏洞修复

为了防止永恒之蓝漏洞被利用,微软已经在2017年3月发布了补丁(MS17-010)。建议采取以下措施:

  1. 安装补丁:尽快为所有受影响的Windows系统安装MS17-010补丁。
  2. 禁用SMBv1协议:如果不需要使用SMBv1协议,可以考虑禁用它,以减少潜在的攻击面。
  3. 启用防火墙:使用防火墙规则限制对445端口的访问,仅允许经过授权的设备连接。

六、检测方法

可以通过以下方法检测目标系统是否存在永恒之蓝漏洞:

  1. 使用nmap扫描:使用nmap扫描目标系统的445端口,确认是否存在SMB服务。
  2. 使用Metasploit框架:Metasploit框架提供了专门的模块来检测和利用永恒之蓝漏洞,可以通过执行相关模块来确认漏洞是否存在。

七、防御措施

  1. 及时更新软件:定期检查并更新系统上的所有软件,确保它们都是最新的稳定版本。
  2. 限制权限:尽量避免以管理员权限运行服务,降低潜在漏洞带来的风险。
  3. 监控异常行为:使用入侵检测系统(IDS)和入侵防御系统(IPS)监控异常行为,及时发现并阻止潜在攻击。

八、永恒之蓝漏洞影响的行业

永恒之蓝漏洞的影响范围非常广泛,几乎涵盖了所有依赖Windows系统的行业。以下是一些受影响较大的行业:

  1. 金融行业:银行、保险公司和其他金融机构通常依赖Windows系统来运行关键业务应用程序。由于这些系统通常包含大量敏感信息,因此它们成为攻击者的主要目标。

  2. 医疗行业:医院和其他医疗机构使用Windows系统来管理患者记录、医疗设备和其他关键数据。永恒之蓝漏洞可能导致医疗设备无法正常工作,甚至可能危及患者的生命。

  3. 教育行业:学校和大学使用Windows系统来管理学生记录、教学材料和其他重要数据。永恒之蓝漏洞可能导致这些数据被窃取或破坏。

  4. 制造业:制造公司使用Windows系统来管理生产线、库存和其他关键业务流程。永恒之蓝漏洞可能导致生产线停工,造成巨大的经济损失。

  5. 政府机构:政府部门使用Windows系统来管理公共记录、敏感信息和其他关键数据。永恒之蓝漏洞可能导致这些数据被窃取或破坏,影响公共安全和社会稳定。

  6. 能源行业:电力公司、石油公司和其他能源公司使用Windows系统来管理能源生产、分配和其他关键业务流程。永恒之蓝漏洞可能导致能源供应中断,造成巨大的经济损失和社会影响。

  7. 零售行业:零售商使用Windows系统来管理销售点(POS)系统、库存和其他关键业务流程。永恒之蓝漏洞可能导致POS系统无法正常工作,影响销售和客户服务。

  8. 科技行业:软件开发公司、硬件制造商和其他科技公司使用Windows系统来开发和测试产品。永恒之蓝漏洞可能导致开发和测试环境被破坏,影响产品发布和公司声誉。

 九、永恒之蓝漏洞修复的最佳实践

永恒之蓝(EternalBlue)漏洞的修复涉及多个步骤和最佳实践,以确保系统安全并防止未来的攻击。以下是一些最佳实践:

1. 安装补丁

  • 及时更新系统:微软已经发布了修复永恒之蓝漏洞的补丁(MS17-010)。确保所有Windows系统都安装了最新的安全更新和补丁。

  • 使用自动更新:启用自动更新功能,以便系统能够自动接收和安装最新的安全补丁。

2. 关闭不必要的服务和端口

  • 禁用SMBv1:SMBv1是永恒之蓝漏洞利用的协议版本。可以通过系统设置或组策略禁用SMBv1。

  • 关闭相关端口:关闭与SMB相关的端口(如445、137、138、139),以减少攻击面。

3. 增强网络安全

  • 使用防火墙:配置防火墙规则,限制对内部网络的访问,特别是对关键系统和服务的访问。

  • 实施网络分段:将网络分成多个子网,以限制潜在攻击的传播范围。

4. 提高系统和网络安全意识

  • 培训员工:教育员工关于网络安全威胁和最佳实践,例如不点击不明链接、不下载不明文件等。

  • 制定安全策略:制定并实施网络安全策略,包括密码管理、访问控制和数据保护。

5. 备份重要数据

  • 定期备份:定期备份重要数据,并确保备份存储在安全的位置,最好是离线存储。

  • 验证备份:定期验证备份的完整性和可恢复性,以确保在发生数据丢失时能够快速恢复。

6. 使用安全工具

  • 安装杀毒软件:安装并更新杀毒软件,以检测和清除潜在的恶意软件。

  • 使用漏洞扫描工具:使用漏洞扫描工具定期扫描系统和网络,以发现和修复潜在的安全漏洞。

7. 监控和响应

  • 实时监控:使用安全信息和事件管理(SIEM)系统实时监控网络和系统活动,以便及时发现异常行为。

  • 制定应急响应计划:制定并演练应急响应计划,以便在发生安全事件时能够迅速有效地应对。

8. 审查和审计

  • 定期审计:定期进行安全审计,评估系统的安全状况,并根据审计结果进行改进。

  • 审查第三方软件:确保所有第三方软件也已更新,并且没有已知的安全漏洞。

 十、漏洞复现

MS17-010 永恒之蓝

攻击机 和靶机在同一网段中

配置kali

配置靶机

查看kali ip的配置

确认靶机的网络配置

确认靶场的IP 为192.168.10.130

然后查看端口开放情况,发现445端口开放

kali开启msf

搜索永恒之蓝的相关模块

过滤出其中的攻击模块

选择攻击模块

查看当前模块可用的选项

设置攻击目标-设置反弹目标

执行漏洞测试

拿到shell

输入65001解决乱码

通过shell对靶机进行控制

1:创建新用户

2:将用户sss 添加至管理员组

3:开启远程桌面功能

查看3389端口状态:netstat -ano

开启3389端口

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

4:远程桌面连接

已经登录成功

十一、脚本编写验证永恒之蓝

使用impacket库来与目标系统的SMB端口进行交互,并检测是否存在永恒之蓝漏洞。
脚本说明:
    SMBConnection: 使用impacket库中的SMBConnection类来与目标系统的SMB端口建立连接。
    登录尝试: 通过尝试登录(使用空用户名和密码)来检测是否存在漏洞。如果登录成功,则可能存在永恒之蓝漏洞。
    异常处理: 如果无法连接到目标系统,脚本会捕获异常并输出错误信息。


from impacket.smbconnection  import SMBConnection 
 
def check_eternalblue_vulnerability(target_ip, target_port=445): 
    try: 
        # 尝试与目标系统的SMB端口建立连接 
        smb_connection = SMBConnection(target_ip, target_ip, sess_port=target_port) 
         
        # 如果连接成功,尝试发送恶意数据包以检测漏洞 
        if smb_connection.login('',  ''): 
            print(f"[!] 目标系统 {target_ip}:{target_port} 可能存在永恒之蓝漏洞") 
        else: 
            print(f"[*] 目标系统 {target_ip}:{target_port} 未发现永恒之蓝漏洞") 
    except Exception as e: 
        print(f"[*] 无法连接到目标系统 {target_ip}:{target_port} - {e}") 
 
if __name__ == "__main__": 
    target_ip = "192.168.1.1"  # 替换为目标IP地址 
    check_eternalblue_vulnerability(target_ip) 

未完待续~~~!!!!!


网站公告

今日签到

点亮在社区的每一天
去签到