0.前言:

知识点多,自己写了很久,可以说是从两年前做培训一直写到现在,干货很多,分篇来分享给大家

1.Red Teaming

红队概述

红队是使用战术、技术和过程(TTP)来模拟现实世界attack的过程,其目标是训练和衡量用于保护系统环境的人员、过处理流程和技术的有效性。换句话说,红队是使用真实attack技术来模拟攻击的过程,目的是培训蓝队和/或测量整个安全操作。

红队可以深入了解自动攻击行为者对目标的影响。使用反金字塔图,我们可以说明红队,attack测试和安全评估之间的关系。这将有助于进一步定义Red Teaming IS和IS NOT。

web安全攻防-Red Teaming技术栈(一)_服务器

红队网络安全技术栈

“Web安全技术栈”的流程是从目标出发,通过一系列步骤最终实现成果。整个流程的核心是安全漏洞,包括二进制/应用程序逆向工程,Web分析,以及漏洞发现和利用。其步骤包括网络预配置,网络接入,权限提升,权限维持,以及后渗透。图中还强调了多种技术,包括社会工程学,代理技术,域渗透,反追踪,行业网络,以及安全开发。 这幅图强调了理解Web技术栈以及不同安全漏洞之间关系的重要性。

具体来说,从目标出发,首先要进行网络预置,然后通过社会工程学、代理技术等方法进行网络接入,之后通过权限提升技术获取权限,并通过代理技术、域渗透、反溯源等手段维持权限。最终,通过行业网络等手段进行后渗透,最终实现目标。

整个过程中,涉及多种安全漏洞的利用,包括二进制/应用程序逆向工程、Web分析以及漏洞发现和利用。 这些安全漏洞的发现和利用都需要对Web技术栈有深入的了解,才能找到安全漏洞,并利用poc进行攻击。

展示了Web安全技术栈的流程,强调了理解Web技术栈以及不同安全漏洞之间关系的重要性。

web安全攻防-Red Teaming技术栈(一)_服务器_02

攻防知识点(重要)

1.1 Active Directory

Windows域也叫活动目录(Active Directory),是微软开发的应用于Windows域环境的目录服务(AD DS - Active Directory Domain Services),中央集权式管理域内所有资源,包括域内的用户、用户组、计算机、共享目录、打印机、策略等。

域(Domain)是相对工作组(Workgroup)的概念,通过 Kerberos 或者 NTLM 认证实现了企业级的单点登录,方便用户访问企业内部资源,包括打印机、文件共享服务、Web应用等。

域内的一切资源皆对象,总体上可分为两种类型,一种是容器型对象,比如用户组,可以包含其它对象,另外一种是叶子型对象,其无法包含其它对象,比如某个用户、某台计算机。通过ACLs(Access Control Lists)可对域内对象进行访问控制。

1.2 DNS & LDAP & Kerberos

活动目录域服务(此后简称AD)三大基础协议

web安全攻防-Red Teaming技术栈(一)_服务器_03

1.2.1 Active Direcotry & DNS

AD要正常工作,就需要通过DNS(Domain Name System)来解析主机名与IP地址的对应关系,或者定位某些服务,比如客户端可以通过DNS的SRV记录获取主域控服务器的地址(dig -t SRV _ldap._tcp.pdc._msdcs.domain.com)

要通过Kerberos认证访问域内某个服务,需要知道运行该服务的主机域名,也就是FQDN(fully qualified domain name),如果仅指定目标服务的IP地址进行访问,则会转为NTLM认证。

dir \\pdc.domain.com\c$ -- Kerberos认证

dir \\10.10.10.10\c$ -- NTLM认证

1.2.2 Active Directory & LDAP

AD是微软实现的目录服务(Directory Service),通过LDAP(Lightweight Directory Access Protocol)协议对域内对象进行读写操作。这种关系就像是WEB服务需要通过HTTP协议访问一样。

AD是一个命名空间,通过对象名称可以找到与这个对象有关的所有信息。

1.2.3 Kerberos Overview

