远程桌面协议 (RDP)
RDP 使用客户端/服务器体系结构,其中客户端应用程序用于通过启用了 RDP 访问的网络指定计算机的目标 IP 地址或主机名。启用了 RDP 远程访问的目标计算机被视为服务器。请务必注意,RDP 默认侦听逻辑端口。请记住,IP 地址用作网络上计算机的逻辑标识符,逻辑端口是分配给应用程序的标识符。简单来说,我们可以将网络子网视为城镇中的街道(公司网络),该子网中的 IP 地址分配给主机作为该街道上的房屋,逻辑端口视为可用于访问房屋的窗口/门。3389
一旦请求(封装在数据包中)通过其 IP 地址到达目标计算机,请求将根据该请求中指定的端口(作为数据包中的标头包含在内)定向到计算机上托管的应用程序。IP 寻址和协议封装在网络简介模块中有更详细的介绍。从网络的角度来看,在本模块中,我们只需要了解每台计算机都分配了一个 IP 地址以通过网络进行通信,而目标计算机上托管的应用程序会侦听特定的逻辑端口。
我们可以使用RDP从运行Linux或Windows的攻击主机连接到Windows目标。如果我们从Windows主机连接到Windows目标,则可以使用名为(mstsc.exe)的内置RDP客户端应用程序。Remote Desktop Connection
为此,必须在目标 Windows 系统上允许远程访问。默认情况下,Windows 操作系统上不允许远程访问。HTB 学院团队已将我们的许多 Windows 目标配置为允许通过 VPN 连接到学院实验室后的 RDP 访问。
远程桌面连接还允许我们保存连接配置文件。这是 IT 管理员的常见习惯,因为它使连接到远程系统更加方便。
作为渗透测试人员,我们可以在参与时查找这些保存的远程桌面文件()中受益。.rdp
存在许多其他远程桌面客户端应用程序,其中的一些应用程序在这篇名为远程桌面客户端的 Microsoft 文章中列出。我们不会在本模块中介绍每个远程桌面客户端应用程序。
使用 xfreerdp
从基于 Linux 的攻击主机,我们可以使用名为 xfreerdp 的工具来远程访问 Windows 目标。您会注意到我们在多个模块中使用 xfreerdp,因为它易于使用、功能集、命令行实用程序和效率。
使用以下命令通过远程桌面 (RDP) 进行连接:
Tanin@htb[/htb]$ xfreerdp /v:<targetIp> /u:htb-student /p:Password
Windows Services & Process
服务是 Windows 操作系统的主要组件。它们允许创建和管理长时间运行的进程。Windows 服务可以在系统启动时自动启动,无需用户干预。即使用户在系统上注销其帐户,这些服务也可以继续在后台运行。
还可以创建应用程序以作为服务安装,例如安装在服务器上的网络监视应用程序。Windows 上的服务负责 Windows 操作系统中的许多功能,例如网络功能、执行系统诊断、管理用户凭据、控制 Windows 更新等。
Windows 服务通过服务控制管理器 (SCM) 系统进行管理,可通过 MMC 加载项访问。services.msc
此外接程序提供用于与服务交互和管理服务的 GUI 界面,并显示有关每个已安装服务的信息。此信息包括服务名称、说明、状态、启动类型以及运行服务的用户。
还可以使用 PowerShell cmdlet(如 )通过命令行查询和管理服务。sc.exe``Get-Service
使用 services.msc 检查服务
使用 sc 检查服务
安全标识符 (SID)
系统上的每个安全主体都有一个唯一的安全标识符 (SID)。系统自动生成 SID。这意味着,例如,即使我们在系统上有两个相同的用户,Windows 也可以根据其 SID 区分两者及其权限。SID 是具有不同长度的字符串值,存储在安全数据库中。这些 SID 将添加到用户的访问令牌中,以标识用户有权执行的所有操作。
SID 由标识符颁发机构和相对 ID (RID) 组成。在 Active Directory (AD) 域环境中,SID 还包括域 SID。
备忘单
备忘单是此模块的有用命令参考。
命令 | 描述 |
---|---|
xfreerdp /v:<target IP address> /u:htb-student /p:<password> |
RDP 到实验室目标 |
Get-WmiObject -Class win32_OperatingSystem |
获取有关操作系统的信息 |
dir c:\ /a |
查看 c:\ 中的所有文件和目录根目录 |
tree <directory> |
以图形方式显示路径的目录结构 |
`tree c:\ /f | more` |
icacls <directory> |
查看在目录上设置的权限 |
icacls c:\users /grant joe:f |
授予用户对目录的完全权限 |
icacls c:\users /remove joe |
删除用户对目录的权限 |
Get-Service |
PowerShell 用于查看正在运行的服务的 cmdlet |
help <command> |
显示特定命令的帮助菜单 |
get-alias |
列出别名PowerShell |
New-Alias -Name "Show-Files" Get-ChildItem |
创建新别名PowerShell |
`Get-Module | select Name,ExportedCommands |
Get-ExecutionPolicy -List |
查看执行策略PowerShell |
Set-ExecutionPolicy Bypass -Scope Process |
将当前会话的执行策略设置为绕过PowerShell |
wmic os list brief |
获取有关操作系统的信息wmic |
Invoke-WmiMethod |
调用对象的方法WMI |
whoami /user |
查看当前用户的 SID |
reg query <key> |
查看有关注册表项的信息 |
Get-MpComputerStatus |
检查启用了哪些保护设置Defender |
sconfig |
Windows Server Core 中的“加载服务器配置”菜单 |
完整性控制访问控制列表 (icacls)
Integrity Control Access Control List
可以使用安全选项卡下的文件资源管理器 GUI 管理对 Windows 中文件和文件夹的 NTFS 权限。除了 GUI 之外,我们还可以使用 icacls 实用程序从命令行对 Windows 中的 NTFS 文件权限实现精细的粒度。
我们可以通过从工作目录中运行或针对当前不在的目录运行来列出特定目录上的 NTFS 权限
C:\htb> icacls c:\windows
c:\windows NT SERVICE\TrustedInstaller:(F)
NT SERVICE\TrustedInstaller:(CI)(IO)(F)
NT AUTHORITY\SYSTEM:(M)
NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(F)
BUILTIN\Administrators:(M)
BUILTIN\Administrators:(OI)(CI)(IO)(F)
BUILTIN\Users:(RX)
BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
CREATOR OWNER:(OI)(CI)(IO)(F)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(RX)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(OI)(CI)(IO)(GR,GE)
APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(RX)
APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(OI)(CI)(IO)(GR,GE)
Successfully processed 1 files; Failed processing 0 files
资源访问级别列在输出中的每个用户之后。可能的继承设置包括:
(CI)
:容器继承(OI)
:对象继承(IO)
:仅继承(NP)
:不传播继承(I)
:从父容器继承的权限
在上面的示例中,该帐户具有对象继承、容器继承、仅继承和完全访问权限。这意味着此帐户可以完全控制此目录和子目录中的所有文件系统对象。NT AUTHORITY\SYSTEM
基本访问权限如下:
F
:完全访问权限D
:删除访问权限N
:无访问权限M
:修改访问权限RX
:读取和执行访问R
:只读访问W
:只写访问
我们可以使用 .在这里,我们在本地管理员帐户的上下文中执行,该帐户显示用户没有任何写入权限的目录。icacls``icacls``C:\users``joe
C:\htb> icacls c:\Users
c:\Users NT AUTHORITY\SYSTEM:(OI)(CI)(F)
BUILTIN\Administrators:(OI)(CI)(F)
BUILTIN\Users:(RX)
BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
Everyone:(RX)
Everyone:(OI)(CI)(IO)(GR,GE)
Successfully processed 1 files; Failed processing 0 files
使用该命令,我们可以授予 joe 用户对目录的完全控制权,但鉴于该命令中不包含该目录,joe 用户将仅对文件夹拥有权限,而对用户子目录和其中包含的文件没有权限。icacls c:\users /grant joe:f``(oi)``(ci)``c:\users
C:\htb> icacls c:\users /grant joe:f
processed file: c:\users
Successfully processed 1 files; Failed processing 0 files
C:\htb> >icacls c:\users
c:\users WS01\joe:(F)
NT AUTHORITY\SYSTEM:(OI)(CI)(F)
BUILTIN\Administrators:(OI)(CI)(F)
BUILTIN\Users:(RX)
BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
Everyone:(RX)
Everyone:(OI)(CI)(IO)(GR,GE)
Successfully processed 1 files; Failed processing 0 files
可以使用命令撤销这些权限。icacls c:\users /remove joe
icacls
非常强大,可以在域设置中使用,以授予某些用户或组对文件或文件夹的特定权限、显式拒绝访问、启用或禁用继承权限以及更改目录/文件所有权。
可在此处找到命令行参数和详细权限设置的完整列表。icacls