操作系统的核心
操作系统的核心
操作系统的结构
在 Windows 操作系统中,根目录是 <drive_letter>:\
(通常是 C 盘)。根目录(也称为引导分区)是安装操作系统的位置。其他物理和虚拟驱动器分配有其他字母,例如 Data (E:)。boot分区的目录结构如下:
| 目录 | 功能 |
|--------------------------|---------------------------|
|Perflogs | 可以保存 Windows 性能日志,但默认为空。|
|Program Files | 在 32 位系统上,所有 16 位和 32 位程序都安装在此处。在 64 位系统上,这里只安装 64 位程序。|
|Program Files(x86) | 32 位和 16 位程序安装在 64 位版本的 Windows 上。|
|ProgramData | 这是一个隐藏文件夹,其中包含某些已安装程序运行所必需的数据。无论是哪个用户运行它,程序都可以访问这些数据。|
|Users | 此文件夹包含登录系统的每个用户的用户配置文件,并包含两个文件夹 Public 和 Default。
|Default | 这是所有已创建用户的默认用户配置文件模板。每当将新用户添加到系统时,他们的配置文件都基于默认配置文件。
|Public | 此文件夹旨在供计算机用户共享文件,默认情况下所有用户均可访问。默认情况下,此文件夹通过网络共享,但需要有效的网络帐户才能访问。
|AppData | 每个用户的应用程序数据和设置都存储在一个隐藏的用户子文件夹中(即,cliff.moore\AppData)。这些文件夹中的每一个都包含三个子文件夹。Roaming 文件夹包含应遵循用户配置文件的与机器无关的数据,例如自定义词典。本地文件夹特定于计算机本身,并且从不通过网络同步。LocalLow 类似于 Local 文件夹,但它的数据完整性级别较低。因此,它可以被设置为受保护或安全模式的网络浏览器使用。
|Windows | Windows 操作系统所需的大部分文件都包含在此处。
|System, System32, SysWOW64 | 包含 Windows 和 Windows API 的核心功能所需的所有 DLL。每当程序要求加载 DLL 而不指定绝对路径时,操作系统都会搜索这些文件夹。
|WinSxS | Windows 组件存储包含所有 Windows 组件、更新和服务包的副本。
使用命令行探索目录
C:\htb> dir c:\ /a
Volume in drive C has no label.
Volume Serial Number is F416-77BE
Directory of c:\
08/16/2020 10:33 AM <DIR> $Recycle.Bin
06/25/2020 06:25 PM <DIR> $WinREAgent
07/02/2020 12:55 PM 1,024 AMTAG.BIN
06/25/2020 03:38 PM <JUNCTION> Documents and Settings [C:\Users]
08/13/2020 06:03 PM 8,192 DumpStack.log
08/17/2020 12:11 PM 8,192 DumpStack.log.tmp
08/27/2020 10:42 AM 37,752,373,248 hiberfil.sys
08/17/2020 12:11 PM 13,421,772,800 pagefile.sys
12/07/2019 05:14 AM <DIR> PerfLogs
08/24/2020 10:38 AM <DIR> Program Files
07/09/2020 06:08 PM <DIR> Program Files (x86)
08/24/2020 10:41 AM <DIR> ProgramData
06/25/2020 03:38 PM <DIR> Recovery
06/25/2020 03:57 PM 2,918 RHDSetup.log
08/17/2020 12:11 PM 16,777,216 swapfile.sys
08/26/2020 02:51 PM <DIR> System Volume Information
08/16/2020 10:33 AM <DIR> Users
08/17/2020 11:38 PM <DIR> Windows
7 File(s) 51,190,943,590 bytes
13 Dir(s) 261,310,697,472 bytes free
tree实用程序可用于以图形方式显示路径或磁盘的目录结构。
C:\htb> tree "c:\Program Files (x86)\VMware"
Folder PATH listing
Volume serial number is F416-77BE
C:\PROGRAM FILES (X86)\VMWARE
├───VMware VIX
│ ├───doc
│ │ ├───errors
│ │ ├───features
│ │ ├───lang
│ │ │ └───c
│ │ │ └───functions
│ │ └───types
│ ├───samples
│ └───Workstation-15.0.0
│ ├───32bit
│ └───64bit
└───VMware Workstation
├───env
├───hostd
│ ├───coreLocale
│ │ └───en
│ ├───docroot
│ │ ├───client
│ │ └───sdk
│ ├───extensions
│ │ └───hostdiag
│ │ └───locale
│ │ └───en
│ └───vimLocale
│ └───en
├───ico
├───messages
│ ├───ja
│ └───zh_CN
├───OVFTool
│ ├───env
│ │ └───en
│ └───schemas
│ ├───DMTF
│ └───vmware
├───Resources
├───tools-upgraders
└───x64
The tree
command can provide us with a large amount of information. The following command can be used to walk through all the files in the C drive, one screen at a time. This command can be modified to be run against any directory.
该tree
命令可以为我们提供大量信息。以下命令可用于遍历 C 盘中的所有文件,一次一屏。可以修改此命令以针对任何目录运行。
tree c:\ /f | more
文件系统
Windows 文件系统有 5 种类型:FAT12、FAT16、FAT32、NTFS 和 exFAT。FAT12 和 FAT16 不再用于现代 Windows 操作系统。我们将在本次培训中涉及 FAT32 和 exFAT 文件系统,但我们的主要重点将是 NTFS 文件系统。
FAT32(文件分配表)广泛用于多种类型的存储设备,例如 USB 记忆棒和 SD 卡,但也可用于格式化硬盘驱动器。名称中的“32”是指FAT32 使用32 位数据来识别存储设备上的数据簇。
Pros of FAT32:
- 设备兼容性——它可用于计算机、数码相机、游戏机、智能手机、平板电脑等。
-
操作系统交叉兼容性——它适用于从 Windows 95 开始的所有 Windows 操作系统,并且还支持 MacOS 和 Linux
Cons of FAT32:
-
只能用于小于 4GB 的文件。
- 没有内置的数据保护或文件压缩功能。
- 必须使用第三方工具进行文件加密。
NTFS(新技术文件系统)是自 Windows NT 3.1 以来的默认 Windows 文件系统。NTFS除了弥补FAT32的不足之外,还因为改进了数据结构,对元数据有更好的支持,性能也更好。
Pros of NTFS:
- NTFS 是可靠的,可以在系统故障或断电的情况下恢复文件系统的一致性。
- 通过允许我们对文件和文件夹设置精细权限来提供安全性。
- 支持非常大的分区。
- 具有内置日志功能,这意味着记录文件修改(添加、修改、删除)。
Cons of NTFS:
- 大多数移动设备本身不支持 NTFS。
- 电视和数码相机等较旧的媒体设备不支持 NTFS 存储设备。
权限
NTFS 文件系统具有许多基本和高级权限。一些关键的权限类型是: | 权限类型 | 描述 | |:----------:|-------| | Full Control完全控制 | 允许读取、写入、更改、删除文件/文件夹。| | Modify调整 | 允许读取、写入和删除文件/文件夹。| |List Folder Contents列出文件夹内容 | 允许查看和列出文件夹和子文件夹以及执行文件。文件夹仅继承此权限。| | Read and Execute读取和执行 | 允许查看和列出文件和子文件夹以及执行文件。文件和文件夹继承此权限。| | 写 | 允许将文件添加到文件夹和子文件夹以及写入文件。| | 读 | 允许查看和列出文件夹和子文件夹以及查看文件的内容。| | Traverse Folder遍历文件夹 | 这允许或拒绝通过文件夹移动以访问其他文件或文件夹的能力。例如,在此示例 c:\users\bsmith\documents\webapps\backups\backup_02042020.zip 中,用户可能无权列出目录内容或查看文档或 Web 应用程序目录中的文件,但应用了遍历文件夹权限,他们可以访问备份存档。|
文件和文件夹继承其父文件夹的 NTFS 权限以便于管理,因此管理员无需为每个文件和文件夹显式设置权限,因为这会非常耗时。如果确实需要明确设置权限,管理员可以禁用必要文件和文件夹的权限继承,然后直接在每个文件和文件夹上设置权限。
Integrity Control Access Control List (icacls)完整性访问列表
可以使用安全选项卡下的文件资源管理器 GUI 管理 Windows 中文件和文件夹的 NTFS 权限。除了 GUI,我们还可以在 Windows 中使用 icacls 实用程序在命令行中实现对 NTFS 文件权限的精细粒度。
icacls
我们可以通过从工作目录中运行或icacls C:\Windows
针对当前不在的目录运行来列出特定目录的 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
使用命令icacls c:\users /grant joe:f
,我们可以授予joe用户对目录的完全控制权,但考虑到命令中未包含(oi)
and (ci)
,joe用户将只对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
可以在此处找到命令行参数和详细权限设置的完整列表。
NTFS 与共享权限
微软拥有超过70%的股权Windows 桌面操作系统的全球市场份额。这就解释了为什么大多数恶意软件作者选择为 Windows 编写恶意软件,以及为什么许多人认为 Windows 不如其他操作系统安全。从商业角度来看,恶意软件作者将资源用于为 Windows 编写恶意软件是有意义的。这是一个高价值的目标。任何操作系统都对恶意软件免疫的想法是一个技术谬误。如果可以为操作系统编写软件,那么可以为操作系统编写病毒。请记住,根据定义,病毒是恶意编写的软件,可以为任何操作系统编写。许多为 Windows 编写的恶意软件变体可以通过应用宽松权限的网络共享在网络上传播。值得一提的是,直到今天,臭名昭著的EternalBlue
漏洞仍然困扰着未修补的正在运行的 Windows 系统,SMBv1
并经常为勒索软件关闭组织铺平道路。
( Server Message Block protocol
)SMB
在 Windows 中用于连接文件和打印机等共享资源。它用于大、中、小型企业环境。请参阅下图以可视化此概念:
![[htb-windowsntfs.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
|允许或拒绝用户查看文件或文件夹的基本属性。基本属性示例:系统、存档、只读和隐藏
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 级别的权限使管理员可以更精细地控制用户在文件夹或文件中可以执行的操作。
Creating a Network Share
为了从根本上了解SMB及其与NTFS的关系,我们将在Windows 10 目标 box
上创建一个网络共享。
注意:在单独的显示器上全屏打开 Pwnbox 是一种理想的学习体验,因此我们可能至少有一个显示器专门用于显示书面内容,一个显示器用于我们正在与之交互的盒子。或者,如果我们只能访问一个显示器,我们可以使用该显示器与盒子和智能手机或平板电脑进行交互,以引用书面内容。
在这种情况下,我们将通过首先在 Windows 10 桌面上创建一个新文件夹来创建一个共享文件夹。请记住,在大多数大型企业环境中,共享是在存储区域网络 (SAN)、网络附加存储设备 (NAS) 或通过服务器操作系统(如 Windows Server)访问的驱动器上的单独分区上创建的。如果我们在桌面操作系统上遇到共享,它要么是小型企业,要么可能是渗透测试人员或恶意攻击者用来收集和泄露数据的滩头阵地系统。
我们将使用 Windows 中的 GUI 完成此过程。
创建文件夹
我们将使用该Advanced Sharing
选项来配置我们的共享。
将文件夹设为共享
请注意共享名称如何自动默认为文件夹名称。此外,我们可以看到可以限制可以同时连接到此共享的用户数量。在实际环境中,管理员最好根据经常需要访问共享资源的用户数量来设置此数字。
与 NTFS 权限类似,共享资源有一个access control list
( ACL
)。我们可以将其视为 SMB 权限列表。请记住,对于共享资源,SMB 和 NTFS 权限列表都适用于在 Windows 中共享的每个资源。ACL 包含access control entries
( ACEs
)。通常,这些 ACE 由users
& groups
(也称为安全主体)组成,因为它们是管理和跟踪对共享资源的访问的合适机制。
请注意默认的访问控制条目和权限设置。
共享权限 ACL(共享选项卡)
![[Pasted image 20221025152141.png]]
现在,我们将应用这些设置来测试此 ACL 的效果以及按原样应用的权限。我们将通过打开终端并使用smbclient
.
注意:从技术上讲,服务器是一种用于服务客户端请求的软件功能。在这种情况下,Pwnbox 是我们的客户端,Windows 10 目标框是我们的服务器。
使用 smbclient 连接到共享
使用 smbclient 连接到共享
darkinga@htb[/htb]$ smbclient -L IPaddressOfTarget -U htb-student
Enter WORKGROUP\htb-student's password:
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
Company Data Disk
IPC$ IPC Remote IPC
如果我们的所有条目都是正确的并且我们的权限列表中的 Everyone 组至少具有读取权限,那么有什么可能会阻止我们访问此共享?
Windows Defender 防火墙注意事项
Windows Defender 防火墙可能会阻止对 SMB 共享的访问。由于我们是从基于 Linux 的系统连接的,因此防火墙已阻止来自任何未加入同一workgroup
. 同样重要的是要注意,当 Windows 系统是工作组的一部分时,所有netlogon
请求都针对该特定 Windows 系统的SAM
数据库进行身份验证。当 Windows 系统加入 Windows 域环境时,所有 netlogon 请求都经过身份验证Active Directory
. 工作组和 Windows 域在身份验证方面的主要区别在于,工作组使用本地 SAM 数据库,而在 Windows 域中使用基于网络的集中式数据库 (Active Directory)。在尝试使用 Windows 系统登录和验证时,我们必须知道这些信息。考虑托管 htb-student 帐户的位置以正确连接到目标。
在防火墙阻止连接方面,这可以通过完全停用 Windows 中的每个防火墙配置文件或通过在Windows Defender Firewall advanced security settings
. 与大多数防火墙一样,Windows Defender 防火墙允许或拒绝流量(在这种情况下为访问和连接请求)流动inbound
和/或outbound
不同的入站和出站规则与防御者中不同的防火墙配置文件相关联。
Windows Defender 防火墙配置文件:
Public
Private
Domain
最佳做法是启用预定义规则或添加自定义例外,而不是完全停用防火墙。不幸的是,为了方便或缺乏理解,将防火墙完全停用是很常见的。当通过使用组策略加入 Windows 域环境时,可以集中管理桌面系统上的防火墙规则。组策略概念和配置超出了本模块的范围。
启用正确的inbound
防火墙规则后,我们将成功连接到共享。请记住,我们只能连接到共享,因为我们使用的用户帐户 ( htb-student
) 位于Everyone group
. 回想一下,我们将“所有人”组的特定共享权限设置为“读取”,这实际上意味着我们将只能读取该共享上的文件。一旦与共享建立连接,我们就可以mount point
从我们的 Pwnbox 到 Windows 10 目标框的文件系统创建一个。这是我们还必须考虑 NTFS 权限与共享权限一起应用的地方。回想一下,NTFS 是 Windows 中的默认文件系统。让我们回到使用 Windows 10 目标框的 xfreerdp 会话,并查看公司数据文件夹的 NTFS 权限。
NTFS 权限 ACL(安全选项卡)
可以对用户和组应用 NTFS 权限进行更精细的控制。每当我们看到权限旁边的灰色复选标记时,它都是从父目录继承的。默认情况下,所有 NTFS 权限都继承自父目录。在 Windows 世界中,C:\ drive
除非系统管理员在新创建的文件夹的高级安全设置中禁用继承,否则它是管理所有目录的父目录。
在许多情况下,组织的系统管理员将负责决定用户或用户组在网络资源上获得什么权限。这就是为什么许多鱼叉式网络钓鱼攻击都针对系统管理员和其他 IT 领导者。他们对他们监督的环境中允许的内容有很大的影响,在许多情况下甚至比组织的非技术 c 级领导者更重要。例如,在医院工作的医生或行政人员将没有网络管理权限,但系统管理员将拥有。
现在让我们Full control
在共享级别给每个人组,并通过尝试从我们的 Pwnbox 的桌面创建到共享的挂载点来测试更改的影响
安装到共享
安装到共享
darkinga@htb[/htb]$ sudo mount -t cifs -o username=htb-student,password=Academy_WinFun! //ipaddoftarget/"Company Data" /home/user/Desktop/
如果此命令不起作用,请检查语法。如果语法正确但命令仍然有效,cifs-utils
则可能需要安装。这可以使用以下命令完成:
安装 CIFS 实用程序
安装 CIFS 实用程序
darkinga@htb[/htb]$ sudo apt-get install cifs-utils
一旦我们在 Pwnbox 的桌面上成功创建了挂载点,我们应该看看 Windows 内置的几个工具,它们可以让我们跟踪和监控我们所做的事情。
该net share
命令允许我们查看系统上的所有共享文件夹。请注意我们创建的共享以及 C:\ 驱动器。
Do you remember us sharing the C:\ drive?
我们没有手动共享 C:。Windows 系统上包含最关键文件的最重要驱动器在安装时通过 SMB 共享。这意味着任何拥有适当访问权限的人都可以远程访问网络上每个 Windows 系统的整个 C:\。
我们还可以看到我们创建的共享。
使用净份额显示份额
使用净份额显示份额
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 系统上的共享资源的另一个工具。
从计算机管理监控共享
Shares
我们可以在、Sessions
和中四处Open Files
寻找,以了解这为我们提供了哪些信息。如果出现我们协助个人或组织应对与 SMB 相关的违规行为的情况,这些是检查并开始了解违规行为如何发生以及可能留下的内容的好地方。
在事件查看器中查看共享访问日志
Event Viewer
是调查在 Windows 上完成的操作的另一个好地方。几乎每个操作系统都有一个日志记录机制和一个实用程序来查看捕获的日志。要知道,日志就像计算机的日记条目,计算机在其中记下所有已执行的操作以及与该操作相关的大量详细信息。我们可以查看在访问 Windows 10 目标框时以及在创建、编辑和访问共享文件夹时执行的每个操作所创建的日志。