msng病毒分析

这是一个非常古老的文件夹病毒,使用XP系统的文件夹图标,采用VB语言开发,使用了一种自定义的壳来保护,会打开网址http://www.OpenClose.ir,通过软盘、U盘和共享目录进行传播,会在U盘所有的目录下生成自身的副本,根据目录名来生成不同的文件名。有一定的对抗杀软的能力。

样本的基本信息

MD5: 7b4983962fe9d740d6ec5fb153a0525f
SHA1: 114d4cdfb3f0e73eabc449d0877f36a683defff4
SHA256: f05c0989b3f10e921a6acc9c8b5d781bc4818b070cf4729bd422e673a5e6dd19

样本使用xp系统的文件夹图标。使用了一种变形的壳进行保护。

# 脱壳过程

vb程序的入口点一般为一条push命令,这里实际上压入的是一个指针,指向的是VBHeader结构体,然后就是call指令调用MSVBVM60.dll中的ThunRTMain。这两条指令的目的是调用ThunRTMain函数初始化各种变量。

我们首先找到MSVBVM60.dll中的ThunRTMain的地址,下断点,看它的返回地址。

用IDA打开系统内C:\WINDOWS\system32\msvbvm60.dll,发现ThunRTMain的导出地址为

0x733935A4。

,用OD将msng.exe的样本跑起来,在733935A4处下断点。断下之后,看栈中的返回地址,如下图所示,返回地址为00401A5A,这个地址-10就是程序的入口点,0x401a50。

重新用OD跑样本,在0x401a50处下硬件执行断点,F9继下之后,使用Ollydump插件脱壳即可。

0012FFBC   00401A5A  返回到 1.00401A5A 来自 1.00401A4A
0012FFC0   00401AEC  1.00401AEC
0012FFC4   7C817077  返回到 kernel32.7C817077

病毒行为

结合VB Decompiler Pro的结果,使用IDA和od对病毒进行分析。

感染系统的过程

将自己拷贝到C:\windows\system32\msng.exe,并在注册表表中添加开机启动项 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\msng="C:\WINDOWS\system32\msng.exe"

C:\WINDOWS\system32\Rundll32.exe拷贝为C:\WINDOWS\system32\rundII32.exe

将自身拷贝为C:\WINDOWS\system32\Rundll32.exe

启动C:\WINDOWS\system32\Rundll32.exe fuckystart

隐藏文件后缀名,设置注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\HideFileExt=0

传播方式

若当前进程名为rundll32,参数为fuckystart的话,读取注册表 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\LanmanServer\Shares 遍历共享目录,感染共享目录。

寻找窗口名为3.5 Floppy (A:)3.5 Floppy (B:)Copying...的窗口,感染中对应的驱动器。

不断获取当前活动窗口的标题,找到下面这样的窗口,使用SendMessage(hWnd, WM_CLOSE, 0, 0)的方式来关闭窗口,应该是为了对抗杀软。

*task*manager*
system configuration utility
*anti*
*kill*
*virus*
*worm*
*remover*

遍历USB驱动器,在每个目录下创建自身的副本,文件名是根据目录名随机生成的,如下所示。

目录名*mp3*,会生成如下形式的文件
Ebi
Kamran & Homan
Omid
Scooter
Britney Spears目录名*show*
Mansour
Black Cats
Andy
The Boys
Britney Spears目录*game*
New Game
War Craft
Mario
Super Snake
Chess Master目录*picture*
New Pictures
Angelina Jolie
Hot
Priceless
Funny目录名*music*
Soft
Rock
Blues
Classic
Jaz目录*video*
my videos
Private
Home
2007.04.30
hot目录名*document*
my docs
home work
Final
New Docs
Clips若没有匹配到上面的模式的话,使用下面的文件名
Video
Clips
Documents
My Documents
New Folder
Angelina Jolie
WallPapers
MP3
Show
New
HOT
Fun
Games
Flash  Games
Favorites

使用系统默认浏览器打开 http://www.OpenClose.ir。目前该域名已经不能访问了。

在文件 C:\~0002ftd.tmp中保存病毒的起始目录,然后将其删除。

IOC

