bootst.exe - ac90cc56404ff775fecc0b424f0cbdd0
基本信息
File Name | File Size | File Type | MD5 |
---|---|---|---|
bootst.exe | 146,432 Byte | ac90cc56404ff775fecc0b424f0cbdd0 |
载入IDA时,可看见样本的PDB路径:
C:\Users\F14eE7E\source\HW\loaders\x64\Release\launcher.pdb
从PDB路径可发现可能与HW有关
动态行为
在C:\Users\Public下写入一个文件$WINRE_BACKUP_DATA
链接C2地址:204.139.220.35.bc.googleusercontent.com:10002
样本分析
样本为64位PE文件,无壳,由C\C++编译链接
获取系统信息、获取内存使用情况,使用DeviceIoControl获取第一物理磁盘的参数信息(介质类型,柱面数,每个柱面的磁道,每个磁道的扇区和每个扇区的字节)
从样本的资源中读取内容,资源名“DD”
创建文件”C:\Users\Public\$WINRE_BACKUP_DATA”
将从资源读取出的内容保存到新创建的文件”C:\Users\Public\$WINRE_BACKUP_DATA”
调用ShellExecuteW执行释放出的文件C:\Users\Public\$WINRE_BACKUP_DATA
因释放出的文件结构问题,直接调用ShellExecuteW执行失败
申请两块内存,将释放出的文件读取0x800字节到内存中
读取到内存中通过解密,读取出Shellcode
申请内存,将Shellcode拷贝到内存中,修改内存属性,创建新线程执行代码
Shellcode
通过PEB动态获取函数地址
解密出ShellCode中IP地址:35.220.139.204
发送Http请求到C2地址
再次申请内存空间
从C2地址读取文件,写入到申请的内存中,读取多次,依次写入内存中
动态修复第二段Shellcode,解密前:
解密后:
跳转到刚解密出的内容执行,解密出的文件是一个不完整的DLL文件
通过HASH动态获取API地址,获取到GetProcAddress地址后大量获取API地址
再次申请一块内存,在内存中反射加载DLL文件执行代码
释放掉前面申请的内存,清除前阶段Shellcode痕迹
获取目标主机的IP地址、计算机名、用户名、当前进程名
再次从内存中解密出C2地址:35.220.139.204
尝试访问C2地址的一个”/jquery-3.3.1.min.js”
根据C2地址的.js文档内容执行命令,根据木马特征来看,为Cobalt Strike生成的木马
总结
样本为一个64位exe文件,运行后从资源中取出数据,进行解密后生成一段Shellcode,在内存中加载执行Shellcode,动态获取大量API,解密出一个PE头损坏的DLL文件,进行动态修补后在内存中反射加载执行DLL,在获取后续内容时,C2中的对应url已经404,未能获取到后续内容。通过木马特征,可分析出木马为Cobalt Strike一键生成的木马。