Kerberos是MIT制定的一种网络认证协议,其名字来源于希腊神话中一只三个头的地狱看门犬(Cerberus),也被叫作“hound of Hades”,守护着地狱的大门,防止死者逃离。而Kerberos协议也是由三个角色组成,即客户端、目标资源服务、第三方可信机构KDC(Key Distribution Center)。

Kerberos协议设计的初衷的是在不安全的网络环境下,基于加密实现安全高效的认证,避免中间人攻击(比如密码泄露或重放攻击)。Kerberos协议通过可信的第三方(域控)实现了用户对目标服务(资源)访问权限的认证。域控服务器存储了域内所有用户(user and computer account)的密码信息,目标服务本身不需要存储或访问用户的密码信息,通过可信第三方即可对用户的身份进行认证,相对传统的NTLM认证更安全,并且高效。

微软对Kerberos做了一些功能扩展,比如PAC、S4U子协议(后文会有详细介绍)。

以下三张图描述了Kerberos认证的基本流程,大体上分六个步骤(三个来回):

  • 域用户登录时,向KDC(域控)的AS(Authentication Service)服务发送一段用自身密码(变种)加密的时间戳,证明其知道该用户的密码,这一步称为"预认证"(preauthentication)。
  • 域控的AS服务验证用户的密码是否正确(域控存储了域内所有用户的密码信息),验证通过后返回给用户一个TGT票据(Ticket Granting Ticket),也叫“登录票据”(Login Ticket),该票据经过域控的krbtgt帐号密码加密,也就是说除了域控,理论上没有人能解密该票据里面的数据,更无法伪造。该票据作为用户的凭证,内部包含了该用户的用户名、用户ID、所属组ID等信息(这些信息统称为PAC-Privilege Attribute Certificate,后面会有PAC的详细介绍),之后用户申请其它服务的资源访问票据(Resource Access Ticket)时,需要再次提供该TGT给域控,向域控表明身份,而无需再次重复上一步的预认证过程。域控收到用户提交的TGT,如果能通过krbtgt帐户的密码正常解密,则认为TGT票据内的所有数据都是有效可信的。
  • 用户此时希望访问某共享目录服务,需要向域控的票据授予服务(TGS-Ticket Granting Service)申请目标服务的资源访问票据(Resource Access Ticket)。将第二步中域控返回的TGT提交给票据授予服务,并指明希望申请某主机(fileserver.domain.com)的文件共享服务(CIFS-Common Internet File System)票据。前面提到过,TGT是用户的身份凭证,由KDC颁发,只有域控自身可解密,无人可伪造。
  • TGS服务返回给用户对应目标服务的服务票据(Service Ticket),也叫资源访问票据(Resource Access Ticket),该票据是由运行目标服务的服务帐号(通常为计算机帐户)密码加密的,只有域控及目标服务自身知道该密码,所以用户同样无法解密或伪造该票据。
  • 用户将上一步收到的资源访问票据发送给目标服务(这里是CIFS/fileserver.domain.com)。
  • 目标服务收到该票据,用运行该服务的帐户密码解密该票据,验证该用户的身份及权限,决定认证成功或失败。

web安全攻防-Red Teaming技术栈(一)_搜索_04

web安全攻防-Red Teaming技术栈(一)_Web_05

web安全攻防-Red Teaming技术栈(一)_服务器_06

1.3 TGT & TGS

可以看出,前四步是Kerberos认证的关键步骤,用户申请了TGT票据(Ticket Granting Ticket),其由域控的认证服务(Authentication Service)生成并发送给客户端,可以理解为现实世界中的身份证,以及访问目标服务所需要的服务票据(Service Ticket),其由域控TGS(Ticket Granting Server)服务颁发,可以理解为身份证复印件,其指明该复印件仅对特定服务有效,比如该复印件仅作为某网站实名认证用,不可用于其它业务。

TGT票据也叫登录票据(Logon Ticket),服务票据也叫资源访问票据(Resource Access Ticket)或者ST(Service Ticket),有时也直接称其为TGS。

