文章

Windows基础

NTFS 与共享权限


Microsoft 在使用 Windows 的桌面操作系统上拥有超过 70% 的全球市场份额。这解释了为什么大多数恶意软件作者选择为 Windows 编写恶意软件,以及为什么许多人认为 Windows 不如其他操作系统安全。从商业角度来看,恶意软件作者花费资源编写 Windows 恶意软件是有意义的。这是一个高价值的目标。任何操作系统都不受恶意软件影响的想法是一种技术谬误。如果可以为操作系统编写软件,那么可以为操作系统编写病毒。请记住,根据定义,病毒是出于恶意编写的软件,可以为任何操作系统编写。为 Windows 编写的许多恶意软件变体可以通过应用了宽松权限的网络共享在网络上传播。还值得注意的是,直到今天,这个臭名昭著的漏洞仍然困扰着正在运行的未打补丁的 Windows 系统,并且经常为勒索软件关闭组织铺平道路。EternalBlueSMBv1

() 在 Windows 中用于连接共享资源,如文件和打印机。它用于大型、中型和小型企业环境。请参阅下图以直观地了解此概念:Server Message Block protocolSMB

!https://academy.hackthebox.com/storage/modules/49/smb_diagram.png

注意:每当您看到某个概念的可视化/图表时,请花时间彻底理解它。一张图片可能胜过千言万语,但在阅读时非常诱人地跳过。

NTFS 权限和共享权限通常被理解为相同。请注意,它们并不相同,但通常适用于相同的共享资源。让我们看一下可以设置的各个权限,以保护/授予对象对运行 NTFS 文件系统的 Windows 操作系统上托管的网络共享的访问权限。

共享权限

许可描述
Full Control允许用户执行更改和读取权限提供的所有操作,以及更改 NTFS 文件和子文件夹的权限
Change允许用户读取、编辑、删除和添加文件和子文件夹
Read用户可以查看文件和子文件夹内容

NTFS 基本权限

许可描述
Full Control用户可以添加、编辑、移动、删除文件和文件夹,以及更改适用于所有允许文件夹的NTFS权限。
Modify允许用户查看和修改文件和文件夹的权限。这包括添加或删除文件
Read & Execute允许用户或拒绝读取文件内容和执行程序的权限
List folder contents允许用户或拒绝用户查看文件和子文件夹列表的权限
Read允许或拒绝用户读取文件内容的权限
Write允许或拒绝用户对文件写入更改以及将新文件添加到文件夹的权限
Special Permissions各种高级权限选项

NTFS 特殊权限

许可描述
Full control用户有权添加、编辑、移动、删除文件和文件夹,以及更改适用于所有允许文件夹的NTFS权限。
Traverse folder / execute file允许或拒绝用户访问目录结构中的子文件夹的权限,即使拒绝用户访问父文件夹级别的内容也是如此。用户也可能被允许或拒绝执行程序的权限
List folder/read data允许用户或拒绝用户查看父文件夹中包含的文件和文件夹的权限。还可以允许用户打开和查看文件
Read attributes允许用户或拒绝查看文件或文件夹的基本属性的权限。基本属性示例:system、archive、read-only 和 hidden
Read extended attributes允许用户或拒绝查看文件或文件夹的扩展属性的权限。属性因程序而异
Create files/write data允许用户或拒绝用户在文件夹中创建文件和更改文件的权限
Create folders/append data允许用户或拒绝在文件夹中创建子文件夹的权限。可以将数据添加到文件中,但不能覆盖预先存在的内容
Write attributes允许或拒绝用户更改文件属性。此权限不授予创建文件或文件夹的权限
Write extended attributes允许用户或拒绝用户更改文件或文件夹的扩展属性的权限。属性因程序而异
Delete subfolders and files允许用户删除子文件夹和文件的权限。不会删除父文件夹
Delete允许用户或拒绝用户删除父文件夹、子文件夹和文件的权限。
Read permissions允许或拒绝用户读取文件夹的权限
Change permissions允许用户或拒绝用户更改文件或文件夹的权限
Take ownership允许用户或拒绝用户获得文件或文件夹的所有权。文件所有者具有更改任何权限的完全权限

请记住,NTFS 权限适用于托管文件夹和文件的系统。默认情况下,在 NTFS 中创建的文件夹会从父文件夹继承权限。可以禁用继承以设置对父文件夹和子文件夹的自定义权限,就像我们稍后将在本模块中所做的那样。当通过 SMB 访问文件夹时(通常从网络中的其他系统访问),共享权限适用。这意味着在本地或通过 RDP 登录到计算机的人只需导航到文件系统上的位置即可访问共享文件夹和文件,并且只需要考虑 NTFS 权限。NTFS 级别的权限使管理员能够更精细地控制用户可以在文件夹或文件中执行的操作。


