通过替换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-11-16:给你一个数组 nums,我们可以将它按一个非负整数 k 进行轮调, 例如,数组为 nums = [2,4,1,3,0], 我们按 k = 2 进行轮调后,它将变成 [1,3,0,

    2022-11-16:给你一个数组 nums,我们可以将它按一个非负整数 k 进行轮调, 例如,数组为 nums = [2,4,1,3,0], 我们按 k = 2 进行轮调后,它将变成 [1,3,0, ...

  2. 2021-04-01:给定一个正方形矩阵matrix,原地调整成顺时针90度转动的样子。[[a,b,c],[d,e,f],[g,h,i]]变成[[g,d,a],[h,e,b],[i,f,c]]。

    2021-04-01:给定一个正方形矩阵matrix,原地调整成顺时针90度转动的样子.[[a,b,c],[d,e,f],[g,h,i]]变成[[g,d,a],[h,e,b],[i,f,c]]. 福大 ...

  3. 2021-11-23:规定:L[1]对应a,L[2]对应b,L[3]对应c,...,L[25]对应y。 S1 = a, S(i) = S(i-1) + L[i] + reverse(invert(S(

    2021-11-23:规定:L[1]对应a,L[2]对应b,L[3]对应c,-,L[25]对应y. S1 = a, S(i) = S(i-1) + L[i] + reverse(invert(S(i- ...

  4. 2021-09-03:直线上最多的点数。给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。力扣149。

    2021-09-03:直线上最多的点数.给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点.求最多有多少个点在同一条直线上.力扣149. 福大大 ...

  5. 7-8 切分表达式——写个tokenizer吧 (20 分)

    1.题目描述: [先说点出题背景] 这个题是为低年级同学.学C语言的同学准备的,因为,对这部分同学,这个题目编写起来略有一点复杂.如果是高年级.学过了正则表达式(Regular Expression) ...

  6. SpringMVC 后台从前端获取单个参数

    1.编写web.xml(模板) 2.springmvc配置文件 3.编写对应数据库字段的pojo实体类 @Data @AllArgsConstructor @NoArgsConstructor pub ...

  7. 24 式加速你的 Python

    一,分析代码运行时间 第1式,测算代码运行时间 平凡方法 快捷方法(jupyter环境) 第2式,测算代码多次运行平均时间 平凡方法 快捷方法(jupyter环境) 第3式,按调用函数分析代码运行时间 ...

  8. 前端八股文everybody准备好了没

    引言 由于最近比较忙活没时间学习新东西,现在得空想着能不能好好整理出一些有用的东西,让记忆深刻一点,免得到时候实习找工作面试的时候一问三不知,也希望大家能指正出错误和对大家有点帮助,一起进步,加油奥里 ...

  9. 混沌演练状态下,如何降低应用的 MTTR(平均恢复时间)

    在企业业务领域,锦礼是针对福利.营销.激励等员工采购场景的一站式解决方案,包含面向员工.会员等弹性激励SAAS平台.由于其直接面向公司全体员工,其服务的高可用尤其重要,本文将介绍锦礼商城大促前夕,通过 ...

  10. 基于 canal 的 RDS Mysql 数据实时同步到 Es 服务器

    背景 考虑到我们的数据在密码变大,与数据分析的需求,前面我们是一直在使用 Sphinx 来做全文搜索.主要也是这块我们也没有更为核心的Sphinx 开发人员,从而我们在这块的使用上,一直都还是还有比较 ...