威胁检测与搜寻建模7.基于Mimikatz解释什么是程序
2024-1-18 08:38:44 Author: 安全狗的自我修养(查看原文) 阅读量:24 收藏

物理现实具有从原子到星系的所有度量大小级别的结构。在陆地大小的中间范围内,动物和人类的环境本身就以不同的大小水平构建。在公里的层面上,地球是由山脉和丘陵塑造的。在米的水平上,它由巨石、悬崖和峡谷以及树木形成。它由鹅卵石、晶体和土壤颗粒,以及树叶、草叶和植物细胞在毫米级上更精细地构造。所有这些东西都是陆地环境的结构单元,我们粗略地称之为我们熟悉的世界的形式或形状。
现在,关于这些单位,必须强调一个基本的理论要点。较小的单元通过我所说的嵌套嵌入到较大的单元中。例如,峡谷嵌套在山脉中;树木嵌套在峡谷中;叶子嵌套在树内;细胞嵌套在叶子内。这些是大小比例上下的形式中的表格。单元嵌套在较大的单元中。事物是其他事物的组成部分。它们将构成一个层次结构,只是这个层次结构不是分类的,而是充满过渡和重叠的。因此,对于陆地环境,没有特殊的适当单位可以一次性分析所有环境。世界上没有原子单位被视为环境。取而代之的是下属和上级单位。您选择用于描述环境的单位取决于您选择描述的环境级别。
- 詹姆斯·吉布森¹

欢迎回到“威胁检测与搜寻建模”博客系列。我想在这篇文章中对事情采取稍微不同的方法。该系列之前的大多数文章都是以纯技术为重点的。我希望这篇文章能保持这种技术感觉,但我觉得是时候做语义上的房屋清洁了。目标是利用我们在整个系列中建立的技术基础来帮助回答这个问题。在过去的几个月里,我观察到人们越来越关注“程序”,如首字母缩略词 TTP 的“P”,这是检测工程中的最佳分析水平。因此,我觉得有必要考虑我是否同意我们应该将检测工作集中在程序上的主张。但是,每次我试图提供我的观点时,我都会遇到一个问题。我不知道什么是程序!当我查看 MITRE ATT&CK 矩阵时,很容易理解策略是列标题,持久性、凭据访问、横向移动和技术是每个单独的单元格,例如 Kerberoasting、OS Credential Dumping 等,但后来我们有点挥手将过程视为“技术之下的一切”。我见过被定义为工具、特定命令行、攻击步骤和不同内容的过程。看来,这个命题中实际上隐藏着两个问题。首先是本体论问题,“你认为程序是什么?第二,实际问题,“您认为程序是检测工程工作的最佳目标吗?最初,我打算让这篇文章回答这两个问题,但初稿是 5000 字,坦率地说,我不确定有人会一口气坚持我那么久。相反,我决定在后续文章中单独回答每个问题。在这篇文章中,我计划使用我们在前 6 篇文章中所做的技术工作来准确解释我如何定义“程序”一词。然后,我们将在下一篇文章中以该主题为基础,了解“程序”实际上是否是检测工程师的最佳目标。

相关视频教程

新到了148节

1931 年,波兰裔美国科学家阿尔弗雷德·科兹布斯基 (Alfred Korzybski) 发表了一篇论文,其中包括“地图不是领土”的声明。² 这句话是一个隐喻,它检查了我们用来观察世界的模型(地图)与世界本身(领土)之间的关系。这是一种令人着迷的关系,因为世界太复杂了,我们无法完全感知,所以我们的地图必须比世界分辨率低。但是,我们希望我们的地图大致接近现实,以便它对解决问题有用。如果它告诉我们弗雷斯诺位于洛杉矶和萨克拉门托之间,我们应该期望弗雷斯诺实际上位于其他两个城市之间。如果不是,那么我们的决策就会受到影响。这意味着我们的地图应该具有足够低的分辨率来理解它,同时具有足够高的分辨率(详细),使我们能够在面对不确定性时做出准确的预测。我认为,检测与响应子学科的一个重要问题是,我们的地图分辨率太低,无法做出合理和准确的预测。我们对世界的感知是由我们与之互动的参照系所塑造的。

