Skip to content

Windows简介

Windows简介

作为一名渗透测试人员,了解各种技术非常重要。全面了解 Windows 和 Linux 操作系统对各种评估类型都有好处。我们在评估期间遇到的大多数系统,无论是在本地还是在云中,都将基于这两个操作系统。了解如何攻击和防御这些操作系统以及如何将它们用作执行进一步渗透测试活动的平台非常重要。


视窗操作系统

微软于 1985 年 11 月 20 日首次推出 Windows 操作系统。Windows 的第一个版本是 MS-DOS 的图形操作系统外壳。更高版本的 Windows 桌面引入了 Windows 文件管理器、程序管理器和打印管理器程序。

Windows 95 是 Windows 和 DOS 的第一个完全集成,并首次提供了内置的 Internet 支持。该版本还首次推出了 Internet Explorer 网络浏览器。从最初的版本开始,已经发布了十几个版本的 Windows,例如 Windows XP、Vista 和 8,直到当前版本:Windows 10。随着时间的推移,微软为每个 Windows 桌面版本提供了各种版本,以满足从普通消费者到企业客户。

Windows Server 于 1993 年随着 Windows NT 3.1 Advanced Server 的发布而首次发布。多年来,Windows NT 进行了多次更新,添加了诸如 Internet 信息服务 (IIS)、各种网络协议、管理向导以促进管理任务等技术。随着 Windows 2000 的发布,Microsoft 推出了 Active Directory,最初旨在帮助系统管理员设置文件共享、数据加密、VPN 等。Windows Server 2000 还包括 Microsoft 管理控制台 (MMC) 并支持动态磁盘卷。

接下来是 Windows Server 2003,它带有服务器角色、内置防火墙、卷影复制服务等。Windows Server 2008 包括故障转移群集、Hyper-V 虚拟化软件、服务器核心、事件查看器以及对 Active Directory 的主要增强。多年来,Microsoft 发布了更多服务器版本,包括 Server 2012、Server 2016 以及最近的 Server 2019。这个最新版本增加了对 Kubernetes、Linux 容器和更高级安全功能的支持。

随着新版本 Windows 的推出,旧版本已被弃用并且不再接收 Microsoft 更新(除非在某些情况下购买了长期支持合同)。Windows Server 2008 和 2012 的安全更新已于 2020 年 1 月 14 日终止。目前,仅支持 Server 2012 R2 及更高版本。然而,由于发现了关键的 SMBv1 漏洞 (EternalBlue),微软在过去几年中为早期版本的 Windows 发布了带外补丁。

许多版本的 Windows 现在被视为“旧版”,不再受支持。组织经常发现自己运行各种较旧的操作系统来支持关键应用程序或出于运营或预算问题。评估员需要了解版本之间的差异以及每个版本固有的各种错误配置和漏洞。


Windows 版本

以下是主要 Windows 操作系统和相关版本号的列表: 操作系统名称 | 版本号 --- | --- 视窗 NT 4 | 4.0 视窗 2000 | 5.0 视窗 | 5.1 视窗服务器 2003、2003 R2 | 5.2 Windows Vista,服务器 2008 | 6.0 Windows 7、服务器 2008 R2 | 6.1 视窗 8、服务器 2012 | 6.2 Windows 8.1、服务器 2012 R2 | 6.3 Windows 10、服务器 2016、服务器 2019 | 10.0

我们可以使用Get-WmiObject cmdlet来查找有关操作系统的信息。此 cmdlet 可用于获取 WMI 类的实例或有关可用 WMI 类的信息。有多种方法可以找到我们系统的版本和内部版本号。我们可以使用该类轻松获取此信息win32_OperatingSystem,这表明我们在 Windows 10 主机上,内部版本号为 19041。

PS C:\htb> Get-WmiObject -Class win32_OperatingSystem | select Version,BuildNumber

Version    BuildNumber
-------    -----------
10.0.19041 19041

可以使用的其他一些有用的类Get-WmiObjectWin32_Process获取进程列表,Win32_Service获取服务列表Win32_Bios以获取 BIOS 信息。我们可以使用该ComputerName参数来获取有关远程计算机的信息。GetWmiObject可用于启动和停止本地和远程计算机上的服务等等。可以在此处此处找到有关 cmdlet 的更多信息。


Accessing Windows

本地访问概念

如果您现在正在阅读这些文字,那么您可以在本地访问某种计算机。无论是智能手机、平板电脑、笔记本电脑、Raspberry Pi 还是台式机。本地访问是访问任何计算机(包括运行 Windows 的计算机)的最常见方式。Input可能通过键盘、触控板和/或鼠标发生。Output来自显示屏。拥有员工日常工作的办公空间的组织围绕其员工在组织拥有的计算机上的专用工作空间中工作的想法构建安全策略和安全控制。越来越多的组织通过非技术和技术人员增加对远程工作的支持。对于在 IT、软件开发和信息安全领域工作的技术专业人士来说,这并不是一个新的现实。在任何一天,技术专业人员都可以在本地和远程访问多台机器。有了这个,让我们讨论远程访问的概念。

