工具匠 #129 - DFIR重新定义:利用R为调查人员提供更深层的功能 - 第二部分
你可以拥有没有信息的数据,但你不能拥有没有数据的信息。~Daniel Keys Moran
我们继续第一部分开始的讨论:DFIR重新定义:利用R为调查人员提供更深层的功能。首先,由于我的演示季节已经结束,我已经在Github上发布了相关内容。我特别发布了在西雅图SecureWorld上展示的最新版本,其中包括Eric Kapfhammer的贡献以及他对这种方法下一步发展的一些前瞻性思考。
上个月我们离开时,我正在解释如何使用R和Twitter API进行情感效价分析,即“事件、对象或情境的内在吸引力(正效价)或厌恶感(负效价)”。你可能值得花时间回顾并刷新第一部分的结尾。我们最后的讨论点具体涉及负面推文与正面推文的流行度,其中包含一堆情感中性的转发、两条正面转发和大量负面转发。这种分析可以快速帮助我们更好地理解攻击者集体的情绪,特别是当该集体通过社交媒体发声时。从负面与正面情绪的流行度出发,我们可以评估推动这种情感分析的实际词语。使用apply系列函数,我们不需要太多R代码就能实现目标。apply、lapply和sapply等函数允许你以重复的方式操作矩阵、数组、列表和数据框的数据切片,而无需使用循环。我们这里直接使用社会科学家Michael Levy及其“玩转Twitter数据”帖子中的代码。
|
|
结果是一个整洁的可视化表示,准确展示了我们在第一部分末尾学到的内容,如图1所示。
图1:正面与负面词语
包含诸如killed、dangerous、infected和attacks等词语的内容肯定比诸如good和clean等词语更吸引读者。这种情感肯定可以用来评估攻击者在攻击前或攻击中的潜在结果和行为,特别是在DDoS场景中。将情感分析与可视化转发和提及网络的能力结合,你可以聚焦于潜在的领导者或组织者。网络节点越大,转发越多,如图2所示。
图2:谁在转发谁?
记住我们的初始前提,如第一部分所述,攻击者团体经常使用相关的标签和句柄,而想要“成为一部分”的追随者经常转发并使用这些标签。个别攻击者要么自由地暴露自己,要么经常通过Twitter变得容易识别或关联。注意,我们的主要转发是针对@joe4security、@HackRead和@defendmalware(不是真正的攻击者,而是谈论攻击的博主,这里用于示例目的)。图3显示了谁在提及谁。
图3:谁在提及谁?
注意@defendmalware提及@HackRead。如果这些是真正的攻击者,想象在攻击前或攻击中 actively 转发和提及彼此的Twitter账户之间可能存在关系并非不合理。现在假设@HackRead可能是一个可疑对象,你想了解更多可能的其他嫌疑人。实际上@HackRead总部在意大利米兰。也许米兰可能是其他攻击者的位置。我可以从上面的转发和提及网络中输入Twitter句柄,用非常特定的地理编码查询Twitter API,并将其锁定在米兰中心五英里范围内。结果立即显示,如图4所示。
图4:地理编码和结果
显然,由于这些Twitter账户不是真正的攻击者,他们的转发与我们的假设攻击场景无关,但他们确实从米兰中心五英里范围内转发了@computerweekly(在转发和提及中看到)。如果@HackRead是一个组织的领导者,并且我们假设同伙在地理上接近,通过Twitter API进行地理定位可能非常有用。再次强调,这些都用作主题示例,不应以任何方式将这些账户与任何实际攻击相关联。
用于优先级排序的快速节俭树(决策树)
随着数据的丰富,以及经常主观或有偏见的分析,有时快速、权威的决策可能非常有益。快速节俭树(FFTs)来救援。FFTs是简单的算法,基于有限信息促进高效和准确的决策。Nathaniel D. Phillips博士为R创建了FFTrees,允许任何人轻松创建、可视化和评估FFTs。Malcolm Gladwell曾说过:“我们怀疑快速认知。我们生活在一个假设决策质量与投入的时间和努力直接相关的世界。”FFTs以及广义的决策树反驳了这一前提,并有助于及时、高效地处理数据,以做出快速但合理的决策。与信息安全的许多方面一样,经常与医学、心理学和社会科学有直接关联,FFTs的使用也不例外。通常,预测分析使用逻辑回归进行,用于“描述数据并解释一个依赖二元变量与一个或多个名义、序数、区间或比率级别独立变量之间的关系。”你更喜欢逻辑回归还是FFTs?
图5:谢谢,我选FFTs
这是一个教科书式的信息安全场景,经常充满主观性和偏见。在违规后,随后的第三方风险评估生成了大量CVSS数据,快速决定首先应用哪些处理措施。因为每个人都喜欢CVSS。
图6:CVSS meh
没有什么比一张巨大的表更糟了,按基础、影响、可利用性、时间、环境、修改影响和总体评分打分,所有这些都由可能不完全理解你环境复杂性或细微差别的第三方评估员评估。假设我们尊敬的评估员决定总共有683个发现,其中444个非关键,239个关键。FFTrees会同意吗?不!首先,一点R代码。
|
|
你猜怎么着,模型正好落在影响和可利用性作为最重要的输入,不仅因为逻辑上如此,而且因为它们在曲线下面积(AUC)中的位置,其中特定曲线是接收器操作特征(ROC)。ROC是“一个图形图,说明了二元分类器系统在其判别阈值变化时的诊断能力。”至于AUC,准确性通过ROC曲线下的面积测量,其中面积为1代表完美测试,面积为0.5代表无价值测试。简单来说,越接近1越好。对于这个模型和数据,影响和可利用性是最准确的,如图7所示。
图7:线索排名偏好影响和可利用性
快速节俭树做出决策,其中影响和可利用性评分小于或等于2为非关键,可利用性大于2标记为关键,如图8所示。
图8:FFT决定
啊哈!我们的FFT与评估员看法不同。性能拟合平均为93%(这很好),我们的树基于影响和可利用性做出决策,决定有444个非关键发现和222个关键发现,与评估员有17点的差异。我们都能同意减轻和修复关键发现可能是一个昂贵的提议吗?如果你只需一点数据科学就能做出权威决策,节省时间和金钱而不不利影响你的安全状况,你会认为这是胜利吗?是的,那是修辞性的。
注意FFTrees函数自动构建同一通用树的几个版本,这些版本在性能拟合和误报方面做出不同的错误权衡。这使你有机会测试变量并在一个模型构造内做出可能更明智的决策。最终,快速节俭树基于1到5条信息做出非常快速的决策,并忽略所有其他信息。换句话说,“FFTrees是非补偿性的,一旦它们基于几条信息做出决策,没有额外信息改变决策。”
最后,让我们看看如何使用时间序列回归(TSR)监控高容量环境中的用户登录异常。这项工作大多由Eric Kapfhammer提供,他是我们Microsoft Windows and Devices Group蓝队的首席数据科学家。这种活动的理想Windows事件ID显然是4624:账户成功登录。此事件通常是大多数环境中体积前5的事件之一,并有多种类型代码,包括网络、服务和远程交互。
用户账户随着时间的推移会开始显示模式,总体包括:
- 季节性:一周中的某天、补丁周期、
- 趋势:登录量随时间增加/减少
- 噪声:随机性
你可以用Z分数模型查看4624,该模型基于给定时间段内平均计数的标准偏差数设置阈值,但这是一个相当简单的模型。值越高,“异常性”程度越大。
preferably,通过时间序列回归(TSR),你的特征集更丰富:
- 基于响应历史(称为自回归动态)和相关预测变量的动态传递预测未来响应的统计方法
- 从实验或观察数据理解和预测动态系统的行为
- 常用于经济、金融和生物系统的建模和预测
如何在一片登录数据中发现异常?
- “三重指数平滑(Holt-Winters方法)是许多用于预测系列中数据点的算法之一,前提是该系列是‘季节性的’,即在一定周期内重复。”
- Winters在1960年通过添加季节性改进了Holt的双指数平滑,并发表了《通过指数加权移动平均预测销售》
让我们想象我们的用户DARPA-549521,在SUPERSECURE域中,有90天的聚合4624类型10事件按天。
图9:用户登录数据
用210行R代码,包括注释、日志读取、文件输出和绘图,我们可以可视化并警报DARPA-549521的数据,如图10所示。
图10:用户行为超出置信区间
我们可以检测用户账户在与其随时间建立(学习)的置信区间相关的季节性变化时。在这种情况下,在2017年8月27日,用户超过了她的19次登录阈值,从而触发异常。现在想象使用这个模型发现所有用户的异常行为,你就能感受到这个模型的威力。Eric指出,当然还有额外的建模选项,包括:
- 使用Loess的季节和趋势分解(STL)
- 处理任何类型的季节性~可以随时间变化
- 趋势周期的平滑度也可以由用户控制
- 对异常值稳健
- 分类和回归树(CART)
- 监督学习方法:教树分类异常/非异常
- 无监督学习方法:专注于顶级保持和错误检查
- 神经网络
- LSTM / 多个时间序列组合
这些是你能力的强大下一步,我希望你勇敢、有创造力,前进并在你的实践中添加数据科学和可视化元素。R和Python为此任务得到良好支持并广泛使用,肯定能帮助你更快地检测攻击者,更迅速地遏制事件,并增强内部检测和修复机制。
所有我能分享的代码都在这里;抱歉,我只能分享没有源的TSR示例。祝你一切顺利!干杯…直到下次。