值、消息、分布、幂集、线程
本课程介绍了以下分析模式:异常值、错误信息、错误分布、错误幂集和错误线程。
异常值
在准备关于恶意软件行为的演示文稿时,我们发现当前的日志分析模式库中缺少一个关键模式。通常情况下,我们在软件追踪或日志中会遇到一些异常或意料之外的值,例如超出预期范围的网络地址,这会触发进一步的调查。消息结构可能保持相同的消息不变性,但可变部分可能包含如下图所示的异常值:
需要注意的是,我们还存在一种更通用的“显著事件”模式,它同样涵盖没有可变部分的消息以及可疑的日志条目。
错误消息
在进行加速 Windows 软件追踪分析训练的过程中,尽管这些模式看似简单,但我们仍发现了一些缺失的关键模式。其中之一被称为错误消息。在此模式中,错误以显式方式报告(如“操作失败”),或以隐式方式通过操作状态结果(如 0xC00000XX)体现。有时,追踪消息设计者会明确指出某个数值仅用于信息参考,应被忽略。某些错误消息可能包含与当前软件事件无关的信息,即所谓的误报错误。一些追踪架构和工具(如 Citrix CDF)为错误设置了专门的消息信息类别,我们可以按错误类别过滤,从而获取关联线程。将某条追踪语句归类为错误类别,由编写代码的工程师自行决定。信息类别消息也可能包含隐式错误,例如最后错误记录和返回状态报告。
错误分布
有时我们需要关注错误分布——例如,同一错误在整个软件日志空间中的分布情况,或同一软件日志中不同区域出现的不同错误消息(提供有效的分区依据)。
错误幂集
典型的软件追踪日志可能包含多个带有不同错误码和不同异常名称的错误消息,并附带异常堆栈跟踪。在问题数据库中单独搜索某个错误码或异常名称可能会得到大量匹配项;而同时搜索所有项目却可能一无所获。因此,我们可以构建所有错误码和异常名称的幂集(即所有子集的集合),并根据问题描述,结合特定的追踪视角,如用例轨迹、模式片段、追踪焦点、前景组件、关联线程、活动线程,以及简单的活动区域和消息集合,进行分析推理和搜索。下图展示了具有四个错误消息的追踪中,其中两个消息具有相同错误码的错误幂集分析模式。
错误线程
当我们在日志文件中看到一条错误消息或异常堆栈跟踪时,可能希望探索导致该错误的同一活动线程中的一系列消息。这种消息集合类似于内存分析中的典型模式,如执行残留(部分堆栈跟踪未被覆盖)和堆栈跟踪(错误消息位于堆栈顶部帧)。