票据都是跟指定服务绑定的,TGT票据由域控的AS服务颁发,仅对域控的TGS服务有效。服务票据(Service Ticket)由域控的TGS服务颁发,一般仅对其要访问的目标资源服务有效。TGT与TGS的本质区别,也许只在于票据目标服务名不一样。maybe

另外TGT可以理解为一种特殊的服务票据,其由域控的认证服务(Authentication Service)生成并发送给客户端,由krbtgt帐户加密(票据都是由目标服务帐户密码加密的),仅能提供给域控的票据授予服务(Ticket Granting Server)作表明身份用,并不能直接用来访问其它服务(比如CIFS、MSSQLSvc等)。

票据都分为两部分,即明文及密文部分,明文部分指明该票据是针对哪个服务的(比如krbtgt帐户运行的TGS服务、某计算机帐户运行的HTTP服务)。密文部分包含票据有效期、PAC(Privilege Attribute Certiificate)等。其中明文部分sname(Service Name)不受加密保护,在特定场景下,攻击者可以任意替换服务票据(ST)中明文部分的服务名(Service Name),只要修改过的服务名与ST中原始的服务是由同一帐户运行的,修改过的ST依然是有效的。也就是说同一个帐户运行了多个服务实例,访问这些服务理论上只需要一个有效的ST即可。

1.4 Kerberos & PAC

由于原生Kerberos协议仅对用户身份有效性进行验证(即证明该用户确是其声称的用户),目标服务无从判断用户对自身服务具有哪些访问权限,所以微软对Kerberos做了扩展,在票据中增加了PAC(Privilege Attribute Certiificate)数据块,如下图所示,包含了该用户的用户名、用户ID、所属用户组ID等信息,为了确保这些敏感信息不被非法篡改,分别用域控krbtgt帐户密码及目标服务帐户密码对其进行签名(TGT票据比较特殊,目标服务帐户即为krbtgt帐户),分别给TGS服务及目标服务用来验证PAC信息的完整性,默认该签名算法是需要密钥的,比如下图中的hmac-md5、hmac-sha1。

也许正因为PAC是微软对Kerberos做的扩展,所以用户在认证的第一步,即发起预认证请求(AS-REQ)时,设置PA-PAC-REQUEST=False,认证服务会生成一个不包含PAC的有效TGT,后面介绍的MS14-068(GoldenPAC)漏洞会利用这一特性。

web安全攻防-Red Teaming技术栈(一)_服务器_07

TGT票据中的加密部分包含了PAC

1.5 Kerberos & SPN

域用户和计算机帐户包含各种属性,比如名字、描述等,其中一个属性叫服务主体名(Service Principal Name),是提供服务所必须的一条属性。服务主体名(后称为SPN)在一个林(forest,林内可包含多个域)内必须是唯一的,不然Kerberos认证会失败。

SPN是由服务实例注册的林内唯一标识符,客户端想要访问某个服务,必须指定该服务实例的SPN。

SPN有两种类型:

一种是基于主机的,计算机帐户创建时,内置服务会自动创建该种类型的SPN,部分代表服务类型,常见的有HOST、LDAP、CIFS等,部分代表运行该服务所在的主机名,[port]及[service name]部分为可选部分,用于区分运行在同一主机同一服务的多个实例。

  • /:[port]/[service name] -- host-based SPN,比如 MSSQLSvc/server1.domain.com:1433

另外一种则是任意的,通常情况下,以域用户身份运行的服务采用此类SPN,其中服务类型和服务名可任意指定。

  • / -- Arbitrary SPN,比如 AcmeService/GlobalBank

1.6 Kerberos Delegation

Delegation(委派)是Kerberos相对传统的NTLM认证所独有的特性,当用户向某服务发起认证后,该服务可以代理/假冒(impersonate)该用户,以其身份访问其它服务,比如下图中用户访问Web服务,Web服务以用户的身份向域控申请数据库服务的访问权限(第6步)。也就是说该Web服务具有被用户委派的权限,或者说该Web服务可以代理(“假冒”)用户在域内进行认证。

2.构建网络隐蔽基础设施

