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注入进行利用,成功提权入侵并感染该机器,详情可见【成功案例】间隔数月双团伙先后利用某ERP0day实施入侵和勒索的解密恢复项目
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.1 ncrack
Ncrack 是由 Nmap 项目团队开发的一款高性能网络认证破解工具,支持 Microsoft SQL Server (MSSQL),用于测试数据库的登录安全性。它通过尝试多种用户名和密码组合,帮助发现弱密码或配置漏洞,并且可以同时扫描多个 MSSQL 服务器。
3.2 impacket-mssqlclient
Impacket-mssqlclient 是一个功能强大的工具,用于连接和管理 Microsoft SQL Server (MSSQL)。它支持多种认证方式,包括 Windows 集成认证(Kerberos 和 NTLM)、SQL Server 认证以及基于哈希的认证,允许用户无需明文密码即可登录。该工具能够执行 SQL 查询、运行操作系统命令、管理数据库对象,并支持同时处理多个会话。
3.3 cobalt 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
-- 启用高级选项
sp_configure 'show advanced options', 1;
RECONFIGURE;
-- 禁用 xp_cmdshell
sp_configure 'xp_cmdshell', 0;
RECONFIGURE;
7. 相关文章
https://thedfirreport.com/2023/12/04/sql-brute-force-leads-to-bluesky-ransomware/
原文始发于微信公众号(solar应急响应团队):【漏洞与预防】MSSQL数据库弱口令漏洞预防
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论