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

本文探讨如何利用R语言提升数字取证与事件响应(DFIR)能力,涵盖数据可视化、情感分析和恶意事件序列检测等实际技术应用,帮助安全分析师更高效地处理安全事件。

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

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

我一直在全国各地的各种会议场所展示《重新定义数字取证与事件响应:利用R语言为调查员提供更深入的功能》,并认为为读者提供详细信息会很有帮助。

基本前提是什么?事件响应者和调查员需要他们能获得的所有帮助。让我给你们看一些统计数据,来自Secure360.org的《事件响应的挑战》(2016年11月)。根据他们对安全专业人员的调查:

  • 38%的受访者报告投入事件响应的时间增加
  • 42%的受访者报告收集的事件响应数据量增加
  • 39%的受访者表示安全警报量增加

简而言之,根据Nathan Burke的说法,“公司雇佣足够多的员工来调查每月数万条警报在数学上是不可能的,也没有意义。”

2017年SANS事件响应调查(由Matt Bromiley在6月编制)提醒我们,“2016年发生了前所未有的事件,影响了网络安全行业,包括无数涉及多个国家攻击者的事件、动荡的选举和众多政府调查。“此外,“看似持续的泄露和数据转储带来了对恶意软件、隐私和政府越权的新担忧。”

最后,调查显示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

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

图3

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

结果旭日形的屏幕截图也作为图4跟随。

图4

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

某些对手或敌对社区使用社交媒体吗?是的

因此,社交媒体可以作为预警系统,如果不是实际传感器的话?是的

某些对手有时在社交媒体上如此不注意操作安全,以至于你实际上可以定位他们或与其他地理数据关联?是的

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

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

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

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

攻击者群体经常使用相关的标签和句柄,而想要"成为一部分"的追随者经常转发和使用标签。个别攻击者要么自由地暴露自己,要么经常通过Twitter变得容易识别或关联。因此,这里逐步分析可能有助于识别或更好地理解某些对手和对手群体动机的技术。出于明显的原因,我这里不使用实际的对手句柄。我反而使用了一个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

有一簇情感中立的转发,两条积极的转发,和一大堆消极的转发。这种类型的分析可以快速让你感受到攻击者集体的整体情绪,特别是那些操作安全较少、更渴望通过社交媒体获得关注的集体。

在《重新定义数字取证与事件响应:利用R语言为调查员提供更深入的功能》的第二部分中,我们将通过情感分析和Twitter数据进一步探索这个场景,以及用于优先处理关键性的快速节俭树(决策树)。

如果你对这个系列的第一部分有任何问题,请通过@holisticinfosec或russ at holisticinfosec dot org告诉我。

干杯…直到下次。

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