经典病毒上线流量分析-Lokibot

一、概述

Lokibot于2015年面世,持续活跃至今,是一种高度危险且隐匿的恶意软件,旨在窃取受害主机的敏感信息,包括存储的密码、浏览器登录凭据以及加密货币钱包等,并将这些信息上送到远程C2服务器上。本文将重点针对Lokibot家族的上线包进行分析,让读者可以更深入了解经典病毒Lokibot的流量特征,进行有效防御。

二、本地行为分析

文件基本信息如下:

1688003806_649ce4de96efb34637cbd.png!small?1688003807064

2.1 脱壳

使用反编译工具分析文件发现该文件使用了壳保护。为了更好的分析病毒行为,需要对样本进行脱壳处理。尝试在沙箱运行发现如下行为:

1688003872_649ce5209617711c7784e.png!small?1688003873814

根据行为可知,文件调用WriteProcessMemory(),向进程中注入文件

WriteProcessMemory()作用:将数据写入指定进程中的内存区域。

BOOL WriteProcessMemory(
  [in]  HANDLE  hProcess,
  [in]  LPVOID  lpBaseAddress,  ;目标地址
  [in]  LPCVOID lpBuffer,     ;预备写入的地址
  [in]  SIZE_T  nSize,        ;写入数据大小
  [out] SIZE_T  *lpNumberOfBytesWritten
);

定位可疑函数位置,对该函数下硬件断点

1688004017_649ce5b11e5fe81ae25fd.png!small?1688004017879

1688004025_649ce5b91d46aa2d1d849.png!small?1688004025800

查看stdcall窗口,主要关注2,3,4这三个参数,通过这三个参数可以判断出需要进行dump文件的起始地址以及文件大小。经调试确定WriteProcessMemory()被调用五次,整理可知写入数据大小为0x1A000。

1688004037_649ce5c5517acda726fca.png!small?1688004037919

通过savedata命令dump数据到文件中

savedata命令格式:文件名,起始地址,文件大小。实际命令如下:savedata 1234,0x040AF0F8,0x1A000

1688004051_649ce5d3ae0257070425e.png!small?1688004052605

使用反编译工具查看保存的文件,可以看到清楚的逻辑,确定脱壳成功。

2.2 动态获取API

该样本未通过导入表使用关键API,只有当需要调用API时才会接收索引值以及名称的hash值获取对应API的地址直接调用,而非将API恢复或者存储到某个地方以后再运行。使用该方式可以防止分析者一次性恢复使用的所有API,实现细节见下文。

GET_dll_base函数会以a1作为索引值从包含DLL名称的内存数组中获取DLL名称,进而获取其基址。

1688004098_649ce60271547bed44a66.png!small?1688004099070

parse_export_tbl函数会加载DLL并解析导出表,遍历导出表中函数并通过LO_caculate_hash函数计算出函数名字符串的hash与参数api_hash对比,相同则成功获取到API地址。

1688004111_649ce60f906a69822cda2.png!small?1688004112089

LO_caculate_hash函数负责计算当前调用API的HSAH值,计算步骤如下:该函数使用了循环嵌套,外层循环运行n次(n为API名称字符串的长度)。每循环一次获取当前存储在*api_str中的字符与v3进行异或后存储在v3中,并将*api_str的值修改为下一个字符存储的地址。接着进行内层循环,内层循环运行8次 判断v3的值是否为0,不为0则与常数0x4358AD54进行异或,再右移1位。最后将输出结果v3取反。通过上述过程最终获取当前API名称的hash。

1688004125_649ce61dc4f80ecb5abb5.png!small?1688004126769

使用x64dbg调试相关逻辑

系统API调用示例如下:

1688004138_649ce62af093054ead80b.png!small?1688004139440

计算并对比API名称的hash获取相应地址

1688004153_649ce639ad14964f24178.png!small?1688004154235

1688004159_649ce63f2a77d5e1e5dee.png!small?1688004159867

上述分析确定了获取API地址与调用函数的地址,由于该样本是通过API_HASH去获取相关API地址,同时也可以获取相关API的名称。获取被调用API名称的方法如下:

通过下条件断点,直接输出API的名称和相关地址。

在地址0x403260下条件断点,断下后可从EAX获取API名称,从栈顶获取调用API的函数信息。

1688004172_649ce64c421e021048c77.png!small?1688004173351

最终获取的API信息与相关地址如下:

1688004184_649ce658c96cfd18b5534.png!small?1688004185420

2.3 创建互斥量

调用成功会根据受害者主机系统的GUID创建互斥量。

