通过替换dll实现后门功能的恶意代码
通过替换Kernel32.dll来实现的后门功能的恶意代码。
该恶意代码存在一个exe可执行文件和一个dll动态链接库,需要分别进行分析
一.待解决问题
- 这个恶意代码执行了什么功能?
- 通过什么方式实现其功能?
- 如何实现长久驻留?
- 有什么关键特征,或者说这一类恶意代码有什么关键特征?
- 如何清除该恶意代码造成的影响?
二.分析流程
- 查壳,查看程序类型
无壳,32位程序 - 使用IDA静态分析
字符串,导入函数,程序逻辑 - 使用Procommon函数查看程序行为
三.具体分析
首先使用Exeinfo PE查看程序类型和是否有加壳保护。
无壳的32位程序,可以直接使用IDA和x32dbg载入。
对dll进行基础静态分析
IDA载入dll程序,查看其字符串和导入,导出函数
- 这里可以有一个创建互斥体的函数,猜测是用于创建互斥体来判断是否已经将某文件感染。
- 同时存在一个127.26.152.13的IP地址和hello,怀疑是不是存在与该IP存在信息交互,以实现有关后门。
导入函数便十分清晰了,存在大量与网络连接有关的API函数,说明该dll实现的就是后门功能,用于和外界进行信息交互。
导出函数则显得有些奇怪,作为一个dll却没有导出函数,怀疑不是直接通过该dll提供功能,应该后续还有操作。
对该dll进行进一步静态分析,理清运行逻辑
dll实现的功能就是与IP为127.26.152.13的主机进行网络通信,并且根据得到的反馈进行相应操作。
通信过程比较简单就是利用网络API函数建立相应连接然后发送信息。
重要的是接下来如何实现后门操作。
这里是根据接受到的字符串来做出相应反馈。
- 如果收到的前5个字符是sleep,那么会执行sleep函数,休眠60s。
- 如果收到的前4个字符是exec则会创建一个新进程,通过动态调试得到创建的新进程的命令行参数就是exec后面的字符串内容。
- 倘若不是以上两个情况,则会返回到开始,再次发送hello。
现在已经将dll所实现的后门功能分析清楚了,接下来需要分析的就是主函数如何利用将该dll载入,并且实现驻留。
IDA载入程序,分析其字符串和导入函数
在字符串当中,发现几个比较关键的地方。存在两个Kernel32.dll的地址,但是仔细观察我们会发现其实一个是Kernel32另一个则是Kerne132。到这里我们可以猜到,恶意程序应该是又创建了一个Kerne132.dll替换了原来的kernel32.dll,新的dll实现的功能不仅有原来Kernel32.dll的功能还应该有自带的那个dll的功能。
我们可以猜测一下要是实现该功能需要几步:
- 需要将原Kernel32.dll的功能复制到Kerne132.dll中。
- 需要将自带的dll复制到Kerne132.dll中。
- 需要将exe文件当中导入表里面的Kernel32.dll替换为Kerne132.dll。
导入函数有两类是我们现在需要密切关注的:
- 文件类函数:包括CreateFileA, CreateMappingA 和 MapViewOfFile等。
- 文件查找类:包括FindNextFileA和FindFirstFileA等。
静态分析函数逻辑
现在根据之前做出的猜测去找相应的功能。
- 这里是对命令行的参数进行判断,只有当参数个数为2并且参数为WARNING_THIS_WILL_DESTROY_YOUR_MACHINE时程序才可以正常运行。后续进行检测分析的时候需要对此进行额外关注。
- 这里将Kernel32.dll中内容复制到自带的dll当中
- 创建Kerne132.dll,将自带dll的内容放入其中。
- 在c盘下扫描所有的exe程序实现dll的替换。
静态分析到此结束,基本上搞清楚了恶意代码的流程,接下来进行行为检测。
在命令行输入相应参数运行程序,注意提前在虚拟机当中拍摄快照,使用Procommon检测程序行为,再使用Wireshark进行抓包分析。
但是由于该恶意代码可能比较老了,需要在Windowsxp下才能运行,虚拟机为Win10系统,无法正常运行,有兴趣的可以自行尝试,关注的重点还是Procommon当中的文件操作和Wireshark当中目地IP为127.26.152.13的通信。
四. 问题解答
- 该恶意代码实现的功能是一个后门功能,可以与外界进行联系,执行外界输出的命令。
- 通过其自带的dll函数实现与目地IP交互功能。
- 通过替换Kernel32.dll文件实现长久驻留,创建了一个名为Kerne132.dll,然后进行替换。
- 关键特征:
存在一个目地IP;
创建了Kerne132.dll;
创建了一个互斥量 - 对该软件打一个补丁,然后反替换一次,即将Kerne132.dll修改为Kernel32.dll。
通过替换dll实现后门功能的恶意代码的更多相关文章
- 恶意代码分析实战-启动一个恶意的DLL
如果不能把恶意代码运行起来,那么动态分析基础技术没有什么用. Windows版本中包含rundll32.exe程序,提供了一个运行DLL的平台. rundll32.exe Dllname,Export ...
- 金蝶KIS专业版替换SXS.dll 遭后门清空数据被修改为【恢复数据联系QQ 735330197,2251434429】解决方法 修复工具。
金蝶KIS专业版 替换SXS.dll 遭后门清空数据(凭证被改为:恢复数据联系QQ 735330197,2251434429)恢复解决方法. [客户名称]:山东青岛福隆发纺织品有限公司 [软件名称]: ...
- rootkit——一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,一般都和木马、后门等其他恶意程序结合使用
Rootkit是指其主要功能为隐藏其他程式进程的软件,可能是一个或一个以上的软件组合:广义而言,Rootkit也可视为一项技术. 目录 1 rootkit是什么 2 rootkit的功能 root ...
- NetSarang软件中nssock2.dll模块被植入恶意代码技术分析与防护方案
原文地址:http://blog.nsfocus.net/nssock2-dll-module-malicious-code-analysis-report/ NetSarang是一家提供安全连接解决 ...
- 2017-2018-2 20155314《网络对抗技术》Exp4 恶意代码分析
2017-2018-2 20155314<网络对抗技术>Exp4 恶意代码分析 目录 实验要求 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 静态分析 1.1 使用virsca ...
- 20155229《网络对抗技术》Exp4:恶意代码分析
实验内容 使用schtasks指令监控系统运行 schtasks指令:允许管理员在本地或远程系统上创建计划任务. SCHTASKS /Create [/S system [/U username [/ ...
- 20155339 Exp4 恶意代码分析
20155339 Exp4 恶意代码分析 实验后回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什么方法来监控 ...
- 20165223《网络对抗技术》Exp4 恶意代码分析
目录 -- 恶意代码分析 恶意代码分析说明 实验任务目标 实验内容概述 schtasks命令使用 实验内容 系统运行监控 恶意软件分析 静态分析 virscan分析和VirusTotal分析 PEiD ...
- Exp4 恶意代码分析
一.原理与实践说明 1. 实践目标 1.1 监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysin ...
- 20164305 徐广皓 Exp4 恶意代码分析
实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systr ...
随机推荐
- 2022-12-25:etcd可以完全替代zookeeper,原因是k8s用的etcd,不用担心不成熟。请问etcd部署在k3s中,yaml如何写?
2022-12-25:etcd可以完全替代zookeeper,原因是k8s用的etcd,不用担心不成熟.请问etcd部署在k3s中,yaml如何写? 答案2022-12-25: 用户名:root 密码 ...
- 2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。 为了简单起见,你可以假设: words.txt只包括小写字母和 ‘ ‘ 。 每个单词只由小写
2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率. 为了简单起见,你可以假设: words.txt只包括小写字母和 ' ' . 每个单词只由小写 ...
- 2021-02-04:第一年农场有1只成熟的母牛A,往后的每年:①每一只成熟的母牛都会生一只母牛 ②每一只新出生的母牛都在出生的第三年成熟 ③每一只母牛永远不会死 。请问N年后牛的数量是多少 ?
2021-02-04:第一年农场有1只成熟的母牛A,往后的每年:①每一只成熟的母牛都会生一只母牛 ②每一只新出生的母牛都在出生的第三年成熟 ③每一只母牛永远不会死 .请问N年后牛的数量是多少 ?福哥答 ...
- 如何在Docker Compose中限制容器的CPU和内存使用?
最近我在使用开源统计Umami过程中,发现CPU和内存经常占满,导致其它服务都不能正常使用.Umami我使用的docker-compose进行部署,于是打算使用docker-compose限制下容器的 ...
- < Python全景系列-5 > 解锁Python并发编程:多线程和多进程的神秘面纱揭晓
欢迎来到我们的系列博客<Python全景系列>!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法.无论你是编程新手,还是有一 ...
- linux 引导过程和服务控制
目录 一.引导分区 二.服务控制 三.运行级别 四.systemd初始化 五.模拟错误 一.引导分区 原理:引导分区是指在开机启动到进入系统这之间的过程 引导分区的过程:1.开机自检 自检顺序:BIO ...
- vue iview 单击table行变色 获取行数据
用到两个事件: 代码如下: 1 <Table :columns="columns" :data="tableData" @on-row-click=&qu ...
- PyInstaller 完美打包 Python 脚本,输出结构清晰、便于二次编辑的打包程序
引入问题 如果我要写一个 Python 项目,打包成 exe 运行(方便在没有 Python 的电脑上使用),我需要打包出的根目录结构美观,没有多余的.杂乱的依赖文件在那里碍眼,而且需要在发现 bug ...
- undefined reference to错误的解决方法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/cserchen/article/deta ...
- 【Java学习】 Spring的基础理解 IOC、AOP以及事务
一.简介 官网: https://spring.io/projects/spring-framework#overview 官方下载工具: https://repo.spring.io ...