2019年爆出在国外发现的一款新型勒索病毒。
文件名:Anatova.exe
md5:2A0DA563F5B88C4D630AEFBCD212A35E
int __cdecl main(int argc, const char **argv, const char **envp)
{
// [COLLAPSED LOCAL DECLARATIONS. PRESS KEYPAD CTRL-"+" TO EXPAND]
...
inited = InitSystemLibFunctions_40568B(); // 病毒初始化操作,获取一系列后面使用的函数地址
if ( inited )
{
hEvent = Kenel32_CreateEventW_4083D8(0i64, 0i64, 0i64, &unk_40941E);
if ( hEvent )
{
Kernel32_WaitForSingleObject_4083E0(hEvent, 0x2710i64);// 这里等待目的是为了?
Kernel32_CloseHandle_408368(hEvent);
}
Kenel32_SetErrorMode_408370(0x8007i64);
hMutex = Kernel32_CreateMutexA_408378(0i64, 1i64, off_408000);
if ( !hMutex || (Error = Kernel32_GetLastError_408380(), Error != 0xB7) && Error != 5 )
{
inited = InitSystemCryptLibFunctions_406210();// 初始化系统加密库,获取和加密相关的函数地址
if ( inited )
{
inited = InitSystemCryptLibCode_40660F();// 获取系统加密编码库
if ( inited )
{
if ( (unsigned __int8)sub_40676C() ) // 取shell32!ShellExcuteW地址
{
inited = AmIWhiteListUser_40690A(); // 检查本地用户名是否在白名单中
if ( !inited )
{
inited = LocalUILanguageIsSupported_406AA2();// 检查本地系统的语言是否受支持
if ( !inited )
{
if ( byte_408230 ) // 样本中该处值恒为0,猜测是用作以后版本的扩展
sub_406BCF(); // 加载其他模块,以后版本可能会重新执行该分支代码
sub_40208B(1);
inited = ExportKey_402D19(); // 导出公钥
if ( inited )
{
inited = ImportKey_402717(); // 解密并导入公钥
if ( inited )
{
EncryptAllFile_405588(); // 加密所有文件
...
}
...
}
}
}
}
}
}
}
Clear_401C10();
...
return 0;
}
解密字符串,然后动态加载DLL,调用GetProcAddress取得函数地址。病毒常用手法,以对抗导入表检测;字符串加密,以对抗静态分析。
病毒会创建一个互斥体,保证只有一个病毒实体执行加密。
用户名也是加密的,解密后得到以下名单:
LaVirulera
tester
Tester
analyst
Analyst
lab
Lab
Malware
malware
如果本机用户名在名单中,勒索病毒则不会加密系统文件,而是退出程序。可能是为了检查当前环境是否为沙箱或者分析人员的分析测试主机。
如果系统使用的是这些语言中的一种,则病毒也不会加密系统文件,而是退出程序。使用这些语言的国家有叙利亚、埃及、摩洛哥、伊拉克和印度。
勒索病毒选择了Microsoft Enhanced Cryptographic Provider v1.0这个加密提供服务生成高强度的RSA公钥和私钥
后续勒索病毒随机生成RandomKey和RandomIv,对GlobalPrivateKey私钥进行加密。再解密攻击者预先设置的公钥CipherPubKey,用此公钥加密RandomKey和RandomIv,然后拼接RandomKey+RandomIv+加密后的GlobalPrivateKey得到最终展示在ReadMe文件里的秘钥。
递归遍历所有驱动器目录下的文件,包括网络共享目录。自动过滤一些系统目录,避免加密导致系统异常。
跳过的目录有
\Program Files
\Program Files (x86)
\Windows
\ProgramData
\Tor Browser
\Local Settings
\IETldCache
\Boot
\All Users
C:\$Recycle.Bin\*
加密前还会过滤一些文件后缀,以下后缀的文件不会被加密
.ani
.bat
.cab
.cmd
.cpl
.cur
.diagcab
.diagpkg
.dll
.drv
.exe
打开文件,读取文件数据,最大大小为0x100000字节,也就是1GB。判断文件加密标志,防止重复加密。
随机生成32字节Key和8字节Iv,用Key和Iv调用自定义的加密函数加密文件数据,然后用之前生成的GlobalPubKey公钥加密Key和Iv,随后将密文Key和Iv放在密文数据后一同写到文件。
最后根据算法特征可以推测是Sala20加密算法。这是一个流密码,也是对称加密算法。由于算法核心是单字节异或,所以加密解密共用一套算法。
https://www.freebuf.com/articles/network/195091.html