深入探索数据库攻击技术 Part 2
字数 1559 2025-08-29 08:32:02
深入探索数据库攻击技术:Microsoft SQL Server恶意Payload投递与执行
数据库服务器攻击概述
数据库服务器通常是攻击者的首要目标,攻击过程主要分为三个阶段:
- 扫描阶段:扫描子网并识别运行数据库服务的计算机
- 攻击阶段:通过暴力破解等方式获取数据库访问权限
- Payload投递阶段:向目标系统传送并执行恶意payload
常见的恶意payload包括:
- 加密货币挖矿软件
- DDoS僵尸程序
- 远程访问木马(RAT)
恶意Payload投递技术
1. 直接在目标系统上创建可执行文件
技术原理:
利用SQL Server的OLE自动化存储过程(sp_OA)和ADODB.Stream对象在磁盘上创建和存储可执行文件。
关键步骤:
- 使用
sp_OACreate创建ADODB.Stream对象实例 - 使用
sp_OAMethod调用Stream对象的方法:Open:打开流Write:写入二进制内容(HEX编码的可执行文件)SaveToFile:将内容保存到本地文件Close:关闭流
ADODB.Stream对象类标识符:
00000566-0000-0010-8000-00AA006D2EA4
2. 从远程服务器下载可执行文件
2.1 使用COM对象和OLE存储过程
涉及的COM对象:
- FileSystemObject
- ADODB.Stream
- WshShell
- XMLHTTP
典型攻击流程:
- 创建VB脚本下载器(如c:\401.vbs)
- 脚本使用XMLHTTP和ADODB.Stream对象下载恶意可执行文件
- 使用WshShell对象执行下载的VB脚本
2.2 使用Ad Hoc分布式查询和Microsoft Jet OLE DB Provider
技术原理:
利用Ad Hoc分布式查询功能和Microsoft Jet的OLE DB Provider创建并执行FTP脚本。
关键函数:
OPENROWSET:从OLE DB数据源导入数据OPENDATASOURCE:提供ad hoc连接信息
典型攻击流程:
- 创建FTP脚本文件
- 使用FTP脚本从远程服务器下载恶意可执行文件
- 执行下载的文件
2.3 使用SQL代理作业
技术原理:
利用SQL Server代理作业创建恶意自动任务,实现持久性攻击。
攻击流程:
- 创建SQL代理作业
- 在作业中调用cmd.exe
- 创建FTP脚本下载恶意可执行文件
- 执行下载的文件
2.4 使用xp_cmdshell扩展存储过程
技术原理:
xp_cmdshell允许从SQL Server实例的上下文中执行主机Windows系统命令。
典型攻击流程:
- 启用xp_cmdshell(如果未启用)
- 使用xp_cmdshell执行cmd.exe
- 创建FTP脚本下载恶意可执行文件
- 执行下载的文件
防御建议
-
禁用不必要的功能:
- 禁用OLE自动化存储过程
- 禁用Ad Hoc分布式查询
- 禁用xp_cmdshell或限制其使用
-
权限控制:
- 遵循最小权限原则
- 限制SQL Server服务账户权限
-
监控与审计:
- 监控可疑的SQL命令执行
- 审计数据库服务器上的文件创建和修改
-
网络防护:
- 限制数据库服务器的出站连接
- 使用防火墙规则限制不必要的网络访问
-
定期更新:
- 及时应用SQL Server的安全补丁
- 保持操作系统和所有组件的最新状态
总结
本文详细介绍了攻击者利用Microsoft SQL Server执行SQL和OS命令来投递和执行恶意payload的各种技术。了解这些攻击技术对于构建有效的防御策略至关重要。数据库管理员和安全团队应特别关注这些攻击向量,并采取适当的防护措施来保护数据库服务器。