首页
社区
课程
招聘
[原创]另类的感染
发表于: 2012-7-23 20:43 11151

[原创]另类的感染

2012-7-23 20:43
11151

基本信息

  报告名称:Trojan.Exprez分析                                                    
  作者:yuansunxue                                                            
  报告更新日期:  2012 - 07 -                                           
  样本发现日期:  2012 - 05 -                                          
  样本类型:                                                    
  样本文件大小/被感染文件变化长度:变化的 
  样本文件MD5 校验值:4bd959319d16b8da148762c1a5feabf8                             
  样本文件SHA1 校验值:bb77922763367aeba13a70749bcfb3aa1316551748135206a9f4cbfbfaef4afc                            
  壳信息:无                                                        
  可能受到威胁的系统:windows                              
  相关漏洞:                                                    
  已知检测名称:       Virus:Win32/Quervar.gen!B(微软)
      Trojan-Dropper.Win32.Dorifel.chl(卡巴)

简介

感染.doc .docx .exe 下载恶意软件执行

被感染系统及网络症状

文件系统变化

创建如下文件:
%application data%\Microsoft\[9个随机字符].exe

.doc .docx .exe

注册表变化

[将要/可能]被[创建/修改/删除]的[注册表键/键值]

网络症状

从如下网址下载配置文件:
http://vnk.sk/js/way.php
http://avtoclub.eu/admin/ajax/way.php
http://1nlreality.sk/admin/user/way.php

详细分析/功能介绍

当样本被运行后,会进行如下操作:

1、判断程序的后缀名 
如果是dll:

  a、创建文件%application data%\Microsoft\ntuser.ini
  b、感染.doc .docx .exe (原来的doc docx .exe用rc4加密放到overlay里面,且对于doc docx被拷贝成[原来的名字]xcod.scr 调试时是
[原来的名字].空格xcod.scr)
  c、下载配置文件

如果是exe:
  有参数 
  -launcher
    a、创建文件%application data%\Microsoft\ntuser.ini
    b、感染.doc .docx .exe
    c、下载配置文件
    d、如果taskmgr.exe 正在运行 则进程退出

  -update + 要更新的文件名.exe 且%application data%\Microsoft\下有exe
    a、创建%application data%\Microsoft\[9个随机字符].exe 拷贝其到更新的文件路径 (如果更新的文件正在运行,则
  先将其关掉)

  -update + 要更新的文件名非.exe 且%application data%\Microsoft\下有exe
    a、创建%application data%\Microsoft\[9个随机字符].exe 拷贝其到更新的文件路径 

  -update + 要更新的文件名 且%application data%\Microsoft\下没有exe
    什么也不做

  没有参数
    如果运行在64位下面:
      如果%application data%\Microsoft\下有exe 则重新创建一个%application data%\Microsoft\[9个随机字符].exe,并把原来的覆盖掉
      如果%application data%\Microsoft\下没有exe 则新创建一个%application data%\Microsoft\[9个随机字符].exe,
c:\Documents and Settings\SRE\Start Menu\Programs\Startup\[9个随机字符].lnk,lnk指向%application data%\Microsoft\[9个随机字符].exe -launcher

    运行在32位下面 
      如果是第一次运行则 创建%application data%\Microsoft\[9个随机字符].exe,Vista:
拷贝到%windir%\WindowsCodecs.dll xp:拷贝到%windir%\xpsp2res.dll
      如果不是第一次运行则    
        如果%application data%\Microsoft\下有exe 则重新创建一个%application data%\Microsoft\[9个随机字符].exe,并把原来的覆盖掉
        如果%application data%\Microsoft\下没有exe 则新创建一个%application data%\Microsoft\[9个随机字符].exe,
c:\Documents and Settings\SRE\Start Menu\Programs\Startup\[9个随机字符].lnk,lnk指向%application data%\Microsoft\[9个随机字符].exe -launcher

接下来:

如果是被感染的文件 则从overlay里rc4解密除原始文件,原始文件可能是doc docx .exe
是doc docx则用word打开
是.exe 则直接运行

如果是母体 退出

相关服务器信息分析

都是死的 或者是无效的

总结(比较有意思的地方)

1.感染exe,原来的exe用rc4加密放到overlay里面,比较有意思的地方在于病毒会保证感染后的图标和版本信息和原来的一样,主要
用到了如下的api来实现的:
EnumResourceNamesW
BeginUpdateResourceW
FindResourceW
LoadResource
SizeofResource
LockResource
UpdateResourceW
EndUpdateResourceW

2.感染.doc .docx,原来的doc docx用rc4加密放到overlay里面,保证感染后的恶意文件的图标和doc docx的图标一样,也是用上面的api实现,
因为.doc和.docx后缀的是不能运行的,这里用到了rlo(2e 20)进行了字符串反转。

