Jomalone(“独狼”)的Rootkit后门dll分析

news2024/11/24 9:22:58

从England.sys(md5为B5F7DE342B1D661E57BCD14615CADEFA)驱动文件中提取了4个dll文件,其中两个64位dll,两个32位dll,主要用于APC注入

样本的基本信息

文件名称: 0x3df60-0x15e00.dll
文件大小: 87.5 KB (89,600 字节)
Link date: 11:43 2017/11/10
MD5: 24e9cc3fc2a95898bc99e17c8c8a0501
SHA1: 0ae113e7607e280f58d9d5ce99fff3b59fa20587
pdb路径:e:\BaiduNetdiskDownload\driverone20171110\Release\demodll64.pdb

文件名称: 0x23d00-0x19e00.dll
文件大小: 103 KB (105,984 字节)
Link date: 11:40 2017/11/10
MD5: 0da3c732313fdf561dd542ae988cbe76
SHA1: 5e7d78b58586b43f74ead3f223aeb09d95b1c20a
pdb路径:e:\BaiduNetdiskDownload\driverone20171110\Release\demodll64.pdb

文件名称: 0x53d60-0x11600.dll
文件大小: 69.5 KB (71,168 字节)
Link date: 11:43 2017/11/10
MD5: c3a2b51a98a12289a0346b50d833802f
SHA1: 3e5498d948400253b544c347ae7f079a0ab8dfa5
path路径:E:\BaiduNetdiskDownload\driverone20171110\Release\demodll32.pdb

文件名称: 0xe900-0x15400.dll
文件大小: 85.0 KB (87,040 字节)
MD5: f10fc5093338a6259a90c54a5a8e69c5
SHA1: 11fd59c3dd45649c27fd1fa07492d0d264dedea9
Link date: 11:40 2017/11/10
pdb路径:E:\BaiduNetdiskDownload\driverone20171110\Release\demodll32.pdb

这四个样本其实是两个版本 编译时间分别 为11:40 2017/11/10和11:43 2017/11/10,功能上大同小异
下面我们分析一下0xe900-0x15400.dll这个动态库

0xe900-0x15400.dll

dll的入口,首先获取当前模块名称和当前进程的路径,从配置文件(%appdata%\Maybach\config.ini)读取了两个开关变量lk和qh,匹配安全软件和常用的浏览器程序,如下图所示。

当用户打开上图中的浏览器进程的话,该dll关闭主进程,重新创建并启动一个新进程,进程的启动参数为 浏览器路径+跳转网址

这个跳转网址是是从配置文件中读取解密出来的,并且有一个默认值,对于QQ浏览器、2345加速浏览器、2345chrome浏览器,默认跳转的网址为 http://106.75.84.24/pg/html1,对于其它的浏览器跳转到 http://www.dn2018.com
若当前程序为 搜狗浏览器、UC浏览器、遨游浏览器的话,会打开IE浏览器
http://106.75.84.24/pg/html1 和 http://www.dn2018.com 都会跳转到2345的导航页,如下图所示。


sub_10002340是解密函数,解密的逻辑的比较简单,用C语言可以很容易实现,代码如下

#include <stdio.h>
#include <windows.h>

typedef wchar_t _WORD;


// 对src的内容进行解密,保存在dst中
int  DecodeString_10002340(_WORD *dst, _WORD *src, unsigned int src_len)
{
	unsigned int v3; // esi
	int v4; // ecx
	__int16 v5; // dx

	v3 = 0;
	if ( src_len )
	{
		v4 = (char *)src - (char *)dst;
		do
		{
			switch ( v3 & 7 )
			{
			case 0u:
				v5 = *(_WORD *)((char *)dst + v4) - 1;
				goto LABEL_12;
			case 1u:
				v5 = *(_WORD *)((char *)dst + v4) - 2;
				goto LABEL_12;
			case 2u:
				v5 = *(_WORD *)((char *)dst + v4) - 3;
				goto LABEL_12;
			case 3u:
				v5 = *(_WORD *)((char *)dst + v4) - 4;
				goto LABEL_12;
			case 4u:
				v5 = *(_WORD *)((char *)dst + v4) - 5;
				goto LABEL_12;
			case 5u:
				v5 = *(_WORD *)((char *)dst + v4) - 6;
				goto LABEL_12;
			case 6u:
				v5 = *(_WORD *)((char *)dst + v4) - 7;
				goto LABEL_12;
			case 7u:
				v5 = *(_WORD *)((char *)dst + v4) - 8;
LABEL_12:
				*dst = v5;
				break;
			default:
				break;
			}
			++v3;
			++dst;
		}
		while ( v3 < src_len );
	}
	return 1;
}

