C# 使用nmap或.NET查找Microsoft SQL Server而无需身份验证
我需要根据Ip地址列表或范围扫描并定位本地LAN上的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身份验证,但我更喜欢基于发现的方法。此外,我不想在扫描过程中发出假警报,扫描必须是非侵入
但我希望扫描尽可能非侵入性。对于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或更高版本的服务器实例。我对您是在尝试进行软件清单测试还是渗透测试有点困惑。当然,漏洞测试的目的是为了看看没有凭据可以实现什么?很多信息不应该公开访问,因为这是一个潜在的信息泄露漏洞。例如,如果您可以确定某个主机正在运行某个应用程序的旧的、未修补的版本,那么您可能会使用已知的攻击来破坏它。因此,为了收集系统的详细信息而要求身份验证通常是一件好事。