1688004220_649ce67ccc6dd47dcdf92.png!small?1688004221335

2.4 窃取数据

Lokibot会构造两个数组,第一个数组中的值作为全局变量充当标识符,第二个数组中的函数实现了各种窃取数据的逻辑。

1688004247_649ce697f03a2066bd0ee.png!small?1688004248500

firefox窃密函数功能为:判断是否存在firefox浏览器信息,根据不同的系统版本执行对应的窃密操作。其他窃密函数的逻辑类似。

1688004262_649ce6a634b4074350033.png!small?1688004262781

Lokibot会给每个窃密函数绑定一个全局变量标识符,C2服务器会根据这些全局标识符来存储/解析被盗数据。

1688004272_649ce6b0229da4a7631d0.png!small?1688004272562

1688004278_649ce6b6cf9be85df0dfb.png!small?1688004279586

窃取信息的目标程序包含浏览器,远控,邮件等常用工具,部分工具示例如下:

firefox browser     火狐浏览器
notepadplusplus     Notepad++
myftp               myftp上传工具
ftpgetter           ftp上传软件
syncovery           Super Flexible Synchronizer自动备份工具
bitkinex            bitkinex手机ftp工具
putty               putty远控工具
incredimail         incredimail邮件管理软件
outlook             outlook邮件

同时,LoKibot会尝试从 Windows Credential Manager 中窃取凭据信息。

1688004312_649ce6d88fbbd5549ccfc.png!small?1688004313183

为了窃取凭证信息,Lokibot遍历读取指定目录下以“.lck”为后缀的所有文件。

1688004340_649ce6f494b673d0e03ab.png!small?1688004341159

elevate_privilege函数的主要功能是调整进程令牌的权限。以便find_file获取凭据信息。

1688004354_649ce7020e0266f290cc4.png!small?1688004354836

find_file函数主要功能是查找%s\\Microsoft\\Credentials与%s\\Microsoft\\Credentials下的凭据信息。

1688004370_649ce712174182efde8cd.png!small?1688004370703

1688004376_649ce7185b990ee37c140.png!small?1688004376903

将窃取的数据再次打包发送到C2服务器。

1688004386_649ce72287d7b31412d35.png!small?1688004387198

2.5 持久化

为了实现持久化,Lokibot 将自身复制到%APPDATA%内的一个文件夹,创建注册表启动项,隐藏创建的目录和复制的可执行文件。

创建目录并复制原始可执行文件。

1688004413_649ce73d4e19477235be2.png!small?1688004413979

创建注册表启动项并隐藏文件夹和可执行文件。

1688004426_649ce74ac5fd90c0172bc.png!small?1688004427304

三、网络行为分析

3.1 解密并连接C2

Lokibot会将获取的信息和系统信息一起打包发送至目标服务器。

1688004485_649ce785bd2456f0d0acd.png!small?1688004486637

获取宿主机用户名、桌面等相关信息。

1688004498_649ce79219a29f1883026.png!small?1688004498583

1688004504_649ce798318ea6dd3b80e.png!small?1688004504634

1688004508_649ce79cea426b1f24a50.png!small?1688004509382

将获取的信息拼接在一起,并传入send_data。

1688004519_649ce7a7814bb23a8583d.png!small?1688004520056

Lokibot将C2以3DES加密算法加密后存储在样本中,建立连接前先进行解密,解密结果如下图。

1688004530_649ce7b26b4a7dac66fdb.png!small?1688004531021

上线报文示例如下:

1688004543_649ce7bf9c0039d2f95c1.png!small?1688004544451

3.2 上线包详细分析

将上线报文的关键数据导出,使用Imhex标注,各部分含义如下

1.下图标记处四个字节为样本中硬编码的定值数据

1688004582_649ce7e67dbc17ea1044a.png!small?1688004583664

2.下图标记处为定值,使用了Lokibot存储数据的特殊结构

字节[0,1]代表是否为宽字节,宽字节为1否则为0

字节[2,5]代表后续数据长度

字节[6,12]代表存储的数据,此处为“ckav.ru”

1688004600_649ce7f8077d6953b94bb.png!small?1688004601072

3.下图标记处使用了Lokibot特殊数据结构,含义为用户名

1688004637_649ce81de05ae06236fb2.png!small?1688004638732

4.下图标记处使用了Lokibot特殊数据结构,含义为主机名

1688004645_649ce825d75f9c2fed89a.png!small?1688004646497

5.下图标记处使用了Lokibot特殊数据结构,含义为widnows域名称

