红队视角下的公有云基础组件安全(二)

news2024/11/17 22:46:01

前言

我们已经发过一篇红队视角下的公有云基础组件安全的文章,这篇是对上一篇内容的补充,主要为国外公有云如AWS、Google Cloud、Azure。

本文主要从红队视角讲述公有云基本服务中一些因配置问题产生的安全风险。

目录

● 云存储

● 云计算

● 云网络

● 其他

云存储

Azure Storage

Azure Storage 是微软云出品的文件存储功能,他有一个重要的概念,那就是储存账户。

首先我们需要明确一下Azure Storage的一个重要概念。

储存账户(Azure Storage Account) :Azure 存储帐户包含所有 Azure 存储数据对象,其中包括 Blob、文件共享、队列、表和磁盘。存储帐户为 Azure 存储数据提供一个唯一的命名空间,可通过 HTTP 或 HTTPS 从世界上的任何位置访问该数据。

可以这样去理解,所有的储存服务,都是在一个储存账户下的。

按照储存账户的结构分为以下几部分,分别是 Containers 、 File Share 、Queues、 Tables、VM Disk,储存账户提供以下三种鉴权办法:

1. Access Keys(AK)

2. Azure Active Directory(AAD)

3. Share access signature(SAS)

当账户开启 Allow storage account key access的时候,储存账户开放外部访问。

观察一下各个部分的鉴权,可以发现容器、队列以及表使用AAD与SAS进行鉴权,而文件共享是采用AK与AAD进行鉴权,并且AK对是完全继承于储存账户的。

图片

图片

当我们拿着AK去Azure专门的文件浏览器当中进行登陆,我们能获得的不止是单一的共享文件夹,而是接管了整个储存账户。

图片

图片

当我们在一台利用Azure AK脚本挂载过文件共享账户的Windows机器上利用mimikatz进行内存密码抓取时,可以发现账户的明文AK是储存在内存当中的,这也导致如果利用AK挂载过文件共享的机器一旦失陷,你的整个存储账户都会处于风险当中。

图片

由于Azure对于文件共享并没有细小的权限划分,所以使用文件共享需要多加谨慎,经过测试,在使用AAD进行鉴权的时候,由于全程无明文密码输入,内存当中不会存在相关痕迹,在机器失陷的恶劣情况下,会尽可能的保护存储账户。

Azure Storage的AK是存在过期时间的,不要设置成永久不过期;注意开发安全,关于带有文件共享AK的代码不要上传互联网,并且注意项目公开权限;云上的机器尽可能的采用AAD认证,由于本地机器是无法加入AAD的,建议本地机器不要使用文件共享功能。

Amazon S3

静态网站导致子域名接管

aws的s3官方提供了托管静态网站的功能,虽然国内的云厂商的存储也可以拿来托管静态网站,但是和aws的还是有区别的,因为aws存在可以通过注册接管对方的子域名的可能。

图片

通过在存储桶的界面属性中可以开启对应的静态网站功能。

图片

成功开启后aws会分配一个存储桶的网站终端节点。

图片

如果存在之前托管的静态网站的存储桶已经删除,但是自定义域名的解析还没有及时处理的话,当访问目标子域名会显示存储桶不存在的提示NoSuchBucket,我们就可以通过注册唯一桶名为该子域名的名称注册一个桶接管。

图片

特定策略泄漏

s3针对一些访问的特殊需要等等可以通过设置存储桶策略达到通过某特定的请求头等达到针对性访问的效果。

图片

如下官网示范的通过请求中具有x-amz-full-control标头,授予存储桶拥有者完全控制权限。

图片

还有通过一些范围的条件键达到访问控制的效果,如下图中的ip为范围内的通过验证即可以访问,除非188的ip:


{
 "Version": "2012-10-17",
 "Id": "S3PolicyId1",
 "Statement": [
   {
     "Sid": "statement1",
     "Effect": "Allow",
     "Principal": "*",
     "Action":"s3:GetObject",
     "Resource": "arn:aws:s3:::awsexamplebucket1/*",
     "Condition" : {
       "IpAddress" : {
         "aws:SourceIp": "192.0.2.0/24"
       },
       "NotIpAddress" : {
         "aws:SourceIp": "192.0.2.188/32"
       }
     }
   }
 ]
}

通过测试这些可能存在的策略,如果目标设置的较为简单可以通过测试达到绕过目标的策略限制。

云计算

云容器

厂商有些目前会提供基于云的云实例,比如云容器实例CCI等。

云容器利用

可以借助这个功能,自己构建需要的一些功能性的镜像,这里举例构建一个awvs的web扫描,搭配云厂商提供的负载均衡等功能,达到容器的性能需求。

图片

云容器指令泄漏

云容器厂商一般会提供一些公共的镜像,但是涉及到自己构建镜像时,需要将构建完成的镜像进行上传,厂商会提供临时指令和永久指令。

