通过替换Kernel32.dll来实现的后门功能的恶意代码。

该恶意代码存在一个exe可执行文件和一个dll动态链接库,需要分别进行分析

一.待解决问题

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

二.分析流程

  1. 查壳,查看程序类型

    无壳,32位程序
  2. 使用IDA静态分析

    字符串,导入函数,程序逻辑
  3. 使用Procommon函数查看程序行为

三.具体分析

首先使用Exeinfo PE查看程序类型和是否有加壳保护。



无壳的32位程序,可以直接使用IDA和x32dbg载入。

对dll进行基础静态分析

IDA载入dll程序,查看其字符串和导入,导出函数

  1. 这里可以有一个创建互斥体的函数,猜测是用于创建互斥体来判断是否已经将某文件感染。
  2. 同时存在一个127.26.152.13的IP地址和hello,怀疑是不是存在与该IP存在信息交互,以实现有关后门。



    导入函数便十分清晰了,存在大量与网络连接有关的API函数,说明该dll实现的就是后门功能,用于和外界进行信息交互。



    导出函数则显得有些奇怪,作为一个dll却没有导出函数,怀疑不是直接通过该dll提供功能,应该后续还有操作。

对该dll进行进一步静态分析,理清运行逻辑

dll实现的功能就是与IP为127.26.152.13的主机进行网络通信,并且根据得到的反馈进行相应操作。





通信过程比较简单就是利用网络API函数建立相应连接然后发送信息。

重要的是接下来如何实现后门操作。





这里是根据接受到的字符串来做出相应反馈。

  1. 如果收到的前5个字符是sleep,那么会执行sleep函数,休眠60s。
  2. 如果收到的前4个字符是exec则会创建一个新进程,通过动态调试得到创建的新进程的命令行参数就是exec后面的字符串内容。
  3. 倘若不是以上两个情况,则会返回到开始,再次发送hello。

现在已经将dll所实现的后门功能分析清楚了,接下来需要分析的就是主函数如何利用将该dll载入,并且实现驻留。

IDA载入程序,分析其字符串和导入函数



在字符串当中,发现几个比较关键的地方。存在两个Kernel32.dll的地址,但是仔细观察我们会发现其实一个是Kernel32另一个则是Kerne132。到这里我们可以猜到,恶意程序应该是又创建了一个Kerne132.dll替换了原来的kernel32.dll,新的dll实现的功能不仅有原来Kernel32.dll的功能还应该有自带的那个dll的功能。

我们可以猜测一下要是实现该功能需要几步:

  1. 需要将原Kernel32.dll的功能复制到Kerne132.dll中。
  2. 需要将自带的dll复制到Kerne132.dll中。
  3. 需要将exe文件当中导入表里面的Kernel32.dll替换为Kerne132.dll。



导入函数有两类是我们现在需要密切关注的:

  1. 文件类函数:包括CreateFileA, CreateMappingA 和 MapViewOfFile等。
  2. 文件查找类:包括FindNextFileA和FindFirstFileA等。

静态分析函数逻辑

现在根据之前做出的猜测去找相应的功能。

  1. 这里是对命令行的参数进行判断,只有当参数个数为2并且参数为WARNING_THIS_WILL_DESTROY_YOUR_MACHINE时程序才可以正常运行。后续进行检测分析的时候需要对此进行额外关注。

  2. 这里将Kernel32.dll中内容复制到自带的dll当中

  3. 创建Kerne132.dll,将自带dll的内容放入其中。



  4. 在c盘下扫描所有的exe程序实现dll的替换。

静态分析到此结束,基本上搞清楚了恶意代码的流程,接下来进行行为检测。

在命令行输入相应参数运行程序,注意提前在虚拟机当中拍摄快照,使用Procommon检测程序行为,再使用Wireshark进行抓包分析。

但是由于该恶意代码可能比较老了,需要在Windowsxp下才能运行,虚拟机为Win10系统,无法正常运行,有兴趣的可以自行尝试,关注的重点还是Procommon当中的文件操作和Wireshark当中目地IP为127.26.152.13的通信。

四. 问题解答

  1. 该恶意代码实现的功能是一个后门功能,可以与外界进行联系,执行外界输出的命令。
  2. 通过其自带的dll函数实现与目地IP交互功能。
  3. 通过替换Kernel32.dll文件实现长久驻留,创建了一个名为Kerne132.dll,然后进行替换。
  4. 关键特征:

    存在一个目地IP;

    创建了Kerne132.dll;

    创建了一个互斥量
  5. 对该软件打一个补丁,然后反替换一次,即将Kerne132.dll修改为Kernel32.dll。