int main(){

	
	char src1[] = "\x69\x00\x76\x00\x77\x00\x74\x00\x3F\x00\x35\x00\x36\x00\x7F\x00\x78\x00\x79\x00\x31\x00\x68\x00\x73\x00\x38\x00\x37\x00\x39\x00\x39\x00\x30\x00\x66\x00\x73\x00\x72\x00\x00\x00";
	wchar_t* src = (wchar_t*)src1;
	wchar_t dst[512] = {0};
	DecodeString_10002340(dst,src,wcslen(src));
	printf("%ws\n",dst);
	return 0;
}

若当前程序为资源管理器的话,开启了三个线程

第一个线程从http://163.44.150.179/pz/config_gz.ini下载一个配置文件保存为%appdata%\Maybach\config.ini

第二个线程从从配置文件中读取一系列变量,名为u1-30和j1-30,解密链接后发送给驱动,控制码为0x9C402408,从配置文件中读取denylist解密后发送给驱动,控制码为0xF8267A9B,驱动的符号链接名为\\.\xxxxxx,驱动的程序还需要进一步分析

第三个进程从配置文件中读取了d1u1,dlu2,dlu3这三个字符串,是三个链接,解密后从下载文件保存为%appdata%/Maybach/[随机数].dll,解密后加载执行

小结

其它的样本同上面的样本功能基本相同,通过分析,提取出以下IOC信息

驱动的符号链接名 \\.\xxxxxx
url
http://163.44.150.179/pz/config_gz.ini
http://106.75.84.24/pg/html1
http://www.dn2018.com
文件路径
%appdata%\Maybach\
%appdata%\Maybach\config.ini
%appdata%/dlzeng/config.ini
注册表
HKEY_LOCAL_MACHINE\software\driverone2019\time
HKEY_LOCAL_MACHINE\SOFTWARE\driverone2019\start

这是一个灰产驱动释放的dll,主要是用于apc注入到目标进程,会拦截浏览器进程,修改浏览器的启动参数,打开2345导航页面,2345真流氓。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/457062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubeadm方式搭建K8s集群【1.23.0版本】

文章目录 一、初始化准备二、安装kubeadm三、初始化Master集群四、将新的Node节点加入集群五、部署CNI网络插件六、其他配置 Kubernetes1.24(包括1.24)之后不在兼容docker,如果有需要兼容docker的需求&#xff0c;则安装一个 cri-docker的插件&#xff0c;本文使用的是kuberne…

【SWAT水文模型】ArcSWAT输入准备

ArcSWAT输入准备 1 必需的ArcSWAT空间数据集1.1 数字高程模型&#xff08;DEM&#xff09;1.2 土地覆盖/土地利用类型1.3 土壤数据 2 可选的ArcSWAT空间数据集2.1 DEM Mask2.2 Streams2.3 User- Defined Watersheds 3 ArcSWAT表格和文本文件3.1 子流域出口位置表(dBase 表)3.2 …

【MCAL_Uart】-1.1-图文详解Uart串口协议

目录 1 什么是UART 2 UART的电平 3 UART的波特率 4 UART帧格式 4.1 start bit起始位 4.2 data bit数据位 4.3 parity bit奇偶校验位 4.4 stop bit停止位 5 什么是8-N-1 6 UART总线负载率计算 结尾 优质博文推荐阅读&#xff08;单击下方链接&#xff0c;即可跳转&am…

shell脚本基础之详解脚本的控制

详解脚本的控制 信号的处理Linux信号生成信号中断进程暂停进程 捕获信号捕获脚本退出修改或移除捕获 以后台模式运行脚本后台运行脚本运行多个后台脚本 在非控制台下运行脚本作业控制 查看作业重启停止的作业调整谦让度nice命令renice命令 定时运行作业用 at 命令来定时执行作业…

2023移动云大会即将召开,划重点来了

今年由 ChatGPT 引起的AI浪潮下&#xff0c;人们热议其背后的算力问题&#xff0c;毋庸置疑&#xff0c;算力已成为和水电同样重要的资源。作为开发者&#xff0c;如何了解云计算领域有哪些最新发展趋势&#xff1f; 4月25-26日&#xff0c;以“云擎未来&#xff0c;智信天下”…

Scala之集合(3)

目录 WordCount案例&#xff1a; 需求分析与步骤&#xff1a; 拆分&#xff1a; 聚合&#xff1a; 格式转化&#xff1a; 方法1&#xff1a; 方法2&#xff1a; 排序&#xff1a; 方法1&#xff1a; 方法2&#xff1a; 取top3&#xff1a; 整体化简后的代码&#xf…

轻量级服务器nginx:配置虚拟主机的两种方式

虚拟主机是指&#xff0c;在一台服务器中&#xff0c;通过nginx的代理&#xff0c;我们可以访问多个网站。区分不同的网站&#xff0c;可以通过端口、域名两种方式 这里写目录标题 一 端口不同区分不同的虚拟主机二 通过域名区分不同的主机名1.配置域名映射2.显示登录效果 一 …

基于ATECLOUD电源模块及单板性能自动化测试方案

一、背景介绍 客户使用直流电源、交流电源、直流负载、示波器、数据记录仪、功率分析仪、CAN卡、工控机等仪器对电源模块及单板进行功能和性能方面的测试&#xff0c;目前想要能够通过硬件自动化测试分析系统搭配对应仪器实现自动化测试&#xff0c;提升测试效率。 二、用户痛…

Linux网络——NFS共享服务

Linux网络——NFS共享服务 一、NFS共享服务1.NFS网络文件系统2.NFS 架构3.NFS 工作原理4.NFS相关配置文件及其配置作用 二、搭建NFS服务1.服务器安装 nfs-utils、rpcbind 软件包2.服务器启动nfs-utils、rpcbind服务&#xff0c;并设置共享目录3.服务端更改NFS配置&#xff0c;对…

scrapy实践-02

双师demo ptpress.com.cn/shopping/index 解析每一首歌 <ul class"f-hide"><li><a href"/song?id2037945324">芯房</a></li><li><a href"/song?id2037926385">知足</a></li><li>…

QMS-云质说质量 - 3 来料检验的九大坑,你踩过几个?

大家好&#xff0c;今天我们来讲一讲来料检验。 先重点强调一下&#xff0c;我们讨论的范围是采购大量零部件的离散制造企业&#xff0c;而不是全部类型的企业。 负责来料检验的是IQC部门。相对于整个公司的组织架构来说&#xff0c;IQC是一个很小、很小的部门。负责的事情也很…

2023找工作,怎么样才能成功跳槽面试拿到高薪呢?

前言 无论是在校招还是社会企业招聘中&#xff0c;应聘者总是要经过层层的考核才能被聘用。然而&#xff0c;在招聘时&#xff0c;设置的编程以及非技术面试问题&#xff0c;真的有必要吗&#xff1f;如此就能考核出一位开发者的真实水平&#xff1f; 说到底就是考验你的技术以…

WSL2 对外暴露端口

参考文档 一口气搞定 WSL2 的网络问题从局域网 (LAN) 访问 WSL 2 发行版通过本地网络连接到 WSL2 服务器 按照下面的操作步骤进行操作。 1. powershell 支持 sudo https://github.com/gerardog/gsudo 可以直接下载msi安装&#xff1a;https://github.com/gerardog/gsudo/rel…

excel数据分析比赛

基础 sql:百度网盘 请输入提取码 excel函数 <

Git+SpringBoot详谈

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;老茶icon &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;计…

Linux:shell+权限

索引 1.shell命令及其理解2.Linux权限及其理解1.权限基本概念2.修改权限3.权限掩码umask4.修改拥有者和所属组 3.粘滞位 1.shell命令及其理解 定义&#xff1a;命令行解释器 作用&#xff1a; 将使用者的命令翻译给kernal&#xff08;核心&#xff09;处理将核心的处理结果返…

隧道工程运维VR虚拟实操模拟训练提高学生动手能力

轨道交通作为我国国民经济的命脉和交通运输的骨干网络&#xff0c;不仅承担了绝大部分国家战略、经济物资的运输&#xff0c;还承担着客运运输职能。随着政策的重视和专业的细分&#xff0c;轨道交通的人才需求越来越大&#xff0c;但是目前传统教学面临着一些问题。 • 轨道交…

【AutoGPT】AutoGPT出现,是否意味着ChatGPT已被淘汰

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 前言 什么是ChatGPT&#xff1f; 什么是AutoGPT&#xff1f; AutoGPT与ChatGPT的区别 AutoGPT的优势和劣势 优势 劣势 ChatGPT是否会被淘汰&#xff1f; 前言 近年来&#x…

软件测试技术那么多,我们该如何分辨?

经典软件测试技术分类&#xff1a; 测试技术是指顺利完成测试的一系列相关过程&#xff0c;有很多可能的分类方式&#xff0c;表2-1就是其中的一种。表中列出了流行的测试技术&#xff0c;也按照上面的讨论对其进行分类&#xff1a;手工测试、自动测试、静态测试、动态测试、功…

瑞芯微RK3568开发板发布邮票孔开发板

迅为 iTOP-3568邮票孔开发板采用瑞芯微RK3568处理器&#xff0c;22nm工艺制程&#xff0c;集成4核A55架构处理器和Mali G52 2EE图形处理器&#xff0c;支持4K解码和1080P编码&#xff0c;内置独立的NPU&#xff0c;可用于轻量级人工智能应用&#xff0c; 开发板采购底板核心板的…