Vidar 窃密木马分析报告
概述
Vidar
是一个典型的窃密木马,具备窃密木马的所有典型功能。在黑市/论坛中,这款窃密木马以250-700美元的价格进行出售。本文将对其34.7版本进行深入分析。
样本信息
样本家族 | Vidar |
---|---|
样本类型 | 窃密木马 |
样本大小 | 470 KB (481,792 字节) |
MD5 | 3701296fa0d87df07eb1346956c82251 |
详细分析
外层混淆
该样本共进行了3层混淆,分别为:
- 第一层:开辟内存空间,将
data
段中的数据解密并拷贝到该内存空间中,然后跳转执行,代码如图:
- 第二层:第一段Shellcode依旧是开辟内存空间,然后将数据进行解密并拷贝,最终跳转执行,如图:
- 第三层:第二段Shellcode,先从内存空间中解密出PE,如图:
然后将解密出来的PE(窃密母体)在当前进程的内存空间中
展开,最终跳转到该PE的入口点继续执行,代码如图:
窃密母体
去除混淆后,对窃密母体文件进行详细分析。
检测Defender仿真引擎
窃密母体首先通过函数GetComputerNameA
和函数GetUserNameA
获取受害主机名和用户名,并分别与HAL9TH
和JohnDoe
(Windows Defender仿真引擎中的主机名和用户名)进行比较,当比较结果一致时,便不执行窃密逻辑,从而可以绕过Defender仿真引擎的检测,如图:
Defender仿真引擎相关文章介绍:
解密字符串
在进入主函数后,首先会对大量的字符串进行解密(这些字符串后续步骤中会用到),如图:
经过解密后的字符串内容,其中包含一些SQL语句和一些路径信息,如图:
文件夹生成
生成11位随机字符串,然后创建C:\ProgramData\Randstr\files
目录,并将当前进程的工作目录切换为C:\ProgramData\Randstr
,如图:
后续窃取到的文件将保存在C:\ProgramData\Randstr\files
目录下。完成窃取后的目录下文件,如图:
与C&C通信并下载所需的库文件
从rdata段取出硬编码的C&C地址reliabledc.com
,然后再向C&Creliabledc.com/744
发送内容为1BEF0A57BE110FD467A(推测为该版本的某种标记)的POST请求,如图:
通讯内容,如图:
其中C&C 返回的结果是经过压缩的配置参数
,经解析后如图:
根据返回的配置参数
,可设置不同的执行逻辑。比如当前面10个1的值中第8位为1时,便会执行屏幕截图逻辑。通过这种方式攻击者就可以通过修改配置参数来选择执行哪些逻辑,窃取哪些数据。如图:
然后再向C&C发起Get方法请求,下载所需库文件到C:\Program\目录下,如图:
其中下载下来的库文件都为白文件,包含部分浏览器的库文件和CV++运行时库,如下表:
freebl3.dll | Mozilla浏览器相关组件 |
---|---|
mozglue.dll | Mozilla浏览器相关组件 |
softokn3.dll | Mozilla浏览器相关组件 |
nss3.dll | Mozilla浏览器相关组件 |
vcruntime140.dll | VC++ 运行时库文件 |
msvcp140.dll | VC++ 运行时库文件 |
窃取浏览器信息
通过读取浏览器SQLite数据库、注册表信息以及.Cookie文件等信息,来窃取浏览器(Edge、Firefox、Google、IE)的历史访问记录、历史下载记录、用户名密码以及Cookie等信息。如图:
被窃取的浏览器的历史访问记录,Cookie以及用户名密码信息,如图:
窃取主机信息
通过访问ip-api.com
获取主机IP地址信息,再通过各WindowsAPI获取
获取如MAC地址,处理器信息等主机相关信息,并将窃取到的信息保存在information.txt
文件中。其中值得注意的是,在写入的内容中还包含Vidar的版本信息,该样本的版本号为
34.7`,如图:
infomation.txt
中保存的被窃取的信息,如图:
窃取特定文件
遍历全盘,窃取指定目录下的特定文件,并将其保存再Randstr\files\Files目录下,如图:
其中窃取Document(文档)目录下的文件,如图:
被窃取的文件有如Adobe,Steam以及Google等常见应用的文件,如图:
窃取数字货币钱包
窃取数字货币钱包信息,并将窃取到的信息存储在files\Wallets
目录下,如图:
其中窃取Bitcoin币的代码,如图:
被窃取的数字货币钱包种类都有:
Bitcoin | Ethereum | Electrum | ElectrumLTC |
---|---|---|---|
Exodus | JAXX | Atomic |
窃取屏幕截图
获取屏幕截图,并以Screenshot.jpg命名保存在Randstr\file
目录下,如图:
调试时截取到的屏幕截图,如图:
窃取主机信息并发送
再次获取主机相关信息,并将获取到的数据通过函数subJoin_408378
拼接成数据包,如图:
最后拼接好的主机信息数据包,如图:
压缩窃取到的文件并上传
将窃取到的文件进行压缩,并以随机生成的文件名命名保存在Ranstr\files
目录下,如图:
然后再读取压缩包数据,并将数据发送到C&C,然后C&C服务器返回Downloader下载地址,如图:
下载地址为: |
---|
http[:]//gelrstyysayt.net/DOD.exe |
http[:]//gelrstyysayt.net/fox.exe |
发送的压缩包数据(压缩包中为窃取到的数据),如图:
返回的数据包数据(Downloader URL),如图:
DownloadLoader下载执行
然后删除发送出去的压缩包文件,并下载执行Downloader URL中的文件。如图:
其中函数subDownload_EXEC_404525
下载并执行恶意程序,其中还清除了隐藏文件流(防止UAC弹窗),代码如图:
清除自身
通过函数ShellExecute
调用CMD,执行如下命令
1 | C:\Windows\System32\cmd.exe /c taskkill /im 3701296fa0d87df07eb1346956c82251.exe /f & erase C:\Users\admin\AppData\Local\Temp\3701296fa0d87df07eb1346956c82251.exe & exit |
来结束当前进程并删除当前文件,如图:
IOCs
MD5 |
---|
3701296fa0d87df07eb1346956c82251 |
A074C023BFD4FEEDD7DCCE2884AF7FF7 |
0EFCF786A4CBEE566405D86751E70905 |
C&C |
---|
reliabledc.com |
http[:]//gelrstyysayt.net/DOD.exe |
http[:]//gelrstyysayt.net/fox.exe |
总结
Vidar具备窃密木马所有典型功能,但也正因为此,分析量有些大导致其中很多细节,笔者这里并没有花费过多精力去分析,如该样本具体采用什么手法窃取钱包地址的等细致点。后续笔者会继续研究,可以尝试写一个窃密demo测试下。
其实分析完这个样本后最大的感受还是,自己当面对代码两庞大并且功能复杂的样本(特别像该样本采用静态编译的)分析起来就会有些头疼。自己还需要多花时间去进一步研究成长。2021 加油,奥里给~