前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Powershell 获取内网服务器信息和状态

使用Powershell 获取内网服务器信息和状态

作者头像
Ms08067安全实验室
发布2021-07-16 16:56:17
2.3K0
发布2021-07-16 16:56:17
举报

文章来源|MS08067 内网安全知识星球

本文作者:贝多芬不忧伤(Ms08067内网小组成员)

收集服务器信息和状态

在内网渗透过程中,有时我们是需要了解不同的服务器的基本软硬件配置信息的,同时也可能需要 将它们生成报告进行归档,那么通过 Powershell,我们也能够轻松的去完成这个过程。本文中,我 们将主要说明如何通过 Powershell 收集系统信息和生成报告。

我们可能首先想到的,也是使用不同的Module中的不同的命令,收集诸如 CPU,内存,磁盘,系统等不同的信息,其实在Powershell中,有两种方法去完成信息收集的过程。

1. 使用 Powershell 提供的 Module 和相关命令:比如我们在前面使用过的Get-Process 获取当前计算机中运行的进程

2. 使用 WMI 类:因为有了使用 Get-Process 命令的经验,所以我们可以在不同的 Module 中找到不同的命令,例 如:

  • 获取当前计算机中所有的服务信息 Get-Services
  • 获取 Hyper-V 服务器中的虚拟机信息 Get-VM
  • 获取活动目录域服务中的用户帐号信息 Get-ADUser
  • 获取 DHCP 服务器中,IPv4 作用域信息 Get-DHCPServerv4Scope
  • .......

这种命令其实也非常好查找,我们可以使用以下两条命令就轻松搞定

  • Get-Module 查找当前计算机能够使用的 Module 清单
  • Get-Command -Module #### -Verb Get 在 Module 这个参数后,将 #### 替换成不同的 Module 名称, 就可以获取非常多的不同的命令,获取不同的信息

而另外的一种方法,就是使用 WMI 类,那么在我们使用 WMI 类之前,首先就需要了解以下两个问题?

  • 什么是 WMI 类?
  • 为什么要使用 WMI 类

一个计算机的系统,它基本上包括了两个部分,软件和硬件,细分下来的话,硬件包括了 CPU,内存, 磁盘,网卡,显卡等,而软件包括了操作系统,应用程序。这些组件可以分别来自于不同的厂商,如 CPU 可以来自于 Intel 或 AMD,操作系统可以来自于 Microsoft 或是 Redhat,内存可以是 Samsung 或 Hynix。。。。。。那么接下来就有一个问题了,当我们使用这样的一个计算机运行一个应用程序,并且希望获取这些不同组件的信息怎么办?

DMTF(Distributed Management Task Force) 这一个国际化标准组织,在1999年的时候制定了一个通 用的获取不同组件的模型和方法,叫做 CIM(Common Information Model)。标准制定好之后,各 个组件的厂商,在发布他们产品的时候,都会向操作系统一组相关的 CIM 类,通过这一些 CIM 类,应用程序就可以轻松地获取各种组件的信息。而 CIM 标准在 Windows 平台实现的方法就是 WMI (Windows Management Instrumentation)。这也就是说通过 WMI,管理员可以获取系统中不同组件的信息。

同时我们也能够看到,CIM 标准是在 1999 年正式发布的,微软 1998 年10 月 25号发布的 Windows NT 4.0 SP4 开始正式支持 WMI,相比于 Powershell 2008 年才正式发布,整整早了十年。

  • 在没有 Powershell 的年代,使用 VBScript 编写脚本时获取系统信息时,WMI 是不二之选;
  • 从 Windows Server 2008 到 Windows Server 2016 ,微软一直致力不断完善 Powershell Module 的支 持,要知道,在 Windows Server 2008 可是没有 NetAdapter 这个 Module,自然也就没有 Get-NetAdapter 这个命令可以获取系统中网卡信息,那个年代想在 Powershell 中获取网卡信息,就得靠 Powershell 调用 WMI 类来完成了。

所以接下来的问题就是

  • 如何通过 WMI 类获取网卡信息;
  • Powershell 如何调用 WMI 类。

WMI 类的组织形式,是一种层级结构,叫做命名空间,如下图

你可以在命令行中运行 wmimgmt.msc 命令,打开WMI管理工具后,右键选择 WMI控制(本地)--属性,在 高级选项卡中,选择更改后,就能查看如上截图的 WMI 命名空间,最上层的名称为 Root。不同组件的 WMI 类,就分别注册到了不同的命令空间之下,这也就是意味着,我们要调用 WMI 类,必须指定正确的命令空间。这就像我们打开文件一样,只有打开正确的路径后,才能够正常访问文件。

而当我们点击打开不同的命名空间路径后,会有一点失望,因为我们看不到具体的类,当然也不知道他长什么样子了。其实我们可以通过Powershell的方法来获取具体命令空间下的所有类,使用到命令为 Get-CimClass,它是由 CimCmdlets Module 提供的。比如我们想获取 Root\Appv 这个命名空间下的所有类,那么我们可以运行

代码语言:javascript
复制
Get-CimClass -Namespace root\appv

而最常见的,也是默认的命名空间是 Root\CIMV2,我们可以运行

代码语言:javascript
复制
Get-CimClass -Namespace root\CIMV2

将得到该命名空间下所有的 WMI 类,我们也可以运行

代码语言:javascript
复制
Get-CimClass -Namespace root\CIMV2 | Measure-Object

统计到的结果如下

可以看到数量为 1202,这个数字很大,但不是绝对的,随着我们的系统安装不同硬件,软件,这个数量 可能还会改变。那么接下来又有一个问题了,1000多个 WMI 类中,我们怎么知道哪一个是网卡的类?这 一个问题,即使你曾经用过,也是不可能一下就记起来的,最简单的办法,当然还是 google.com 搜索 了,比如,我们可以搜索 network adapter wmi class,多搜几次,一定会有的。

接下来我们将使用如下 WMI 类分别获取 CPU,内存,磁盘,网卡,操作系统等基本信息

有了 WMI 类的信息后,我们就可以使用 Powershell 提供的 Get-CimInstance 命令来调用类获取当前系统 中的不同组件信息了。比如我们想获取 CPU 的信息,那么我们可以运行

代码语言:javascript
复制
Get-CimInstance -Namespace Root\CIMv2 -ClassName Win32_Processor

对于这样的信息,我们也可以进一步的精简,运行如下命令

代码语言:javascript
复制
Get-CimInstance -Namespace Root\CIMv2 -ClassName Win32_Processor | Select-Object
DeviceID,Name

而对于内存,磁盘,网卡,和操作系统信息,我们可以分别运行以下命令

代码语言:javascript
复制
Get-CimInstance -Namespace Root\CIMv2 -ClassName Win32_PhysicalMemory
 | SelectObject Manufacturer,SerialNumber,Capacity
代码语言:javascript
复制
Get-CimInstance -Namespace Root\CIMv2 -ClassName Win32_DiskDrive
 | Select-Object Caption,Size
代码语言:javascript
复制
Get-CimInstance -Namespace Root\StandardCIMv2 -ClassName MSFT_Netadapter
代码语言:javascript
复制
Get-CimInstance -Namespace Root\CIMv2 -ClassName Win32_OperatingSystem
 | SelectObject Caption,Version,OSArchitecture

这个过程中,其实我们可以对比一下 Get-Netadapter 这条命令与 Get-CimInstance -Namespace Root\StandardCIMv2 -ClassName MSFT_Netadapter 得出的结果,其实是一致的。

我们可以使用同样的方法,依据不同的管理需求,去查找更多的不同类,从而去获取系统中不同的信息。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ms08067安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档