原来的.doc .docx 被拷贝成[原来的名字][\x2e20]xcod.scr 看起来是:
[原来的名字]rcs.docx

其实不止是.doc .docx 病毒作者完全可以感染其他后缀的文件,比如:.txt .pdf 只要保证感染后的图标和后缀对应的图标一致即可 

 修复 ,写了个程序来修复下,纯属练手,只贴一些关键的,其他的看附件吧:

 针对doc .doc的特殊判断:

//如果是以.scr结尾 则继续判断是否是被感染的doc 或者docx文件
if (strcmp(&FindFileData.cFileName[strlen(FindFileData.cFileName) - 4],".scr") == 0)
  {
        
        //进一步判断是否是.docx
        if (memcmp(&FindFileData.cFileName[strlen(FindFileData.cFileName) - 8],"xcod",4) == 0)
        {  
            printf("found docx file %s \n\r",wsTmp);
            strcpy(wsDst,wsTmp);
            //生成原来正确的文件名
            wsDst[strlen(wsTmp) - 9] = 0;
            strcat(wsDst,".docx");
            
            // 变成unicode访问  因为有rlo控制符 所以要特殊处理
            strcpy(wsTest,wsTmp);
            wsTest[strlen(wsTmp) -9] = 0;
            dwNum = MultiByteToWideChar(CP_ACP,0,wsTest,-1,NULL,NULL);
            MultiByteToWideChar(CP_ACP,0,wsTest,-1,wsRightFile,dwNum);
            lstrcatW(wsRightFile,L"\x202e");
            wcscat(wsRightFile,L"xcod.scr");
            //HANDLE htest;
            //htest = CreateFileW(wsRightFile, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
            //htest = CreateFileW(L"d:\\test\\atomic_msg_text\x202excod.scr", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
            //生成正确的文件名的unicode形式
            dwNum = MultiByteToWideChar(CP_ACP,0,wsDst,-1,NULL,NULL);
            MultiByteToWideChar(CP_ACP,0,wsDst,-1,wsDstFile,dwNum);
            
            //移动到被感染前的正确的文件名
            test = MoveFileW(wsRightFile,wsDstFile);
            //test = GetLastError();
            //如果移动成功 则将正确的文件名赋给wsTmp 为后面修复的文件名
            if (test == 1)
            {
              strcpy(wsTmp,wsTest);
            }


        }
        //进一步判断是否是.doc
        else if(memcmp(&FindFileData.cFileName[strlen(FindFileData.cFileName) - 7],"cod",3) == 0)
        {
            printf("found doc file %s \n\r",wsTmp);
            strcpy(wsDst,wsTmp);

            wsDst[strlen(wsTmp) - 8] = 0;
            strcat(wsDst,".doc");
            strcpy(wsTest,wsTmp);
            wsTest[strlen(wsTmp) -8] = 0;
            
            dwNum = MultiByteToWideChar(CP_ACP,0,wsTest,-1,NULL,NULL);
            MultiByteToWideChar(CP_ACP,0,wsTest,-1,wsRightFile,dwNum);
            lstrcatW(wsRightFile,L"\x202e");
            wcscat(wsRightFile,L"cod.scr");
            //HANDLE htest;
            //htest = CreateFileW(wsRightFile, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
            //htest = CreateFileW(L"d:\\test\\atomic_msg_text\x202excod.scr", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
            dwNum = MultiByteToWideChar(CP_ACP,0,wsDst,-1,NULL,NULL);
            MultiByteToWideChar(CP_ACP,0,wsDst,-1,wsDstFile,dwNum);
            
            test = MoveFileW(wsRightFile,wsDstFile);
            if (test == 1)
            {
              strcpy(wsTmp,wsTest);
            }
        }
  }

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (8)
雪    币: 31
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
沙发。
消灭零回复。。
2012-7-24 08:31
0
雪    币: 341
活跃值: (143)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
俄罗斯的马儿。。么
2012-7-24 08:43
0
雪    币: 270
活跃值: (97)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
4
感染的时候直接把原有的资源毁了?
要是不把资源破坏的话图标和版本信息都相同吧
2012-7-24 09:39
0
雪    币: 1024
活跃值: (240)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
5
原来的干净文件被加密了放到overlay里面 所以要更新图标和版本信息 保证和干净的文件图标和版本信息一致
2012-7-24 15:12
0
雪    币: 1643
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感染的目的是什么呢?纯破坏?
2012-7-24 20:36
0
雪    币: 1024
活跃值: (240)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
7
猜测是下载更多的恶意文件  也有可能是玩玩而已
2012-7-24 20:46
0
雪    币: 148
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哈哈,熊猫烧香的变种吗
2013-4-3 00:20
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
mark。。
2014-3-17 12:48
0
游客
登录 | 注册 方可回帖
返回
//