一例MFC文件夹病毒的分析

概述

这是一个MFC写的文件夹病毒,通过感染USB设备传播,感染后,会向c2(fecure.info:443)请求指令来执行。

样本的基本信息

Verified:    Unsigned
Link date:    19:52 2007/7/5
MachineType:    32-bit
MD5:    4B463901E5858ADA9FED28FC5134A039
SHA1:    9F10D1E42AC628B1794DDA08EB6C9B7D7B5DBD55
SHA256:    2C2D947D62D352E8FC0AB8A9D69B8DCA0AEE73716CC02806BD79B473CDBB7B7B

这是一个MFC程序,不太好分析,首先先找到程序的入口

用ResHacker看一下它的资源,其中有一个对话框 ,title为MyPCMD,暂且将这个窗口命名为MyPCMD

在样本的.rdata节中找到了CMyPCMDApp和CMyPCMDDlg中的方法。
其中CMyPCMDApp类中用户自定义的函数有

~CMyPCMDApp_409A10
GetMessageMap_4093FA
InitInstance_4096C6

CMyPCMDDlg类中用户自定义的方法有

~CMyPCMDDlg_40A050
GetMessageMap_409C56
OnInitDialog_409C66

病毒的恶意操作肯定在这几个函数中,依次分析这些函数发现CMyPCMDApp::InitInstance_4096C6和CMyPCMDDlg::OnInitDialog_409C66这两个函数比较可疑。

CMyPCMDApp::InitInstance_4096C6

在注册表中创建开机启动项

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"winmcs"="c:\programdata\winmcs.exe"

将病毒自身拷贝为c:\programdata\winmcs.exe

打开与病毒文件同名的目录

若当前文件名不是c:\programdata\winmcs.exe,启动c:\programdata\winmcs.exe,然后退出。

创建互斥量Hello_ss,若存在同名的互斥量,退出。若不存在同名互斥量,创建一个窗口类CMyPCMDDialog,调用这个对话框的DoModal()方法。

CMyPCMDDlg::OnInitDialog_409C66

在这个函数中将对话框的标题设置空,隐藏窗口,创建又删除文件%temp%\Ie5TempFile.Dat,莫明其妙。之后创建了一个线程来执行恶意操作。


在这个线程中构造了一个非常复杂的类。然后连接fecure.info:443来获取指令,根据指令来执行不同的操作
根据字符串大致可以推断具有以下功能,这部分有点复杂,啃不动。

FileSend send file to romot, peer  
FileRecv recv file to romot, peer  
FileRun recv file to romot, peer and run 
sendfile Send file to the romote
getfile Get the romote file
cmdshell Get the remote cmdshell
mycmd Run the remote cmd
exec Run the remote exec

遍历D-X盘符,寻找U盘来感染。

判断U盘的方式有两种,一是调用GetDriveTypeA,二是通过DeviceIoControl来查询存储设备的属性来判断是否为USB设备(code为IOCTL_STORAGE_QUERY_PROPERTY 0x2D1400u)。

感染U盘的方式简单粗暴,直接将根目录下的原文件夹隐藏,将自身复制为目录名+169个空格+'.exe',感染后的症状如下图所示,由于exe文件名太长了,资源管理器显示不全,用户一般看不到后缀名,会误点击造成感染系统。

IOC

hash 
4B463901E5858ADA9FED28FC5134A039文件
c:\programdata\winmcs.exe
%temp%\Ie5TempFile.DatX:\目录名+169个空格+'.exe'互斥量 Hello_ss网络
fecure.info:443

总结

这个样本是分析的第一个MFC病毒,又重新把MFC学习了一篇,对于C++中的类的逆向有点费劲。

参考资料

  • 逆向MFC程序_mfc逆向-CSDN博客

  • VS2010/MFC编程入门教程之目录和总结-软件开发-鸡啄米 (jizhuomi.com)

  • [翻译]浅析MFC逆向(Basic MFC Reversing)-外文翻译-看雪-安全社区|安全招聘|kanxue.com

  • [原创]STORAGE_DEVICE_DESCRIPTOR 方式获取硬盘序列号-编程技术-看雪-安全社区|安全招聘|kanxue.com

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

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

相关文章

CJSON工具类

4.4.3.CJSON工具类 OpenResty提供了一个cjson的模块用来处理JSON的序列化和反序列化。 官方地址: https://github.com/openresty/lua-cjson/ 1)引入cjson模块: local cjson require "cjson"2)序列化: …

STM32学习和实践笔记(21):定时器中断实验

通用定时器配置步骤如下: 第一步:使能定时器时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//使能TIM4时钟 第二步:初始化定时器参数,包含自动重装值,分频系数,计数方式等 voidTIM_TimeBaseInit(TIM_T…

YJW-10000微机控制电液伺服压剪试验机

一、项目概述 YJW-10000微机控制电液伺服压剪试验机采用油缸下置式、四立柱结构,机架刚度强度高,变形小,满足公路、铁路桥梁板式、盆式、球型支座的检测要求,试验空间无级可调,方便不同高度的试验需求。采用试金自主研…

怎样快速插入数据

