【漏洞与预防】MSSQL数据库弱口令漏洞预防
# 1.引言近期,Unit 42 研究人员观察到 Mallox 勒索软件活动有所增加——与前一年相比增长了近 174%——利用 MSSQL 服务器分发勒索软件。Unit 42 事件响应人员观察到 Mallox 勒索软件使用暴力破解、数据泄露和网络扫描器等工具。此外,我们还发现该组织正在扩大其运营并在黑客论坛上招募合作伙伴。
## 1.1典型案例
### 1.1.1初始访问
> 以下案例为(https://thedfirreport.com/)官网所记录的真实案例,详情可看相关文章
初始访问是通过暴力破解攻击实现的,威胁行为者主要针对系统管理员(“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注入进行利用,成功提权入侵并感染该机器,详情可见(https://sierting.feishu.cn/wiki/Qznuwqf3ki3iq8kjUAZc6r16nkc)
# 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_cmdshell`、`xp_regread`、`xp_regwrite` 等,如果被攻击者滥用,可能会导致数据库被完全控制或执行恶意命令。因此,禁用这些存储过程是提高数据库安全性的重要措施。以下是禁用危险存储过程的具体步骤
例如,禁用xp_cmdshell
```Go
-- 启用高级选项
sp_configure 'show advanced options', 1;
RECONFIGURE;
-- 禁用 xp_cmdshell
sp_configure 'xp_cmdshell', 0;
RECONFIGURE;
```
现在一些数据库密码太简单了,还有某一些数据库的密码也被公开,存在严重的信息泄露,只能说安全无小事。 llcpojie 发表于 2025-3-19 19:27
现在一些数据库密码太简单了,还有某一些数据库的密码也被公开,存在严重的信息泄露,只能说安全无小事。
数据库密码应该从制度上限制,不能把风险这么高的操作让个人负责,人都懒,有些人没有安全意识,有安全意识也防不住有侥幸心理,所以最好还是改配置文件,进行密码要求,或者简单一点每次运维部门统一产生密钥然后分发 谢谢,学习了。 用户**\**登录失败。原因:找不到与提供的名称匹配的登录名。【客户端:<localmachine>]
问下这种是什么原因,一分30秒执行一次,客户端是本地,查毒也没啥问题,
**是用用户名的,用**代替了
谢谢,学习了。 phan70m 发表于 2025-3-20 08:25
数据库密码应该从制度上限制,不能把风险这么高的操作让个人负责,人都懒,有些人没有安全意识,有安全意 ...
确实,只有做到权限最小化,才能降低风险 感谢分享,学习了。 感谢大佬分享 感谢大亨,弱点就是端口,以及一些其他地方
页:
[1]
2