文章目录
在这个场景中,假设已经获得了对机器的访问权限,我们准备通过枚举来进一步了解环境,具体包括以下内容:
- 网络基础设施
- Active Directory 环境
- 用户和组
- 基于主机的安全解决方案
- 基于网络的安全解决方案
- 应用程序和服务
一、网络基础设施
当我们进入一个未知的网络环境时,我们的首要目标是确定我们的位置以及我们能够访问到哪些资源。
1.1 内网
内网是根据内部设备的重要性或其数据的可访问性的重要性而划分和分离的子网络。下图中网络被划分为两个网络:第一个是用于员工工作站和个人设备的网络;第二个是用于提供内部服务(如 DNS、内部网页、电子邮件服务等)的私有和内部网络设备的网络。
1.2 DMZ区
DMZ区是一种边缘网络,它保护公司内部局域网并为其增加额外的安全层。例如:一家公司提供诸如网站、DNS、FTP、代理、VPN 等公共网络服务,那么他们可能会设计一个 DMZ 网络,以隔离并实现对公共网络流量、不受信任流量的访问控制。
1.3 网络枚举(Network Enumeration)
网络枚举涉及检查与网络相关的多个方面,例如TCP
和UDP
端口、已建立的连接、路由表、ARP
表等。
# 查看所有建立连接的TCP端口
netstat -nt
# -n:以数字形式显示地址和端口号
# -t:仅显示TCP连接,默认不显示LISTEN端口
# 查看ARP路由表
arp -a
二、域环境
如下图,域控被放在一个服务器专用的子网中(在图中显示为服务器网络),然后活动目录客户端位于一个独立的网络中,它们可以加入域并使用活动目录Active Directory
服务。
域环境中的相关组件:
- 域控制器(Domain Controllers):负责管理域内身份验证、授权以及目录服务的服务器。
- 组织单位(Organizational Units):用于对域内的对象(如用户、计算机、组等)进行逻辑分组和管理的容器。
- 活动目录对象(AD objects):活动目录中存储的各种实体,包括用户、计算机、组、打印机等。
- 活动目录域(AD Domains):一个逻辑分组,包含一组具有相同安全策略和管理结构的计算机和用户。
- 活动目录服务账户(AD Service Accounts):
- 内置本地用户(Built-in local users):系统预定义的本地用户账户。
- 域用户(Domain users):属于域的用户账户。
- 管理型服务账户(Managed service accounts):由系统自动管理的用于服务运行的账户。
- 域管理员(Domain Administrators):具有域内最高管理权限的用户组,可以对域内的对象和策略进行管理。
域控制器(Domain Controller)是一台提供活动目录(Active Directory)服务并控制整个域的Windows服务器。它是一种集中式用户管理方式,能够加密用户数据,并控制对网络的访问,包括用户、组、策略和计算机等。
组织单位(Organizational Units,OU)是活动目录(AD)域内的容器,具有层级结构。
活动目录对象可以是一个单独的用户或一个组,也可以是一个硬件组件,例如计算机或打印机。每个域都包含一个数据库,该数据库存储对象的身份信息,从而创建了一个活动目录(AD)环境,其中包括:
- 用户:被允许在域内对计算机进行身份验证的安全主体。
- 计算机:一种特殊类型的用户账户。
- 组策略对象(GPOs):应用于其他活动目录对象的策略集合。
AD域是活动目录网络内的一个由组件构成的集合。AD Forest是一个由相互信任的域构成的集合。下图就是一个域森林。
# 查看当前设备是否在域环境中
systeminfo | findstr Domain
当前计算机处于thmredteam.com
域中。如果得到WORKGROUP
,说明当前计算机处于工作组中。
三、用户和组管理
一旦获得了对被入侵机器的初始访问权限,账户发现就是第一步,以了解当前用户拥有的权限以及系统中还有哪些其他账户。
常见的活动目录服务账户包括内置本地用户账户、域用户账户、管理型服务账户和虚拟账户。
- 内置本地用户账户:用于在本地管理系统的账户,不属于活动目录环境。
- 域用户账户:可以访问活动目录环境的账户,由活动目录管理,能够使用活动目录服务。
- 活动目录管理型服务账户:具有更高权限的有限域用户账户,用于管理活动目录服务。
- 域管理员账户:能够管理活动目录环境中的信息的用户账户,包括活动目录的配置、用户、组、权限、角色、服务等。在红队演练中,获取域管理员权限以完全控制活动目录环境是红队的一个重要目标。
以下是活动目录管理员账户的类型:
- Domain Admins(域管理员):对整个域中的所有资源具有完全管理权限。
- Enterprise Admins(企业管理员):在某个域森林中的域管理员,阉割版域管理员。
- Schema Admins(架构管理员):能够修改活动目录的架构。
- Server Operators(服务器操作员):可以管理域内的服务器。
- Account Operators(账户操作员):可以管理域内的用户账户和组,但不能管理特权组(如域管理员组)。
使用PowerShell
命令用于获取所有活动目录用户账户
# 获取所有活动目录用户账户
Get-ADUser -Filter *
# 从THMREDTEAM.COM域的Users容器中检索出所有的用户账户信息
Get-ADUser -Filter * -SearchBase "CN=Users,DC=THMREDTEAM,DC=COM"
DistinguishedName : CN=THM Admin,OU=THM,DC=thmredteam,DC=com
# DistinguishedName是用户在活动目录中的唯一标识,用于定位用户对象。它是一个层级路径,从用户对象开始,逐步向上到域组件(DC)。
# CN=THM Admin:表示用户的通用名称(Common Name)是“THM Admin”。
# OU=THM:表示用户位于名为“THM”的组织单位(Organizational Unit,OU)中。
# DC=thmredteam,DC=com:表示用户属于“thmredteam.com”域。
Enabled : True
# Enabled表示该用户账户是否启用
GivenName : THM
# GivenName:表示用户的名字部分
Name : THM Admin
# Name:就是用户的通用名称
ObjectClass : user
# ObjectClass:对象的类别
ObjectGUID : 8974cd3d-9bf0-4c43-ac7d-068413fb462c
# ObjectGUID:对象的全局唯一标识符(Object GUID)。这是一个唯一的标识符,用于在活动目录中唯一标识该用户对象。
SamAccountName : thmadmin
# SamAccountName:用户登录时使用的用户名
SID : S-1-5-21-1966530601-3185510712-10604624-1124
# SID:用户的安全标识符(Security Identifier,SID)。SID 是一个唯一的标识符,用于标识用户或组的安全上下文。
Surname : Admin
# Surname:用户的姓(Surname),即用户的姓氏部分
UserPrincipalName : thmadmin@thmredteam.com
# UserPrincipalName:用户的主体名称(User Principal Name,UPN)。这是一个用户登录时可以使用的替代名称,通常是一个电子邮件地址格式。
从
DistinguishedName
中就可以看出,用户属于哪个容器,或者哪个组织单位。例如:DistinguishedName : CN=Administrator,CN=Users,OU=THM,DC=thmredteam,DC=com
表示该用户属于thmredteam.com 域的THM组织单位中的Users容器内。
1、Use the Get-ADUser -Filter * -SearchBase command to list the available user accounts within THM OU in the thmredteam.com domain. How many users are available?
6
命令如下:
Get-ADUser -Filter * -SearchBase "OU=THM,DC=THMREDTEAM,DC=COM"
2、Once you run the previous command, what is the UserPrincipalName (email) of the admin account?
thmadmin@thmredteam.com
# 获取所有活动目录用户账户
Get-ADUser -Filter *
四、安全解决方案
在企业网络中常用的两类安全解决方案:基于主机的安全解决方案和基于网络的安全解决方案。
4.1 基于主机的安全解决方案
基于主机的安全解决方案是一套用于监控和检测主机内异常及恶意活动的软件应用程序,包括:
- 防病毒软件
- 微软 Windows Defender
- 基于主机的防火墙
- 安全事件记录与监控
- 基于主机的入侵检测系统(HIDS)/ 基于主机的入侵防御系统(HIPS)
- 终端检测与响应(EDR)
4.1.1 防病毒软件
防病毒软件,也称为反恶意软件,主要用于监控、检测和防止恶意软件在主机内执行。防病毒软件一般依赖于预先定义的病毒特征来识别威胁,其使用了多种检测技术,包括:
- 基于特征码的检测
- 基于启发式的检测
- 基于行为的检测
1、基于特征码的检测
基于特征码的检测是防病毒软件用于识别恶意文件的一种常见且传统的技术。通常,研究人员或用户会将他们受感染的文件提交到防病毒引擎平台,供防病毒软件供应商进行进一步分析。如果确认该文件为恶意文件,那么其特征码就会被注册到他们的数据库中。防病毒软件会将扫描到的文件与客户端已知特征码数据库中的可能攻击和恶意软件进行比对。如果发现匹配项,就会将其视为威胁。
2、基于启发式的检测
基于启发式的检测使用机器学习来判断文件是否为恶意文件。它会在实时状态下进行扫描和静态分析,以查找应用程序代码中的可疑属性,或者检查其是否使用了不常见的 Windows 或系统 API。它在做决策时并不依赖于基于特征码的攻击,不过有时候也会依赖。这取决于防病毒软件的具体实现方式。
3、基于行为的检测
基于行为的检测依赖于监控和检查应用程序的执行情况,以发现异常行为和不寻常的活动,例如在注册表键中创建/更新值、终止/创建进程等。
使用如下命令对windows
系统中反病毒软件进行枚举:
wmic /namespace:\\root\securitycenter2 path antivirusproduct
Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntivirusProduct
windows系统中可能没有
root/SecurityCenter2
命名空间,需要具体问题具体分析。
4.1.2 Microsoft Windows Defender
Microsoft Windows Defender
是一款预装在终端上的防病毒安全工具。它在检测过程中使用了多种算法,包括机器学习、大数据分析、深度威胁抗性研究以及微软云基础设施,用于抵御恶意软件和病毒。Windows Defender
有三种保护模式:主动模式、被动模式和禁用模式。
- 主动模式:在这种模式下,Windows Defender 作为机器上的主要防病毒软件运行,提供保护和修复功能。
- 被动模式:当安装了第三方防病毒软件时,Windows Defender 会以被动模式运行。在这种模式下,它作为辅助防病毒软件,会扫描文件并检测威胁,但不会提供修复功能。
- 禁用模式:在这种模式下,Windows Defender 被禁用或从系统中卸载。
# powershell下,检查windows defender状态
Get-Service WinDefend
# 查看windows defender开启哪些功能
Get-MpComputerStatus
# 查看windows defender是否开启实时保护功能
Get-MpComputerStatus | select RealTimeProtectionEnabled
4.1.3 主机防火墙
基于主机的防火墙:它是一种安装并运行在主机机器上的安全工具,能够防止和阻止攻击者或红队成员的攻击尝试。防火墙在网络层充当访问控制的角色。它能够允许和拒绝网络数据包。
# 获取当前主机上 Windows 防火墙配置文件的状态信息
Get-NetFirewallProfile | Format-Table Name, Enabled
表示当前主机上的域、私有和公共网络位置的防火墙配置文件都处于关闭状态。
如果有管理员权限,可以使用下面的命令开启防火墙
# 开启防火墙
Set-NetFirewallProfile -Profile Domain, Public, Private -Enabled True
# 关闭防火墙
Set-NetFirewallProfile -Profile Domain, Public, Private -Enabled False
# 查看防火墙规则
Get-NetFirewallRule | select DisplayName, Enabled, Description
# 测试与指定计算机上的特定端口的连接是否成功
Test-NetConnection -ComputerName 127.0.0.1 -Port 80
80端口运行TCP流量通过。
1、Enumerate the attached Windows machine and check whether the host-based firewall is enabled or not! (Y|N)
N
# 获取当前主机上 Windows 防火墙配置文件的状态信息
Get-NetFirewallProfile | Format-Table Name, Enabled
2、Using PowerShell cmdlets such Get-MpThreat can provide us with threats details that have been detected using MS Defender. Run it and answer the following: What is the file name that causes this alert to record?
PowerView.ps1
# 查看windows defender的威胁详细信息
Get-MpThreat
3、Enumerate the firewall rules of the attached Windows machine. What is the port that is allowed under the THM-Connection rule?
# 查看THM-Connection规则
Get-NetFirewallRule | findstr "THM-Connection"
允许
17337
端口的流量入站
4.1.4 安全事件记录与监控
默认情况下,操作系统使用日志文件记录系统中的各种活动事件。可以使用如下命令获取本地计算机上可用的事件日志列表:
# 获取本地计算机上可用的事件日志列表
Get-EventLog
可用事件日志的列表可以让你了解机器上安装了哪些应用程序和服务!例如,我们可以看到本地机器上安装了活动目录(Active Directory)、DNS服务器等。
Windows系统监视器
(Sysmon
)是一个服务和设备驱动程序。它是微软 Sysinternals 套件之一。Sysmon 工具并非必需工具(默认情况下不会安装),但一旦安装,它就会开始收集和记录事件。这些日志指标可以显著帮助系统管理员和蓝队成员追踪和调查恶意活动,并协助进行一般的故障排除。使用下面的命令查看目标主机是否安装了Sysmon
:
# 查看目标主机是否安装了Sysmon,以下命令均可以查看
Get-Process | Where-Object { $_.ProcessName -eq "Sysmon" }
Get-CimInstance win32_service -Filter "Description = 'System Monitor service'"
Get-Service | where-object {$_.DisplayName -like "*sysm*"}
# 查找sysmon的配置文件
findstr /si '<ProcessCreate onmatch="exclude">' C:\tools\*
4.1.5 基于主机的入侵检测系统和入侵防御系统
IDS只能检测,不能阻止入侵;IPS不仅可以检测入侵,还可以阻断入侵。
4.1.6 终端检测与响应(EDR)
EDR(Endpoint Detection and Response)
是一种网络安全解决方案,用于防御恶意软件和其他威胁。EDR 可以查找恶意文件,监控端点、系统和网络事件,并将这些事件记录在数据库中以供进一步分析、检测和调查。EDR 是下一代防病毒技术,能够在主机上实时检测恶意活动。
以下是一些常见的端点 EDR 软件:Cylance、Crowdstrike、Symantec、SentinelOne。
EDR检测脚本:Invoke-EDRChecker、SharpEDRChecker
4.2 基于网络的安全解决方案
- 网络防火墙(Network Firewall):一种网络安全设备,用于监控进出网络的流量,并根据预设的安全规则允许或拒绝数据包通过。它可以帮助防止未经授权的访问和恶意流量进入网络。
- 安全信息与事件管理(SIEM,Security Information and Event Management):一种集成的安全解决方案,用于收集、分析和报告来自各种安全设备和系统的日志和事件信息。SIEM 系统可以帮助安全团队实时监控网络活动,检测潜在的安全威胁,并进行事件响应和调查。
- 入侵检测系统/入侵防御系统(IDS/IPS,Intrusion Detection System/Intrusion Prevention System):IDS 用于监控网络流量,检测可疑活动和潜在的入侵行为,并发出警报;IPS 则在此基础上进一步具备阻止或缓解攻击的能力。它们可以帮助及时发现和阻止恶意活动,保护网络免受攻击。
五、应用和服务
在前面的任务中,已经讨论了系统内的账户发现和安全产品。接下来,我们将继续深入了解系统,包括:
- 已安装的应用程序
- 服务和进程
- 共享文件和打印机
- 内部服务:DNS和本地Web应用程序
5.1 已安装的应用程序
使用如下命令列出所有已安装的应用程序及其版本:
wmic product get name,version
使用如下命令查找隐藏文件:
# 查看C:\Users\kkidd\Desktop\下的隐藏文件和文件夹
Get-ChildItem -Hidden -Path C:\Users\kkidd\Desktop\
# 递归列出所有子目录中的隐藏文件和文件夹
Get-ChildItem -Hidden -Path C:\Users\kkidd\Desktop\ -Recurse
5.2 服务和进程
使用如下命令列出系统上正在运行的服务:
net start
使用如下命令查看服务详细信息:
# 查看THM Service服务详细信息
wmic service where "name like 'THM Service'" get Name,PathName
# 获取名为 THM Service的进程的详细信息
Get-Process -Name thm-Service
使用
Get-Process -Name thm-Service
时,空格要用-
代替,服务进程号为2264
通过进程号检查该服务的端口情况:
netstat -noa |findstr "LISTENING" |findstr "2264"
Visit the localhost on the port you found in Question #1. What is the flag?
# 访问13337端口,即可拿到flag
curl http://localhost:13337
DNS 区域传输
nslookup.exe
Default Server
:DNS服务器名称;Address
:DNS服务器地址
# 指定使用的DNS服务器
server 10.10.17.102
# 快速获取指定域名的所有DNS记录
ls -d thmredteam.com