利用R语言重新定义数字取证与事件响应:为调查人员提供更深层次的功能分析(第一部分)

本文探讨了如何利用R语言增强数字取证与事件响应(DFIR)能力,包括恶意Windows事件ID序列可视化、通过情感分析识别攻击者等技术方法,旨在帮助安全团队更高效地处理安全事件和威胁狩猎。

DFIR重新定义:利用R语言为调查人员提供更深层次的功能 - 第一部分

“要胜任安全服务工作,两个关键的事件响应要素必不可少:信息和组织。” ~ Robert E. Davis

我一直在全国各地的各种会议场所介绍《DFIR重新定义:利用R语言为调查人员提供更深层次的功能》,并认为为读者提供详细信息会有所帮助。 基本前提是什么? 事件响应人员和调查人员需要他们能得到的所有帮助。 让我给你列举一些统计数据,来自Secure360.org的《事件响应的挑战》(2016年11月)。根据他们对安全专业人士的调查:

  • 38%的受访者表示用于事件响应的小时数增加了
  • 42%的受访者表示收集的事件响应数据量增加了
  • 39%的受访者表示安全警报量增加了

简而言之,根据Nathan Burke的说法,“公司雇佣足够多的员工来调查每月数万条警报在数学上是不可能的,也没有意义。” 2017年SANS事件响应调查(由Matt Bromiley于6月编制)提醒我们,“2016年发生了影响网络安全行业的前所未有的事件,包括多起涉及多个国家攻击者的事件、动荡的选举和 numerous政府调查。”此外,“看似连续的泄露和数据转储引发了关于恶意软件、隐私和政府越权的新担忧。” 最后,调查显示IR团队:

  • 比以前更快地检测攻击者,驻留时间大幅改善
  • 更快速地遏制事件
  • 更依赖内部检测和修复机制

为此,哪些概念和方法能进一步帮助处理人员和调查人员努力实现更快的检测和遏制?数据科学和可视化肯定没有坏处。我们如何更有创造力地实现“更深层次的功能”?我提议用一个由两部分组成的系列文章《利用R语言为调查人员提供更深层次的功能》,包含以下DFIR重新定义场景:

  • 你是否被入侵了?
  • 恶意Windows事件ID序列的可视化
  • 你的潜在攻击者感觉如何,或者你能通过情感分析识别攻击者吗?
  • 用于优先处理关键性的快速节俭树(决策树)

R“100%专注于并专为统计数据分析和可视化而构建”,并且“使得用几行代码就能对数据运行广泛的统计分析,然后生成信息丰富且吸引人的可视化变得异常简单。”

通过R,您可以通过文件摄取、数据库连接、API与数据交互,并受益于广泛的包和强大的社区投资。 根据Win-Vector博客的John Mount的说法,“并非所有R用户都认为自己是专家程序员(许多人乐于称自己为分析师)。R通常用于编程专业知识水平各不相同的协作项目中。” 我认为这代表了我们中的绝大多数人,我们不是专家程序员、数据科学家或统计学家。更可能的是,我们是安全分析师,为了自己的目的重用代码,无论是红队还是蓝队。用很少的R代码,调查人员可能更快地得出结论。 文章中描述的所有代码都可以在我的GitHub上找到。

你是否被入侵了?

这个场景我在之前的文章中已经介绍过,我会推荐你参考《工具匠发布咨询:Steph Locke的HIBPwned R包》。

恶意Windows事件ID序列的可视化

Windows事件按事件ID提供了极好的序列可视化机会。这种可视化的一个假设场景可能包括多次失败的登录尝试(4625),随后是一次成功的登录(4624),然后是各种恶意序列。基于这些原则的一篇优秀参考论文是《使用基于最佳实践和Windows事件日志的入侵指标进行入侵检测》。这种序列可视化的另一个机会包括按父/子关系的Windows进程。一个特别适合的R库是TraMineR:R的轨迹挖掘器。这个包用于挖掘、描述和可视化状态或事件序列,以及更一般的离散序列数据。它的主要目的是分析社会科学中的传记纵向数据,例如描述职业生涯或家庭轨迹的数据,以及一大堆其他分类序列数据。不过,项目页面 somehow 没有提到恶意的Windows事件ID序列。:-) 考虑图1和图2,从上述论文中检索。图1是文本序列描述,随后是图2中相关的Windows事件ID。

图1

[图片描述文本序列]

图2

[图片描述相关事件ID]

获取相关的日志数据,解析并计数以便用R进行可视化,看起来会像图3。

图3

[图片描述可视化结果]