想象一下,我们的整个职业生涯都接受过训练,通过三层镜头(战术、技术和程序)来看待网络世界。因此,我们将网络世界理解为由三层组成的事物,并且往往仅限于在这个三层结构中思考和谈论(但我重复一遍)。通过这个博客系列,我试图摆脱这种先入为主的结构,探索这个世界的本体论结构,或者至少尽可能地估计它。结果对我来说很有趣,我也希望你也感兴趣,因为我们发现了至少六个层次(功能、操作、程序、子技术、技术和战术)的存在。考虑一下,当人们试图通过三层地图查看六个图层时,必须发生什么?人们看待世界的决心必然会降低。这六层的细微差别和复杂性丢失或压缩到三层参考系中。

在某些情况下,这种细节损失可能会分布在模型的所有三层 (TTP) 中,但在这种情况下,前两层(策略和技术)似乎与六层模型中的前两层非常一致。这意味着所有的损失都是在程序层面上实现的。这是因为三层模型的过程版本负责表示六层模型的操作、操作和函数序列的概念。虽然我们都有自己独特的地图或视角来看待问题,但我希望这种提高地图分辨率和细节的旅程具有为您的地图提供信息的副作用,因此我们作为一个行业会更好。现在是时候将“程序”从表示多个层次的负担中解脱出来,并允许它在我们发现的新兴层次结构中占据应有的位置。

军方怎么说?

回答“什么是程序”这个问题?我认为了解该术语的起源至关重要。信息安全领域从哪里开始采用战术、技术和程序 (TTP) 概念?正如我们专业中常见的一样,它源于军方,因此可能值得咨询他们(至少是美国国防部)以更好地了解预期目的。我的同事,

罗比·温彻斯特

(@robwinchester3 在 Twitter 上),在他的 What is a TTP博客文章中探讨了程序的概念,³ 参考了国防部联合出版物 1-02,国防部军事和相关术语词典,了解每个术语的官方定义。JP 1-02 将程序定义为“完成任务的具体详细说明和/或指示”。⁴ 这个定义很有帮助,但并没有准确地阐明程序在我们开始发现的事物的整体结构中的位置。

罗比在他的帖子中更进一步,提供了一个关于汽车所有权的比喻,我们可以用它来更好地理解这个想法。他将“提供燃料”、“清洁内部”和“预防性维护”等高级考虑因素标记为战术层面的例子。然后,他将重点转移到预防性维护策略上,并探索实现此战术目标的技术。提供的示例包括“更换机油”、“旋转轮胎”和“更换制动器”。最后一个层次的分析是程序,人们会期望“详细的说明和/或指示”来实现像换油这样的技术。

我的思考过程

解释的一种选择是,它可能意味着像“使用此命令行运行此工具”一样具体的东西,但是,我认为有一个技术问题阻止了这种解释。到目前为止,我们讨论的所有不同概念都是类别。你可以把它们看作是面向对象编程中的类,或者你可以把它们看作是柏拉图式的形式(我更喜欢这种解释)。这些形式不是具体的或有形的。相反,它们是必须实例化才能存在于世界中的模式。工具是类或表单的实例化。要使攻击者执行某种技术,他们必须通过工具实例化表单。工具只是技术的特殊实例化,而不是技术本身。

对我来说,程序属于形式,而不是实例。过程是要执行的步骤的模式,而不是步骤的执行。因此,过程定义的“详细说明”方面似乎类似于下面的列表:

  1. 枚举进程以获取 lsass.exe 的进程标识符。

  2. 使用 PROCESS_VM_READ 访问权限打开 lsass 的句柄.exe。

  3. 读取 lsass.exe 的内存以获取存储在其中的凭据。

这里的关键不是步骤;这就是步骤所代表的。请注意,每个步骤都与我们之前讨论过的操作相对应。步骤 1 对应于 Process Enumerate 操作,步骤 2 对应于 Process Access 操作,步骤 3 对应于 Process Read 操作。这些步骤定义了实现子技术的一系列操作,具体来说,是由 Mimikatz 的 sekurlsa::logonPasswords 命令实例化的操作序列。