图片

其中永久指令的登录是通过ak作为用户名,密钥是通过ak和sk加密得到的一个密钥,这个密钥是不可被解密的,这里需要注意加密密钥的泄漏。

图片

ECR公开访问

Amazon Elastic Container Registry (Amazon ECR) 是 AWS 托管容器映像注册表服务,它安全、可扩展且可靠。Amazon ECR 支持私有存储库,其具有使用 AWS IAM 的基于资源的权限。这样,指定用户或 Amazon EC2 实例可以访问您的容器存储库和映像。您可以使用首选 CLI 推送、提取和管理 Docker 映像、Open Container Itistry (OCI) 映像和 OCI 兼容构件。

并且在官网中明确表明ECR支持作为公共容器映像存储库,所以在注册时可以看到公有的选项,一但打开就不可关闭,并且任意aws账户可以在这个容器存储库中随意推送和拉取。

图片

云网络

DNS zone

照比国内厂商,国外厂商对DNS的管控有极高的自由度,在国内厂商,当无法验证你的根域名解析到相应平台的时候,是不会对你的域名进行任何解析的,这一点也是很好的保护了我国公民的网络安全,而国外的云厂商是不会对你的域名进行Name Server的验证的,所以,你可以在境外平台例如Azure、Google、AWS等等去解析不属于你的域名。

以Azure为例,执行以下操作就可以解析他人的域名。

创建 DNS zone。

图片

选择一个你想要的域名。

图片

添加记录,跟操作国内的DNS一样。

图片

最终效果:

图片

通过平台给出的四个NS节点去解析,会得到自己配置的地址,如图,ns1-38是强制加的记录,而ns1-205则是真实的microsoft.cn记录,这种方式可以在恶意程序中指定DNS服务器,将自己想要的地址通过指定的服务器进行查询,这样做有以下两个特点:

● 域名高度伪装,可以想象一下,在一个月黑风高的夜里,态势感知、流量设备发出了告警,但是告警的内容是向[www.microsoft.cn] 或者向自己驻守单位的主域名发起连接,我猜,你的脑子里会一片空白。

● 解析的DNS服务器是一个比较权威的服务器,并不是个人搭的野鸡服务器,以mincrosoft.cn为例,真实的DNS解析记录在ns1-205上而我注册的是在ns1-38上,都是情报上白名单的权威服务器,在域名的记录里加一个微软云的ip或者CDN,很容易让防守人员产生误判,认为是微软服务发起的连接。

针对这一类攻击手法,如果防守方人员在看到这种连接,在沙箱当中跑出来没什么问题,请一定在虚拟机当中跑起来抓包,看发出的DNS服务器是指向哪台DNS,由于根域名的NS没有指向假冒的DNS服务器,解析记录是不会在互联网上进行传播的,通过比对Name Server来找出样本的猫腻。

AWS DNS Zone

图片

Google Cloud DNS Zone

图片

由于Google的DNS服务器国内是无法访问的,因为这一点,身处国内的服务器可以不用考虑这个安全风险。

NAT网关

NAT网关(NAT Gateway)提供公网NAT网关和私网NAT网关。公网NAT网关为VPC内的云主机提供SNAT和DNAT功能,可轻松构建VPC的公网出入口。私网NAT网关为VPC内的云主机提供网络地址转换服务,使多个云主机可以共享私网IP访问用户本地数据中心或其他VPC,并支持云主机面向私网提供服务。

● SNAT

某厂商的本意是通过NAT网关提供网络地址转换服务,使用NAT网关节约EIP资源,通过NAT网关还可以实现VPC内云主机与远端私网(外部数据中心或其他VPC)互相访问。

在红队视角下我们可以通过云主机搭配弹性公网IP结合SNAT的策略避免IP直接暴露在公网上,可以通过公网NAT网关共享弹性公网IP的方式访问公网,实现VPC内的无弹性公网IP的云主机访问公网。

首先我们根据自己的需要购买网关。

图片

购买完成确定后,进入到网关的规则设置内设置SNAT规则。

图片

根据需要购买EIP之后,在下面会显示购买的IP,由于弹性云服务器同时配置弹性公网IP服务和NAT网关服务时,数据均通过弹性公网IP转发,所以我们需要将之前购买的服务器送的ip进行解绑,并且在解绑后送的ip也可以拿到网关中使用。

图片

以上设置完成后我们的服务器就有了自动出网切换ip的能力。

图片

可以看到我们的ip,自动进行了切换,我们可以通过这个手法达到隐藏自己的真实ip并切换的能力,同时获得了国内的高质量代理。

● DNAT

