使用nmap或.NET查找Microsoft SQL服务器而无需身份验证

时间:2013-01-09 18:04:59

标签: c# sql-server network-programming

我需要根据IP地址列表或范围扫描并找到本地LAN上的 SQL Server实例,我正在寻找以下信息:

    sql server正在侦听的
  1. 端口(常规 1433/1434 但可以更改),
  2. 机器的
  3. IP地址
  4. 运行sql server的计算机的
  5. 主机名
  6. 实例版本,如 10.5.2500.0
  7. 实例名称信息,例如 Joe \ SQLExpress
  8. 我无法访问任何凭据,无论是Windows还是sql server。赌注是使用Windows身份验证,但我更喜欢基于发现的方法。此外,我不想在扫描期间引发误报,扫描必须是非侵入性的。扫描必须执行多个漏洞测试(稍后),这将涉及检查和进一步的信息,因此不需要为每个服务器提供任何访问凭证。

    此外,某些实例可能已禁用 SQL Server Browser服务,或者可能已停止 SQL Server代理服务

    我需要能够查询给定范围的IP地址的所有SQL Server实例。我一直试图在这里使用参数:

    1. here
      1. here
      2. 基于C#的解决方案也可以提供帮助,只要它返回所有实例,无论SQL Server Browser或SQL Server代理是否正在运行。

        但是我希望我的扫描能够尽可能多地进行非侵入式扫描。

1 个答案:

答案 0 :(得分:1)

对于SQL Server 2005及更高版本,有一种记录和支持的方式,使用WMI,请参阅FAQ: Detecting SQL Server 2005 using WMI。这将检测任何已安装的实例,与正在运行或不运行的事实无关,并且不打开与SQL Server本身的任何连接。当然,它需要适当的权限来查询远程机器 WMI。

对于SQL 2000,唯一的方法是使用不受支持的注册表黑客(查找特定的密钥)。