好挫的感染,非得附带个.mdf才能正常运行,而且图标也变得这么粗超,哎,我说能不能伪装的好点,别不被这么容易发现中毒啊。。。
修复也不难,简单的分析下(其他的病毒行为懒得分析):
1、判断是否存在mdf文件,若无则无法正常运行原来的文件了。.text:00402987 mov eax, [eax]
.text:00402989 lea ecx, [ebp+var_238]
.text:0040298F push ecx
.text:00402990 push eax
.text:00402991 call ?GetStatus@CFile@@SGHPBDAAUCFileStatus@@@Z ; CFile::GetStatus(char const
*,CFileStatus &)
.text:00402996 lea ecx, [ebp+var_20]
.text:00402999 mov esi, eax
.text:0040299B call ??1CString@@QAE@XZ ; CString::~CString(void)
.text:004029A0 lea ecx, [ebp+var_1C]
.text:004029A3 call ??1CString@@QAE@XZ ; CString::~CString(void)
.text:004029A8 cmp esi, ebx ; 比较本地目录下是否存在同名文件.mdf文件
.text:004029AA jz loc_402BB4 ; 不存在则跳走
.text:004029B0 movzx dx, byte_40502D
.text:004029B8 movzx ax, byte_405043
.text:004029C0 movzx cx, byte_405056
2、复制本身文件到同目录下,命名为文件名.exe.lnk.text:00402A2E mov ecx, [ebp+Filename]
.text:00402A31 push 1 ; bFailIfExists
.text:00402A33 lea edx, [ebp+ExistingFileName]
.text:00402A39 push ecx ; lpNewFileName
.text:00402A3A push edx ; lpExistingFileName
.text:00402A3B call ds:CopyFileA
3、解密过程:把mdf文件里的字符与0x40个密匙挨个XOR解密,密匙以0x40为周期。解密后的文件即为原始的PE头。.text:00402B3C loc_402B3C: ; CODE XREF: sub_402880+2D7j
.text:00402B3C inc ecx
.text:00402B3D cmp ecx, 40h
.text:00402B40 jle short loc_402B44
.text:00402B42 xor ecx, ecx
.text:00402B44
.text:00402B44 loc_402B44: ; CODE XREF: sub_402880+2C0j
.text:00402B44 mov dl, byte_405020[ecx]
.text:00402B4A xor [ebp+eax+DstBuf], dl
.text:00402B51 inc eax
.text:00402B52 cmp eax, 8000h
.text:00402B57 jl short loc_402B3C
转化为C为: v5 = -1;
v4 = 0;
do
{
++v5;
if ( v5 > 64 )
v5 = 0;
DstBuf[v4++] ^= byte_405020[v5];
}
while ( v4 < 32768 );
4、把解密出来的PE信息覆盖原来文件的前0x8000个字节,覆盖后即为正常的可执行的文件。修复成功。.text:00402B60 push ebx ; File
.text:00402B61 push 8000h ; Count
.text:00402B66 lea eax, [ebp+DstBuf]
.text:00402B6C push 1 ; Size
.text:00402B6E push eax ; Str
.text:00402B6F call ds:fwrite
5、执行原来的文件:.text:00402B78 mov ecx, [ebp+Filename]
.text:00402B7B add esp, 14h
.text:00402B7E push 1 ; uCmdShow
.text:00402B80 push ecx ; lpCmdLine
.text:00402B81 call ds:WinExec
7、设置文件属性为系统隐藏.text:00402B87 mov edx, [ebp+Filename]
.text:00402B8A push 4 ; dwFlags
.text:00402B8C push 0 ; lpNewFileName
.text:00402B8E push edx ; lpExistingFileName
.text:00402B8F call ds:MoveFileExA
.text:00402B95 cmp ebx, 18Ah
.text:00402B9B nop
.text:00402B9C mov eax, [ebp+Filename]
.text:00402B9F push 6 ; dwFileAttributes
.text:00402BA1 push eax ; lpFileName
.text:00402BA2 call ds:SetFileAttributesA
以上就是修复的过程了,按照上面的过程了,就能修复了。
如下的工作就是去下载文件并执行了,和普通的下载者没什么区别了。也就不继续分析了。 |