0x00 前言

参考Micro8系列第五十课:https://micro8.gitbook.io/micro8/contents-1/41-50/50-ji-yu-sqldatasourceenumerator-fa-xian-nei-wang-cun-huo-zhu-ji

0x01 基于SqlDataSourceEnumerator探测内网存活主机

从Windows XP开始,默认就带有.NET Framework,而在PowerShell出现之后,其调用更为简便。

System.Data.SqlClient命名空间是用于SQL Server的.NET数据提供程序。在.NET Framework 2.0中新增加SqlDataSourceEnumerator类,其提供了一种枚举本地网络内的所有可用SQL Server实例机制。

微软官方是这样解释的:https://docs.microsoft.com/zh-CN/dotnet/api/system.data.sql.sqldatasourceenumerator?view=netframework-4.8&viewFallbackFrom=netcore-3.0

SQL Server 使应用程序能够确定当前网络中是否存在其实例。 SqlDataSourceEnumerator类向应用程序开发人员公开此信息,并提供 DataTable 包含有关所有可用服务器的信息。 此返回的表包含与用户尝试创建新连接时提供的列表匹配的服务器实例的列表,并且在 Connection Properties 对话框中展开包含所有可用服务器的下拉列表。

调用示例:

1
2
PowerShell -Command 
"[System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources()"

该方法在实战中不留文件痕迹并且信息准确,同时可以进行主机发现。可应对目前主流安全防御产品。