首页 > 其他分享 >通过组件调用模型实现功能的恶意代码

通过组件调用模型实现功能的恶意代码

时间:2023-07-30 21:23:52浏览次数:36  
标签:功能 调用 实现 恶意代码 模型 组件

一. 待解决问题

  1. 这个恶意代码执行了什么功能?
  2. 通过什么方式实现其功能?
  3. 如何实现长久驻留?
  4. 有什么关键特征,或者说这一类恶意代码有什么关键特征?
  5. 如何清除该恶意代码造成的影响?

二. 分析流程

这个恶意代码是通过调用组件模型实现其功能,但是在开始的时候走错了方向,花了一个下午的时间来动态调试,不停的在动态链接库里兜圈子,最后放弃了。查询了有关资料才知道,是通过组件调用模型实现其功能的。思路很简单,但是在一开始什么都不知道的情况下确实走了很多歪路。但这也再次体现了恶意代码需要很深的知识与经验储备,只有在见的多了,了解的多了后,才能在最短的时间内找到突破口。接下来先分析一下一开始的错误思路再介绍组件调用模型,最后介绍一下在本代码中未体现,但感觉值得学习的一种方式——COM组件劫持。

1.查看壳以及文件类型


无壳的32位程序,直接使用IDA静态调试。

2.查看字符串以及导入函数,寻找突破口



这里就出现了不寻常的地方,作为一个程序,载入的dll居然连Kernel32.dll等最基础的都没有,导入函数也都是一些与组件对象有关的函数,当时并没有往组件对象方向考虑,也没找到任何的突破口,暂时存疑,继续分析。

3.静态分析,梳理逻辑



整个程序的运行逻辑非常的简单,在分析完之后我还是云里雾里,不知道这个程序到底想做什么,唯一值得关注的就是这个网站,怀疑是不是想通过访问该网站然后下载后续恶意代码,通过行为检测和动态调试来验证。

4.行为检测

直接双击运行程序,发现打开了IE浏览器,并且访问了我们刚刚看到的那个网站,猜测正确,接下来通过Procommon来进一步分析程序行为。
但在这个时候发现,该程序进行了大量的注册表和文件有关操作。


再次陷入迷茫,这些注册表和文件都是怎么实现的,程序的功能就这么多,功能都是在哪里实现的。

最后进行动态调试分析,一直在动态链接库当中转圈,分析了很久还是一无所获,最后放弃该思路,开始在网上查找有关组件调用模型(COM)的有关知识,终于理清了思路找到突破口,接下来介绍正确的分析思路。

什么是组件调用模型

不同软件组件在不知道其他组件代码的接口规范时,相互之间可以相互调用,实现该功能的就是组件调用模型。类似我们所熟知的dll,其实就是一种面向对象的编程思路。
那么什么是软件组件?为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易被用于组装应用程序中。
我的理解就是可以实现借用某个程序的组件实现特定功能。
组件调用模型分为两部分:

  1. 接口通过IID标识
  2. COM类通过CLSID标识

正确分析思路

通过IID和CLSID在注册表中找到了IE浏览器以及其对应接口,然后执行该模型对应代码,实现访问网站的功能。

在这里创建组件对象模型,传入参数就是IID和CLISD,继续跟进分析。

标签:功能,调用,实现,恶意代码,模型,组件
From: https://www.cnblogs.com/ONEZJ/p/17591902.html

相关文章

  • Flutter开发之——基本组件-Image
     图片属性,及充满、自适应大小风格https://blog.csdn.net/Calvin_zhou/article/details/113940867设置圆角或者圆图https://blog.csdn.net/Calvin_zhou/article/details/113993900......
  • React(十二):props的函数组件中使用
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>props的函数组件实现</title><scriptsrc="https://unpkg.com/react@18/umd/react.development.js"></script><scriptsr......
  • 理解了 HSL 颜色表示法,就能实现 ColorPicker 组件
    HSL颜色表示法是一种常用的颜色表示方法,它由色相(H)、饱和度(S)和亮度(L)三个参数组成。色相表示颜色的种类,饱和度表示颜色的纯度,亮度表示颜色的明暗程度。HSL颜色表示法相对于其他颜色表示法来说,更符合人类对颜色的感知和理解,因此被广泛应用于图形界面设计和网页开发等领域。实现一个Col......
  • 无涯教程-jQuery - Tabs组件函数
    窗口小部件选项卡函数可与JqueryUI中的窗口小部件一起使用。选项卡用于在分成逻辑部分的内容之间交换。Tabs-语法$("#tabs").tabs();Tabs-示例以下是显示Tab用法的简单示例-<!doctypehtml><htmllang="en"><head><metacharset="utf-8"><title>......
  • React(六):组件的两种创建方式
    1.函数式组件<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>函数式组件</title><scriptsrc="https://unpkg.com/react@18/umd/react.development.js"></script><script......
  • 无涯教程-jQuery - Spinner组件函数
    WidgetSpinner函数可与JqueryUI中的窗口小部件一起使用。Spinner提供了一种从一组中选择一个值的快速方法。Spinner-语法$("#menu").selectmenu();Spinner-示例以下是显示Spinner用法的简单示例-<!doctypehtml><htmllang="en"><head><metacharset="......
  • 无涯教程-jQuery - Progressbar组件函数
    小部件进度条功能可与JqueryUI中的小部件一起使用。一个简单的进度条显示有关进度的信息。一个简单的进度条如下所示。Progressbar-语法$("#progressbar").progressbar({value:37});Progressbar-示例以下是显示进度条用法的简单示例-<!doctypehtml><htmllang......
  • 通过替换dll实现后门功能的恶意代码
    通过替换Kernel32.dll来实现的后门功能的恶意代码。该恶意代码存在一个exe可执行文件和一个dll动态链接库,需要分别进行分析一.待解决问题这个恶意代码执行了什么功能?通过什么方式实现其功能?如何实现长久驻留?有什么关键特征,或者说这一类恶意代码有什么关键特征?如何清除该恶......
  • 无涯教程-jQuery - Menu组件函数
    小部件菜单功能可与JqueryUI中的小部件一起使用。一个简单的菜单显示项目列表。Menu-语法$("#menu").menu();Menu-示例以下是显示菜单用法的简单示例-<!doctypehtml><htmllang="en"><head><metacharset="utf-8"><title>jQueryUIM......
  • PHP调用API接口的方法及实现
    随着互联网、云计算和大数据时代的到来,越来越多的应用程序需要调用第三方的API接口来获取数据,实现数据互通和协同工作。PHP作为一种常用的服务器端语言,也可以通过调用API接口来实现不同系统的数据交互和整合。本文将介绍PHP调用API接口的方法及实现过程。一、API接口简介API(Applica......