用漂亮、交互式的旭日可视化来可视化这些数据需要多少R代码?三行,不包括空白和注释,如下面的视频所示。

[视频描述代码执行]

结果旭日图的屏幕截图如图4所示。

图4

[图片描述旭日图]

你的潜在攻击者感觉如何,或者你能通过情感分析识别攻击者吗?

  • 某些对手或敌对社区使用社交媒体吗?是的
  • 因此,社交媒体可以作为预警系统,如果不是实际传感器的话?是的
  • 某些对手有时在社交媒体上如此不注意操作安全,以至于你实际上可以定位他们或与其他地理数据关联?是的

一些优秀的用于评估Twitter数据的R代码包括Jeff Gentry的twitteR和rtweet,用于与Twitter API交互。

  • twitteR:提供对Twitter API的访问。支持API的大部分功能,偏向于在数据分析中更有用的API调用,而不是日常交互。
  • Rtweet:用于与Twitter的REST和流API交互的R客户端。

这里的代码和概念直接来自Michael Levy博士(UC Davis):《玩转Twitter》。

场景:来自黑客行动主义或混乱群体的DDoS攻击。

攻击者群体经常使用相关的标签和句柄,而想要“成为一部分”的追随者经常转发和使用这些标签。个别攻击者要么自由地暴露自己,要么经常通过Twitter变得容易识别或关联。因此,以下是通过分析技术可能有助于识别或更好地理解某些对手和对手群体动机的演练。出于明显的原因,我这里不使用实际的对手句柄。我 instead 使用了一个DDoS新闻周期和记者/博主的句柄作为示例。对于这个例子,我追踪了WireX僵尸网络的踪迹,该网络主要由Android移动设备组成,用于在2017年8月对旅游和酒店行业的多个组织发起高影响力的DDoS勒索活动。我从三个相关标签开始:

  • #DDOS
  • #Android
  • #WireX

我们首先按天和一天中的时间查看所有相关推文。代码简洁高效,如图5所示。

图5

[代码描述按时间分析]

结果是一对按推文和转发颜色编码的图表,如图6所示。

图6

[图片描述时间分析结果]

这让你立即感受到按天和一天中时间的兴趣峰值,特别是关注转发。

想看看潜在对手可能从什么平台发推?没问题,代码在图7。

图7

[代码描述平台分析]

在这个场景中,结果具有讽刺意味地表明,使用我们感兴趣的标签的相关推文大部分来自Android设备,如图8所示。:-)

图8

[图片描述平台分析结果]

现在分析情感效价,或“事件、对象或情境的内在吸引力(正效价)或厌恶感(负效价)”。 orig$text[which.max(orig$emotionalValence)] 告诉我们,最积极的推文是“一群互联网科技公司不得不共同努力清理#WireX #Android #DDoS #botnet。” orig$text[which.min(orig$emotionalValence)] 告诉我们,“危险的#WireX #Android #DDoS #Botnet被#SecurityGiants杀死”是最消极的推文。 有趣吧?几乎完全相同的消息,但效价非常不同。 我们如何衡量情感效价在一天中的变化?四行代码之后…

1
2
3
4
filter(orig, mday(created) == 29) %>%
  ggplot(aes(created, emotionalValence)) +
  geom_point() + 
  geom_smooth(span = .5)

…我们得到了图9,它告诉我们关于WireX的大多数推文在2017年8月29日情感上是中性的, around 0800我们看到一条积极推文,上午整体上更消极的推文。

图9

[图片描述情感效价变化]

另一个要考虑的问题:哪些推文更经常被转发,积极的还是消极的?正如你可以想象的,对于以信息安全为重点的话题,消极性赢得了这一天。 三行R代码…

1
2
3
ggplot(orig, aes(x = emotionalValence, y = retweetCount)) +
  geom_point(position = 'jitter') +
  geom_smooth()

…我们在图10中了解到消极推文有多受欢迎。

图10

[图片描述情感效价与转发关系]

有一簇情感中性的转发,两条积极的转发,和一大堆消极的转发。这种分析可以快速让你感受到攻击者集体的整体情绪,特别是那些操作安全较少、更渴望通过社交媒体获得关注的集体。 在《DFIR重新定义:利用R语言为调查人员提供更深层次的功能》的第二部分中,我们将通过情感分析和Twitter数据进一步探索这个场景,以及用于优先处理关键性的快速节俭树(决策树)。 如果你对这个系列的第一部分有任何问题,请通过@holisticinfosec或russ at holisticinfosec dot org告诉我。 cheers…直到下次。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计