Die查壳, 发现没有加壳, 是使用VC++编写的64位程序
丢入VT用杀毒引擎和沙箱扫, 爆红基本可以确定其属于恶意软件:
查看其PE节区发现其包含了资源节, 内部可能藏有隐藏模块
查看一下这个程序导入的dll中发现了如下特别的地方
并且其还使用了LoadLibrary和GetProcAddress这两个API, 很可能有动态获取API的函数地址来达到规避杀软查杀的目的。
查看网络方面:
查看一下其下载或释放的一些可疑文件:
将其通过沙箱分析, 发现其释放了如下:
- 一个可执行文件
- 一个脚本文件
- 一个文本文件
- 一个压缩zip文件
- 一个快捷方式
- 通过HTTP方式与外界4个可能的IP进行通信
沙箱分析其执行行为得出: - 执行了bat批处理文件, 很可能是cba.bat
- 执行了vbs脚本, 很可能是dx.vbs
- 并且发现一个定时器可能会定时执行脚本
沙箱分析其持久化行为得出: - 设置注册表Run键实现自启动
- 将exe放入Startup目录实现自启动
沙箱分析其提权行为得出: - 存在可能的注入行为, 因为其在探测explorer.exe
沙箱分析其对抗行为得出: - 可能存在的加壳行为, 查壳工具未查出
- 利用taskkill命令这个dos命令来杀死进程
- 可能有键盘记录的行为
- 利用HTTP协议从服务器上下载文件到本地
看一些主要的释放文件:
沙箱分析出来的进程树如下:
可以确定该程序一定有下载行为, 但在导入dll中并没有找到相对应的库比如: wininet.dll或者ws2_32.dll之类的,猜测其可能是动态加载了, 由于该软件主要通过HTTP来下载, 而该方式最快捷的方式属于URLDownloadToFile, 在动态调试中查找该函数字符串, 果然找到并进而确定其地址
确定地址后转到该处查看, 果然发现了利用HTTP协议进行下载, 其加载了urlmon.dll并获取URLDownloadToFile
获取该处后不断对调用栈进行回溯, 发现了主要的函数, 并将其命名为MalwareMainFunc, 下面对MalwareMainFunc进行分析
其首先获取了系统临时目录:
接着拼搭好并遍历临时文件目录下的文件
其计算了临时目录下的文件数并与5做对比, 如果临时文件数小于5则会跳过退出过程。具体原因未知
调用GetTickCount记录系统启动时间, 经对比如果小于1小时则退出过程, 如果超过1小时则进入主要功能函数DownloadInItMain。
DownloadInItMain在栈上存放了一段乱码:
并在内部使用解密算法对其进行解密:
解密完后是如下字符串:
利用上面生成的解密内容生成一串字符串
调用CreateDirectory生成一个将该字符串作为目录名的目录
可以看到在C:\Users\Public\Pictures目录下创建了一个目录
目录的名称是随机的
接着在栈上又放了一些字符串
接着对这段字符串进行了加密, 生成的字符串有点像Base64加密:
接着将另一端字符串解密成url的格式字符串
接着利用base64解密一段加密字符串:
总之上面的目的就是为了进行将一些重要敏感的字符串进行解密获取, 最终获取了如下url
接着拼搭处2.cnd的绝对路径
接着利用URLDownloadToFile从http://45.204.83.138:99/index.php?id=@g中下载了配置文件2.cnd到新创建的目录下
由于服务器问题, 所以发现下载失败了
接着会调用Read2_cndConfigFileWrapper函数来读取2.cnd配置文件
看一下Read2_cndConfigFileWrapper内部, 其在创建的目录中尝试打开并访问2.cnd文件并挪动文件指针, 但由于该文件不存在所以失败
这里继续分析内部代码可以发现代码不断尝试读取2.cnd
其中ReadOpers中包含了大量SetFilePointer和ReadFile操作, 不断进行读取。可以判断出2.cnd是一个配置文件
第一次读取失败后还会再次读取
接着拼搭出一个如下图所示的exe绝对文件路径
接着用Speedld.exe对后面的名字ugkCyYjV.exe进行替换, 这里发现Speedld.exe并没有通过URLDownloadToFile下载,构造Speedld.exe的绝对路径:
利用MoveFileEx来把Speedld.exe该名称重命名上一步拼成的名字
发现改名失败, 因为不存在该文件
接着再次尝试改名:
如果这里调用MoveFileEx失败改名失败则会进入无限循环不断改名, 直到改名成功为止, 改名成功后会调用ShellExecute将该进程打开,并以隐藏方式执行。
最后其通过调用TerminateProcess将自身进程结束
(完)