一款VMP内存DUMP及IAT修复工具

前言

加壳是恶意软件常用的技巧之一,随着黑客组织技术的不断成熟,越来越多的恶意软件家族都开始使用更高级的加壳方式,以逃避各种安全软件的检测,还有些恶意软件在代码中会使用各种多态变形、加密混淆、反调试、反反分析等技巧,来阻止安全分析人员对样本进行逆向分析,一般安全分析人员拿到这种类型的样本之后,都需要对样本进行脱壳去混淆处理,找到恶意软件的核心代码才能进行下一步详细的逆向分析,以便弄清恶意软件的攻击行为意图,以及给客户提供后续的安全解决方案,例如:是什么类型和家族的恶意软件?具体有哪些恶意行为?背后的黑客组织都在做什么?为什么安全软件没有即时检测出来?使用了什么免杀绕过技巧?最后如何清除该恶意软件?等等,这些都是需要对恶意软件进行详细的逆向分析才能解答,而且逆向分析恶意软件是必须要做的,深入研究之后,你会发现其实计算机病毒跟生物病毒其实是非常相似的,正如生物病毒一样,如果不去深入的研究逆向分析病毒样本,怎么知道这款病毒对人体有哪些伤害,开发出对应的治疗药物或者免疫疫苗。

恶意软件使用的常用的加壳软件类型,一般分为三种:压缩壳、加密壳、虚拟壳,针对这几种类型的壳,常用的加壳软件,如下:

压缩壳:ASPack、UPX、PeCompact、NsPack、FSG......

加密壳:EXECryptor、ACProtect、ASProtect、Armadillo、SE......

虚拟壳:VMProtect、Themida......

除了使用这些加壳工具对恶意软件进行加壳处理之外,为了防止安全软件厂商对这些常见的壳工具进行特征提取和自动化脱壳,一些黑客组织开发的恶意软件还会使用自定义的混淆、加密、多态等技术来逃避检测,其实不管遇到什么类型的壳,不管是已知的加壳工具,还是黑客组织自定义的,使用什么混淆加密技术,最终目的都是为了逃避安全软件的检测,增大安全分析人员的分析成本,这是一种对抗升级的过程,随着黑客组织攻击技术的不断提升,未来肯定会有更多使用更高端混淆加密技术的恶意软件家族出现,技术成熟的黑客组织不仅仅使用一些现有的成熟的加壳工具,还会选使用自研究的加壳技术,黑客在不断的进步,安全研究人员也需要不断的学习进步,才能应对未来的挑战。

工具

Night Sky勒索病毒加密后的文件后缀名nightsky,如下所示:

生成的勒索提示信息文件为NightSkyReadMe.hta,内容如下所示:

同时提供了与勒索病毒黑客组织联系方式,以及受害者企业数据暗网网站信息,如下所示:

Night Sky勒索病毒采用VMP加壳处理,如下所示:

一般脱壳的步骤:

1.寻找OEP

2.内存DUMP

3.修复IAT...

这里我直接给大家介绍一款VMP内存DUMP+IAT修复工具VMPDump,代码地址:https://github.com/0xnobody/vmpdump,运行该工具对Night Sky勒索病毒进行内存DUMP+IAT修复,如下所示:

DUMP+IAT修复Night Sky勒索病毒之后,就可以对该勒索病毒进行静态分析,如下所示:

该工具自动修复了DUMP后的文件IAT符号表,并保存到了一个新的Section区段里面,如下所示:

可以对比一下修复IAT之前与修复IAT之后的代码,如下所示:

这款工具是开源的 ,有兴趣的可以去阅读源代码,其实脱壳的方法和技巧有很多,我们要明白一点,脱壳并不是我们的目的,我们的目的是为了深入地分析和研究恶意软件,搞清楚恶意软件都做了什么?通过恶意软件去深入地理解背后的黑客组织最新的一些攻击活动,获取有价值的威胁情报,如何去检测、防御,提供相应的解决方案。

