sidguess是Kali Linux中一款专门针对Oracle数据库的SID(System Identifier,系统标识符)猜解工具。在Oracle数据库环境中,SID是区分不同数据库实例的关键标识,只有获取正确的SID,才能建立有效的数据库连接并进行后续操作(如登录、数据查询等)。
该工具通过"字典爆破"的方式,向目标Oracle服务器(默认监听1521端口)发送包含不同SID的请求,根据服务器的响应判断SID是否存在,最终从字典文件中筛选出正确的Oracle数据库SID。它在Oracle数据库渗透测试的初始信息收集阶段至关重要,是突破Oracle数据库认证边界的基础工具之一。
二、sidguess参数说明
| 参数 | 英文说明 | 中文说明 | 是否必填 |
|---|---|---|---|
| -i <ip> | Specify the target Oracle server IP address | 指定目标Oracle服务器的IP地址,是猜解的核心目标对象 | 是 |
| -d <dictionary> | Specify the dictionary file containing possible SIDs | 指定包含可能SID的字典文件,工具将从该文件中读取SID进行爆破 | 是 |
| -p <portnr> | Use specific port (default 1521) | 指定目标Oracle服务器的监听端口,默认端口为1521(Oracle默认监听端口) | 否 |
| -r <report> | Report to file | 将猜解结果保存到指定的报告文件中,避免结果丢失或便于后续分析 | 否 |
| -m <mode> | findfirst OR findall (default) | 指定猜解模式: 1. findfirst:找到第一个有效SID后立即停止猜解 2. findall(默认):遍历整个字典,找出所有有效SID | 否 |
三、sidguess工具使用教程
1. 工具准备
sidguess通常预装在Kali Linux中,可直接通过命令行调用。若未安装,可通过以下命令安装(依赖Kali官方仓库):
sudo apt update && sudo apt install sidguess
验证安装:执行sidguess -h,若显示参数说明列表,则安装成功。
字典准备:Kali Linux默认提供Oracle SID字典,路径通常为/usr/share/wordlists/oracle/sids.txt;也可自行下载或制作更全面的SID字典(如包含目标业务相关的自定义SID)。
2. 基础猜解场景
场景1:默认端口猜解单个目标(找出所有有效SID)
使用默认端口1521,遍历完整字典,找出目标服务器上所有有效的Oracle SID,并在终端直接输出结果。
sidguess -i 192.168.1.100 -d /usr/share/wordlists/oracle/sids.txt
参数说明:
-i 192.168.1.100:目标Oracle服务器IP
-d :指定默认SID字典路径
默认模式(findall):遍历所有字典条目,输出所有有效SID
场景2:指定端口猜解单个目标(找到第一个有效SID即停止)
若目标Oracle服务器监听非默认端口(如1522),且只需快速获取一个有效SID(用于紧急连接),可指定端口和findfirst模式。
sidguess -i 192.168.1.101 -d /usr/share/wordlists/oracle/sids.txt -p 1522 -m findfirst
参数说明:
-p 1522:指定目标端口为1522
-m findfirst:找到第一个有效SID后立即停止,节省时间
3. 结果保存与分析场景
场景1:将猜解结果保存到报告文件
在批量猜解或需要留存证据时,通过-r参数将结果保存到文件(如sid_result.txt),便于后续查看或分享。
sidguess -i 192.168.1.100 -d /usr/share/wordlists/oracle/sids.txt -r sid_result.txt
查看结果:执行cat sid_result.txt,文件中会记录有效SID、猜解时间、目标IP和端口等信息。
场景2:结合自定义字典猜解(针对特定业务)
若已知目标业务相关信息(如公司名、项目名),可制作自定义SID字典(如custom_sids.txt),提高猜解准确率(例如包含"ORCL_PROD""ERP_DB"等业务相关SID)。
自定义字典(custom_sids.txt)内容示例:
ORCL
XE
ORCL_PROD
ERP_DB
DEV_DB
执行猜解命令:sidguess -i 192.168.1.102 -d ./custom_sids.txt -r custom_sid_result.txt
4. 进阶使用技巧
技巧1:结合端口扫描确认监听状态
在猜解前,先通过nmap确认目标端口是否开放,避免无效猜解:
nmap -p 1521,1522 192.168.1.100
若端口显示"open",再执行sidguess;若"closed",则需先排查网络连通性或目标服务器状态。
技巧2:批量目标猜解(结合脚本)
若需对多个目标IP进行SID猜解,可编写简单Shell脚本(如batch_sidguess.sh)批量执行:
#!/bin/bash
`
批量SID猜解脚本,目标IP列表存于target_ips.txt`
while read ip; do
echo "开始猜解目标IP:$ip"
sidguess -i $ip -d /usr/share/wordlists/oracle/sids.txt -p 1521 -r "sid_$ip.txt"
done < target_ips.txt
使用方法:
-
创建target_ips.txt,每行写入一个目标IP
-
赋予脚本执行权限:
chmod +x batch_sidguess.sh -
执行脚本:
./batch_sidguess.sh -
结果会按IP分别保存为"sid_192.168.1.100.txt"等文件
四、注意事项
- 法律合规:必须获得目标系统的合法授权后使用,未经允许的SID猜解属于非法入侵行为,需承担法律责任。
- 字典选择:字典的完整性直接影响猜解成功率,建议优先使用Kali默认Oracle SID字典,或结合目标业务制作自定义字典。
- 网络影响:频繁的猜解请求可能触发目标服务器的防护机制(如防火墙拦截、监听器限流),建议控制猜解频率,避免被阻断。
- 版本兼容性:sidguess主要针对Oracle 11g及以下版本,部分高版本Oracle(如12c+)可能因监听器配置(如动态注册、访问控制)导致猜解失败,需结合其他工具(如oscanner)辅助验证。
- 结果验证:猜解出的SID需通过Oracle客户端(如sqlplus、impacket-mssqlclient)验证是否可正常连接,避免因字典误报导致无效操作。