创建网络共享

为了对 SMB 及其与 NTFS 的关系有一个扎实的基本理解,我们将在 上创建一个网络共享。Windows 10 target box

注意:让 Pwnbox 在单独的显示器上全屏打开是一种理想的学习体验,这样我们至少可以有一个显示器专门用于显示书面内容,还有一个显示器用于我们正在交互的盒子。或者,如果我们只能访问一个显示器,我们可以将该显示器用于与盒子和智能手机或平板电脑交互以引用写入的内容。

在这种情况下,我们将首先在 Windows 10 桌面上创建一个新文件夹来创建共享文件夹。请记住,在大多数大型企业环境中,共享是在存储区域网络 (SAN)、网络连接存储设备 (NAS) 或通过服务器操作系统(如 Windows Server)访问的驱动器上的单独分区上创建的。如果我们在桌面操作系统上遇到共享,它可能是一家小型企业,也可能是渗透测试人员或恶意攻击者用来收集和泄露数据的滩头系统。

我们将使用 Windows 中的 GUI 完成此过程。

创建文件夹

!https://academy.hackthebox.com/storage/modules/49/creating_directory.png

我们将使用该选项来配置我们的共享。Advanced Sharing

将文件夹设为共享文件夹

!https://academy.hackthebox.com/storage/modules/49/configuring_share.png

请注意共享名称如何自动默认为文件夹的名称。此外,我们可以看到可以限制可以同时连接到此共享的用户数。在实际环境中,管理员最好根据经常需要访问正在共享的资源的用户数来设置此数字。

与 NTFS 权限类似,有一个 () 用于共享资源。我们可以将此视为 SMB 权限列表。请记住,对于共享资源,SMB 和 NTFS 权限列表都适用于在 Windows 中共享的每个资源。ACL 包含 ()。通常这些ACEs由&(也称为安全主体)组成,因为它们是管理和跟踪对共享资源的访问的合适机制。access control listACLaccess control entriesACEsusersgroups

请注意默认的 access control entry 和 permissions 设置。

共享权限 ACL(“共享”选项卡)

!https://academy.hackthebox.com/storage/modules/49/share_permissions.png

现在,我们将应用这些设置来测试此 ACL 的效果以及按原样应用的权限。我们将通过打开终端并使用 来测试 Pwnbox 的连接。smbclient

注意:从技术上讲,服务器是一种用于为客户端请求提供服务的软件功能。在这种情况下,Pwnbox 是我们的客户端,而 Windows 10 目标框是我们的服务器。

使用 smbclient 列出可用的共享

NTFS 与共享权限

1
2
3
4
5
6
DeviLeo@htb[/htb]$ smbclient -L SERVER_IP -U htb-studentEnter WORKGROUP\htb-student's password:

	Sharename       Type      Comment
	---------       ----      -------
	ADMIN$          Disk      Remote Admin	C$              Disk      Default share	Company Data    Disk
	IPC$            IPC       Remote IPC

连接到公司数据共享

NTFS 与共享权限

1
2
3
4
5
DeviLeo@htb[/htb]$ smbclient '\\SERVER_IP\Company Data' -U htb-studentPassword for [WORKGROUP\htb-student]:
Try "help" to get a list of possible commands.

smb: \>

如果我们的所有条目都正确无误,并且我们的权限列表中存在至少具有读取权限的 Everyone 组,那么什么可能会阻止我们访问此共享?


Windows Defender 防火墙注意事项

Windows Defender 防火墙可能会阻止对 SMB 共享的访问。由于我们从基于 Linux 的系统进行连接,因此防火墙已阻止来自任何未加入同一设备的访问 .同样重要的是要注意,当 Windows 系统是工作组的一部分时,所有请求都会根据该特定 Windows 系统的数据库进行身份验证。当 Windows 系统加入 Windows 域环境时,所有 netlogon 请求都将根据 进行身份验证。工作组和 Windows 域在身份验证方面的主要区别在于,工作组使用本地 SAM 数据库,而在 Windows 域中使用基于网络的集中式数据库 (Active Directory)。我们在尝试登录和验证Windows系统时必须知道这些信息。考虑 htb-student 账户的托管位置以正确连接到目标。workgroupnetlogonSAMActive Directory

在防火墙阻止连接方面,可以通过在 Windows 中完全停用每个防火墙配置文件或在 中启用特定的预定义入站防火墙规则来测试。像大多数防火墙一样,Windows Defender防火墙允许或拒绝流量(在这种情况下是访问和连接请求)流动和/或Windows Defender Firewall advanced security settingsinboundoutbound

不同的入站和出站规则与 Defender 中的不同防火墙配置文件相关联。

Windows Defender 防火墙配置文件:

  • Public
  • Private
  • Domain