hash
MD5: 7b4983962fe9d740d6ec5fb153a0525f
SHA1: 114d4cdfb3f0e73eabc449d0877f36a683defff4
SHA256: f05c0989b3f10e921a6acc9c8b5d781bc4818b070cf4729bd422e673a5e6dd19file
C:\windows\system32\msng.exe
C:\WINDOWS\system32\Rundll32.exe
C:\WINDOWS\system32\rundII32.exe
C:\~0002ftd.tmpU盘
会在U盘第个目录下生成一个副本,会根据当前目录名随机生成一个文件名,如下所示,当U盘中有以下文件时就要 小心了
*mp3*
Ebi
Kamran & Homan
Omid
Scooter
Britney Spears*show*
Mansour
Black Cats
Andy
The Boys
Britney Spears*game*
New Game
War Craft
Mario
Super Snake
Chess Master*picture*
New Pictures
Angelina Jolie
Hot
Priceless
Funny*music*
Soft
Rock
Blues
Classic
Jaz*video*
my videos
Private
Home
2007.04.30
hot*document*
my docs
home work
Final
New Docs
ClipsVideo
Clips
Documents
My Documents
New Folder
Angelina Jolie
WallPapers
MP3
Show
New
HOT
Fun
Games
Flash  Games
Favorites注册表
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\msng="C:\WINDOWS\system32\msng.exe
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\HideFileExt=0

总结

通过分析这个病毒,对VB病毒的逆向有了一定的学习。

参考资料

  • [原创]VB6反编译详解(一)-软件逆向-看雪-安全社区|安全招聘|kanxue.com

  • Visual Basic程序的逆向分析 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

  • VB快速逆向法-软件逆向-看雪-安全社区|安全招聘|kanxue.com

  • VB常用API (notion.site)

  • msng.exe的VB程序分析_openclose.ir-CSDN博客

  • 小甲鱼 OllyDbg 教程系列 (七) :VB 程序逆向分析_ollydbg vb rtcp-CSDN博客

  • Visual Basic 6.0_哔哩哔哩_bilibili

  • 【精选】两 API 三步最简实现 VB6 输出到CMD控制台显示 (含获取输入),真输出至 CMD 窗口,非 AllocConsole 模式_vb 控制台输出-CSDN博客

  • VB与API (office-cn.net)

  • 小甲鱼 OllyDbg 教程系列 (七) :VB 程序逆向分析_「已注销」的博客-CSDN博客Dir function (Visual Basic for Applications) | Microsoft Learn

  • VB函数——逆向分析备查-CSDN博客

  • VB逆向函数详解2 - 完美视界 - 博客园 (cnblogs.com)

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

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

相关文章

mysql使用--备份与恢复

1.mysqldump 1.1.使用mysqldump备份数据 1.1.1.备份指定数据库中的指定表 如:mysqldump [其他选项] 数据库名 [表1名 表2名 …] 如:mysqldump -uroot -hlocalhost -p1234 database1 student_score > student_score.sql 上述采用-u和-p完成用户登录&am…

Linux常用命令----shutdown命令

文章目录 命令概述参数解释使用示例及解释 命令概述 shutdown 命令用于安全地关闭或重启 Linux 系统。它允许管理员指定一个时间点执行操作,并可发送警告信息给所有登录的用户。 参数解释 时间参数 ([时间]): now: 立即执行关闭或重启操作。m: 在 m 分钟后执行操作…

Android控件全解手册 - 任意View缩放平移工具-实现思路和讲解

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

数字阅读用户规模持续增长 5.3亿人享受数字化阅读便利

近日,鲁迅长孙周令飞在接受采访时表示,自己“现在90%的时间刷视频,10%的时间看书”,引发网友热议。不少网友表示,鲁迅的孙子都花90%的时间刷视频,难怪现在没人看书了,其实这并不奇怪,也并不表明没人看书,而是读屏与读书并重的时代,纸质阅读与数字阅读共同构成了日常的阅读模式。…

大数据之Redis

NoSQL SQL数据库泛指关系型数据库NoSQL不拘泥于关系型数据的设计范式,放弃了通用的技术标准,为某一特定领域场景而设计 NoSQL的特点 不遵循SQL标准不支持ACID远超SQL的性能 NoSQL的适用场景 对数据高并发的读写海量数据的读写对数据高可扩展性的 N…

webpack具体实现--未完

