标签:
前言
该样本存在很多年了,一直在杀,但是一直都没有彻底的死掉,还在不断的更新版本,不多的采取各种免杀手段去避开360安全卫士的查杀,该样本对用户的诱惑性也特别的强,该样本主要利用了用户的安全意识薄弱,诱导用户点击一些看似不会造成危害的快捷方式,在用户点击后,同时也会出现用户预期的效果,以蒙蔽用户,所以,希望广大用户在下载软件程序的时候,需要特别的注意,定期查杀是必不可少的,你不可能保证你没有中招,为了你自身隐私的安全以及你的财产安全养成良好的上网习惯以及定期扫描的习惯
一般用户的文件选项都没有显示隐藏的文件和文件夹这个选项,所以用户看到的往往是只有那一个快捷键方式,当我们选择了这个选项呢?你会看到一个被隐藏了的文件夹,这个文件夹里面就是用户噩梦的开始了
样本分析
快捷方式:
指向样本的主体程序,被命名为图片,以诱导用户点击该快捷方式,当你点击这个快捷方式的时候,的确会打开一个图片,让用户以为自己是打开了一个图片,其实不然,在用户以为这是打开了一个图片的时候,一些东西开始潜伏在用户电脑中了,接下来我们就来看是如何潜伏的
C:\WINDOWS\system32\cmd.exe /c 1\Inst.exe
inst.exe分析
0x01加载恶意dll
该样本在程序执行的时候,会首先获取到DBCsp_ABC.dll中的一些函数(这里贴出部分),为后面的做铺垫
00401002 |. 68 4CE34000 push Inst.0040E34C ; /FileName = "DBCsp_ABC.dll"
0x02解密config.dat
通过调用GetModuleFileName函数获取到当前加载的模块的目录,然后通过字符串拼接的方式获取到文件路径,获取文件中的内容,经过简单减法和异或解密出config.dat文件
10001043 57 push edi
10001044 68 04010000 push 0x104
10001049 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-0x108]
1000104F 50 push eax
10001050 6A 00 push 0x0
10001052 FF15 18700010 call dword ptr ds:[<&KERNEL32.GetModuleF>; kernel32.GetModuleFileNameA
10001058 8D8D F8FEFFFF lea ecx,dword ptr ss:[ebp-0x108]
1000105E 51 push ecx
1000105F FF15 18710010 call dword ptr ds:[<&SHLWAPI.PathRemoveF>; SHLWAPI.PathRemoveFileSpecA
10001065 68 D0880010 push DBToken_.100088D0 ; ASCII "\config.dat"
1000106A 8D95 F8FEFFFF lea edx,dword ptr ss:[ebp-0x108]
10001070 52 push edx
10001071 FF15 14700010 call dword ptr ds:[<&KERNEL32.lstrcatA>] ; kernel32.lstrcatA
解密代码
10001100 8A10 mov dl,byte ptr ds:[eax]
10001102 80F2 F1 xor dl,0xF1
10001105 80EA 0F sub dl,0xF
10001108 8810 mov byte ptr ds:[eax],dl
1000110A 40 inc eax
1000110B 4E dec esi
1000110C ^ 75 F2 jnz XDBToken_.10001100
0x03写入大量注册表、
写入的注册表和值,这些全是和中国农业一行相关的一些注册表,这些都是一些老版本留下来的一些信息,所以从这里可以知道,该样本活跃在很多方向,不仅仅是
0x04创建线程运行解密后的config.dat
首先判读当前运行的程序的名字是否已被重新命名为load.exe在被运行,如果是就执行dllhost.exe,然后退出进程
if ( StrStrA(&Filename, Srch) )
{
SHGetSpecialFolderPathA(0, &pszPath, 36, 0);
lstrcatA(&pszPath, aLimitDllhost_e);
WinExec(&pszPath, 0);
ExitProcess(0);
}
如果没有退出,继续向下的时候,会先判断当前的进程是否含有baidu.exe,如果有就会通过创建线程的形式,让dllhost.exe运行起来,并且通过调用ShellExecuteA函数打开http://www.baidu.com,然后会创建快照遍历进程看是否存在一个名叫360Tray.exe的进程(360Tray.exe是360安全卫士实时监控程序)
v1 = CreateToolhelp32Snapshot(2u, 0);
v2 = operator new(0x128u);
*(_DWORD *)v2 = 296;
if ( Process32First(v1, (LPPROCESSENTRY32)v2) )
{
if ( !strcmpi((const char *)v2 + 36, Str2) )
return *((_DWORD *)v2 + 2);
if ( Process32Next(v1, (LPPROCESSENTRY32)v2) )
{
while ( lstrcmpiA((LPCSTR)v2 + 36, Str2) )
{
if ( !Process32Next(v1, (LPPROCESSENTRY32)v2) )
return 0;
}
return *((_DWORD *)v2 + 2);
}
}
如果不存在这个进程样本就开始写注册表,指向load程序,使Load开机时能够自己启动,然后就会退出程序
00ABF010 80000001 |hKey = HKEY_CURRENT_USER
00ABF014 009503F0 |Subkey = "Software\Microsoft\Windows NT\CurrentVersion\Windows"
00ABF018 00000000 |Reserved = 0
00ABF01C 00000000 |Class = NULL
00ABF020 00000000 |Options = REG_OPTION_NON_VOLATILE
00ABF024 000F003F |Access = KEY_ALL_ACCESS
00ABF028 00000000 |pSecurity = NULL
00ABF02C 00ABF044 |pHandle = 00ABF044
00ABF030 00ABF04C \pDisposition = 00ABF04C
RegCreateKeyExA(HKEY_CURRENT_USER, SubKey, 0, 0, 0, 0xF003Fu, 0, &phkResult, &dwDisposition);
RegSetValueExA(phkResult, ValueName, 0, 1u, (const BYTE *)&String1, strlen(&String1) + 1);
RegCloseKey(phkResult);
接下来,样本都会通过查找config.dat解密后的PE文件中的资源文件,将找到的资源文件重名crossfire.exe保存在C:\Program Files\limit\crossfire.exe,然后创建进程crossfire.exe
result = FindResourceA(hModule, (LPCSTR)(unsigned __int16)a2, lpType);
v5 = result;
if ( result )
{
result = (HRSRC)LoadResource(hModule, result);
v6 = result;
if ( result )
{
result = (HRSRC)CreateFileA(lpFileName, 0x40000000u, 2u, 0, 2u, 0x80u, 0);
v7 = result;
if ( result )
{
v8 = SizeofResource(hModule, v5);
WriteFile(v7, v6, v8, &NumberOfBytesWritten, 0);
CloseHandle(v7);
result = (HRSRC)1;
}
}
}
然后判断当前进程的字符串中是否含有setup.exe字样,如果有,就解密io.dat,解密后的数据一卡就是一个图片格式
解密后,创建一个图片文件,并将刚刚的图片数据写入到新创建的图片中
然后调用ShellExecuteA函数将图片打开,以
0093ABD4 6A 01 push 0x1
0093ABD6 6A 00 push 0x0
0093ABD8 8D8424 80010000 lea eax,dword ptr ss:[esp+0x180]
0093ABDF 6A 00 push 0x0
0093ABE1 50 push eax
0093ABE2 68 44049500 push 0x950444 ; ASCII "open"
0093ABE7 6A 00 push 0x0
0093ABE9 FF15 C4529400 call dword ptr ds:[0x9452C4] ; SHELL32.ShellExecuteA
然后将BFGupdateM.dll重命名复制到1.jpg中,然后判断是否存在360Tray.exe程序
标签:
原文地址:http://www.cnblogs.com/kangxiaopao/p/4794836.html