前言
静态分析侧重的是恶意软件在文件形式中的表现,动态分析则在一个安全、受控的环境中运行恶意软件以查看其行为方式。通过动态分析,我们可以绕过常见的静态分析障碍,例如加壳、混淆,以更直观地了解给定恶意软件样本的目的。由于动态分析揭示了恶意软件样本的作用,因此我们可以根据它的动作与其他恶意软件样本进行比较。这些线索有助于我们根据共同的特征对恶意软件样本进行分类,甚至可以帮助我们识别由相同组织制作或者属于相同攻击活动的恶意软件样本。
最重要的是,动态分析对于构建基于机器学习的恶意软件检测器非常有用。可以通过观察动态分析期间的行为,来对检测器进行训练,以区分恶意和正常的二进制文件。
动态分析的局限
- 恶意软件作者了解CuckooBox和其他动态分析框架,并试图绕过它们,让它们的恶意软件在检测到自己在CuckooBox中运行时无法执行。CuckooBox的维护人员知道恶意软件的作者试图这样做,所以他们试图解决恶意软件绕过CuckooBox的尝试,以至于一些恶意软件样本不可避免地会检测到它们正在动态分析环境中运行,而当我们试图运行它们时却无法执行。
- 考虑恶意软件二进制文件在执行时回连到远程服务器并等待发出的命令的情况。在这种情况下,如果远程服务器不发送任何命令,或者不在运行,那么重要的恶意行为都不会显现出来。由于这些限制,动态分析并不是恶意软件分析的万能工具。事实上,专业的恶意软件分析师将动态和静态分析相集合,以达到可能的最佳结果。