1688004652_649ce82cce7fc3bf565fc.png!small?1688004653738

6.下图标记处表示屏幕宽高

字节[0,3]代表屏幕宽度

字节[4,7]代表屏幕高度

1688004662_649ce836b060a17e0a73c.png!small?1688004663453

7.下图标记处值如下

字节[0,1]代表检索指定用户账户信息成功

字节[2,3]代表当前用户不属于管理员组

字节[4,5]代表当前系统为x64框架

1688004670_649ce83e002339671052c.png!small?1688004671017

8.下图标记处表示操作系统的版本号为6.1 次版本为1

1688004675_649ce843dd237c9011fe2.png!small?1688004676624

9.下图标记处为定值,为“k.r.o.t.i.k.\.W.i.n.b.o.x.”的第一个字符

1688004687_649ce84f52c2db9e64798.png!small?1688004688057

1688004693_649ce855d0a61ea495c2d.png!small?1688004694513

10.下图标记处为定值

1688004706_649ce8622f85a6032d6e7.png!small?1688004707107

11.下图标记处使用了Lokibot特殊数据结构,含义为机器的GUID

1688004740_649ce88471f5e9466abae.png!small?1688004741237

12.下图标记处为随机生成的字符串

字节[0,3]代表生成的字符串长度

字节[4,8]代表生成的字符串

四、防护方案

处置建议

  1. 定期修改重要账户的密码
  2. 重要数据做好备份工作
  3. 及时更新系统补丁,减少系统漏洞带来的风险

IPS特征库

针对Lokibot家族上线流量,新华三IPS特征库能够有效检测并拦截,请及时开启相关功能。