1、30万条数据插入插入数据库验证 1.1、表结构: CREATE TABLE t_user (id int(11) NOT NULL AUTO_INCREMENT COMMENT 用户id,username varchar(64) DEFAULT NULL COMMENT 用户名称,age int(4) DEFAULT NULL COMMENT 年龄,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT…

如何设置微信自动回复?教你快速上手!

自动回复对于需要在微信上洽谈业务的人来说,无疑是非常实用的一个功能。 下面就一起来看看微信管理系统的机器人自动回复都有哪些设置吧! 1、自动通过好友 只要有新的好友请求发送到你的微信账号,系统会自动通过该请求,无需手动…

vue flvjs 播放视频

写在前面: 之前使用过vodiejs插件播放过mp4视频格式的视频; 此次需要使用flvjs插件播放rtsp视频格式的视频; 因为视频的数据格式不同,所以对应的插件不同。 思维导图: 参考链接:rtmp、rtsp、flv、m3u8、 …

深度学习与目标检测:从卷积神经网络到YOLOv8概念介绍

深度学习与目标检测:从卷积神经网络到YOLOv8的深入探索 随着人工智能技术的迅猛发展,深度学习和计算机视觉领域取得了举世瞩目的成果。在目标检测这一关键任务中,卷积神经网络(CNN)和YOLO系列模型发挥着至关重要的作用…

Redis中的Lua脚本(六)

Lua脚本 清空repl_scriptcache_dict字典 每当主服务器添加一个新的从服务器时,主服务器都会清空自己的repl_scriptcache_dict字典,这是因为随着新从服务器的出现,repl_scriptcache_字典里面记录的脚本已经不再被所有从服务器载入过&#xf…

使用 pytorch训练自己的图片分类模型

如何自己训练一个图片分类模型,如果一切从头开始,对于一般公司或个人基本是难以实现的。其实,我们可以利用一个现有的图片分类模型,加上新的分类,这种方式叫做迁移学习,就是把现有的模式知识,转…

Python实战 | 只需“4步”入门网络爬虫(小白也会)

文章目录 Python实战 | 只需“4步”入门网络爬虫(小白也会)1:确定目标网站和数据2:安装必要的库3:编写爬虫代码4.目标网站的URL5.发送HTTP请求并获取响应内容6.使用BeautifulSoup解析HTML内容7.查找包含新闻标题和链接…

【golang学习之旅】Go 的基本数据类型

系列文章 【golang学习之旅】报错:a declared but not used 目录 系列文章总览布尔型(bool)字符串型(string)整数型(int、uint、byte、rune)浮点型(float32、float64)复…

【C++】——类与对象引入和认识

创作不易,多多支持! 前言 有了上一篇博客的基础以后,就正式进入C类和对象的领域了,如果看完本篇文章对你有用,还请多多支持!!😘😘 一 面向过程和面向对象 1.面向过程 …

单链表实现通讯录

不过多赘述了 顺序表的增删查改-CSDN博客https://blog.csdn.net/bkmoo/article/details/137566495?spm1001.2014.3001.5502 使用顺序表实现通讯录-CSDN博客https://blog.csdn.net/bkmoo/article/details/137676561?spm1001.2014.3001.5502这里没有使用文件操作只是简单的使…

全程免费的ssl证书申请——七步实现网站https

全程免费的ssl证书申请步骤如下: 1 准备工作 首先确定好需要的证书类型,如单域名证书、通配符证书和多域名证书,准备好需要安装证书的域名。 2 选择CA 选择提供免费证书的服务商——JoySSL,并访问其官方网站,创建一…

3d软件哪个适合新手学?3D动画渲染怎么好

在不同的行业领域,3D建模和动画的需求各异,因此所需的3D软件工具也会有所不同。对于刚开始接触3D设计的新手来说,软件的易操作性、丰富的学习资源以及与自己专业领域相关的功能是选择时的重要考虑因素。以下是几款适合初学者入门的3D软件推荐…

【智能算法应用】灰狼算法(GWO)在低照度图像增强中的应用

目录 1.算法原理2.数学模型3.结果展示4.参考文献 1.算法原理 【智能算法】灰狼算法(GWO)原理及实现 2.数学模型 对于低照度图像的增强方式可以采用非线性变换函数来对图像的灰度值进行变化,对于不同环境下质量不同的图像,可以将…

YOLOv8+PyQt5输电线路缺陷检测(目前最全面的类别检测,可以从图像、视频和摄像头三种路径检测)

1.效果视频:YOLOv8PyQt5输电线路缺陷检测(目前最全面的类别检测,可以从图像、视频和摄像头三种路径检测)_哔哩哔哩_bilibili 资源包含可视化的输电线路缺陷检测系统,可识别图片和视频当中出现的五类常见的输电线路缺陷…

python:pyqt5案例(简易浏览器)

1、上接pyqt5基础https://blog.csdn.net/weixin_73011353/article/details/138051734https://blog.csdn.net/weixin_73011353/article/details/138051734 2、基本模块 # 定义一个名为BrowserWindow的类,继承自QMainWindow class BrowserWindow(QMainWindow):def _…

美国电子电器产品FCC认证讲解

美国FCC认证简介 FCC全称是Federal Communications Commission,中文为美国联邦通信委员会。于1934年由CommunicationACT建立,是美国政府的一个独立机构,直接对国会负责。FCC通过控制无线电广播、电视、电信、卫星和电缆来协调和国际的通信。涉…

Axure琐碎细节

文章目录 琐碎细节注释预览编写原型图的时候可以把颜色改为灰色标尺竖直文字左对齐Axure中的文字怎么添加元件层级问题如何找到各种各样的形状,比如三角形了 五角星了 十字架了给按钮设置简单的交互动作通过锁来等比例缩放 琐碎细节 注释 有时候我们需要给我们的元…