调试,虚拟环境检测试的一些新想法

来源:互联网 发布:深入理解java反射机制 编辑:程序博客网 时间:2024/05/19 12:40

前段时间检验了一下公开的反调试方法,发现其中相当多反调试方法已经失效面对新系统(win7 64bit)和OD插件版。

新的一些主意:

利用调试导致的是时间差

一般调试器启动调试程序会默认断在程序前系统领空,在程序开始处进行查询启动时间,如果你发现你的程序被卡住了一段时间那一定发生了什么。

虚拟机
▲VirtualBox是一款由Google主导开发的虚拟机程序.分开源版和闭源版.

虚拟机环境

虚拟机环境的检查总体可以归为两种:

  • 寻找模拟不到位的特征:效率,特殊指令等。
  • 寻找你虚拟机厂商在虚拟机留下的特征:特殊支持,通讯等。

先简单梳理一下上面两种辨别虚拟机途径:

  • 效率问题与模拟漏洞:我们知道由于虚拟化执行对程序的最大改变就是代码效率变低百倍,尽管Intel-V等技术让效率缩短的不是很太明显。之前暴出VMWare虚拟机对于某些特殊指令如in,out在保护模式下的处理和实际机器不同。延时攻击也是一个办法.
    一种新的发现是关于模拟代码操作时使用了堆而不是栈的同时并没有合理检测栈的大小,该行为导致递归超出栈范围也不会出错
  • 特殊支持和通讯:为了方便文件传输和控制虚拟机一般会留下某些接口,此外官方独特的硬件配置和驱动特征是不错的检测方法.要替换掉所有难度不低.

这里写图片描述

上图截取至VMare模拟下的XP OS设备管理器,可以看到很多虚拟机特征,系统设备中还有相当多

行为判断-一种新想法

新的想法是通过:行为来判断虚拟机。
我们先对虚拟机按照有无自动化测试进行一下分类:

  • 自动虚拟机
  • 有人参与的虚拟环境

前者一般是用于批量模拟分析程序行为的模拟器或者自动化分析脚本。

  • “活体”检测
    比如脚本一般会直接发送按钮消息而没有移动的过程,当然如果你实时检测桌面画面的话更有助于这种判断。更多的行为等着你挖掘。

对于后者,除非你的程序是crackme,否者恭喜你中彩了。被人调试往往并不是一件愉快的事情,而在虚拟中执行往往是因为对方对你感兴趣。
以下选择或许会给你灵感:

  • 猜迷-基于云危险模型的分析。
    时光倒流一模一样的环境不都是网吧
    如此简陋你敢信
    静观的艺术:基于用户习惯的分级策略,在没有形成习惯分析前要把此地当作最危险的地方。

一个由恶意挖矿软件看看影音提供的名单如下:

//敏感窗口标题Microsoft Visual;HTTPAnalyzer;WinDBG;OllyDebug;fiddler;SmartSniff;\t\t\t\t\t\t\t\tSpy++;Spy;ATL/MFC;任务管理器;DebugView;Process    Explorer;File Monitor;RegistryMonitor;Wireshark;OllyICE;OllyDBG;Sysinternals//敏感进程fiddler.exe;windbg.exe;devenv.exe;taskmgr.exe;wireshark.exe;\t\t\t\t\t\t\t\t\thttpanalyzer.exe;smsniff.exe;filemon.exe;regmon.exe;procmon.exe;ollydbg.exe;softice.exe;cis.exe;\t\t\t\t\t\t\t\t\ttasklist.exe;procexp.exe;ollyice.exe;processspy.exe;spyxx.exe;winspy.exe;cv.exe"
  • 怪癖
    鼠标指针瞬间跳动意味着什么?

2016年9月17日星期六 1:57
更新于
2016年9月22日星期四 1:13

1 0
原创粉丝点击