在设计一个需要经得起积极响应或持续长期参与(数周、数月、数年)的红队基础设施时,根据功能将每个资产分开非常重要。当活动资产开始被检测到时,这提供了针对蓝队的弹性和敏捷性。例如,如果识别出评估的网络钓鱼电子邮件,则红队只需要创建新的SMTP服务器和有效负载托管服务器,而无需创建整个团队的服务器设置。

请考虑在不同的资产上隔离这些函数:

  • 网络钓鱼 SMTP
  • 网络钓鱼有效负载
  • 长期指挥和控制 (C2)
  • 短期 C2

web安全攻防-Red Teaming技术栈(一)_搜索_08

每个社会工程活动都可能需要这些功能中的每一个。由于主动事件响应是红队评估中的典型特征,因此应为每个活动实施一套新的基础设施。

使用重定向器

为了进一步提高弹性和隐蔽性,每个后端资产(即团队服务器)都应该在其前面放置一个重定向器。目标是在我们的目标服务器和后端服务器之间始终有一个主机。以这种方式设置基础设施可以更快、更轻松地滚动新的基础设施 - 无需建立新的团队服务器、迁移会话以及重新连接后端未销毁的资产。

常见的重定向器类型:

  • SMTP的
  • 负载
  • 网络流量
  • C2(HTTP(S)、DNS等)

每种重定向器类型都有多个最适合不同方案的实现选项。这些选项在 wiki 的重定向器部分有更详细的讨论。重定向器可以是 VPS 主机、专用服务器,甚至可以是在平台即服务实例上运行的应用程序。

测试周期 - 在设计基础结构时,请牢记测试长度。一个月的测试与为期一年的评估有很大不同。例如,为期一个月的测试可能仅利用部署到少数服务器的一种持久性机制,而长期评估可能需要分布在数十台主机上的多种持久性机制。在将基础结构实施到基础结构中之前,应对基础结构基元进行压力测试。测试延迟、负载下的性能、可能的网络检测和设置难度。只需要一次意外地向 DNS Beacon 分配一个返回大量输出的命令,就可以理解为什么测试和了解您的工具很重要.

记录 - 您的attack基础设施的每一部分都应该被彻底记录下来。至少应记录每个资产的主机名、IP、正在使用的协议、目的地、通信/可塑 C2 配置文件和提供商。从本质上讲,您或您的客户可能想知道的有关攻击基础设施的任何信息都应该记录在服务器本身之外。虽然文档的维护很无聊,但当需要即时修改或在评估完成后出现问题时,即使是简单的设置的复杂性也可能导致重大问题。

C2型

长途与短途 - 长途和短途 C2 服务器在上面的“常规”部分进行了简要介绍;但是长途服务器只能用于重新获得对环境的访问权。服务器应接收来自持久性的回调,并非常缓慢地接收签入,例如每 12 小时签入一次。短程服务器是用于所有主要操作的服务器。这些服务器将经常被烧毁,并且需要最多的滚动。服务器应该比长途服务器更频繁地签到,但大多数时候不是交互式的。请考虑在目标环境的不同段中使用不同的短途服务器,这些服务器具有更多的安全控制措施。

服务器数量 - 需要的后端 C2 服务器数量很大程度上取决于评估的长度以及您期望从蓝队获得多少响应。较长的评估通常需要额外的长途服务器,并且可能需要额外的短程服务器同时上线。在评估的初始访问阶段,可能需要设置额外的短途服务器,以便能够快速滚动烧毁的基础设施并继续网络钓鱼。

  • 使用的 C2 协议可能是设计基础设施的 C2 策略的最重要方面。最常见的 C2 协议是 HTTP(S)、DNS、域前置和流行的第三方服务的 C2。每种协议都有其自身的优点和缺点,其相关的检测功能通常不同。通过执行各种操作、延迟和压力测试来测试计划用于评估的 C2 协议(使用重定向器)至关重要。测试应包括运行常见的开发后操作和执行一些上传/下载。

web安全攻防-Red Teaming技术栈(一)_服务器_09

3.红队自动化信息打点

信息打点(Information Gathering),也称为信息收集,是网络攻防中非常重要的一步,其目的是通过收集和分析目标系统的各种信息,为后续攻击或防御行动提供基础和依据。信息打点可以分为 passively 和 actively 两种方式进行。

