企业基础设施攻击与红队行动
章节1:课程介绍
章节2:C2基础设施搭建
VPS选择
VPS 选择 我们需要模拟外部攻击者来入侵靶场模拟的渡鸦制药公司,并且要使得一切都更专业化,因此选择一个 VPS 用来搭建 C2 基础设施是必须的。VPS,即虚拟专用服务器,是多租户云托管的一...
域名与证书选择
域名与证书选择 该篇内容对于学生来说是选做的,域名以及证书对于本课程的推进不是必要的。但如果用于实战中,那么这则会是必要的步骤。无论如何,让我们一起来了解一下怎么给VPS选择域名以及证书。 ...
C2的选择
C2 的选择 C2基础设施的准备工作已经做好了,接下来该选择一款得心应手的 C2 工具,因为它将会伴随着我们很长一段时间。 在选择的时候,我们可以参考 C2 矩阵 https://www.t...
C2侧写
C2侧写 Cobalt Strike 支持自定义侧写。自定义侧写不仅可以让我们自定义 Beacon 与 Team Server 之间的通信方式,从网络通信层面实现混淆效果,还可以自定义 Bea...
使用 Azure CDN 实现域前置
为了行动的 OPSEC,红队们通过各种手段寻求隐藏他们的 C2 基础设施,否则会被防御方以及威胁猎人所追踪到。这些技术中,使用域前置技术来实现对 C2 服务器的隐藏,是卓有成效以及典型的。在这个...
Azure 函数应用转发器
Azure 函数是无服务器的解决方案,允许我们写更少的代码,维护更少的基础设施,以及节约更多的开支。我们可以提供自己的代码,使得 Azure 函数充当着转发器的作用。 从 https://gi...
Azure API 管理服务转发器
类似于 Azure Function 应用,Azure API 管理服务也可用于搭建安全的 C2 基础设施。在 Azure 面板中,导航到 API Management services,创建新...
课程所用 C2 服务器配置
考虑到在 Azure 上部署服务作为 C2 基础设施的组成部分,具有一定的门槛与成本,在课程推进与靶场中,我们搭建一个简易的 C2 基础设施。出于节约成本起见,转发器与 C2 服务器同主机,让 ...
第2章课后作业
练习 1:根据本章所学,使用 Nginx 搭建一个简易的 C2 基础设施 2:使用 Apache2,搭建一个简易的 C2 基础设施 3:使用 webbug_getonly 作为C2侧写,...
面试专题
1. 笼统地概括一下怎么可以隐藏 C2 的流量? 2. 以 Cobalt Strike Http 监听器为例,Beacon 与团队服务器是怎么通信的? 3. Sliver C2 ...
章节3:外部侦查
目标站点与子域名
目标站点与子域名 在红队行动中,目标站点往往是提供的有限信息之一,例如 raven-med.local,而我们需要从这个点入手。有了目标站点,我们可以进一步枚举其子域名,得到其面向公网的IT资...
公开服务
公开服务 公开服务,顾名思义,即目标对互联网开放的端口上运行的服务。几乎所有公司都拥有Web服务,我们在上一篇也看到了。除此之外,邮件服务器、VPN门户等往往也是作为公开的服务,虽然很常见,但...
OSINT信息搜集
OSINT信息搜集 其实在前两篇,我们已经在做一些 OSINT 的信息搜集了,因此笔者刻意放缓了一些节奏,将重点和更有趣的部分在这里讲述。开源情报 (OSINT) 收集是红队、社会工程学攻击和...
子域名接管
子域名接管漏洞可以被攻击者用来创建可信的钓鱼方案、恶意软件分发、CSP 绕过、读取父域 Cookie 等。对于企业来说,子域名有更高的可能性直接绕过邮件过滤器,因此钓鱼攻击的成功率大大增加。 ...
邮件服务器安全
SMTP 简单邮件传输协议,正如名称所言,简单的实施,无需身份认证,而且发件人地址是可以自己指定的,因此该缺陷可以被利用与伪造和模仿发件人。考虑邮件是社会工程学攻击的重要载体,因此现代企业也配置...
社会工程学信息搜集
社会工程学信息搜集 在之前,我们已经搜集到了一些很有料的信息,那我们来看看如何利用这些搜集到的信息进行社会工程学攻击。我们能想到的场景之一,是借用求职者的身份与公司的HR进行联系,包括但不局限...
案例分析 Charter Communication 电信公司
有了先前的知识,我们在这一小节进行一个案例分析,对 Charter Communication 电信公司进行 OSINT 侦查。这一节虽然是案例分析,但并不是把这章节之前的内容生搬硬套就行,而是...
第3章课后作业
请寻找一家大型企业 (千人以及更大规模),通过 OSINT 以及正常访问等手段,搜集以下信息。请不要使用 nmap,漏洞扫描器等。 练习 1:企业的联系方式、地理位置 2:企业的产品、合作...
面试专题
章节4:初始入侵
利用公开exp
利用公开exp 搜集完信息之后,我们已经了解了目标公司开放了哪些公共服务,如果运气好,这些开放的公共服务具有高危漏洞,且这些高危漏洞存在公开exp,例如Confluence RCE漏洞。这样的...
利用常见web漏洞
利用常见web漏洞 虽然说利用Web漏洞不是唯一突破边界的方式,但绝对是重要途径之一。在上一篇,我们说了如何利用漏洞的公开 exp 突破企业边界,但每个企业往往都有自己独自开发的Web应用,且...
配置不当的网络服务
配置不当的网络服务 利用 Web 漏洞与社会工程学攻击是突破边界的主要手段,并且对于企业来说,例如 FTP 之类的网络服务越来越少在互联网上被公开,但这不意味着通过配置不当的网络服务突破边界是...
代码审计自定义应用
代码审计自定义应用 在上一篇,我们从黑盒角度讨论了如何利用常见Web漏洞突破边界。白盒测试要比黑盒测试高效的多,有的漏洞甚至可能永远无法被发现除非人们看到源代码。企业独自开发的 web 应用 ...
社会工程学攻击
社会工程学攻击是多种多样的,如果用于红队行动中突破边界,那么可以大致有这么3类 1:客户端代码执行。例如带有 Macro 的 doc 文档。 2:窃取凭证。例如在钓鱼邮件里添加链接,指向一个...
脆弱的云服务
脆弱的云服务 如今,云服务也是企业基础设施的一部分,常见的有 AWS,Azure,以及GCP等。本课程不专注于云安全或者云渗透,但是需要注意的是一个企业的云服务能给我们带来额外的攻击路径,例如...
第4章课后作业
练习 1:用 Python 编写对 Raven Medicine PHP 主站点的一键文件上传和代码执行的脚本 2:用 Python 编写对 .Net 应用的一键文件上传和代码执行的脚本 ...
面试专题
章节5:本地侦查以及特权提升
本地侦查思路
在成功的利用之后,我们已经拿到了服务器本地的访问了,根据服务器配置的不同,此时我们可能已经是最高权限了,也可能是低权限用户。我们需要充分利用现有的访问,对本地信息进行详尽的侦查,包括但不局限于网...
重要文件
这一节,我们来讲述需要关注的一些敏感文件。如果我们还不是最高权限,可能无法访问到所有的敏感文件,那么提权势必会有所帮助。主机上的敏感文件除了操作系统自带的 (例如 shadow,SAM数据库等)...
保存的凭证
关于凭证,尤其是 Windows 平台的不同类型的凭证,我们会在稍后章节作讲解。这里指的凭证,更多指的是明文帐号密码,例如存放在文本文件中的明文密码、保存在浏览器里的密码等。 在上一篇,我们讨...
服务提权
服务提权,是 Windows 平台提升权限的经典途径,但实际上服务提权又可以根据利用的根源分为 3种 更具体的不当配置。一些有关服务提权的 CVE 漏洞原理也是来自这 3 个 (如果你发现了某个...
AlwaysInstallElevated提权
如果系统管理员在注册表以及主策略里配置了 AlwaysInstallElevated,意味着任何用户可以在安装 msi 包裹的时候以 SYSTEM 权限执行,这无疑带来了一个提权路径。 ...
SeImpersonatePrivilege提权
如果一个账户被授予 SeImpersonatePrivilege 特权,那么该账户可以模仿任何我们能获得引用或者句柄的令牌。我们可以通过命令whoami /priv 或者 whoami /all...
UAC绕过
我们可能以为,拿到了管理员权限的 shell 已经大功告成了,实际上并不是这样。帐号与帐号之间有权限的差异,而管理员上下文的会话则有完整度(Integrity)的差异。对于管理员用户,默认完整度...
CVE漏洞提权
我们之前讲到的提权方式,主要以利用不当配置为主,在提权过程中也可以利用 CVE 漏洞的 exp 来实现,例如内核漏洞、应用漏洞、服务漏洞等。 WinPEAS,Watson (https://g...
安全控制枚举
如何绕过常见的安全控制不是本章的内容,但是作为进攻方,我们必须知道企业都部署了哪些安全控制措施,知己知彼,做足准备。如今,我们可以使用 SeatBelt、WinPEAS、SharpUp 等工具协...
第5章课后作业
练习 请使用以下凭证访问对应主机,并将这章节所学应用于这些主机 web01: Passw0rdweb01 dev01: Passw0rddev01 web02: Passw0rdwev0...
面试专题
章节6:本地持久化
计划任务
在我们获得初始会话之后,我们需要考虑如何让我们的访问持久化。原因很简单,如果我们是通过利用漏洞进来的,对方可能察觉到痕迹然后修补漏洞,如果是通过泄漏的密码进来的,对方可能修改密码,如果是利用社会...
启动与登陆触发
我们还可以通过登陆操作来触发特定任务。与登陆相关的实现方式有数种,但实现效果是相似的。 Startup 文件夹 每个用户都拥有一个文件夹 C:\Users\[用户名]\AppData\Roa...
服务
考虑到很多服务也是开机启动的,因此服务也可以用来实现持久化。我们可以通过 SharPersist 工具的命令来实现 SharPersist -t service -c "C:\Windows\...
DLL 劫持与代理
当一个程序启动时,诸多 DLL 文件被加载到改程序的进程内存空间中,Windows 按照特定顺序查看系统文件夹来搜索进程所需的 DLL。 DLL 劫持可以实现持久化,如果我们想方设法让一个自启动...
基于 Windows 的其他持久化技术
主机账户 在 Windows 中,主机账户 (中国网友喜爱称为影子账户) 是一种特殊的账户,特点是以 $ 结尾。主机账户也可以享有用户账户的各种权限,甚至提升特权。而主机账户的好处在于使用 n...
Linux 持久化
在之前,我们主要讨论了 Windows 平台的持久化技术,但是在实战中我们也会遇到大量的 Linux 边界主机,我们同样要学会持久化技术。持久化的表现形式可以有本地后门,即可以瞬间实现提权,例如...
第6章课后作业
练习 1:复现使用计划任务实现持久化 2:复现使用启动与登陆事件实现持久化 3:尝试使用 Logon Helper 的方法实现持久化 4:在自己的 VM 中安装一广受使用的桌面应用,例如...
面试专题
章节7:域侦查
历史 CVE 漏洞
在进入域环境后,我们就可以对域进行侦查与枚举了。域是个很庞大的设施,有诸多信息需要我们去提取和枚举,一开始我们可能会觉得有些手足无措,但只要我们梳理好顺序与思路,就不会错过重要的线索。 我一直...
用户与组
用户与组是域的重要组成部分,并且组是用户的容器,在同一个组里的用户具有特定的相同属性。对于用户和组的枚举,自然是我们首先要做的,因为很多漏洞和不当配置的利用都是围绕着用户与组、主机、服务等展开的...
主机
主机是用户、服务的载体,清晰了解每个主机的作用十分重要。在进入域后,我们可以记下主机的 IP、操作系统、FQDN 等信息。 FQDN FQDN 的形式是 主机名与完整域名的接合,是在域内定位...
OU 与 GPO
组织单元,即 OU,可以用来充当具有同样性质的一些对象的容器。例如,同为 SQL 服务器的 SRV01 与 SRV02 可以用 OU SQL_Server 来存放。再比如,一家公司里,职位相同的...
内部服务访问
我们在域内可以访问的其他服务也不可忽视,因为企业的域环境同时也是个内部网络。我们在一般内部网络渗透中会遇到的应用以及对应的攻击手法,在企业的域环境中依旧适用。诸如 FTP,SSH,HTTP(S)...
域信任
域信任决定了域与域之间对彼此的资源访问权限,尤其是当我们已经获得了当前域的域管理员,想移动到其他的域或森林里,利用域信任尤其必要。即便尚未获得当前域的域管理员,我们也可以枚举外部域的信息从而打开...
使用 SharpHound 枚举
在本章的之前几篇,BloodHound 多次被提及到。Bloodhound (https://github.com/BloodHoundAD/BloodHound) 是一款利用图论揭示 Acti...
在 Linux 上的信息搜集
在 Linux 上的信息搜集,这里有两层含义,一是指在Linux域主机上对所在域进行侦查,另一层是指使用 Kali Linux 或其他 Linux 攻击主机对目标域进行侦查。 第二个 Beac...
DACL
DACL 揭露了域内对象与对象之间的权限关系,可以是用户对用户的,用户对主机的,主机对主机的,诸如此类。例如,用户 John 对用户 app_security 具有 GenericWrite 的...
Kerberos 委派
Kerberos 委派是什么,以及怎么利用,也许你们现在会感到有些困惑,这不要紧,因为我们目前只是在枚举阶段,但是我们需要知道 Kerberos 委派对于我们的利用是很关键的,因此对其进行枚举是...
ADCS
ADCS 的利用,是这几年里较新的利用手段。因此,我们也需要对 ADCS 进行枚举。ADCS(Active Directory 证书服务)是 Microsoft 的 PKI 实现,可与现有的 A...
用户会话与令牌
当我们在一台 Windows 域主机上获得了 SYSTEM 权限,我们可以模仿任何在本机登陆的域用户。如果模仿的对象在域内具有其他特权,我们可以利用此来移动到其他主机甚至域。 在 Window...
第7章课后作业
练习 1:查找1-2 个其他近年关于 AD 的 CVE 漏洞,并测试本实验是否存在。 2:我们已经有了 2 个 Beacon 了,因此我们目前对 4 个域具有资源访问权限,请分别枚举这些域的...
面试专题
章节8:Active Directory 的利用
Kerberos认证与利用
Kerberos 深入了解 Kerberos 协议对于 AD 的利用十分重要。Kerberos 是 Active Directory 中一个非常有趣的话题,因为许多利用都是基于 Kerbero...
Kerberos委派的利用
这一小节,我们讨论 Kerberos 委派。委派解决了双跳问题,但是,攻击者也可以利用委派来获得代码执行以及横向移动到其他主机上。 出于教学目的,本小节将采取白盒的形式,即暂时跳过至委派利用之...
MSSQL 的利用
MSSQL Microsoft SQL 服务器在 Active Directory 基础设施中很常见,不仅因为 MSSQL 服务器是 Web 应用程序常见的后端数据库服务器,而且还因为它可以与...
ADCS的利用
在上一个章节,我们已经简单了解过了 ADCS 的概念、作用、以及简单的枚举。在这一节,我们侧重于 ADCS 相关的利用。在我们的 Lab 中,只有 Med-factory 域配置了 ADCS,我...
GPO的利用
在 AD 环境中进行渗透测试时,GPO 对我们来说会是一个具有吸引力的目标。如果我们对 GPO 具有修改权限或更高权限,我们就可以攻陷其他用户并获得远程代码执行或/和横向移动,以及持久化访问。 ...
DACL的利用
随着我们拿下越来越多的用户和主机,我们发现其中一些主体对其他域对象具有特定权限。例如,其中一个用户可以直接重置另一个用户的密码。 如果有意地利用这些权限,我们可以接管更多用户实现域内提权和横向移...
历史漏洞的利用
CVE-2020-1472 ZeroLogon漏洞 因为脆弱的密码学设计,攻击者可以绕过认证并模仿任何域主机,包括域控制器,以实现提权。 Zerologon 的核心问题是 Netlogon ...
第8章课后作业
练习 1:在本章节,出于教学目的,有的内容我们以白盒的视角进行讲解的,即默认我们已经拿下了某主机/用户,如 ADCS 的利用。让我们回归到黑盒视角,即所有的权限和凭证都需要我们从 0 开始获得...
面试专题
章节9:Windows凭证理论
NTLM 认证
在之前的内容中,我们接触到了多种类型的凭证,包括了明文密码、NTLM 哈希、AES 256 密钥、NetNTLM 等。掌握明文密码显然是一项优势,然而,我们不是总能获得明文密码的,更多时候我们会...
SAM 安全账户管理器
安全帐户管理器 (SAM) 数据库以 NTLM 哈希格式存储本地 Windows 凭证。在本地登录期间,用户输入密码后,本地安全机构 (LSA) 通过根据存储在 SAM 中的数据验证凭证来验证登...
LSA 机密
LSA,即 Local Security Authority,本地安全机构,是 Microsoft Windows 操作系统中安全子系统的核心组件。本地安全机构 (LSA) 负责管理系统的交互式...
LSASS 本地安全机构子系统服务
在上个小节讨论 LSA 机密的时候,提及了一下 LSA,即本地安全机构。在 Windows 上,有这么一个进程 lsass.exe,绝对是攻击者的首要攻击目标之一。虽然我们中的一些人知道可以从 ...
PPL
随着凭证导出被攻击者的滥用,微软也开发出了相应的防御措施,例如 PPL。对于 IT 管理员,PPL 非常容易部署,是一个 quick-win。虽然 PPL 是可以被绕过的,但还是给导出凭证的操作...
Credential Guard 凭据保护
Windows Defender Credential Guard 凭据保护 是一种虚拟化安全技术以防止 NTLM 哈希、Kerberos 票据、应用程序所存储的凭证的窃取进而组织。开启了凭据保...
域缓存凭证
当域用户曾经登陆过域主机,便会将凭证缓存下来,以防联系不上域控制器的时候也能实现本地登陆。一个实际的情景可以是,某员工携带着笔记本出差。域缓存凭证不能直接地用于认证,但是可以将其离线破解,尝试还...
DPAPI 数据保护应用接口
DPAPI,即数据保护应用接口,是一个提供加解密数据块的 Windows组件。它使用与指定用户或主机绑定的密码学密钥并且允许原生 Windows 功能以及第三方应用来透明地保护/解除保护给用户的...
GPP 密码
注:本小节作为知识拓展,因为本 Lab 环境版本远高于 GPP 密码盛行的版本,因此尚未集成此内容。 为了阻止针对本地管理员密码的攻击,Windows曾经引入了 组策略偏好 Group Pol...
NTDS.DIT
NTDS.DIT 文件是域控制器上存储 AD 数据的数据库,包含了域内对象的所有信息,例如用户,组,计算机,以及其他对象。更重要的是,该文件还存储域中所有用户的密码哈希,包括域管理员的。该文件位...
Windows 认证理论
我们在之前已经讨论了 NTLM 认证、Kerberos 认证、LSA 与 LSASS、SAM 等概念。在这小节,我们将对 Windows 认证理论做一个整合、归纳以及延伸。 本章节所使用的原理...
哈希传递 Pass The Hash
Pass The Hash,即哈希传递,是一种可以让我们使用 NTLM 哈希对 Windows 服务进行认证,而无需明文密码的技术。在上一个小节,我们讨论了如果只有 NTLM 哈希,要实现用户模...
密钥传递 Overpass The Hash / Pass The Key
Overpass The Hash,又称为 Pass The Key,密钥传递,是 PTH 的一种延伸,我们通常在 NTLM 认证被禁用、只有 Kerberos 认证可用的情况下使用。相比与 P...
票据传递 Pass The Ticket
票据传递技术类似于密钥传递技术,只不过相比使用密钥,用的是票据。在讲解 PTT 之前,我们先来了解一下在 Windows 与 Linux 平台上有关域凭证的文件,它们可以通过工具实现互相转换。 ...
LAPS 本地管理员密码解决方案
为了进一步保护本地管理员的凭证,本地管理员密码解决方案 (LAPS) 是一种用于管理域主机上的本地管理员凭证的解决方案。 本地管理员帐户可以是默认帐户或自定义帐户。部署 LAPS 后,密码是随机...
gMSA 组托管服务账号
注:本小节作为知识拓展,本 Lab 尚未集成此内容。 gMSA,即组托管服务帐号,提供了对分布在多台服务器上的服务帐号的自动化的密码管理、SPN管理、以及委派管理权。使用 gMSA 有助于防御...
第9章课后作业
练习 1:导出任意一主机的 SAM 数据库,分别采用在线和离线方法 2:导出任意一主机的 LSA 机密,分别采用在线和离线方法 3:导出任意一主机 (除了 Srv01) 的 LSASS 内...
面试专题
章节10:代理与跳板
Socks代理
在之前的内容中,我们已经使用了一些代理与跳板的技术,用于访问靶场内部的主机,这是因为除了边界主机 Web01 以及 Web02 外,我们不能直接访问到其他主机。为了推动攻击的流程,我们只是讲了特...
端口转发
端口转发是计算机网络中使用的一种技术,允许外部设备连接到专用网络内的特定设备,这是通过将通信请求从一个 IP 地址和端口号转发到另一个 IP 地址和端口号来实现的。而在跳板 (Pivoting)...
多重跳板
企业网络的边界所在的主机,往往具有多个网络适配器,1 个面向公共网络,至少 1 个面向企业内部网络,因此在我们进入边界之后需要以此主机作为跳板,继而访问内部网络。不过,即便在企业内部也可以有多个...
中毒与中继攻击
NetBIOS 和 LLMNR 中毒理论 NetBIOS-NS (NetBIOS Name Service) 和 LLMNR (Link-Local Multicast Name Raesol...
第10章课后作业
练习 1:在 Shodan 等测绘引擎中搜索未实施认证的 Socks 服务器,有没有能实际为自己所用的呢? 2:如果一台内网主机不连通互联网,利用 Socks、端口转发、C2 特性等方法,如...
面试专题
章节11:横向移动
PsExec
横向移动,即通过对网络中的其他主机实现访问和控制从而扩大我们的占领范围,本质是因为我们已经拿下的资源 (用户、主机等)对其他主机具有特定的权限。在之前的章节,我们通过各种域攻击手法,例如 DAC...
WinRM
WinRM,即 Windows 远程管理,是微软对 WS-MAN 协议的实现,提供了对远程主机的 PowerShell 访问。远程 PowerShell 正是建立在 WinRM 协议之上,使用户...
WMI
WMIC (Windows 管理仪表) 是一项 Windows 管理功能,它为本地和远程访问 Windows 系统组件提供统一的环境。系统管理员可以创建 VBScript 或 PowerShe...
DCOM
根据 Microsoft (https://docs.microsoft.com/en-us/windows/desktop/com/the-component-object-model),组件...
SSH劫持
SSH 是一个可以用于远程访问网络设备的网络协议,广泛运用于 Linux 主机,并且如今 SSH 在 Windows 主机上的使用也越来越广泛。对于我们网络安全人士,直观地概括就是 SSH 会话...
RDP
在 Windows 系统中,远程桌面能提供 GUI 的远程访问,在企业环境里使用极多,对于攻击者而言也是一种天然的横向移动的方式。如果我们已经拥有了受害用户的明文密码,并且受害用户是其他主机的本...
其他应用
还有一些其他常用的应用与协议也可以被攻击者用于横向移动,可以通过安装特定的软件或运行特定的服务器实现。虽然并不是原生的,但在特定的网络环境中具有一定的使用率。 VNC VNC 是一个提供远程...
第11章课后作业
练习 1:根据 PsExec 的原理,手动实现这个过程。提示一下,过程包括了上传服务二进制文件、开启远程服务等。 2:实际上计划任务也可以作为横向移动的方法,研究一下前提条件,以及手动实现这...
面试专题
章节12:DevOps
Ansible
在这章节,我们将简要介绍在 DevOps 中所常涉及的应用以及这些应用可能带来的攻击面。通过对这些 DevOps 中涉及的应用进行利用与攻击,我们可以实现代码执行、横向移动、供应链污染、信息窃取...
攻击供应链
存储库管理软件 在企业环境中,我们常常遇见存储库管理软件,例如 JFog Artifactory, Nexus Sonatype 等。这些软件存储了企业内在用的软件包、项目文件、二进制文件等。...
第12章课后作业
练习 1:了解一下 DevOps 简介中所提及到的这些软件。 2:复现针对 Ansible 的这些枚举与攻击方法。 3:查看网络安全方面的新闻,了解一下近几年的一些大规模供应链污染事件。
面试专题
1. 谈一谈 Ansible 与 Terraform 的异同 2. DevOps 对于攻击者/红队,可以有什么样的使用场景呢? 3. 在使用供应链污染攻击的时候,有哪些因素与事情需要我...
章节13:支配域与森林
DCSync
DCSync 是一项通过 MS-DRSR 协议复制 AD信息以及哈希的技术。DCSync 权限意味着持有对象对域具有 DS-Replication-Get-Changes,Replicating...
黄金票据
此时,我们已经拿到了域管理员的身份,并且可以随意地查询到任何用户的凭证,那么怎么进行之后的利用呢? 黄金票据 回顾一下 Kerberos 的认证流程,当用户申请 TGT 的时候,DC使用 k...
钻石票据
类似于黄金票据,钻石票是一种 TGT,可以以任何用户身份来访问任何服务。黄金票据是完全离线伪造的,用该域的 krbtgt 哈希加密,然后传递到登录会话中以供使用。因为域控制器不追踪它发布的有效 ...
跨域理论
当我们最终接管了当前域,接下来要做的便是占领更多的域,主要通过利用域信任以及其他的不当配置来实现。在那之前,我们需要熟悉一些跨域理论相关的名词,因为跨域理论较为复杂,涉及到的理论知识比较多。 ...
双向信任
有了上一小节的理论基础,我们来利用双向信任实现域间的移动。因为双向信任既可以发生于森林之内,也可以发生于森林之间,因此我们分别讨论。 森林之内 森林之内的横向移动是最简单的情形,因为信任...
入口信任
入口信任,即目标域信任当前域,当前域可以访问目标域中的资源。要想从当前域移动到信任我们的目标域,我们有以下步骤需要完成: 寻找外部组/成员。 既然我们可以访问目标域中的资源,自然可以使用 P...
出口信任
相比于入口信任与双向信任,出口信任的利用途径则少了许多,因为我们无法直接对目标域进行枚举和访问。如图所示,white-bird 域信任 med-deal 域,因此在 white-bird 域里,...
AdminSDHolder
当我们支配了整个域甚至森林之后,我们想要在域内维持高特权。我们可以通过多种技术实现域内访问持久化,有些技术在之前内容已经涉及过了,例如对高特权的主机 (例如配置非约束委派的) 实现本地持久化、对...
万能钥匙
万能钥匙 (Skeleton key) 是一种持久化技术,只适用于域控制器,通过补丁域控制器上的 Lsass.exe 进程以劫持 NTLM 和 Kerberos 认证流程,以允许任何用户以一个相...
恶意认证包
在之前的内容里,我们知道 AP/SSP 通过分析登陆数据来认证 Windows 用户,不同的 AP/SSP 对多种登陆过程以及认证协议提供支持。AP/SSP 以 DLL 形式存在,被 LSA 所...
黄金证书攻击
背景 在具有 ADCS 的环境里,CA 的私钥在 CA 服务器上受到 DPAPI 或硬件解决方案 (HSM/TPM) 的保护。 此外,证书被发布在 NTAuthCertificates 森林对...
第13章课后作业
练习 1:回顾一下,从黑盒的角度,我们是怎么一步步利用并最终攻陷 back_operator 用户的? 2:尝试制作其他服务的白银票据,并验证是否得到了对应的访问 3:用 Mimikatz...
面试专题
章节14:恶意软件开发基础
Windows 架构、API 与编程调用
从这个章节起,我们将学习一些有关编程与二进制的技能,为下个章节的恶意软件以及安全工具开发奠定基础。学习恶意软件开发的原因有多种,从进攻型安全的角度来看,我们通常需要针对客户的环境执行某些恶意任务...
PE 文件
可移植可执行 (PE) 文件格式与 Windows 操作系统上能实现代码执行的文件类型所使用,常见的拓展名有 exe、dll、sys 等。PE 格式描述了文件必须遵循的标准结构,以便定位其内容并...
动态链接库文件
DLL 文件 对于 Windows 操作系统,EXE 与 DLL 虽然同为 PE 文件,但是这 2 种文件类型依旧有着诸多的不同。DLL 是可执行函数或数据的共享库,可供多个应用程序同时使用。...
进程与线程
在恶意软件开发领域,诸多代码注入、防御规避技术是围绕着进程与线程展开的,因此我们首先需要理解进程与线程的相关概念。 进程与线程 Windows 进程是指当前运行在 Windows 主机上的程...
x64架构汇编
掌握汇编语言对于恶意软件开发有着很大的作用,例如可以编写自定义 Shellcode、在木马加载器中插入汇编代码以实现混淆以及底层的指令操作等。 基本概念 汇编语言是我们可以用来为给定 C...
使用 WinDBG 调试
在这小节,我们将学习调试程序的技能,这对于恶意软件开发领域有这些帮助:理解当下的恶意软件的技术、功能、原理,分析恶意软件并且改进,开发漏洞利用以及 Shellcode,理解安全产品的原理以规避检...
Shellcode 编写 - 1
背景 一般来说,如果我们需要执行 Shellcode,会通过各自的 C2 或者 msfvenom 来生成,但因为这些工具大部分都是开源的,即便是商业工具,也会因为样本的提交导致 Shellco...
Shellcode 编写 - 2
调用 API 为了能实现反向 Shell,我们需要 3 个来自 ws2_32.dll 中的 函数,分别是 WSAStartup,WSASocketA,和 WSAConnect。以及来自 ker...
第14章课后作业
练习 1:分析 OpenProcess 的调用链 2:使用 C++ 调用 CreateProcess API,运行 calc.exe 程序 3:使用 P/Invoke 通过序数调用 Ope...
面试专题
章节15:安全控制突破与防御规避
应用程序白名单
无论是试图获得初始 Beacon 会话,还是对目标用户与主机进行后渗透操作,应用程序白名单作为一项安全控制机制,会阻止我们的行动。接下来,我们来探讨 AppLocker 的概念,与其绕过技术。 ...
约束语言模式
背景 约束语言模式,即 CLM,是 AppLocker 中的一种,如果我们对脚本类型文件启用了 AppLocker 规则,那么在运行 PowerShell 的时候便是约束语言模式。当 CLM ...
杀毒软件与EDR原理
背景 如今,渗透测试人员和红队操作员在红队行动中面临着重大挑战,因为杀毒软件和 EDR (终端检测与响应) 等安全产品会阻止许多载荷与工具的执行。在本章节中,我们将讨论攻击者用来规避检测的一些...
反病毒扫描接口
在 Windows 主机上,我们可以通过执行 exe 文件、加载恶意 dll 等行为获得 Beacon 会话,此外,还可以通过一些脚本语言达到相同目的,例如使用 PowerShell IEX 命...
Windows事件追踪
Windows 事件追踪器 (ETW) 提供了一种追踪和记录用户模式应用程序和内核模式驱动程序引发的事件的机制。ETW 最初是为了调试和性能监控目的而引入的,但现在它可以用于检视 IoC,例如内...
父进程欺骗
父进程欺骗是一种允许攻击者使用任意父进程启动程序的技术,这有助于使攻击者的程序看起来是由另一个进程生成的,有助于规避基于父子进程关系的检测,尤其是当我们的 Beacon 在非常规的进程下运行,进...
代码注入与进程操纵
代码注入是一项恶意软件的常见技术,将恶意代码,如 shellcode,乃至 PE 文件,输入到目标进程,实现提高稳定性以及寄居在看起来良性的进程之中以规避检测。 代码注入的方法有很多,有着各自...
反射式加载与膨胀式加载
CobaltStrike 的 Beacon,实际上是一个 DLL。Shellcode 形式的 Beacon,是补丁后的 DLL 文件。通过巧妙的补丁,Beacon 可以实现像 Shellcode...
用户态Hooking介绍
Hook,即钩子,在网络安全用语中,指的是拦截并且修改特定的 API 执行流程,通常用于 Debugging,逆向工程,游戏作弊,检测恶意软件行为。API Hook 将原有的 API 替换为自定...
绕过用户态Hooking
在上个小节,我们讨论了 EDR 在用户态设置 Hook 的原理,那么相应地,我们可以根据这原理寻找间隙,实现对用户态 Hook 的绕过。截至目前,已经有多种方法绕过 Hook。不过,Hook 并...
调用syscall实现用户态Hook绕过
在上个小节,我们主要是通过对 ntdll 模块进行覆盖或者补丁来移除 hook 实现用户态 hook 的绕过。但是这些方法涉及到对 ntdll 的纂改,以及对内存权限的修改,具有一定的风险。实际...
搭建 EDR 测试环境
有效的 EDR 测试环境对于我们检验自己所写载荷的规避性能十分重要。可惜的是,EDR 几乎都不对个人用户开放,而且通常都有着最低设备数量要求,价格也不菲。除了在公司里申请一个配置了 EDR 的测...