译者注

本文翻译自Fireeye https://www.fireeye.com/blog/threat-research/2018/11/obfuscated-command-line-detection-using-machine-learning.html

译者力求贴近文章原意,即使经过了逐句逐词地翻译校对,仍需在此做一些说明以便于读者对本文的学习与理解:

obfuscation detector "混淆检测器" 文中指识别混淆过的命令行的程序

Malicious actors 恶意的行动者,指黑客

living off the land "不落地" 指恶意软件不在磁盘存储

machine learning (ML) 机器学习

Pattern Matching 模式匹配

Neural Networks 神经网络

Convolutional Neural Network (CNN) 卷积神经网络

natural language processing 自然语言处理

Gradient Boosted Decision Tree 梯度增强的决策树

caret 即符号^

pipe symbols 管道符号 即|

discriminator 鉴别器

classifier 分类器

Gradient Boosted Tree,GBT 梯度增强树

机器学习效果的常用评测指标

F1值( F1-score)综合指标
准确率(Precision),简单说就是找得对
召回率(Recall),简单说就是找得全

前言

这篇博客文章介绍了一种机器学习(ML)方法,用于解决新出现的安全问题:在终端上检测混淆的Windows命令行调用。
我们首先介绍这种相对较新的威胁,然后讨论处理这些问题的传统办法。再说明解决此问题的机器学习方法,并指出ML如何极大地简化了强大的混淆检测器的开发和维护。最后,我们展示了使用2种不同的ML技术获得的结果,并比较了每种技术的优点。

介绍

恶意的行动者逐渐变得“不落地”,使用PowerShell和Windows Command Processor(cmd.exe)等系统内置的实用程序作为其感染工作流程的一部分,以尽量减少恶意软件被检测的机会,并绕过白名单防御策略。
新发布的混淆工具通过添加一个中接层(在可见的语法和命令的最终的行为之间),使得检测这类威胁变得更加困难。例如最近发布的两个混淆命令的工具:
Invoke-Obfuscation 自动混淆Powershell命令
Invoke-DOSfuscation 混淆Windows的cmd.exe命令行

(用于检测混淆的)传统的"模式匹配"和"基于规则的方法"难以开发和归纳,并且可能对防御者造成巨大的维护问题。我们将展示如何使用ML技术来解决这个问题。

"检测混淆过的命令行"是一种非常有用的技术,因为它为可能的恶意活动提供了强大的过滤器,减少了防御者必须查看的数据。虽然在野外有一些“合法”混淆的例子,但在绝大多数情况下,混淆的存在通常是一种恶意意图的信号。

背景

混淆技术被用来隐藏恶意软件的存在,已经有很长的历史了:包括恶意有效载荷的加密(从Cascade病毒开始)和字符串的混淆,到JavaScript混淆。

混淆的目的有两个:

  • 使防御类的软件越来越难找到:易于检测它们(可执行代码、字符串或脚本)的模式。
  • 使逆向工程师和分析师更难以破译并完全理解恶意软件正在做什么。

从这个意义上讲,命令行混淆不是一个新问题 - 只是混淆的目标(Windows命令处理器 cmd.exe)相对较新。最近发布的等工具如Invoke-Obfuscation(用于PowerShell)和Invoke-DOSfuscation(用于cmd.exe)已经证明了这些命令的灵活性,并且经过混淆的非常复杂的命令仍然可以有效运行。

如图所示,混淆过的命令行 与 非混淆的命令行,空间图中有两个轴:

  • 简单的(simple) -> 复杂的(complex)
  • 明文的(clear) -> 混淆的(obfuscated)

对于本次讨论中:

  • "简单的"("simple")表示简短且相对不太复杂,但仍然可以包含混淆;
点击收藏 | 0 关注 | 2
登录 后跟帖