1.Goby+AVWS+FOFA+Xray 全自动化测绘+收集+扫描

Goby是一款基于网络空间测绘技术,它通过给目标网络建立完整的资产知识库,进行网络安全事件应急与漏洞应急。

Goby可提供最全面的资产识别,目前预置了超过10万种规则识别引擎,能够针对硬件设备和软件业务系统进行自动化识别和分类,全面的分析出网络中存在的业务系统。Goby可提供最快速对目标影响最小的扫描体验,通过非常轻量级地发包能够快速的分析出端口对应的协议信息。Goby也为安全带来了高效,Goby预置了最具攻击效果的漏洞引擎,覆盖Weblogic,Tomcat等最严重漏洞。并且每日更新会被用于真实攻击的漏洞。

通过Goby扩展FOFA(key),Xray,AVWS,来实现一体化的网络测绘,资产收集,脆弱性评估,漏洞扫描,漏洞利用的全过程。

goby配置使用

解压打开即可

web安全攻防-Red Teaming技术栈(一)_Web_10

请先前往goby插件市场安装 debug 插件,之后将其解压到goby/extensions目录下,然后启动goby。

Xray 和FOFA搜索引擎

web安全攻防-Red Teaming技术栈(一)_服务器_11

安装SSL证书

.\xray_windows_amd64.exe genca

Xray语法

./xray_darwin_arm64 webscan --url http://example.com/  --html-output single-url.html
./xray_darwin_arm64  webscan --listen 127.0.0.1:7778 --html-output xray-testphp1.html 
说明:Xray监听本地的7778端口,结果通过html格式输出
./xray_darwin_arm64  webscan --plugins xss --url http://example.com --html-output plugins.html 插件联动扫描
Xray爬虫模式
xray_windows_amd64.exe webscan --basic-crawler http://testphp.vulnweb.com/
xray代理

web安全攻防-Red Teaming技术栈(一)_Web_12

参数--listen ip:端口 参数-- html-output xx.html 开始监听,然后输入你要监听的网址就行了

xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output qidao.html

收集了一些FOFA基础语法和高级语法,以供大家学习:

fofa基础语法

title="beijing"

从标题中搜索“北京”

-

header="jboss"

从http头中搜索“jboss”

-

body="Hacked by"

从html正文中搜索abc

-

domain="qq.com"

搜索根域名带有qq.com的网站。

-

icon_hash="-247388890"

搜索使用此icon的资产。

仅限高级会员使用

host=".gov.cn"

从url中搜索”.gov.cn”

搜索要用host作为名称

port="443"

查找对应“443”端口的资产

-

ip="1.1.1.1"

从ip中搜索包含“1.1.1.1”的网站

搜索要用ip作为名称

ip="220.181.111.1/24"

查询IP为“220.181.111.1”的C网段资产

-

status_code="402"

查询服务器状态为“402”的资产

-

protocol="https"

查询https协议资产

搜索指定协议类型(在开启端口扫描的情况下有效)

city="Hangzhou"

搜索指定城市的资产。

-

region="Zhejiang"

搜索指定行政区的资产。

-

country="CN"

搜索指定国家(编码)的资产。

-

cert="google"

搜索证书(https或者imaps等)中带有google的资产。

-

banner=users && protocol=ftp

搜索FTP协议中带有users文本的资产。

-

type=service

搜索所有协议资产,支持subdomain和service两种。

搜索所有协议资产

高级语法

可以使用括号&&||!=等符号,如

title="powered by" && title!=discuz 