远程访问概念

远程访问是通过网络访问计算机。在远程访问另一台计算机之前,需要对计算机进行本地访问。远程访问有无数种方法。在本模块中,我们将主要使用远程访问方法来连接 Windows 操作系统并与之交互。网络和互联网技术的进步催生了完全依赖远程访问和远程管理计算机系统的整个行业。

考虑MSPMSSP,这两个行业都主要依赖于远程管理其客户的计算机系统。此功能使他们能够集中管理、标准化所使用的技术、自动化众多任务、启用远程工作安排并允许在问题浮出水面或出现潜在安全威胁时快速响应。远程访问不仅限于 MSP 和 MSSP。拥有 IT、软件开发和/或安全团队的组织每天都使用远程访问方法来构建应用程序、管理服务器和管理员工工作站。一些最常见的远程访问技术包括但不限于:

  • 虚拟专用网络 (VPN)
  • 安全外壳 (SSH)
  • 文件传输协议 (FTP)
  • 虚拟网络计算 (VNC)
  • Windows 远程管理(或 PowerShell 远程处理)(WinRM)
  • 远程桌面协议 (RDP)

我们将主要关注在本模块中使用 RDP。

远程桌面协议 (RDP)

RDP 使用客户端/服务器架构,其中客户端应用程序用于通过启用 RDP 访问的网络指定计算机的目标 IP 地址或主机名。启用 RDP 远程访问的目标计算机被视为服务器。需要注意的是,RDP 默认侦听逻辑端口3389。请记住,IP 地址用作网络上计算机的逻辑标识符,而逻辑端口是分配给应用程序的标识符。简单来说,我们可以将网络子网视为城镇中的街道(公司网络),将该子网中的 IP 地址分配给作为该街道上的房屋的主机,并将逻辑端口视为可用于进入房子。

一旦请求(封装在数据包中)通过其 IP 地址到达目标计算机,该请求将根据该请求中指定的端口(作为数据包内的标头包含)定向到计算机上托管的应用程序。IP 寻址和协议封装在网络简介模块中有更详细的介绍。从网络的角度来看,在本模块中,我们只需要了解每台计算机都分配了一个 IP 地址以通过网络进行通信,并且托管在目标计算机上的应用程序侦听特定的逻辑端口。

我们可以使用 RDP 从运行 Linux 或 Windows 的攻击主机连接到 Windows 目标。Remote Desktop Connection如果我们从 Windows 主机连接到 Windows 目标,我们可以使用称为( mstsc.exe )的内置 RDP 客户端应用程序。查看下面的剪辑以了解基本用法: ![[Windows基础知识.gif]]

为此,必须已在目标 Windows 系统上允许远程访问。默认情况下,Windows 操作系统不允许远程访问。HTB Academy 团队已将我们的许多 Windows 目标配置为在通过 VPN 连接到 Academy 实验室后允许 RDP 访问。

远程桌面连接还允许我们保存连接配置文件。这是 IT 管理员的普遍习惯,因为它使连接远程系统更加方便。 ![[Windows基础知识2.gif]]

作为渗透测试者,我们可以在参与时从查找这些保存的远程桌面文件 ( .rdp) 中受益。

存在许多其他远程桌面客户端应用程序,其中一些列在这篇名为远程桌面客户端的 Microsoft 文章中。我们不会在本模块中介绍每个远程桌面客户端应用程序。

使用 xfreerdp

从基于 Linux 的攻击主机,我们可以使用名为xfreerdp的工具远程访问 Windows 目标。您会注意到我们在多个模块中使用 xfreerdp,因为它易于使用、功能集、命令行实用程序和效率。查看下面的剪辑,了解 Pwnbox 的基本用法:

![[xfreerdp.gif]] 请记住,我们也可以在命令行中复制和粘贴 xfreerdp 命令,因此我们不需要手动输入选项。xfreerdp 有几个选项可供我们使用,例如驱动器重定向以便能够将文件传输到目标主机/从目标主机传输文件,这些都是值得练习的,我们将在 HTB 学院的其他模块中介绍。

存在其他 RDP 客户端,例如Remminardesktop,我们鼓励您与其他客户端进行试验,看看什么最适合您。现在我们已经介绍了这些概念,让我们通过生成下面的目标并使用提供的凭据使用 RDP 连接到它来应用它们。

$ xfreerdp /v:<targetIp> /u:htb-student /p:Password