脱壳是一种分析方法或手段,通过上面的这款工具,我们就可以静态分析里面的核心代码,如果不脱壳,静态分析这些加壳混淆的样本会比较困难,在静态分析的过程中遇到问题,还可以动态进行跟踪调试,逆向分析就是静态与动态相结合的方式,分析的方法和技巧也是多种多样,并没有什么固定的招式,正所谓:无招胜有招,不管用什么招式,我们的目标就是为了通过恶意软件搞清楚背后的黑客组织的攻击目的是什么。

针对这些使用常见工具加壳的恶意软件,其实还是有很多办法处理的,因为研究的人也多,所以各种公开的方法、技巧、工具也有很多,如果是遇到一些黑客组织自己编写的加壳封装工具加的壳或者使用他们自研的一些多态混淆加密加壳技术,这类的恶意样本分析起来,反而会花费更多的时间和精力,不过不管使用什么方法进行混淆加壳处理,也都只是增大了安全分析人员的分析成本,并不能完全阻止安全分析人员对样本进行逆向分析,因为逆向分析的方法和技巧太多了,攻与防一直在持续对抗。

笔者之前的文章中提到的一样,恶意样本的逆向分析本身是一项非常复杂的工作,包含的内容太多了,需要学习的东西也很多,而且需要不断的学习,不断的分析和研究各种最新的样本,因为黑客组织也在不断的更新和改进自己的攻击样本和攻击手段,几年前谁也没想到勒索病毒会成为全球网络安全的最大安全威胁之一,几年前也没有挖矿病毒这种恶意软件,随着时代的发展,可能未来这种以破坏计算机系统的恶意软件会成为一种网络攻击的高级武器隐藏在系统当中,假如有一天发生网络安全战,黑客组织通过启动这些恶意软件对系统进行破坏,会直接影响到国家的各种基础设施。

通过深入的分析研究恶意软件,我们可以发现黑客组织在开发这些恶意软件的时候不仅仅会使用多种混淆、加壳、加密等方法来隐藏自己,还包含各种攻击手法、漏洞利用技巧、各种平台语言特征、文件格式等,需要安全分析人员去学习和理解各种知识,有时候捕获到一些高端黑客组织的攻击样本,可能需要花费安全分析人员几周的时间,甚至更长的时间,有些还需要多个经验丰富的安全分析专家进行协作分析,不过这样的高端样本其实也很难捕获,通过恶意软件进行攻击已经成为了全球各大黑客组织主要的收入来源以及网络攻击武器之一。

总结

安全行业经历了这几十年的发展,黑客攻击千变万化,但核心的东西一直没有变化,安全永远是人与人的对抗,有加壳,就有脱壳,有攻,就有防、矛与盾会一直存在,技术本身就是把双刃剑,安全就是一个不断对抗升级的过程,不管使用什么安全防护技术,黑客总是会想方设法的突破防御,达到攻击目标的目的,同样黑客不断使用什么攻击技术,安全人员也总能想出各种各样的办法去解决这些安全问题,这永远是一个持续对抗的过程,黑客组织在不断提升自己的安全能力,身为安全研究人员,更不能停止前进的步伐,不然拿什么跟那些拥有十几年安全技术研究经验,而且还在不断发展壮大的黑客组织较量?

打铁还需自身硬!安全研究人员需要自己不断努力学习,提升自己的安全能力,才能应对未来的各种安全挑战,加油,一起为祖国的网络安全事业奉献自己的一份微薄之力。

最近国际形势严峻,网络安全战一触即发,基于各种基础设施的保护,使得安全会变的越来越重要,对专业安全人才的需求也会越来越多,做安全,不忘初心,与时俱进,方得始终!

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

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

相关文章

一文读懂:MybatisPlus从入门到进阶

