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

本文探讨了如何使用R语言增强数字取证与事件响应能力,包括恶意Windows事件序列可视化、通过情感分析识别攻击者等技术方法,帮助安全团队更快速检测和遏制安全事件。

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

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

我一直在全国各地的各种会议上展示"DFIR重新定义:使用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上找到。

您是否被入侵了?

这个场景我在之前的文章中已经介绍过,我将向您推荐Toolsmith Release Advisory: Steph Locke的HIBPwned R包。

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

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

考虑从上述论文中检索的图1和图2。图1是文本序列描述,随后是图2中相关的Windows事件ID。

图1

图2

获取相关日志数据,解析并计数以便用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,博士,加州大学戴维斯分校:《玩转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)]告诉我们"Dangerous #WireX #Android #DDoS #Botnet Killed by #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日情感中立,大约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 设计