建设银行网站打不开 显示停止工作常州做网站的 武进
建设银行网站打不开 显示停止工作,常州做网站的 武进,开发中英文切换网站如何做,那个网站专利分析做的好用攻击者思维加固你的系统
从恶意软件加密挖矿攻击到勒索软件团伙#xff0c;网络攻击的目标往往与任何盗窃行为相同#xff1a;找到通往有价值物品的最短路径并迅速撤离。这本质上就是路径查找#xff0c;这就是为什么长期以来#xff0c;网络攻击者经常将他们的目标可视化…用攻击者思维加固你的系统从恶意软件加密挖矿攻击到勒索软件团伙网络攻击的目标往往与任何盗窃行为相同找到通往有价值物品的最短路径并迅速撤离。这本质上就是路径查找这就是为什么长期以来网络攻击者经常将他们的目标可视化为图网络也称为攻击图。为了保护你自己的系统防御者需要像攻击者一样思考。例如Wiz最近以攻击者的思维方式发现了一个Ingress NGINX控制器中的漏洞。即使你的系统在日常运营中仅使用常规的关系型数据库你的网络安全团队也需要一种方法来预见最有可能的潜在攻击路径并快速做出反应。对于复杂的互联系统图数据库技术以及伴随的图可视化和分析是识别网络攻击风险的关键工具。幸运的是Neo4j实例是进行此类网络安全分析的完美环境。你甚至可以将Neo4j实例与G.V()这样的图可视化工具结合起来——这将帮助你以最少的查询编写快速轻松地识别系统中的漏洞。如果你使用G.V()的Graph Data Explorer你可能完全不需要编写任何代码。让我们更深入地了解一下。像攻击者一样思考攻击者首先从他们能进入的任何地方获取对你系统的访问权限。一旦进入内部他们就会尝试在你的网络中推进。攻击者通常事先并不知道你网络的结构因此他们通常会使用一套多功能技术工具包和一种“试试看”的方法。他们很少会立即找到他们想要的东西。相反他们会探索你的网络从一个位置跳到另一个位置。攻击者成功获取访问权限的任何东西都是一个资源——这可能是一个新位置的访问权、一段新代码、登录凭证或者仅仅是有用的信息例如另一个资源的位置。攻击者用来从一个资源转移到另一个资源的任何技术都是一次攻击。目标是找到有价值的东西——我们称之为关键资产。关键资产是一个刻意模糊的概念可能是很多东西但重要的是要知道它是攻击者想要而防御者无法承受失去的东西。例如关键资产可能是给予攻击者系统完全控制权的资源。你可以立刻看出为什么黑客倾向于将计算机网络可视化为图。攻击者可能对理解你系统的每个部分或查看每个资源不感兴趣。相反攻击者关心的是在所有其他资源中找到通往关键资产的可行路径。将系统想象成一个图有助于他们快速找到并概念化这些路径。这是一个攻击图。在伪Cypher中我们可以如你所料地表示攻击图——我们使用(⬤ 资源)和(⬤ 关键资产)节点来表示每个实体。我们将攻击者可能在两个节点之间进行的任何假设性移动表示为 [攻击] 关系。一个良好的系统图模型——加上良好的数据可视化和分析——能让防御者获得优于攻击者的优势。记住攻击者通常事先不知道系统的布局但防御者知道为Kubernetes集群建模在实践中一个网络将包含许多种资源和关键资产节点。它们可能拥有自己的属性这将影响可能的攻击路径类型。在本次讨论中我们选择使用一个说明Kubernetes集群的示例数据集并采用KubeHound对该集群的描述。以下是我们示例系统中存在的节点类型(⬤ Volume)—— 集群内存储持久内存的位置。(⬤ Node)—— Kubernetes集群中运行Pod的工作机器。(⬤ Pod)—— 节点内运行一个或多个容器的可部署单元。(⬤ Container)—— 包含应用程序的小型环境。(⬤ PermissionSet)—— 允许给定用户/身份执行的一组操作也是系统中唯一的关键资产节点。(⬤ Identity)—— 认证后授予的用户或服务账户。(⬤ Endpoint)—— Pod的连接点。注意术语“node”既指“图中的实体”也指“集群中的工作机器”因此我会通过使用“节点”指代前者使用(⬤ Node)指代后者来澄清我指的是哪种类型。这是一个高度简化的数据模型版本展示了一些示例攻击类型。有些很简单有些则高度抽象。例如可以想象这样一个通用概念攻击者可能通过暴露的端点获取对你系统的访问权限。我们用[ENDPOINT_EXPLOIT]攻击来表示这个概念而不过多担心其机制。其他攻击如[TOKEN_STEAL]描述的则是更具体的攻击窃取已挂载的服务账户令牌。某些节点类型移动到其他节点类型需要不同类型的攻击。在完整的分析中你会考虑哪些攻击类型更可能发生或者哪些会使你的关键资产最脆弱。当然这里展示的可能网络攻击类型要多得多。理解单个攻击类型在后续解释和应对你的网络安全图时非常重要。这将让你能够处理在系统中发现的漏洞。但现在我们只专注于识别危险路径因此不必过于担心对不同类型进行分类。我们只需要知道存在多种关系类型。下载示例数据集现在我们理解了数据模型我们将在Neo4j中管理我们的示例安全集群。我们还将引导你了解如何在G.V()中将其可视化。这里的一切你都可以自己完成。示例数据集以ZIP格式在GitHub上提供可以在Neo4j Sandbox中使用。你可以通过数据导入器直接上传数据。只需在Neo4j Sandbox中选择“Open model (with data)”并选择ZIP文件。我们还以CSV格式提供了原始数据。如果你还没有安装G.V()请前往下载门户因为你需要它来继续操作。下载并打开G.V()后点击“New Database Connection”。接下来你只需要选择Neo4j作为你的图数据库类型并输入你的Bolt地址和端口。完成后系统会提示你输入用户名和密码。输入你的详细信息并提交连接——就这么简单使用G.V()进行图可视化为了节省大量时间让我向你介绍G.V()新的Graph Data Explorer。传统上如果你想查看图数据库中的所有数据你必须运行一个Cypher查询。类似这样MATCH p()-[]-() RETURN p LIMIT 10000虽然G.V()完全兼容Cypher并且你绝对可以在查询编辑器中运行此查询但Graph Data Explorer消除了为直观数据探索而构建此类基于代码的查询的需要。事实上我们即将在不编写任何代码的情况下进行一些网络安全分析。但无论如何我们还是会包含Cypher命令——以防你更愿意以那种方式跟进。让我们尝试查找图中连接到另一个节点的任何节点。现在我们有了一个总体情况概览。我们系统中所有的攻击路径都一目了然我们可以使用力导向布局来很好地概览节点之间的关系或者使用社区布局来查看我们系统中存在哪些类型的资源。由于(⬤ Endpoint)图节点是最常见的攻击入口点之一我们已将其高亮显示并关闭了所有其他节点的标签。这让你可以一目了然地看到来自暴露端点的攻击可能从哪里开始。如果你想调查特定的图节点或关系是否存在漏洞只需点击几下即可高亮显示感兴趣的节点。让我们看看名称为kubehound.test.local-control-plane的工作机器(⬤ Node)。我们可以看到进出该工作机器(⬤ Node)的所有不同类型的攻击。上面的图可视化让我们可以描绘出这个资源的心理图景众多目标—— 如果攻击者成功执行了[VOLUME_ACCESS]或[POD_ATTACH]攻击则有大量(⬤ Volume)和(⬤ Pod)资源可以直接访问。暴露的身份—— 存在一个相邻的(⬤ Identity)资源容易受到[IDENTITY_ASSUME]攻击。容器威胁—— 有一条关系通向该资源。攻击者可以使用[CE_PRIV_MOUNT]攻击从相邻的(⬤ Container)图节点获取对该节点资源的访问权限。在实施安全措施时也很容易进一步修改我们的图以反映这些措施。例如假设我们已经做了很多工作来保护我们的卷使它们不那么容易受到卷访问攻击。既然我们现在不那么担心这类攻击我们希望专注于其他领域。我们有两种方法可以做到这一点。第一种是关闭[VOLUME_ACCESS]关系。这使得卷节点仍然可见以便我们确保没有其他类型的攻击进出这些资源。如果——并且仅当——我们确信卷资源现在已有效地与我们的工作机器(⬤ Node)资源隔离我们可以直接完全关闭(⬤ Volume)节点。这让我们可以完全专注于其他资源。你可以选择从关系攻击路径或节点资源的角度来评估你的攻击图。你的可视化和解释选择将取决于你选择分析系统的哪些部分。但是关键资产呢回想一下我们所有的关键资产都是(⬤ PermissionSet)类型。正如我们所见在我们的工作机器(⬤ Node)的最近邻居中没有这种节点。但是如果我们允许多跳仍然可能通过更远的邻居找到通往关键资产的路径。我们想看看是否存在这样的路径。假设我们想检查我们的工作机器(⬤ Node)是否在10跳或更少跳数内连接到任何关键资产MATCH path (start {name: kubehound.test.local-control-plane}) -[*1..10]-(end) WHERE (end.criticalTrue AND ALL(n IN NODES(path)[1..] WHERE n start)) RETURN path我们可以看到从我们的资源出发有几条可行的路径暴露了多个关键资产这里显示的每条路径都代表了我们系统的一个假设性风险。让我们只高亮显示一条攻击路径。由于system:coredns(⬤ PermissionSet)是一个关键资产让我们特别关注这个节点。我们不再从我们的起始资源——即我们有点随机选择的(⬤ Node)——查看路径而是希望了解这个关键资产总体上有多脆弱。攻击者通常从端点开始攻击所以让我们寻找可能使该资产暴露给端点攻击的关系。我们可以反转之前的查询查看所有从该资产到(⬤ Endpoint)的连接MATCH path (start:PermissionSet {role: system:coredns}) -[*1..10]-(end) where (end.labelEndpoint AND ALL(n IN NODES(path)[1..] WHERE n start)) RETURN path我们可以立刻看到如果我们正在分析来自端点的攻击我们实际上不必太担心kubehound.test.local-control-plane(⬤ Node)因为没有路径将该图节点连接到端点路径。然而我们可以看到存在一些我们可能关心的容器、卷和身份节点。为了更全面地概览我们的系统我们可以查看所有在少于十跳内将端点连接到任何关键资产的路径MATCH path (start:Endpoint) -[*1..10]-(end:PermissionSet) WHERE (end.criticaltrue AND ALL(n IN nodes(path) WHERE size([m IN nodes(path) WHERE m n]) 1)) RETURN DISTINCT path LIMIT 1000我们可以寻找所有从端点导致关键资产的路径。我们可以看到有两个独立的类攻击路径类别 #1攻击者可以通过两个coredns(⬤ Container)节点中的任何一个进行。类别 #2攻击者可以通过工作机器(⬤ Node)kubehound.text.local-worker2进行。尽管类别1和2都包含许多子路径但通过专注于像这样的阻塞点我们可以极大地增强我们的安全系统并切断大部分攻击路径。通过将精力集中在真正重要的路径上防御者可以确保系统的最大安全性。这是一项图可视化特别适合的任务。强大的攻击图能够一目了然地识别漏洞为防御者提供他们所需的情报和时间来加强防御。总结你现在已经体验到图可视化在网络安全的领域有多么强大。但这仅仅是个开始Neo4j与G.V()的结合是一个强大的组合可以从各个角度和规模深入洞察你系统的优势和脆弱性。无论网络攻击多么复杂它们总是遵循规则这使得它们是可以预测的。拥有一个强大的图数据模型和一个勤勉的网络安全团队没有哪条攻击路径是你预见不到的。FINISHEDCSD0tFqvECLokhw9aBeRqiK65lS164AuOwRpGElQ/J1I67XH0xjN3ntmGKL6/fqt/0LGziLqow4rZTDcQnq2HWaK/BNyTS5YvV5sj4GvMm27den3F/DPLhRKkrz0qVhPWXQFhmgJaFtDSa908jeBA2vpF0Jt5HzRPRRwlrdUnY更多精彩内容 请关注我的个人公众号 公众号办公AI智能小助手对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号网络安全技术点滴分享