恶意样本分析-Lab16-01 反调试1分析

恶意样本分析-Lab16-01 反调试1分析

这个样本是随书《恶意代码分析实战》第十六章的样本,主要用来熟悉反调试的一些手段,这个算是样本分析中需要掌握的基础知识。这篇笔记会包含了静态分析和静态分析。基本要求

恶意样本分析-Lab16-01 反调试1分析

在分析这个样本之前可以先看一下恶意样本分析–16Windows中一些常用的反调试记录

静态分析

静态分析就不做PE信息的分析,直接走IDA分析,这个过程尽量不走伪代码分析,分析汇编指令,便于在x64dbg上分析时快速定位。

由于已经在第九章分析了,因此这里关注到反调试手段。首先来到入口处看到关键指令

恶意样本分析-Lab16-01 反调试1分析

很明显这个两个检测都是PEB结构的变量的检测,如果都不为0,则会调用函数sub_401000删除样本。

动态调试分析

使用x64dbg加载来到入口位置(这里注意如果程序放行就会停止同时样本被删除),

  • 检测BeingDebugged

第一个检测返回状态值不为0,为1

恶意样本分析-Lab16-01 反调试1分析

手动修改结果eax=0

恶意样本分析-Lab16-01 反调试1分析

修改完之后就手动过掉这个检测。

恶意样本分析-Lab16-01 反调试1分析

  • 测ProcessHeap

    双击ZF就从0变为1

恶意样本分析-Lab16-01 反调试1分析

这样就过掉这个检测。

  • 检测NtProcessFlag

    这里会检测NtProcessFlag的值是否为0x70

恶意样本分析-Lab16-01 反调试1分析

正常情况的是0,如果被调试可以看到这个状态值是0x70

恶意样本分析-Lab16-01 反调试1分析
这里同样清掉这个值为0即可。

恶意样本分析-Lab16-01 反调试1分析
这样就过掉所有的检测了

恶意样本分析-Lab16-01 反调试1分析
剩下的就是之前分析的不再继续分析了。