最佳实践是启用预定义规则或添加自定义例外,而不是完全停用防火墙。不幸的是,为了方便或缺乏理解而完全停用防火墙是很常见的。通过使用组策略加入 Windows 域环境时,可以集中管理桌面系统上的防火墙规则。组策略概念和配置超出了本模块的范围。

启用适当的防火墙规则后,我们将成功连接到共享。请记住,我们只能连接到共享,因为我们使用的用户帐户 () 位于 .回想一下,我们将 Everyone 组的特定共享权限设置为 Read,这实际上意味着我们将只能读取此共享上的文件。一旦与共享建立连接,我们就可以创建一个从 Pwnbox 到 Windows 10 目标框的文件系统。在这里,我们还必须考虑 NTFS 权限与共享权限一起应用。回想一下,NTFS 是 Windows 中的默认文件系统。让我们跳回到 Windows 10 目标框的 xfreerdp 会话,看看 Company Data 文件夹的 NTFS 权限。inboundhtb-studentEveryone groupmount point

NTFS 权限 ACL(“安全”选项卡)

!https://academy.hackthebox.com/storage/modules/49/ntfs.png

NTFS 权限可以应用于用户和组,从而进行更精细的控制。每当我们在权限旁边看到灰色复选标记时,它都是从父目录继承的。默认情况下,所有 NTFS 权限都是从父目录继承的。在 Windows 世界中,它是统治所有目录的父目录,除非系统管理员在新创建的文件夹的高级安全设置中禁用继承。C:\ drive

在许多情况下,组织的系统管理员将负责决定用户或用户组对网络资源获得哪些权限。这就是为什么许多鱼叉式网络钓鱼攻击都是针对系统管理员和其他 IT 领导者的原因。他们对他们所监督的环境中允许的内容有很大的影响力,在许多情况下甚至比组织的非技术 C 级领导者还要大。例如,在医院工作的医生或管理人员将不具有对网络的管理权限,但系统管理员可以。

现在让我们在共享级别为 Everyone 组提供,并通过尝试从 Pwnbox 的桌面创建到共享的挂载点来测试更改的影响Full control

挂载到共享

NTFS 与共享权限

1
DeviLeo@htb[/htb]$ sudo mount -t cifs -o username=htb-student,password=Academy_WinFun! //ipaddoftarget/"Company Data" /home/user/Desktop/

如果此命令不起作用,请检查语法。如果语法正确但命令仍然不起作用,则可能需要安装。这可以通过以下命令完成:cifs-utils

安装 CIFS 实用程序

NTFS 与共享权限

1
DeviLeo@htb[/htb]$ sudo apt-get install cifs-utils

一旦我们在 Pwnbox 的桌面上成功创建了挂载点,我们应该看看 Windows 内置的几个工具,它们将允许我们跟踪和监控我们所做的工作。

该命令允许我们查看系统上的所有共享文件夹。请注意我们创建的共享以及 C:\ 驱动器。net share

Do you remember us sharing the C:\ drive?

我们没有手动共享 C:。Windows 系统上包含最重要文件的最重要的驱动器在安装时通过 SMB 共享。这意味着任何具有适当访问权限的人都可以远程访问网络上每个 Windows 系统的整个 C:\。

我们还可以看到我们创建的共享。

使用 Net Share 显示共享

NTFS 与共享权限

1
2
3
4
5
6
7
8
9
10
11
12
C:\Users\htb-student> net share

Share name   Resource                        Remark

-------------------------------------------------------------------------------
C$           C:\                             Default share
IPC$                                         Remote IPC
ADMIN$       C:\WINDOWS                      Remote Admin
Company Data C:\Users\htb-student\Desktop\Company Data

The command completed successfully.

Computer Management是我们可以用来识别和监控 Windows 系统上共享资源的另一种工具。

从计算机管理中监控共享

!https://academy.hackthebox.com/storage/modules/49/computer_management.png

我们可以在 , 中四处探索,并了解它为我们提供了什么信息。如果我们协助个人或组织应对与 SMB 相关的违规行为,这些都是检查并开始了解违规行为可能如何发生以及可能留下什么的好地方。SharesSessionsOpen Files

在 Event Viewer 中查看共享访问日志

Event Viewer是调查在 Windows 上完成的操作的另一个好位置。几乎每个操作系统都有一个日志记录机制和一个实用程序来查看捕获的日志。要知道,日志就像计算机的日志条目,计算机在其中记下执行的所有操作以及与该操作相关的许多详细信息。我们可以查看为我们在访问 Windows 10 目标框以及创建、编辑和访问共享文件夹时执行的每项操作创建的日志。

!https://academy.hackthebox.com/storage/modules/49/event_viewer.png

本文由作者按照 CC BY 4.0 进行授权