通过替换dll实现后门功能的恶意代码的更多相关文章

  1. 恶意代码分析实战-启动一个恶意的DLL

    如果不能把恶意代码运行起来,那么动态分析基础技术没有什么用. Windows版本中包含rundll32.exe程序,提供了一个运行DLL的平台. rundll32.exe Dllname,Export ...

  2. 金蝶KIS专业版替换SXS.dll 遭后门清空数据被修改为【恢复数据联系QQ 735330197,2251434429】解决方法 修复工具。

    金蝶KIS专业版 替换SXS.dll 遭后门清空数据(凭证被改为:恢复数据联系QQ 735330197,2251434429)恢复解决方法. [客户名称]:山东青岛福隆发纺织品有限公司 [软件名称]: ...

  3. rootkit——一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,一般都和木马、后门等其他恶意程序结合使用

    Rootkit是指其主要功能为隐藏其他程式进程的软件,可能是一个或一个以上的软件组合:广义而言,Rootkit也可视为一项技术.   目录 1 rootkit是什么 2 rootkit的功能 root ...

  4. NetSarang软件中nssock2.dll模块被植入恶意代码技术分析与防护方案

    原文地址:http://blog.nsfocus.net/nssock2-dll-module-malicious-code-analysis-report/ NetSarang是一家提供安全连接解决 ...

  5. 2017-2018-2 20155314《网络对抗技术》Exp4 恶意代码分析

    2017-2018-2 20155314<网络对抗技术>Exp4 恶意代码分析 目录 实验要求 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 静态分析 1.1 使用virsca ...

  6. 20155229《网络对抗技术》Exp4:恶意代码分析

    实验内容 使用schtasks指令监控系统运行 schtasks指令:允许管理员在本地或远程系统上创建计划任务. SCHTASKS /Create [/S system [/U username [/ ...

  7. 20155339 Exp4 恶意代码分析

    20155339 Exp4 恶意代码分析 实验后回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什么方法来监控 ...

  8. 20165223《网络对抗技术》Exp4 恶意代码分析

    目录 -- 恶意代码分析 恶意代码分析说明 实验任务目标 实验内容概述 schtasks命令使用 实验内容 系统运行监控 恶意软件分析 静态分析 virscan分析和VirusTotal分析 PEiD ...

  9. Exp4 恶意代码分析

    一.原理与实践说明 1. 实践目标 1.1 监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysin ...

  10. 20164305 徐广皓 Exp4 恶意代码分析

    实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systr ...

随机推荐

  1. 2022-12-10:给你一个由小写字母组成的字符串 s ,和一个整数 k 如果满足下述条件,则可以将字符串 t 视作是 理想字符串 : t 是字符串 s 的一个子序列。 t 中每两个 相邻 字母在字

    2022-12-10:给你一个由小写字母组成的字符串 s ,和一个整数 k 如果满足下述条件,则可以将字符串 t 视作是 理想字符串 : t 是字符串 s 的一个子序列. t 中每两个 相邻 字母在字 ...

  2. 2022-11-02:以下go语言代码输出什么?A:编译错误;B:apple;C:ant;D:panic。 package main import “fmt“ func main() {

    2022-11-02:以下go语言代码输出什么?A:编译错误:B:apple:C:ant:D:panic. package main import "fmt" func main( ...

  3. Alist云盘视频加密助手:支持云盘视频文件加密与在线播放,不用再担心视频文件被和谐了!

    在当前娱乐资源丰富的时代,人们每天都在接触各种视频资源.然而,网盘限速.版权审核.视频分级.少儿不宜等问题经常让人感到困扰.如何在保护隐私的前提下,让视频存储和分享变得更加便捷.安全呢?分享一款实用的 ...

  4. asp.net WebApi JWT

    文章转自 https://blog.csdn.net/liwan09/article/details/83820651 参考资料: https://docs.microsoft.com/en-us/a ...

  5. 深入 Hyperf:HTTP 服务启动时发生了什么?

    当我们创建 Hyperf 项目之后,只需要在终端执行 php bin/hyperf.php start 启动命令,等上几秒钟,就可以看到终端输出的 Worker 进程已启动,HTTP 服务监听在 95 ...

  6. 【python基础】变量

    1.初识变量 编程本质就是通过一定的规则,去操纵数据,变量作为数据的载体,在程序中经常会被用到.与变量相联系的还有一个名词叫数据类型,我们可以举一个生活中的例子,来理解数据类型-变量-数据三者之间的关 ...

  7. 简单了解一下国产CPU

    这几天在B站.油管上刷了一些国产芯片真实上手视频,顺便自己也梳理一下芯片的一些基本概念,以及在美国科技制裁和围堵的情况下,国产CPU的发展情况.文末有我整理的一张思维导图,hope u find it ...

  8. Java方法的概念以及方法的四种语法

    一.方法 方法的概念 ​ 将一个功能抽取出来,放在类中的大括号中,形成一个独立的功能,当需要使用该功能时,则调用它,这样可以增强代码的复用性(重复利用),并解决代码的冗余现象. 方法的语法: ​ [访 ...

  9. shell编程-文件归档

    需求说明:设置定时任务,每天凌晨1点进行将指定目录(/root/scripts)下文件按照archive_目录名_年月日.tar.gz的格式归档存放到/root/archive 路径下. 1.编写脚本 ...

  10. 【Netty】Netty部分源码分析(启动流程,EventLoop,accept流程,read流程)

    源码分析 Netty源码中调用链特别长,且涉及到线程切换等步骤,令人头大:) 1 启动剖析 我们就来看看 netty 中对下面的代码是怎样进行处理的 //1 netty 中使用 NioEventLoo ...