title="powered by" && title!=discuz

 ( body="content="WordPress" || (header="X-Pingback" && header="/xmlrpc.php" && body="/wp-includes/")

2.*POC-bomber* 快速打点+POC检测 

web安全攻防-Red Teaming技术栈(一)_Web_13

POC bomber是一款漏洞检测工具,旨在利用大量高危害漏洞的POC/EXP快速获取目标服务器权限

本项目收集互联网各种危害性大的 RCE · 任意文件上传 · sqlinjection 等高危害且能够获取到服务器核心权限的漏洞POC/EXP,并集成在POC bomber武器库中,利用大量高危害POC对单个或多个目标进行模糊测试,以此快速获取目标服务器权限,适合在红蓝对抗或hvv中帮助红队快速找到突破口进入内网

POC bomber默认使用验证模式进行poc的验证,如果在返回结果中看到attack的值为True,可以加参数(--attack)进入攻击模式直接调用exp进行攻击(需要指定poc文件名),达到一键getshell

web安全攻防-Red Teaming技术栈(一)_Web_14

*搭建 Linux*

git clone https://github.com/tr0uble-mAker/POC-bomber.git

cd POC-bomber

pip install -r requirements.txt

*使用方法*

验证模式 用poc去验证资产是否存在漏洞

python3 pocbomber.py -u http://xxx.xxx

attack模式

需要指定一个poc才能调用--attack攻击模式

python3 pocbomber.py -u http://xxx.xxx --poc="thinkphp2_rce.py" --attack

web安全攻防-Red Teaming技术栈(一)_服务器_15

3.*灯塔 资产侦察灯塔系统ARL*

*资产侦察灯塔系统简介*

ARL(Asset Reconnaissance Lighthouse)资产侦察灯塔系统旨在快速侦察与目标关联的互联网资产,构建基础资产信息库。协助甲方安全团队或者渗透测试人员有效侦察和检索资产,以攻击者视角持续探测资产风险,协助用户时刻洞察资产动态,掌握安全防护薄弱点,快速收敛攻击面。

*搭建需要使用docker*

*mkdir docker_arl\****

***\*wget -O docker_arl/docker.zip\**** [***\*https://github.com/TophantTechnology/ARL/releases/download/v2.5.5/docker.zip\*

](https://github.com/TophantTechnology/ARL/releases/download/v2.5.5/docker.zip)

web安全攻防-Red Teaming技术栈(一)_搜索_16

*cd docker_arl\****

***\*unzip -o docker.zip\****

***\*docker-compose pull\****

***\*docker volume create arl_db\****

***\*docker-compose up -d\*

*使用教程*

默认端口5003 (https), 默认用户名密码admin/arlpass

资产侦查任务,支持对目标IP、IP段和域名,对资产进行端口识别、服务识别、系统识别等。

web安全攻防-Red Teaming技术栈(一)_服务器_17

添加监控任务任务下发

通过资产分组总的添加监控任务之后,资产监控中将会展示正在运行的监控任务,运行的次数,运行间隔等信息,用户也可以通过资产组范围ID来检索监控范围内的相关资产内容。

4.EHole(棱洞)3.0 红队重点攻击系统指纹探测工具*

EHole是一款对资产中重点系统指纹识别的工具,在红队作战中,信息收集是必不可少的环节,如何才能从大量的资产中提取有用的系统(如OA、vpn、Weblogic…)。

EHole旨在帮助红队人员在信息收集期间能够快速从C段、大量杂乱的资产中精准定位到易被攻击的系统,从而实施进一步攻击。


配置https://github.com/EdgeSecurityTeam/EHole/releases

下载后解压

unzip Ehole3.0-linux.zip -d EHole

进入目录

web安全攻防-Red Teaming技术栈(一)_服务器_18

执行命令

./Ehole3.0-linux -h

使用本地识别:

web安全攻防-Red Teaming技术栈(一)_Web_19

Ehole3.0-Win.exe -l url.txt  

Ehole3.0-Win.exe -f ip 

Ehole3.0-Win.exe -f ip段

结果输出

Ehole3.0-Win.exe -l url.txt -json export.json

配置:配置go环境

web安全攻防-Red Teaming技术栈(一)_服务器_20

使用默认配置的话,下载速度过慢,导致无法完成编译。故需要配置代理。

在cmd命令行中输入代码

go env -w GOSUMDB=off 

go env -w GOPROXY=https://goproxy.cn,direct

进入fscan所在目录打开cmd,然后就可以再fscan目录下看到exe程序

go build -ldflags="-s -w " -trimpath