首页
社区
课程
招聘
[原创]一个数据加密恶意样本分析
发表于: 2021-12-22 14:23 13816

[原创]一个数据加密恶意样本分析

2021-12-22 14:23
13816

    该样本为帖子[讨论]抠下来的,过火绒-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pediy.com看到的,当时闲的没事下载来看了看。样本运行后会对电脑文件加密,并且删除了卷影文件,防止通过磁盘工具恢复。

弹出网页

隐藏了所有的文件夹,并创建了新的文件夹,实则为快捷方式,右键属性可看到重定向。

                                             

                                

加密了文件,无法打开

                      

对文件进行了截断操作,加密。

手动检查启动项后发现,在启动中添加了一个html,该html为样本弹出的html。

                        

MD5 8f2050c9937f5f21b118c18dce3054fb

SHA1 0df872ae7916dd70e69b3a319ef57612e0ace739

SHA256 32e504c5664ee16d00149c1d8fe8184b872b07f9fad93ed3bce2bf11c1cc7c3a

                           

突破口:通过VirusTotal和微云沙盒分析的得知可能的操作有分配内存,写内存。在给WriteProcessMemory下断调试观察参数时发现当前区域为动态分配的内存,

                                                                          

                           

故其首先调用了VirtualAlloc,ida进行交叉引用可到

该函数内部进行了shellcode初始化及解密后进行调用

                                

在dbg里对VirtualAlloc下断后跟踪后可得到解密的内容

这里直接对shellcode进行dump。

因为是从EF0000开始dump,所以拖进ida分析的时候需要修复一下头部,从28开始。

                         

                

函数进来后会进行初始化字符串。

                

然后调用InitProcAddr获取LoadLibrary和GetProcAddress地址。InitProcAddr的实现也是从Ldr中去遍历

        

紧接着分别获取以下这些函数地址

GetModuleFileNameW

CreateFileW

VirtualAlloc

GetFileSize

ReadFile

CloseHandle

SHGetSpecialFolderPathW

CopyFileW

SetFileAttributesW

                            

随后获取了AppData和StartUp的路径,其中AppData进行了以下拼接

%AppData%\CSIDL_

%AppData%\CSIDL_X

然后检查当前运行的实例是否存在于其中一个目录中,如果不存在则自我复制后,将文件设置为隐藏状态(单独分析shellcode时路径不存在,猜测为主程序创建目录

中间存在一些对文件读写操作,经过分析后发现是为了给新的shellcode申请空间。

                                 

老规矩,直接弄出他的shellcode。

                    

以0,1和0,0不同参数执行了两次call

函数进来会进行字符串初始化,用于后面调用api

strcpy(str_kernel32, "kernel32.dll");

strcpy(str_ntdll, "ntdll.dll");

strcpy(str_shell32, "shell32.dll");

strcpy(str_advapi32, "advapi32.dll");

strcpy(str_psapi, "psapi.dll");

strcpy(str_GetProcAddress, "GetProcAddress");

strcpy(str_GetModuleHandleA, "GetModuleHandleA");

strcpy(str_GetModuleFileNameA, "GetModuleFileNameA");

strcpy(str_GetModuleFileNameW, "GetModuleFileNameW");

strcpy(str_CreateProcessA, "CreateProcessA");

strcpy(str_CreateProcessW, "CreateProcessW");

strcpy(str_CreateToolhelp32Snapshot, "CreateToolhelp32Snapshot");

strcpy(str_Process32First, "Process32First");

strcpy(str_Process32Next, "Process32Next");

strcpy(str_Module32First, "Module32First");

strcpy(str_Module32Next, "Module32Next");

strcpy(str_CloseHandle, "CloseHandle");

strcpy(str_GetCurrentProcess, "GetCurrentProcess");

strcpy(str_GlobalAlloc, "GlobalAlloc");

strcpy(str_OpenProcessToken, "OpenProcessToken");

strcpy(str_GetTokenInformation, "GetTokenInformation");

strcpy(str_AllocateAndInitializeSid, "AllocateAndInitializeSid");

strcpy(str_EqualSid, "EqualSid");

strcpy(str_LookupAccountSidA, "LookupAccountSidA");

strcpy(str_OpenMutexA, "OpenMutexA");

strcpy(str_CreateMutexA, "CreateMutexA");

strcpy(str_CreateFileA, "CreateFileA");

strcpy(str_CreateFileW, "CreateFileW");

strcpy(str_GetFileSize, "GetFileSize");

strcpy(str_ReadFile, "ReadFile");

strcpy(str_GetSystemDirectoryA, "GetSystemDirectoryA");

strcpy(str_GetSystemDirectoryW, "GetSystemDirectoryW");

strcpy(str_SetFileAttributesW, "SetFileAttributesW");

strcpy(str_MoveFileExW, "MoveFileExW");

strcpy(str_SHGetSpecialFolderPathA, "SHGetSpecialFolderPathA");

strcpy(str_SHGetSpecialFolderPathW, "SHGetSpecialFolderPathW");

strcpy(str_RegOpenKeyExA, "RegOpenKeyExA");

strcpy(str_RegOpenKeyExW, "RegOpenKeyExW");


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2021-12-22 14:27 被PlaneJun编辑 ,原因:
收藏
免费 8
支持
分享
最新回复 (4)
雪    币: 4134
活跃值: (5847)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2
真是小母牛不下崽
2021-12-22 16:33
0
雪    币: 1484
活跃值: (14662)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
3
真是小刀剌屁股
2021-12-22 17:07
0
雪    币: 376
活跃值: (2135)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
就是我发的,目前解决了,只能说大佬NB!
2021-12-24 14:56
1
雪    币: 401
活跃值: (4116)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
真是小刀剌屁股
2021-12-25 15:49
0
游客
登录 | 注册 方可回帖
返回
//