吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1037|回复: 8
上一主题 下一主题
收起左侧

[分享] 【漏洞与预防】MSSQL数据库弱口令漏洞预防

  [复制链接]
跳转到指定楼层
楼主
solar应急响应 发表于 2025-3-19 15:51 回帖奖励
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!

1.引言

近期,Unit 42 研究人员观察到 Mallox 勒索软件活动有所增加——与前一年相比增长了近 174%——利用 MSSQL 服务器分发勒索软件。Unit 42 事件响应人员观察到 Mallox 勒索软件使用暴力破解、数据泄露和网络扫描器等工具。此外,我们还发现该组织正在扩大其运营并在黑客论坛上招募合作伙伴。

1.1典型案例

1.1.1初始访问

以下案例为The DFIR Report官网所记录的真实案例,详情可看相关文章

初始访问是通过暴力破解攻击实现的,威胁行为者主要针对系统管理员(“sa”)账户。在入侵过程中,我们观察到在成功登录之前有超过 10,000 次失败的尝试。

SQL Server 事件 ID 18456 失败审计事件在 Windows 应用程序日志中:


Successful Login:  成功登录

1.1.2执行

在下一个攻击阶段,攻击者通过扩展 SQL 存储过程(xp_cmdshell)建立了一个命令壳。此过程允许您直接向 Windows 命令壳发送操作系统命令。为此,他们启用了 MSSQL 配置功能:


威胁行为者随后执行了一个 Cobalt Strike 信标和一个之前被 Sophos 识别为用于部署 Tor2Mine 恶意软件的 PowerShell 脚本。

第一个 PowerShell 脚本执行了一个命令以下载 Cobalt Strike 信标:


这是随后进行的第二个 PowerShell 执行的:


往期文章中我们也介绍了相关案例,通过对服务器搭建的管理系统平台存在SQL注入进行利用,成功提权入侵并感染该机器,详情可见003.【成功案例】某房地产公司的mallox最新变种勒索病毒rmallox解密恢复项目

2.场景还原

2.1场景设置

本次模拟攻击场景中,攻击者首先利用ncrack工具对MSSQL进行密码爆破,通过大字典暴力破解获取有效的账号和密码。成功登录后,攻击者使用Impacket中的mssqlclient工具建立数据库连接,并通过启用CLR(Common Language Runtime)功能,创建自定义程序集以执行恶意命令。随后,通过命令执行加载CS木马,实现对服务器的完全控制,并最终实施勒索病毒加密,完成整个攻击链的模拟。

2.2攻击路线图

2.3攻击复现

  • ncrack工具进行MSSQL数据库密码爆破;

  • 利用mssqlclient工具连接数据库;

  • 攻击者通过开启clr并创建程序集执行命令;