正如我在引言中提到的,到目前为止,我发现很难确切地确定程序是什么,或者至少应该是什么。我觉得我们在整个系列中发现的结构最终为我提供了基础,使我能够准确地陈述我认为的程序是什么。我的回答是,过程不是工具或命令行参数。

过程是“一系列操作,当它们组合在一起时,会实现一种技术或子技术。

将定义与操作图进行比较

现在,我们可以将此定义应用于我们在上一篇文章中讨论的 LSASS 内存转储操作图的分析,⁷ 如下图 1 所示:

图 1.LSASS 内存操作图

此图显示了可用于完成子技术的四个独特操作序列。根据我们对过程的新定义,这四个操作序列是过程。

本体论层次结构

本系列探讨了网络世界中事物的本体论层次结构。我们讨论了函数调用堆栈,⁸ 识别了 Mimikatz 调用的函数,⁹ 将函数抽象为操作,¹⁰ 将它们组合成函数调用图,¹¹ 观察了操作如何作为过程连接起来,以及存在多少过程可以满足给定子技术的要求。 虽然这些概念中的每一个都有望独立存在, 我发现生成一个图形来可视化这些概念之间的层次关系并证明它们组合在一起形成一个连贯的结构是很有帮助的。该图像如图 2 所示。

图2.从战术到功能的概念分类结构

注意: 为了简洁起见,并且由于我尚未完成这项工作,因此此分层图像仅在每个级别扩展一个节点。想象一下,每个级别的每个节点都有相对相似数量的选项,这些选项是它抽象的。希望这能让您想象攻击者可用的可能性的绝对范围。

该图显示了同时发生的不同抽象级别。因此,当有人选择运行 Mimikatz sekurlsa::logonPasswords 来转储凭据时,他们正在执行 kernel32!ReadProcessMemory¹³(函数)、进程读取(操作)、直接内存访问(过程)、LSASS 内存¹⁴(子技术)、操作系统凭据转储¹⁵(技术)和凭据访问¹⁶(策略)。

事物的嵌套结构

这篇文章的开头引述是由詹姆斯·吉布森(James J. Gibson)在他的《视觉感知的生态方法》一书中写的。我喜欢它的地方,尤其是在这种背景下,因为它可以帮助我们看到这种嵌套结构并不是这个特定用例所独有的。嵌套结构存在于我们每天与之交互的所有内容中。正如 Gibson 所观察到的,细胞嵌套在叶子内,叶子嵌套在树枝内,树枝嵌套在树内,树嵌套在峡谷中,峡谷嵌套在山内。 我们可以观察到,函数实现了操作,操作可以组合起来实现过程,过程实现子技术,子技术实现技术, 该技术实现战术,并整合战术以实现攻击链。

换句话说,更明确地说,函数表示结构的基础级别,至少到目前为止是这样。函数之所以有趣,是因为它们与软件上下文中的东西一样有形。它们表示应用程序可以通过这些门与操作系统和关联的硬件进行交互。然后我们发现“函数”实现了“操作”。操作是我们结构中的第一层抽象。它们是有益的,因为可以使用许多功能来实现相同的操作结果。例如,kernel32!ReadProcessMemory 和 ntdll!NtReadVirtualMemory 实现进程读取操作。操作之所以有趣,是因为从某种意义上说,它们构成了应用程序的基本构建块。程序基本上将单个操作组合在一起来完成任务。根据本文的结论,当操作组合以实现技术目标时,它们就变成了程序。例如,我们看到 Mimikatz 将 Process Enumerate、Process Access 和 Process Read 操作组合在一起,以从 LSASS 转储凭据。这使我们理解程序实现了一种“技术”或“子技术”。上述过程实现了 LSASS 内存子技术,但必须记住,任何给定技术或子技术通常都有多个过程。子技术(如果适用)是技术的特定表现形式,例如 OS 凭据转储。技术归根结底是战术的实现。例如,OS Credential Dumping 是一种实现 Credential Access 策略的技术。最后,攻击者可以组合和命令战术以实现其总体目标。我们之前的工作现在提供了一个连贯的结构,使我们能够将抽象的战术层连接到具体的功能层。具体来说,在讨论这些想法时,我们的语言可以精确地表达。