DNAT的功能恰好与SNAT相反,通过IP映射或端口映射的方式,实现VPC内的机器被外网访问,在之前的操作中,我们将机器本身的ip解绑,我们只能通过网页的远程VNC登录系统操作,这样极其不方便,首先我们可以通过这个方法将我们的22端口映射出去,方便我们操作机器。

图片

之前相关的资源已经购买,直接去设置DNAT规则就可以。

图片

根据需要设置规则,我这里只将22放了出来。

图片

成功使用ssh,其他利用比如隐藏CS、监听器的设置等等都可以利用。

其他

Azure Active Directory 所带来的密码爆破风险

在微软的体系下,Microsoft365、Azure以及其他的一些微软服务的登陆凭据都是互认的,暴力破解的过程中可以采用一些微软的公网服务接口进行账号验证,而这时就会产生一个问题,如何保证账户在公网上的安全性。现已知的非核心密码验证接口,有如下几个:

● Microsoft 365 Web Portal

● Microsoft Graph

● Azure Service Management

● Microsoft 365 Mobile

这些存在的接口都会导致一个问题,那就是攻击者可以在域外、公网上进行域用户的暴力破解,因为真实的流量不会在云内网或者主机上发出,所以任何的安全设备也不会对它进行告警。为了避免这种情况的产生,可以采用以下方法进行规避:

● 为所有用户开启多因子MFA认证

● 使用“读取目录数据”或“读取用户配置文件”权限监控和阻止可疑应用程序

● 使用白名单控制登陆ip地址

CloudShell

AWS CloudShell是一个基于浏览器的预先验证 shell,可以直接启动来自 的AWS Management Console. 可以使用的首选 shell(Bash、PowerShell 或 Z shell),针对 AWS 服务运行 AWS CLI 命令。无需下载或安装命令行工具,即可完成此操作。

在控制左上方可以进入CloudShell,点击进入会初始化生存,每次进入都是根据区域随机ip。

图片

该shell默认提供bash、powershell、zsh3种,并且aws相关的cli都提供,开发环境提供node.js、python。

图片

默认用户是低权限的,但是官方为了用户安装软件给了当前用户sudo的权限。

图片

图片

可以看到用户属于sudo组,这样我们就能干很多事。

图片

shell的配置资源如下,可以用来做一些事情了。

图片

云原生时代,基础设施一般通过模板生成。一个错误的IaC(基础设施即代码)模板可能生产上百个危险资源,最终变成上千个运营告警。默安科技尚付DevSecOPS模块的IaC安全扫描能力,在代码构建阶段自动识别其中的IaC代码,识别其中的错误代码并修复,在基础设施漏洞发生之前就解决相关风险问题。左移的基础设施安全可以大幅降低安全人员工作量,节省运维成本。

尚付CNPP的IaC安全扫描能力,支持Kubernetes Manifest清单文件、Rancher、Docker File、Terraform等多种格式的安全检查。

此外,在近期发布的3.0版本中,默安科技巡哨智能资产风险监控系统正式引入云安全状态管理(CSPM,Cloud Security Posture Management)能力,帮助用户实现多云资源的统一管理、云资产可视、云资源配置风险的及时发现;通过云上合规基线检查,让用户能够轻松应对云上合规困扰;并且同时支持私有化交付与SaaS化交付。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1407333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++记忆站】类和对象(三)

文章目录 再谈构造函数构造函数赋值并非初始化初始化列表explicit关键字 static成员概念特性一、静态成员为所有类对象所共享,不属于某个具体的对象二、静态成员变量必须在类外定义,定义时不添加static关键字三、静态成员函数没有隐藏的this指针&#xf…

19.云原生CICD之ArgoCD入门CD过程实战

云原生专栏大纲 文章目录 ArgoCDArgoCD 简介GitOps介绍Argo CD 的工作流程argocd和jinkens对比kustomize介绍ArgoCD和kustomize关系 安装argocdargocd控制台介绍首页应用创建表单SYNC OPTIONS(同步选项)SYNC POLICY(同步策略) 应…

【LeetCode: 36. 有效的数独 + 模拟】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

2024年应用数学研究与测量测绘国际会议(AMRSMIC 2024)

2024年应用数学研究与测量测绘国际会议(AMRSMIC 2024) 2024 International Conference on Applied Mathematics Research and Surveying and Mapping(AMRSMIC 2024) 数据库:EI,CPCI,CNKI,Google Scholar等检索 一、【会议简介】 2024年图像处理与大数据信息应用国际…

《2023 亚信安慧AntDB数据库年度报告》请查收

关于亚信安慧AntDB数据库 AntDB数据库始于2008年,在运营商的核心系统上,服务国内24个省市自治区的数亿用户,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行超十年&a…

Qt5编译qextserialport(Qt5.14.2+VS2017)

1、qextserialport库下载 (1)github GitHub - qextserialport/qextserialport: Automatically exported from code.google.com/p/qextserialport (2) code.google https://code.google.com/archive/p/qextserialport/downloads 我下载的是最新版qextserialport-1.2rc.zip ​…

