病毒分析技巧

讨论病毒调试技术



病毒调试技术跟一般的解密或者逆向分析过程类似,但是由于病毒独有的破坏性,因此决定了调试时候的一些特殊特。

如果你有一台专门的机器供你虐待,那你可以略过本文不提;

如果你自认为可以用VM对付各种病毒,你也可以略过本文不提,直到有一天某xx病毒检测VM并对此做出反应;

下面仅仅讨论一般的病毒调试时候需要注意的事项。

1、
  如果仅仅出于学习目的,可以找一些经典的病毒进行分析,既可以学习东西,也可以在万一分析不出来的时候请出AV将其杀掉;

2、
  将病毒文件备份,防止AV不甚将正在分析的样本处理掉;

3、
  修改病毒文件后缀名为不可执行文件后缀,比如 *.a之类,可以防止不甚将病毒运行,也可以在一定程度上防止AV误处理;

4、
  建议采用IDA等先对病毒文件进行分析,看看是文件感染病毒或者是网络传播病毒。有些病毒进行了处理,可以防止IDA分析,对于这种情况,不妨采用下面的方法:

  用IDA载入文件的时候采用Binary File模式;
  修正loading offset参数;
  载入以后跳转到入口点,按 C 键进行分析。

5、
  对于加壳的文件,尽量采用静态脱壳,如果动态脱,可以手工。当心动态脱壳机将病毒运行;

6、
  动态调试时候小心谨慎,防止不甚将病毒运行,为此可以在调试时候对一些敏感API函数下断点,比如CreateFile,send函数等,这样即使不甚将病毒运行,也可以防止病毒修改本地文件,或者进行网络传播;

7、
  初次分析时候以分析病毒功能为主,对数据的细节处理可以暂且不管。比如说注意病毒对注册表、文件、网络的操作,从而大体知道病毒感染、传播、破坏功能;

8、
  并非所有病毒都用asm编写,很多病毒采用MFC或者ATL或者其他进行编写,因此病毒里面很多call对我们来说是冗余无用的。而新手不明故里,往往见call就进,这样反而浪费精力。比如下面这个病毒,载入后停在入口点:

00415478 P2P-Wo>/$ 55           push ebp
        ...............
0041549A     │. 57           push edi
0041549B     │. 8965 E8         mov dword ptr ss:[ebp-18],esp
0041549E     │. FF15 D4B04200     call dword ptr ds:[<&KERNEL32.GetVersion>]     ; KERNEL32.GetVersion
        ...............
004154CF     │. 6A 01         push 1
004154D1     │. E8 FD2D0000     call P2P-Worm.004182D3
004154D6     │. 59           pop ecx
        ...............
004154DD     │. E8 C3000000     call P2P-Worm.004155A5
004154E2     │. 59           pop ecx
004154E3     │> E8 64150000     call P2P-Worm.00416A4C
004154E8     │. 85C0           test eax,eax
004154EA     │. 75 08         jnz short P2P-Worm.004154F4
004154EC     │. 6A 10         push 10
004154EE     │. E8 B2000000     call P2P-Worm.004155A5
        ...............
004154F9     │. E8 12560000     call P2P-Worm.0041AB10
004154FE     │. FF15 64B14200     call dword ptr ds:[<&KERNEL32.GetCommandLineA>] ; [GetCommandLineA

  从GetVersion到GetCommandLineA函数中间的n多xxx函数,对我们来说是关系不大的,基本都是进行初始化,因此没必要跟进去。对付这些就是直接执行到GetCommandLineA,因此有些病毒需要获取commandline,如果没有这个,可以拦截在GetModuleHandle或者别的常用初始化函数。

9、
  该备份的备份,做好偷鸡不成蚀把米的准备。

上面只是针对常用的情况,如有不对请酌情处理。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值