某病毒样本实战分析篇
本帖最后由 eee1132 于 2023-8-21 14:30 编辑【3c37827070f8d4eb726f59a0d4f2db0d8f1232ca】分析报告
本文档讲述关于病毒样本的恶意行为、功能代码、实现过程;
二、相关文件3c37827070f8d4eb726f59a0d4f2db0d8f1232ca : 病毒样本;2.vir:由病毒内存加载到自身进程(LoadPe) 文件不落地;
三、行为预览样本名称:3c37827070f8d4eb726f59a0d4f2db0d8f1232ca
分析软件:IDA/OD/火绒剑1.初步分析:
未加壳, 开发语言为C++程序入口代码
此特征为VS系列编译器 OEP代码特征
2.行为分析
发现运行之后直接结束进程了 没有其他行为猜测检测虚拟机运行或者虚拟机系统版本太老的问题更换系统之后可以明显看到有许多 注册表相关行为
服务器IP查询结果为国外的服务器
四、详细分析(动态调试+静态分析)
1.首先WinMain函数
分析结果 sub_40CD60()这个是申请 g_pBuf这块内存的里面包含修改内存属性等相关代码 也有很多无用代码 干扰分析经过OD动态跟踪调试之后得出无用代码段
经过动态跟踪之后发现基本上IF里面的代码都不会执行下面是上图中取名字的函数
2.之后是 g_pbuf() 这个是一段shellcode 无法静态分析 只能动态跟踪分析其中行为经过动态分析Shellcode 修复的导入表
调用了创建进程快照 估计接下来就是要枚举模块 因为导入表里面只有一个module32first
果然猜对了
之后分配了116327大小的内存
分配内存之后运行了一个call 发现分配的那块地方又被写上了shellcode
之后又是动态加载dll 拿导出函数 设置内存属性 结束进程等又跟踪了一会儿之后发现有意思的是 软件修改了00400000的内存属性 说明要往这个地址写入数据了
发现这个函数再往00400000写内存数据
经过后面的动态调试分析软件运用了loadPe技术 自己实现了类似于Createprocess 把第二个进程的代码拷贝到00400000 这样子就可以不用修复导入表 也不用释放文件运行第二个程序直接到末尾最终跳转到主模块
跳过去之后发现其中的秘密了 这是他的第二个exe 我用OD Dump下来 保存为2.exe
3.接下来就丢入IDA 静态分析了. 应该是其中核心代码在第二个 exe里面经过后续详细分析之后发现垃圾代码中 有时插入着用户代码
Nop掉大量代码之后还是有很多垃圾代码干扰分析
Sub_401000 这个函数是一个初始化用的 负责动态调用函数记录几个比较可能有嫌疑的API
0041D014734D57C0wininet.HttpSendRequestW
0041D01874B506C0shell32.ShellExecuteW0041D01C
76A59FC0jmp 到 KernelBa.FindFirstFileW
0041D03876A4DC40kernel32.LoadLibraryW
0041D05C76A4C420kernel32.OpenProcess
0041D0647633FCE0advapi32.RegCloseKey
0041D06C76A4CEB0kernel32.GetModuleFileNameW
0041D07476A59F40jmp 到 KernelBa.FindClose
0041D07876A508D0kernel32.Process32Next
0041D08476A5A260jmp 到 KernelBa.ReadFile
0041D09476A5B610kernel32.CreateToolhelp32Snapshot
0041D0987633F9F0advapi32.RegOpenKeyExW
0041D0A07633FAB0advapi32.RegEnumKeyExW
0041D0B4734B7810wininet.HttpOpenRequestW
0041D0CC7633F9D0advapi32.RegQueryValueExW
0041D0D076A4A210kernel32.GetProcAddress
0041D0E476A5A350jmp 到 KernelBa.WriteFile
0041D0EC75DA9550user32.ReleaseDC
0041D0F076A59F10jmp 到 KernelBa.DeleteFileW
0041D10076A59D40jmp 到 KernelBa.CreateMutexW
0041D10476A52FE0kernel32.Process32First
0041D11875D9F870user32.GetClientRect
0041D11C7633FAD0advapi32.OpenProcessToken
0041D120734AB3B0wininet.InternetOpenW
0041D12C75DAA440user32.EnumDisplayDevicesW
0041D14476A5A010jmp 到 KernelBa.FindNextFileW
0041D14876A5A100jmp 到 KernelBa.GetFileSize
0041D15C76A524E0kernel32.SetEnvironmentVariableW
0041D16476A59DC0jmp 到 KernelBa.OpenMutexW
0041D174763406A0advapi32.GetUserNameW
0041D18075DBDB20jmp 到 win32u.NtUserGetDC
大概看了一下 这里只是部分API 已经具备了 1.枚举文件(FindNextFileW)1. 枚举注册表(RegEnumKeyExW)3.连接网络服务器(HttpSendRequestW)2. 枚举进程(CreateToolhelp32Snapshot)----------------------------------------------------------------------------------------------------------------------初始化完毕后续 大概逻辑就是判断互斥体是否存在 不存在就创建一个 存在就结束程序
函数内部
发现一个超级可疑函数 具体行为如下图2
这里是病毒与网络服务器建立连接的相关代码
后续枚举文件的相关函数及实现代码 进行文件操作
注册表操作相关代码
接着分析后 又找到一处可疑的函数 这个函数在操作用户电脑的屏幕的位图数据分析到这里已经实锤了是一个远控病毒
五.分析结果本样本是一个远控型病毒(trojan家族),可以远控屏幕,操作文件,注册表等。
1、格式太乱了,换个行吧,图片也是单独换行,如果是从word复制过来,请到纯文本模式下粘贴编辑。
2、样本加密码上传,否则会导致论坛被误报。 小白表示很深奥 格式看起来有点头大
厉害的
加油! 大神分析得不错,让俺们见识了! 看起来好厉害欸 小白表示很深奥 感谢楼主分享,学习了。 看起来很厉害的样子 谢谢作者分享{:1_893:}