快速入门 简介 在项目开发中,Mybatis已经为我们简化了代码编写。 但是我们仍需要编写很多单表CURD语句,MybatisPlus可以进一步简化Mybatis。 MybatisPlus官方文档:https://www.baomidou.com/,感谢苞米豆和黑马程序员。 Mybat…

springboot集成easypoi导出多sheet页

pom文件 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.1.0</version> </dependency> 导出模板&#xff1a; 后端代码示例&#xff1a; /*** 导出加油卡进便利店大额审批列…

二叉树的详解

二叉树 【本节目标】 掌握树的基本概念掌握二叉树概念及特性掌握二叉树的基本操作完成二叉树相关的面试题练习 树型结构&#xff08;了解&#xff09; 概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。…

Flume安装部署

安装部署 安装包连接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1m0d5O3Q2eH14BpWsGGfbLw?pwd6666 &#xff08;1&#xff09;将apache-flume-1.10.1-bin.tar.gz上传到linux的/opt/software目录下 &#xff08;2&#xff09;解压apache-flume-1.10.1-bin.tar.gz…

Postman接口与压力测试实例

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。它提供功能强大的 Web API & HTTP 请求调试。 1、环境变量和全局变量设置 环境变量可以使用在以下地方&#xff1a; URLURL paramsHeader valuesform-data/url-encoded valuesRaw body contentHelper fi…

二维差分---三维差分算法笔记

文章目录 一.二维差分构造差分二维数组二维差分算法状态dp求b[i][j]数组的二维前缀和图解 二.三维前缀和与差分三维前缀和图解:三维差分核心公式图解:模板题 一.二维差分 给定一个原二维数组a[i][j],若要给a[i][j]中以(x1,y1)和(x2,y2)为对角线的子矩阵中每个数都加上一个常数…

python进行批量搜索匹配替换文本文字的matlab操作实例

在进行一些数据处理时&#xff0c;可能需要抓取原文中的一些内容&#xff0c;批量替换原文另外的一些内容&#xff0c;而且事先还需要一步搜索匹配的步骤。 举个例子&#xff0c;如下matlab输出的txt文件&#xff0c;原文件有几万行数据&#xff0c;这里只摘取3行对应的 文件文…

代码随想录算法训练营第四十六天(动态规划篇)|01背包(滚动数组方法)

01背包&#xff08;滚动数组方法&#xff09; 学习资料&#xff1a;代码随想录 (programmercarl.com) 题目链接&#xff08;和上次一样&#xff09;&#xff1a;题目页面 (kamacoder.com) 思路 使用一维滚动数组代替二维数组。二维数组的解法记录在&#xff1a;代码随想录算…

nginx + DNS域名解析

配置链接: Nginx 安装配置 | 菜鸟教程 安装完nginx后&#xff0c;访问&#xff1a; cd /usr/local/nginx/sbin/ 然后使用./nginx可使用nginx。 访问:http://服务器的ip地址后出现 因为访问IP地址很繁琐&#xff0c;需要记忆ip的数字地址&#xff0c;因此需要给它一个通俗的…

计算机考研数学】张宇1000题和660哪个更难?

1000题和660题都很难&#xff0c;难的不一样 660题是对于基础深入考察的难 660题是非常经典的客观题练习题&#xff0c;题目难度中等&#xff0c;不难但是每一道题都需要认真的思考才能做出来。如果660题能够吃透&#xff0c;并且每一道题的方法都能够灵活掌握的话&#xff0…

39 MDK 的编译过程及文件类型全解

文章目录 39.1 编译过程39.1.1 编译过程简介 39.2 程序的组成、存储与运行39.3 编译工具链39.3.1 MDK编译文件39.3.2 设置环境变量39.3.3 运行39.3.4 armcc、armasm 及 armlink39.3.4.1 armcc39.3.4.2 查询具体的MDK编译选项的具体信息39.3.4.3 armasm39.3.4.4 armlink39.3.4.5…

基于JAVA的教学资源共享平台 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…