1、前端模块打包工具webpack webpack 是 Webpack 的核心模块,webpack-cli 是 Webpack 的 CLI 程序,用来在命令行中调用 Webpack。webpack-cli 所提供的 CLI 程序就会出现在 node_modules/.bin 目录当中,我们可以通过 npx 快速找到 CLI 并运行…

web:NewsCenter

题目 打开页面显示如下 页面有个输入框,猜测是sql注入,即search为注入参数点,先尝试一下 返回空白显示错误 正常显示如下 是因为单引号与服务端代码中的’形成闭合,输入的字符串hello包裹,服务端代码后面多出来一个‘导…

Linux僵死进程及文件操作

1.僵死进程(僵尸进程): 1.僵死进程产生的原因或者条件: 什么是僵死进程? 当子进程先于父进程结束,父进程没有获取子进程的退出码,此时子进程变成僵死进程. 简而言之,就是子进程先结束,并且父进程没有获取它的退出码; 那么僵死进程产生的原因或者条件就是:子进…

哈希和unordered系列封装(C++)

哈希和unordered系列封装 一、哈希1. 概念2. 哈希函数,哈希碰撞哈希函数(常用的两个)哈希冲突(碰撞)小结 3. 解决哈希碰撞闭散列线性探测二次探测代码实现载荷因子(扩容) 开散列哈希桶代码实现扩…

dpkg、apt、rpm、yum、dnf使用

1. yum参数以及使用 yum 命令是在 Fedora 和 RedHat 以及 SUSE 中基于 rpm 的软件包管理器,它可以使系统管理人员交互和自动化地更新与管理 RPM 软件包,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一…

Spark_spark shell退出方式

问题描述 在使用Spark Shell进行交互式编程时,如何优雅地退出Spark Shell,即关闭Shell会话,并释放资源。 解决方案 Spark Shell是一个交互式的Spark环境,基于Scala编程语言,可以用于快速开发和调试Spark应用程序。当…

C语言:输入3个整数,按由小到大的顺序输出(指针)

分析: 定义三个整型变量 a、b、c,和三个指向整型变量的指针变量 i、j、k。然后使用 scanf 函数从标准输入(键盘)中读取输入的三个整数,并将它们存储到 a、b、c 中。注意,使用 &a、&b、&c 进行赋…

【GitLab】流水线入门

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮&#xff0…

深入理解字符串函数和字符函数(二)

目录 strstr 的使用和模拟实现​ 简单的使用: 复杂情况下的使用 模拟实现strstr函数 用暴力求解的方式: strtok的使用 strerror 函数的使用​ strstr 的使用和模拟实现​ 作用:返回字符串在另外一个字符串中第一次出现的位置,即查找子…

Git 本地服务器搭建 Windows

git 安装参考:Git的安装、配置、使用01【Git Bash Here命令行操作】-CSDN博客 gitLab 服务端安装及配置参考:Windows环境搭建 Gitlab 服务器_gitlab windows_测试工程师成长之路的博客-CSDN博客

奇数求和(C++)

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

HMM预习中文版

马尔可夫模型 在之前的笔记中,我们讨论了贝叶斯网络,以及它们如何被用于紧凑地表示随机变量之间的关系。现在,我们将介绍一个与之紧密相关的结构,称为马尔可夫模型,对于本课程的目的,可以将其视为类似于链…

前端量子纠缠 效果炸裂 multipleWindow3dScene

我 | 在这里 🕵️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 🏠 工作 | 广州 ⭐ Java 全栈开发(软件工程师) 🎃 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 ✈️已经旅游的地点 | 新疆-乌鲁木齐、新疆-吐鲁番、广东-广州…

SELinux零知识学习三十七、SELinux策略语言之约束(1)

接前一篇文章:SELinux零知识学习三十六、SELinux策略语言之角色和用户(7) 四、SELinux策略语言之约束 SELinux对策略允许的访问提供了更严格的约束机制,不管策略的allow规则如何。 1. 近距离查看访问决定算法 为了理解约束的用途,先来看一下SELinux Linux安全模块(Lin…

Android : SQLite 增删改查—简单应用

示例图: 学生实体类 Student.java package com.example.mysqlite.dto;public class Student {public Long id;public String name;public String sex;public int age;public String clazz;public String creatDate;//头像public byte[] logoHead;Overridepublic St…