佛像三维扫描文物抄数建模服务雕塑等比例仿制/制作逆向设计造型

文物三维扫描等比例仿制/制作是一项利用先进技术手段对珍贵文物进行复制或仿制的过程。这种技术可以准确地测量文物的三维尺寸和形状,并且利用高精度3D打印技术或精密加工工艺制作出与原文物完全一致的复制品或仿制品。 CASAIM中科广电专业提供文物三维扫描等比例仿…

鸿蒙开发系列教程(九)--ArkTS语言:ForEach循环渲染

ForEach:循环渲染 官方:ForEach接口基于数组类型数据来进行循环渲染,需要与容器组件配合使用,且接口返回的组件应当是允许包含在ForEach父容器组件中的子组件。 语法: ForEach( arr: Array, itemGenerator: (item…

1030 完美数列 (20)(测试点4,5)

给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列。 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。 输入格式&#x…

项目解决方案:商务大楼(大厦)网络高清视频监控建设方案

目 录 第1章、前言 第2章、高清监控系统概述 第3章、设计原则 第4章、设计规范和依据 第5章、 系统总体设计 5.1 系统逻辑图 5.2 系统技术架构图 5.3 系统网络拓扑图 5.4 系统工作原理 5.4.1 前端监控资源采集 5.4.2前端监控资源采集 5.4.3 终端平台系统…

【Redis】网络模型

前言 Redis(Remote Dictionary Server)是一个开源的高性能键值对存储系统,广泛用于各种网络应用中作为数据库、缓存和消息代理。Redis的网络模型是其高性能的关键因素之一,它涉及到多个方面,包括内存管理、事件处理、…

LeetCode 14.最长公共前缀(python版)

需求 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入:strs [“flower”,“flow”,“flight”] 输出:“fl” 示例 2: 输入:strs [“dog”,“race…

Python使用pip命令安装外部库-项目内安装外部库-全局安装外部库

一、前言 在进行Python项目开发时需要安装一些外部库来扩展项目功能,因此需要了解pip命令的详细使用。 二、基本语法 1.安装库 pip install 包名 2.安装特定版本 pip install 包名版本号 3.升级库 pip install --upgrade 包名 4.卸载库 pip uninstall 包名 5.查看已…

智能调光芯片 PWM调光 模拟调光36V 48V 60V 72V-H5119SL

智能调光芯片是一种用于控制光照系统的集成电路,其主要功能是根据环境条件和用户需求智能调整光照强度。以下是智能调光芯片的基本工作原理: 传感器输入:智能调光芯片通常集成光感应传感器,用于检测周围环境的光照强度。传感器会…

2023 工业 AR 关键词:纵深和开拓

2023 年,以虚实融合、工业元宇宙为代表的“新数字化”升级在工业制造领域达成共识。 ▲五部委联合印发元宇宙行动计划 通过发展元宇宙赋能新型工业化 而相对过去几年的行业渗透广、落地场景多样的 AR 业务拓展与合作,#纵深和#开拓,成为 2023…

Pandas.DataFrame.idxmin() 最小值索引 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本: 本文基于 pandas2.2.0 编写。 关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。 传送门: Pandas API参考目录 传送门: Pandas 版本更新及新特性 传送门&…

C#用DateTime.Now静态属性返回日期的星期信息

目录 一、使用的方法 1.Now属性 2.ToString方法 二、示例 使用DateTime结构的Now静态属性,可以方便地获取系统日期信息。调用时间对象的ToString方法,在该方法的参数中添加适当的格式化字符串,将返回日期的星期信息。 一、使用的方法 1…

网络电视盒子哪个好?博主分享超高性价比网络电视盒子推荐

电视盒子是我们使用最多的数码产品,年货节很多朋友在纠结网络电视盒子哪个好,我这次的测评产品就是电视盒子,按照18款电视盒子的深度测评结果整理了网络电视盒子推荐,想知道网络电视盒子哪个好可以看看下面这五款电视盒子。 一&am…

【数学建模】插值与拟合

文章目录 插值插值方法用Python解决插值问题 拟合最小二乘拟合数据拟合的Python实现 适用情况 处理由试验、测量得到的大量数据或一些过于复杂而不便于计算的函数表达式时,构造一个简单函数作为要考察数据或复杂函数的近似 定义 给定一组数据,需要确定满…

ArcEngine添加点要素、线要素、面要素及学习总结

基于C#的ArcEngine二次开发教程(13):点、线、面要素的绘制_arcengine onmousedown-CSDN博客 https://www.cnblogs.com/cannel/p/11074343.html ArcEngine绘制点、线、多边形、矩形、圆形、椭圆的代码_arcengine 开发 生成矩形-CSDN博客 https…