我希望我对层次结构的探索,如我所见,能够扩展用于讨论这些细节的语言,并提高我们词典中当前特定术语(如程序)的定义分辨率。不管你是否同意我对“程序”的新用法,我希望你至少能理解我试图定义一个术语的尝试,根据我的观察,我们普遍认为这个术语过于宽泛,因为它具有特定的技术含义。无论哪种方式,我都会在我以后的帖子中使用“过程”来表示“一系列操作,这些操作组合在一起时会实现一种技术或子技术”。

我想给你留下一个临别的想法。我将问你一个关于下面图 3 的问题,要使这个实验正常工作,在你回答问题之前,你不能阅读下一段(这应该不是一个很难满足的要求)。当你看这张图片时,你看到了什么物体?

图3.

社会心理学中有一个概念叫做“经验等级制度”。这个想法侧重于事物的分类嵌套。不同的主体可以在层次结构中的不同级别理解单个对象。可以在不同的抽象级别上解释图像中的对象。例如,它同时是一个物体、一辆车、一辆汽车、一辆赛车、一辆一级方程式赛车、一辆红牛车队一级方程式赛车和马克斯·维斯塔潘的红牛车队一级方程式赛车。每级都会增加人们考虑对象的分辨率。

从现在到我的下一篇文章,我希望你考虑的两个问题是:

  1. 你为什么选择你所选择的级别?

  2. 是否有您应该查看事物的最佳层次结构级别?

[1]:詹姆斯·吉布森(James A. Gibson)。(1986). 视觉感知的生态方法.心理学出版社。

[2]:Korzybski,阿尔弗雷德(1933)。科学与理智:非亚里士多德系统和一般语义学导论。国际非亚里士多德图书馆出版公司。

[3]:罗比·温彻斯特。(2017 年 9 月 27 日)。名字里有什么?信息秒中的 TTP。中等。

[4]:参谋长联席会议。(2010). 国防部军事及相关术语词典 (JP 1–02).

[5]:温彻斯特,R.(2017 年 9 月 27 日)。名字里有什么?信息秒中的 TTP。中等。

[6]:德尔皮,B.(2014 年)。米米卡茨。GitHub 存储库。

[7]:阿特金森,贾里德 C.(2022 年 8 月 18 日)。第 5 部分:扩展操作 graph。中等。

[8]:阿特金森,贾里德 C.(2022 年 6 月 27 日)。了解函数调用堆栈。中等。

[9]:阿特金森,贾里德 C.(2022 年 7 月 19 日)。第 1 部分:通过源代码审查发现 API 函数使用情况。中等。

[10]:阿特金森,贾里德 C.(2022 年 8 月 4 日)。第 2 部分:操作。中等。

[11]:阿特金森,贾里德 C.(2022 年 8 月 9 日)。第 3 部分:扩展函数调用图。中等。

[12]:阿特金森,贾里德 C.(2022 年 8 月 18 日)。第 5 部分:扩展操作图。中等。

[13]:Microsoft。(2022 年 5 月 13 日)。ReadProcessMemory 函数。Microsoft 文档。

[14] 威廉姆斯 E.、米林顿 E.(2020 年 2 月 11 日)。LSASS 内存。MITRE ATT&CK.

[15] 威廉姆斯 E.,Le Toux V.(2017 年 5 月 31 日)。操作系统凭据转储。MITRE ATT&CK.

[16] MITRE ATT&CK.(2018 年 10 月 17 日)。凭据访问。MITRE ATT&CK.

[17]:詹姆斯·吉布森(James A. Gibson)。(1986). 视觉感知的生态方法.心理学出版社。

洞课程()

windows

windows()

USB()

()

ios

windbg

()


文章来源: http://mp.weixin.qq.com/s?__biz=MzkwOTE5MDY5NA==&mid=2247491563&idx=1&sn=033d3f8dbf20fd3a483ded3e4040ffd9&chksm=c0695da2b4578aad3340fdcd1715d55c74b32e954c2bbed40dca6dc5c6ea5e28f99896a59a8a&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh