我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用API调用分析恶意软件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用API调用分析恶意软件

这篇文章主要为大家展示了“如何使用API调用分析恶意软件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用API调用分析恶意软件”这篇文章吧。

我们发现有越来越多的恶意软件开始使用各种加密、封装和加壳等保护技术来对恶意代码进行混淆处理,以防止系统或程序对其进行识别。除此之外,这些技术甚至还会让研究人员对其的静态分析变得更加困难。虽然越来越多的恶意软件开发人员开始使用这种保护性的加壳技术,但这也直接导致了另一种恶意软件分析方法的诞生。

如何使用API调用分析恶意软件

其中的一种分析方法,就是通过分析恶意代码中负责告诉系统如何执行特定操作的API调用以及控制命令。在这种方法中,我们不需要对已加壳的文件进行逆向分析,因为我们只需要对恶意代码所执行的API调用来进行动态分析,就可以知道某个特定文件具体的功能了。通过这样的方法(分析API调用),我们可以确定一个文件是否具有恶意性,而有些API调用只有某些特殊类型的恶意软件才会去使用。比如说,常用的恶意Payload下载API是URLDownloadToFile,而GetWindowDC这个API一般用于间谍软件或键盘记录器等恶意工具(用于屏幕截取)。

接下来,我们会对一个恶意软件样本进行分析,并给大家介绍这项技术的实现方法。

木马样本

我们所要分析的恶意软件样本是一个名叫1.exe的著名木马,它的SHA256如下:0213b36ee85a301b88c26e180f821104d5371410ab4390803eaa39fac1553c4c

如何使用API调用分析恶意软件

这个文件是加了壳的(VMProtect),所以我们就很难使用反编译工具来对其进行分析了。由于我个人并不擅长逆向工程分析,因此我打算通过分析该文件在沙盒环境的执行过程中的API调用来了解它的行为。

下面这张图片中,显示的是我们通过观察它在沙盒环境中的运行情况所得到的API调用列表:

如何使用API调用分析恶意软件

首先,我们来看一看这些函数到底有什么作用。其中有部分函数可以在微软的网站中找到相关内容:

GetModuleHandle函数

为特定模块获取模块处理器,该模块必须在调用进程中被加载。GetModuleHandleA (ANSI)

GetProcAddress函数

获取一个输出函数的地址,或从指定的动态链接库(DLL)获取变量。

_wtoi

将一个字符串转换成整型

CreateStreamOnHGlobal函数

这个函数将创建一个流对象,该对象可以使用一个HGLOBAL内存处理器来存储流内容。

StrStr函数

查找字符串中出现的第一个子字符串,匹配是大小写敏感的。StrStrA(ANSI)

wsprintf函数

向特定的缓冲区中写入格式化数据,可根据相应的格式化字符串标准向输出缓冲区中写入任意参数。wsprintfA (ANSI)

WinHttpOpen函数

该函数可以初始化WinHTTP函数并返回一个WinHTTP-session处理器。

GetModuleFileName函数

获取包含指定模块的文件的完整路径,该模块必须在当前的调用进程中被加载。GetModuleFileNameW (Unicode)

LoadLibrary函数

向调用进程的地址空间加载特定模块,该模块可能还会加载其他的模块。LoadLibraryA (ANSI)

LocalAlloc函数

向堆内存中分配指定大小的字节。

LocalFree函数

释放指定的本地内存对象,并初始化该对象的处理器。

GetModuleFileName函数

获取包含指定模块的文件的完整路径,该模块必须在当前调用进程中被加载。GetModuleFileNameA (ANSI)

ExitProcess函数

终止调用进程以及所有相关的线程。

关键的恶意识别指标

需要注意的是,上面给出的所有函数并非都能够之别标明某个可执行程序的真实作用。但是针对WinHttpOpen的调用可以告诉我们这个应用是有特殊目的的。

那我们就可以从这个函数下手,我们使用URL Revealer(Kahu Security)来检测流量的目的地,并发现了两个该恶意应用会不断尝试连接的URL地址。

GET http://twitter.com/pidoras6

POST http://www.virustotal.com/vtapi/v2/file/scan

注:当我们向VirusTotalAPI提交一个文件来进行扫描时,最好提交这种形式的POST

上面这个链接指向的是一个已失效的Twitter地址,当我使用Twitter的高级搜索功能进行查找时,我发现这条推文早就已经被删除了。

如何使用API调用分析恶意软件

通过Base64解码之后我们得到了这条推文的原始内容:https://w0rm.in/join/join.php。但不幸的是,这个网站已经无法解析了,但这个网站原本是一个专门提供网站入侵服务的地下站点。不过需要注意的是,这个Twitter账号目前仍然是活跃的。

由此看来,我们就没办法弄清楚这个恶意软件想要利用GET请求来做什么了。但是我们可以用其他的方法搞清楚它想用VirusTotal来扫描什么东西?下面是我们使用WireShark所捕捉到的数据包:

如何使用API调用分析恶意软件

在这个数据包中,你可以看到恶意软件用来在VirusTotal网站上扫描文件的API密钥以及文件名。所以,通过对API调用和数据包进行重构,我们发现这款恶意软件会向VirusTotal提交自己的拷贝版本,即恶意软件副本,而这正好是Vflooder木马家族的典型行为。Vflooder是一种特殊类型的Flooder木马,而Flooder木马可以向目标发送大量的信息来中断目标的正常操作。但是我认为VirusTotal可能无法检测到这种恶意软件威胁。

以上是“如何使用API调用分析恶意软件”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用API调用分析恶意软件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用API调用分析恶意软件

这篇文章主要为大家展示了“如何使用API调用分析恶意软件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用API调用分析恶意软件”这篇文章吧。我们发现有越来越多的恶意软件开始使用各种加密、封
2023-06-27

如何分析WhatsApp中消息自动回复的Android恶意软件

本篇文章为大家展示了如何分析WhatsApp中消息自动回复的Android恶意软件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。0x01 基础概述我们最近在Google Play上发现了隐藏在伪造
2023-06-17

Win10如何使用Windows Defender Offline来查找并删除恶意软件

如何使用Windows Defender Offline来查找并删除恶意软件呢?Windows10-14332版系统,当某些http://www.cppcns.com恶意软件特别难以从电脑中删除时,Windows Defender Offl
2023-05-20

如何使用防病毒软件保护CentOS服务器免受恶意软件的入侵

要保护CentOS服务器免受恶意软件的入侵,可以按照以下步骤使用防病毒软件进行保护:1. 选择适合的防病毒软件:选择一款专门用于Linux服务器的防病毒软件,例如ClamAV、Sophos Antivirus for Linux等。确保选择
2023-10-10

Python如何调用API发送邮件

这篇文章将为大家详细讲解有关Python如何调用API发送邮件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python 调用 APIPython 调用 API 非常简单,通常需要一个称为 request
2023-06-14

如何在Linux系统中安装使用恶意软件扫描工具及杀毒引擎

这篇文章主要讲解了“如何在Linux系统中安装使用恶意软件扫描工具及杀毒引擎”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何在Linux系统中安装使用恶意软件扫描工具及杀毒引擎”吧!恶意软
2023-06-13

PHP 代码安全:如何保护应用程序免受恶意软件感染?

为了保护 php 应用程序免受恶意软件感染,必须采取以下措施:过滤用户输入,防止恶意代码注入。转义输出中的特殊字符,防止跨站脚本 (xss) 攻击。保持 php 软件更新,修复漏洞。使用安全库,协助验证输入和安全存储密码。验证和扫描上传文件
PHP 代码安全:如何保护应用程序免受恶意软件感染?
2024-05-10

财务状况分析软件如何选择和使用

在当前的商业环境中,财务状况分析软件已经成为企业管理的重要工具。这些软件可以帮助企业实时跟踪和分析财务数据,从而更有效地管理财务状况。然而,如何选择和使用财务状况分析软件并不是一件容易的事情。本篇文章将详细说明如何选择和使用财务状况分析软件。正文:首先,选择财务状况分析软件需要考虑以下几个因素。第一,软件的功能。
财务状况分析软件如何选择和使用
2023-11-19

如何分析Saltstack常用模块及API

这篇文章主要为大家分析了如何分析Saltstack常用模块及API的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“如何分析Saltstack常用模块及API”
2023-06-05

如何使用Go语言测量和分析API性能

使用 go 语言测量和分析 api 性能的方法:使用 net/http/pprof 测量 http 性能。使用 pprof 工具分析性能剖析。禁用生产环境中的性能剖析。使用适当的采样率。定期分析性能剖析并解决问题。如何使用 Go 语言测量和
如何使用Go语言测量和分析API性能
2024-05-08

java dump文件分析工具如何使用

要使用Java dump文件分析工具,首先需要下载并安装适合您操作系统的工具。一些常用的工具包括MAT(Memory Analyzer Tool)和VisualVM。以下是使用MAT进行Java dump文件分析的一般步骤:1. 下载并安装
2023-10-10

furmark软件如何使用

这篇文章主要介绍“furmark软件如何使用”,在日常操作中,相信很多人在furmark软件如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”furmark软件如何使用”的疑惑有所帮助!接下来,请跟着小编
2023-07-05

如何用ntiiframe.vbs批量清除被添加到文件中的恶意代

本篇内容介绍了“如何用ntiiframe.vbs批量清除被添加到文件中的恶意代”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!AntiIfra
2023-06-08

smartbyte软件如何使用

本篇内容介绍了“smartbyte软件如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SmartByte
2023-03-07

在软件部署中如何使用strace进行调试

这篇文章主要介绍在软件部署中如何使用strace进行调试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是 strace?strace 是一个用来“追踪系统调用”的工具。它主要是一个 Linux 工具,但是你也可以
2023-06-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录