Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用nmap或.NET查找Microsoft SQL Server而无需身份验证_C#_Sql Server_Network Programming - Fatal编程技术网

C# 使用nmap或.NET查找Microsoft SQL Server而无需身份验证

C# 使用nmap或.NET查找Microsoft SQL Server而无需身份验证,c#,sql-server,network-programming,C#,Sql Server,Network Programming,我需要根据Ip地址列表或范围扫描并定位本地LAN上的SQL Server实例,我正在查找以下信息: sql server正在侦听的端口(常规端口为1433/1434,但可以更改) 机器的ip地址 运行sql server的计算机的主机名 实例版本,如10.5.2500.0 实例名称信息,例如Joe\SQLExpress 我将无法访问windows或sql Server的任何凭据。赌注是usng windows身份验证,但我更喜欢基于发现的方法。此外,我不想在扫描过程中发出假警报,扫描必须是非侵入

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

  • sql server正在侦听的端口(常规端口为1433/1434,但可以更改)
  • 机器的ip地址
  • 运行sql server的计算机的主机名
  • 实例版本,如10.5.2500.0
  • 实例名称信息,例如Joe\SQLExpress
  • 我将无法访问windows或sql Server的任何凭据。赌注是usng windows身份验证,但我更喜欢基于发现的方法。此外,我不想在扫描过程中发出假警报,扫描必须是非侵入性的。扫描必须执行多个漏洞测试(稍后),这些测试将涉及检查和进一步信息,因此不需要每个服务器的任何访问凭据

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

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

  • 基于C#的解决方案也有帮助,只要它返回所有实例,而不管SQL Server Browser或SQL Server agent是否正在运行


    但我希望扫描尽可能非侵入性。

    对于SQL Server 2005及以后版本,有一种记录在案且受支持的方法,使用WMI,请参阅。这将检测任何已安装的实例,与正在运行与否无关,并且不打开与SQL Server本身的任何连接。当然,查询远程计算机WMI需要适当的权限


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

    对于SQL Server 2005及以后的版本,有一种记录在案且受支持的方法,使用WMI,请参阅。这将检测任何已安装的实例,与正在运行与否无关,并且不打开与SQL Server本身的任何连接。当然,查询远程计算机WMI需要适当的权限


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

    我不确定非侵入性是什么意思。没有要连接的凭据与查找服务器是否存在无关。通过非侵入性的方式,脚本/解决方案不应包含凭据,因为这将有一种潜在的安全风险。另外,我需要一些发现机制的方法来确定sql server的类型、版本、实例名称和ip地址,这些不应该涉及任何身份验证,以获得原始问题中提到的所需详细信息。您是否检查了SQLPing?对但是SQlPing 3.0在某种意义上是有限的,在隐形模式下,它不返回实例或端口信息。此外,正式的2008 R2在it中不受支持。我也看过他们网站上提供的.cs代码,但没有帮助。我们公司网络上有SQL Server 2008 R2或更高版本的服务器实例。我对您是在尝试进行软件清单测试还是渗透测试有点困惑。当然,漏洞测试的目的是为了看看没有凭据可以实现什么?很多信息不应该公开访问,因为这是一个潜在的信息泄露漏洞。例如,如果您可以确定某个主机正在运行某个应用程序的旧的、未修补的版本,那么您可能会使用已知的攻击来破坏它。因此,为了收集有关系统的详细信息而要求进行身份验证通常是一件好事。我不确定您所说的非侵入性是什么意思。没有要连接的凭据与查找服务器是否存在无关。通过非侵入性的方式,脚本/解决方案不应包含凭据,因为这将有一种潜在的安全风险。另外,我需要一些发现机制的方法来确定sql server的类型、版本、实例名称和ip地址,这些不应该涉及任何身份验证,以获得原始问题中提到的所需详细信息。您是否检查了SQLPing?对但是SQlPing 3.0在某种意义上是有限的,在隐形模式下,它不返回实例或端口信息。此外,正式的2008 R2在it中不受支持。我也看过他们网站上提供的.cs代码,但没有帮助。我们公司网络上有SQL Server 2008 R2或更高版本的服务器实例。我对您是在尝试进行软件清单测试还是渗透测试有点困惑。当然,漏洞测试的目的是为了看看没有凭据可以实现什么?很多信息不应该公开访问,因为这是一个潜在的信息泄露漏洞。例如,如果您可以确定某个主机正在运行某个应用程序的旧的、未修补的版本,那么您可能会使用已知的攻击来破坏它。因此,为了收集系统的详细信息而要求身份验证通常是一件好事。