开启MSSQL数据库的CLR:MSSQL数据库默认是禁用CLR功能的,因为CLR允许在数据库中运行.NET代码(如C#编写的程序集)。攻击者通过修改数据库配置,将CLR功能启用,这样就能在数据库中运行自定义的.NET程序集。

创建程序集执行命令:程序集是指由.NET语言编写的代码文件(如C#程序),在启用CLR后,攻击者可以创建并加载自己编写的恶意程序集(即恶意代码),并在数据库中执行。这些恶意代码可以是任意命令,比如在目标服务器上执行系统命令、下载并执行恶意软件等。

  • 紧接着攻击者通过数据库执行命令,利用了无文件落地的加载方法加载了cobalt strike的木马,进一步获取了服务器的控制权限;

    3.工具介绍

工具名称 md5 sha1
Ncrack 56a9321073134d24b02f26ab42e3a538 6046f881ad77ee00a75a6c74d61f665fdf523174
mssqlclient f5fac8a584397e972621910ffb8b8832 cd3398899eb7cb0033a58e9b34ce736b8bc9bade

3.1ncrack

Ncrack 是由 Nmap 项目团队开发的一款高性能网络认证破解工具,支持 Microsoft SQL Server (MSSQL),用于测试数据库的登录安全性。它通过尝试多种用户名和密码组合,帮助发现弱密码或配置漏洞,并且可以同时扫描多个 MSSQL 服务器。

3.2impacket-mssqlclient

Impacket-mssqlclient 是一个功能强大的工具,用于连接和管理 Microsoft SQL Server (MSSQL)。它支持多种认证方式,包括 Windows 集成认证(Kerberos 和 NTLM)、SQL Server 认证以及基于哈希的认证,允许用户无需明文密码即可登录。该工具能够执行 SQL 查询、运行操作系统命令、管理数据库对象,并支持同时处理多个会话。

3.3cobalt strike

Cobalt Strike 是一个强大的渗透测试和红队工具,用于模拟高级网络攻击。它提供直观的界面,方便用户管理命令与控制(C2)操作、部署可定制的载荷,并执行后渗透活动如权限提升和横向移动。Cobalt Strike 支持团队协作,允许多名成员同时操作和监控攻击进程。

4.漏洞详情

4.1漏洞名称

mssql弱口令

4.2漏洞类型

弱口令

4.3漏洞描述

MSSQL弱口令是指数据库账户使用简单、易猜测或容易通过暴力破解手段获得的密码。例如,使用“123456”、“admin”或“password”等常见密码,或使用数据库默认的密码,如“sa”账户的初始密码。这类弱口令容易被攻击者利用自动化工具进行快速破解,进而获取数据库的控制权限,造成数据泄露、篡改或系统损害的风险。

5.应急响应排查

如果怀疑机器通过MSSQL爆破入侵,可以通过查询Windows系统日志来快速排查。具体方法是利用Windows自带的事件查看器,重点筛选与登录活动相关的事件ID,特别是事件ID 18456(登录失败)和18453(登录成功)。通过分析这些事件记录,可以识别异常的登录行为,特别是在短时间内出现大量连续的登录失败事件,且随之出现登录成功的记录时,这往往是暴力破解攻击的迹象。此外,还可以结合事件中的登录时间、来源IP地址、账户名称等信息,进一步分析是否存在来自未知或异常IP的非法登录活动。结合这些信息,可以有效地确认是否存在MSSQL暴力破解入侵的风险,并及时采取应对措施。

  • 登录失败日志,事件ID: 18456;
  • 登陆成功日志, 事件ID: 18453;

  • 更改程序集日志,事件ID:15457;

  • 各种详细日志可从mssql日志中的log.trc中看到,例如程序集更改事件,对应serverity为10,事件id为15457;

6.防范措施

6.1安全审计

  • 打开ssms--右键服务器--选择Facets;

  • 选择服务器审核,按图示将其修改为true、true、All,修改之后需要重启sqlserver以生效。

6.2 修改数据库的访问端口

  • 可以在SQL SERVER 配置管理器修改访问端口为不常见端口来防止一般性扫描。

6.3对SA账户的处理

如使用混合身份验证模式,建议禁用掉SA账户,否则设置非常强的SA密码:

  • 右键sa--属性--状态--设置为图中所示,禁用sa用户;
  • 右键sa--属性--状态,在此处可修改密码,以及设置强制实施密码策略和密码过期;

6.4修改角色

一个登陆用户关联一个数据库,设置强密码,并给予服务器以及对应数据库的特定角色:

  • 设置服务器角色;

  • 给予对应数据库角色;

6.5禁用危险存储过程

禁用SQL Server中危险存储过程的步骤可以通过T-SQL命令或SQL Server Management Studio (SSMS) 来完成。常见的危险存储过程如 xp_cmdshellxp_regreadxp_regwrite 等,如果被攻击者滥用,可能会导致数据库被完全控制或执行恶意命令。因此,禁用这些存储过程是提高数据库安全性的重要措施。以下是禁用危险存储过程的具体步骤

例如,禁用xp_cmdshell

-- 启用高级选项
sp_configure 'show advanced options', 1;
RECONFIGURE;

-- 禁用 xp_cmdshell
sp_configure 'xp_cmdshell', 0;
RECONFIGURE;

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
beihai1314 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
llcpojie 发表于 2025-3-19 19:27
现在一些数据库密码太简单了,还有某一些数据库的密码也被公开,存在严重的信息泄露,只能说安全无小事。
沙发
zcming 发表于 2025-3-19 16:56
3#
tcw5201 发表于 2025-3-19 17:59
用户**\**登录失败。原因:找不到与提供的名称匹配的登录名。【客户端:<localmachine>]
问下这种是什么原因,一分30秒执行一次,客户端是本地,查毒也没啥问题,
**是用用户名的,用**代替了
5#
微笑的猪头 发表于 2025-3-19 21:32

谢谢,学习了。  
6#
phan70m 发表于 2025-3-20 08:25
llcpojie 发表于 2025-3-19 19:27
现在一些数据库密码太简单了,还有某一些数据库的密码也被公开,存在严重的信息泄露,只能说安全无小事。

数据库密码应该从制度上限制,不能把风险这么高的操作让个人负责,人都懒,有些人没有安全意识,有安全意识也防不住有侥幸心理,所以最好还是改配置文件,进行密码要求,或者简单一点每次运维部门统一产生密钥然后分发
7#
llcpojie 发表于 2025-3-20 09:34
phan70m 发表于 2025-3-20 08:25
数据库密码应该从制度上限制,不能把风险这么高的操作让个人负责,人都懒,有些人没有安全意识,有安全意 ...

确实,只有做到权限最小化,才能降低风险
8#
dzpos 发表于 2025-3-20 10:45
感谢分享,学习了。
9#
wujg 发表于 2025-3-21 09:53
感谢大佬分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-3-23 02:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表