1688004850_649ce8f2eb9b996aca3c5.png!small?1688004851828

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

 1.学习路线图 

 攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

 

 (都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。 

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。 

 还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

 最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RadioML 2016.10a 调制方式识别

RadioML 2016.10a 调制方式识别 MLP、CNN、ResNet X [] lbl [] for mod in mods:for snr in snrs:X.append(Xd[(mod,snr)])for i in range(Xd[(mod,snr)].shape[0]):lbl.append((mod,snr)) X np.vstack(X) file.close()上述论文的分类任务是识别和区分不同类型的无线电调制…

收藏这几个电子书搜索引擎网站,找书不再难!

书籍是我们快速学习获取知识的重要途径,其中,通过电子书学习是一种低成本的学习方式。然而,面对海量的电子书资源,如何快速找到自己想要的书籍呢?下面小编就来为大家介绍几个强大的电子书搜索引擎网站,帮助…

数字时代的创新:二人共益订单模式解析

一、引言 随着数字技术的飞速发展,商业模式也日新月异。其中,“二人共益订单模式”凭借其独特的互助与共赢理念,迅速在市场中获得关注。该模式不仅为用户提供了优质服务和独享优惠,更通过用户间的互助和订单共享,实现…

AbMole带你探索颅内压力与肌肉生长的联系:一项突破性研究

在生物医学领域,颅内压力(ICP)的调控机制一直是研究的热点。最近,一项发表在《PLOS ONE》上的研究为我们揭示了颅内压力与后颅窝肌肉生长之间的潜在联系,为我们理解某些慢性头痛的成因提供了新的视角。 颅内压力的异常…

期望25K,我的React知识体系

面经哥只做互联网社招面试经历分享,关注我,每日推送精选面经,面试前,先找面经哥 我最终还是上岸了,花了3天总结了近万字的react知识体系思维导图,分享出来希望能帮助有缘人吧,以下只是部分截图&…

goldfish loss:减少训练数据泄漏,提高大语言模型输出的多样性

LLMs(大型语言模型)能够记忆并重复它们的训练数据,这可能会带来隐私和版权风险。为了减轻记忆现象,论文作者引入了一种名为"goldfish loss"的微妙修改,在训练过程中,随机抽样的一部分标记被排除在…

美国ARC与延锋安全合作,推动汽车安全气囊技术新突破

在汽车安全领域,安全气囊作为关键被动安全配置,对于保障乘客生命安全至关重要。随着汽车工业的快速发展和科技创新的持续推进,安全气囊技术的升级与革新显得尤为重要。2022年10月25日,美国ARC公司与延锋安全携手合作,共…

4大利好因素释放顺风车市场潜力,嘀嗒出行即将登陆港交所

经历了十多年发展,共享出行行业即将迎来第一个上市公司——专注顺风车和智慧出租车的嘀嗒出行。 近日,嘀嗒出行通过了港交所聆讯,根据招股书,嘀嗒出行2023年顺风车搭乘次数和交易额分别为约1.3亿次和86亿元,同比分别增…

CCS条形光源——HLDL3系列,长距离和宽范围照射应用的不二之选

机器视觉系统中,光源起着重要作用,不同类型的光源应用也不同,选择合适的光源成像效果非常明显。今天我们一起来看看CCS光源——工业用条形光源HLDL3系列。 高亮LED光源HLDL3系列 适用于长距离和宽范围照射的条形光源。 适用于各种检测案例&a…

Jenkins+K8s实现持续集成(三)

接上面一篇JenkinsK8s实现持续集成(二),K8s创建秘钥。 看secret kubectl get secret 删除secret kubectl delete secret hello-secret -n train 创建secret kubectl create secret docker-registry hello-secret --docker-server镜像仓库…

安卓怎么传输数据到新苹果手机?2招制胜,玩转新手机

当你手中紧握着最新款的苹果手机,心中充满了对科技新宠的期待与好奇,却发现旧手机里的数据如同搬家时的宝贝,怎么也舍不得丢。安卓怎么传输数据到新苹果手机?今天我们就来解锁安卓到苹果数据传输的秘密,让你轻松实现数…

聊聊redis中的有序集合

写在文章开头 有序集合(sorted set)是redis中比较常见的数据库结构,它不仅支持O(logN)界别的有序的范围查询,同时也支持O(1)级别的单元素查询,基于此问题,本文就将从redis源码的角度分析一下有序集合的设计与实现。 Hi&#xff0…

Vue3【二十二】Vue 路由模式的嵌套路由和用query给组件的RouterLink传参

Vue3【二十二】Vue 路由模式的嵌套路由和用query给组件传参 Vue3【二十二】Vue 路由模式的嵌套路由和用query给组件传参 RouterLink 的两种传参方法 RouterView 案例截图 目录结构 代码 index.ts // 创建一个路由器,并暴漏出去// 第一步:引入createRou…

ATA-4011C高压功率放大器在亥姆霍兹线圈中的作用介绍

高压功率放大器在亥姆霍兹线圈中的作用是为亥姆霍兹线圈提供稳定的高功率电流信号,从而产生强大的磁场。亥姆霍兹线圈是一种用于产生均匀磁场的设备,在物理实验、医学成像和工业领域中得到广泛应用。下面安泰电子官网将从以下几个方面详细介绍高压功率放…

推荐阅读:车载测试新纪元,智能座舱的全面解读

前段时间给自己定了一个计划,决定来学一下车载测试的相关内容,既然车载测试被大家说的这么火,作为一个测试人员,不去了解一下怎么行呢?当然,目前的行业还可以咯,但是给自己适当的投资充电&#…

国际荐酒师携手各国际荐酒师专业委员会深化2024年度合作

国际荐酒师(香港)协会携手广东海上丝绸之路文化促进会及广东省城镇化发展研究会,深化2024年度合作,共同打造品荐与传播大师班培养荐酒师专业人材 近日,国际荐酒师(香港)协会、广东海上丝绸之路…

『Z-Weekly Feed 08』加密资产观 | FHE应用前景 | OPAL协议

一位机构投资者的加密资产观 作者:Hongbo 01 💡TL;DR 在加密投资领域如何找到真正的“价值”:Crypto 作为一种新兴资产,应该找到一种区别于传统公司股票资产的估值方法,本文重点阐述了加密货币作为新的资产类型与传统资…

康谋分享 | 从CAN到CAN FD:ADTF在汽车网络中的应用

随着汽车电子技术的发展,车辆上配备了越来越多的电子装置,这些设备多采用点对点的方式通信,这也导致了车内存在庞大的线束。造成汽车制造和安装的困难并进一步降低汽车的配置空间,汽车总线逐步开始向网络化方向发展。 在此背景下…

FANUC喷涂机器人P-350iA电机过热维修解决方案

发那科喷涂机器人作为自动化喷涂生产线的重要组成部分,其性能稳定性和可靠性对于生产效率和产品质量具有重要影响。然而,在实际使用过程中,FANUC喷涂机器人P-350iA电机过热故障问题往往成为影响其正常运行的主要因素之一。 FANUC机器人M-100…

第一百一十二节 Java面向对象设计 - Java异常处理

Java面向对象设计 - Java异常处理 异常是在没有定义正常执行路径时在Java程序的执行期间可能出现的条件。 Java通过将执行操作的代码与处理错误的代码分离来处理错误。 当发生异常时,Java会创建一个包含有关异常的所有信息的对象,并将其传递给相应的异…