百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

新型OpcJacker恶意软件通过虚假的VPN传播恶意广告

bigegpt 2024-09-12 11:24 73 浏览

趋势科技研究人员发现了一种新型恶意软件,将其命名为 "OpcJacker"(取其opc配置设计“opc”和加密货币劫持“hijack”能力英文前后缀opc-jack而成),该恶意软件自2022年下半年以来一直传播。OpcJacker是一个有趣的恶意软件,因为它的配置文件使用一个自定义的文件格式来定义窃取者的行为。具体来说,该文件格式类似于自定义的虚拟机代码,配置文件中存在的十六进制数字标识符使得窃密器可运行所需的功能。使用这种设计的目的可能是为了使研究人员更难理解和分析恶意软件的代码流。

恶意软件OpcJacker的主要功能包括键盘记录、屏幕截图、从浏览器中窃取敏感数据、加载附加模块,以及替换剪贴板中的加密货币地址以达到劫持目的。

图1. OpcJacker的感染链

研究人员观察到OpcJacker通过不同的活动进行传播,包括伪装成加密货币相关的应用和其他合法软件,然后攻击者通过虚假网站进行传播。在最近一次(2023年2月)涉及OpcJacker的活动中,感染链始于恶意广告,恶意广告对伊朗用户进行地理定位。这些恶意广告被伪装成合法的VPN服务,欺骗受害者下载一个包含OpcJacker的文档。

该恶意软件是通过在已安装得应用更新一个合法的DLL库时加载的,该应用也会加载另一个恶意DLL库。然后,恶意DLL库汇编并运行shellcode,shellcode是另一个恶意可执行文件的loader和runner,可执行文件是文件数据块里存储OpcJacker的各种格式的数据文件,如WAV和CHM。该loader自命名为”Babadeda” crypter以来,已经使用了一年多。这些活动背后的攻击者对加密器本身进行了一些改变,然后增加了一个全新的payload(一个窃密器/剪切器/记键器)。

OpcJacker通常是释放(或下载)和运行额外的模块,这些模块是远程访问工具,不是NetSupport RAT就是一个隐藏虚拟网络计算(hVNC)的变体。我们还发现一份报告分享了一个名为 "Phobos Crypter"(实际上与OpcJacker是同一个恶意软件)的loader被用来加载Phobos勒索软件的信息。

传播

正如介绍中提到的,OpcJacker是通过不同的活动传播的,包括以虚假网站宣传看似合法的软件和加密货币相关的应用,但实际都是托管恶意软件。由于这些活动除了OpcJacker之外,还会传播一些其他不同的恶意软件,因此它们很可能是OpcJacker的控制者所使用的不同类型的按次安装服务。

在最近一次(2023年2月)涉及OpcJacker的活动中,研究人员注意到OpcJacker是通过针对伊朗恶意广告的地理定位传播的。这些恶意广告链接到一个恶意网站,这个恶意网站伪装成合法VPN软件的网站。网站的内容是从一个合法的商业VPN服务的网站上复制的,然而链接被修改为指向到一个内嵌恶意内容被黑网站。

恶意网站检查客户的IP地址以确定受害者是否使用VPN服务。如果IP地址没有使用VPN服务,它就将受害者重定向到第二个被黑网站,诱使他们下载一个包含OpcJacker的文档。如果受害者正在使用VPN服务,就不会发生上述攻击行为。

图2. 一个用于提供OpcJacker的恶意广告的例子

此外,研究人员还发现了一些ISO镜像和RAR/ZIP档案,其中包含各种软件被修改过的安装程序,其导致OpcJacker加载。这些安装程序以前被其他活动使用过,被托管在各种被黑的WordPress框架的网站或软件开发平台,如GitHub。攻击者喜欢使用ISO文件的一个可能的原因是为了绕过IE浏览器的 Mark-of-the-Web 警告。

以下是我们发现的一些文件名例子:

  • CLF_security.iso
  • Cloudflare_security_setup.iso
  • GoldenDict-1.5.0-RC2-372-gc3ff15f-Install.zip
  • MSI_Afterburner.iso
  • tigervnc64-winvnc-1.12.0.rar
  • TradingViewDesktop.zip
  • XDag.x64.rar

Babadeda加密器

在安装程序释放所有必要的文件后,它就会加载主可执行文件(RawDigger.exe),这是一个干净的合法文件。

图3. 安装程序释放的文件列表;虽然大多数是安全文件,但有些是补丁或恶意文件

可执行文件加载了一个DLL库,其中包括打了补丁的导入(librawf.dll)

图4. 导入的DLL库列表;高亮显示的库为修补后可加载另外恶意DLL的库

修补后的DLL(librawf.dll,与合法应用RawDigger(一个原始镜像分析器)相关)的导入地址表被进一步修补,修补包括了两个额外的DLL库。在下图中,请注意FirstThunk地址(新添加的库)是如何以001Dxxxx开始的,而不是原始库的FirstThunk地址中使用的0012xxxx。

图5. 一个经过修补的导入地址表

图5中高亮显示的库(libpushpp.dll)随后被加载和执行。它的主要任务是打开其中一个数据文件(hm)并加载存储在其中的第一阶段的shellcode。

图6. 恶意库打开一个数据文件

第一阶段shellcode的偏移量和大小被硬编码到DLL库中。

图7. 恶意库从偏移量0x37D50复制第一阶段的shellcode;shellcode的大小为0x75A字节

在较新版本的Babadeda加密器中,另一个DLL库(mdb.dll,来自虚假VPN的安装程序)被加载到内存中,然后第一阶段shellcode覆盖写入到一个硬编码随机选择的内存块。请注意,这种变化只是一个小细节,对第一阶段shellcode的整体功能没有影响。

图8. 内存加载合法库(mdb.dll),然后第一阶段shellcode(0x7B5字节)被复制到库的内存空间中

在第一阶段shellcode的末尾有一个配置表,包含了加密块的偏移量和它们各自的大小。然后,第一阶段shellcode解密并整合所有的块,形成第二阶段的shellcode(一个加载器)和主要的恶意软件(OpcJacker能加载其他恶意模块)。

图9. 第一阶段shellcode的配置表

配置表以至少八个相同的字符开始(图9中红色的 "*",但在其他样本中可能使用不同的字符),然后是数据文件的总长度(绿色字体;hm的长度=0x1775e0=1537504字节),加密密钥(黄色字体;0x18),shellcode第二阶段块数(棕色字体;0x07),最后,由主恶意软件的块数(白色字体;0x08)。0x07(红线框)和0x08(蓝线框)的列表相当于每个块的15个地址和大小。

在数据文件(hm)的开头,我们可以看到(WAV)文件头,因为它试图模仿WAVE文件格式。请注意,数据文件可以是不同的文件格式,CHM格式能被模仿篡改。

图10. 以WAV头开始的数据文件

主要的窃密器组件(OpcJacker)

主要的恶意软件组件(OpcJacker)是一个有趣的窃密器,首先解密并加载其配置文件。配置文件的格式类似于用自定义机器语言编写的字节码,其中每条指令都被解析,获得单独的操作码,然后执行具体的处理程序。

在分析自定义字节码时,我们注意到以下模式:

ASCII字符串被编码为01 xx xx xx <string bytes>;其中xx xx xx xx是字符串的长度。

图11. 配置文件内编码的ASCII字符串

同样地,宽的字符串从第02字节开始,而二进制数组从第03字节开始。

图12. 配置文件内编码的UNICODE字符串

图13. 配置文件内的编码二进制阵列

配置文件的格式是一个指令序列,其中指令以三个4字节的小端(DWORD)数字开始。第一个数字是虚拟程序计数器,第二个可能是父指令的虚拟程序计数器,而第三个是处理程序ID(将在虚拟机中执行的代码),后面是数据字节或附加处理程序ID。

基于这些观察,研究人员写了一个指令解析器,从中得到了以下输出。尽管对虚拟机内部实现的观察和理解是不完整的,但解析器让研究人员很好地理解了配置文件中定义的行为是什么。

解密和解码后的配置文件从某些系统变量的初始化开始,其中 "test "和 "rik "很可能是活动ID。由SHA256 c5b499e886d8e86d0d85d0f73bc760516e7476442d3def2feeade417926f04a5释放的配置文件包含不同的关键词 "test "和 "ilk "作为活动ID。同时,2023年2月的最新活动所释放的配置文件(SHA256 565EA7469F9769DD05C925A3F3EF9A2F9756FF1F35FD154107786BFC63703B52)包含关键词 "test_installs "和 "yorik"。

图14. 初始化命令

然后初始化剪贴板替换功能(剪切)。

图15. 剪贴板替换器(clipper)的初始化

然后,变量 "exe "被初始化为可执行文件字节(见4d 5a 90 = MZ标记)。这个可执行文件是一个远程访问工具。

图16. 嵌入式模块(PE EXE格式)

恶意软件通过注册表运行和任务调度器方法设置了持久性。请注意用于保存当前进程文件名的$itself_exe变量。

图17. 设置持久性的方法

然后,该恶意软件启动剪切功能,即监控剪报板上的加密货币地址,并将其替换为由攻击者自己的加密货币地址。

图18. 剪切器功能

最后,virtual_launch_exe函数运行先前嵌入的可执行文件,这些文件是RAT,要么是NetSupport RAT、NetSupport RAT下载器,要么是hVNC。

图19. 运行嵌入式可执行文件的功能

自定义虚拟机中的处理程序ID

从前面几张截图中的第三列(或解码后的 "命令 "变量)可以看出,虚拟机实现了许多内部处理程序。其中大部分都与各种数据操作有关。我们在表1中列出了几个值得注意的处理程序,它们具有特定的高级功能。偷窃器实现的功能包括:剪贴(剪贴板内容替换)、键盘记录、文件执行和列出、杀死进程、窃取Chrome证书、检测空闲和检测虚拟机。然而,在我们的测试场景中,我们观察到窃密器大多只是设置持久性和提供额外的模块(远程访问工具)。

Handler ID

Function

0x3E9

Used for persistence (registry; HKCU)

0x3EA

Used for persistence (registry; HKLM)

0x3EB

Used for persistence (startup folder)

0x3EC;0x3ED

Used for persistence (task scheduler)

0x7d1

Lists files

0x579

Starts clipper

0x57A

Stops clipper

0x12d

Puts the machine into sleep mode

0x385

Terminates process

0x387

Exits process

0x388; 0x38B

Runs PE executable

0x389

Runs shellcode

0x38A

Runs PE executable export routine

0x76D

Gets current committed memory limit (ullTotalPageFile)

0x76E

Gets the amount of actual physical memory (ullTotalPhys)

0x641

Steals sensitive data from Chromium

0x259

Checks if the machine is idle and if the cursor is not moving

0x25B

Checks if the machine is idle and if no new process is being created

0x25D

Checks if the machine idle and if no new window is being created

0x835

Starts keylogger

0x836

Starts keylogger for a certain period

0x837

Stops keylogger

0x839

Copies data (likely logs) then return 0x83a (klogs)

0x1F5

Retrieves VMWare via CPUID

0x1f7

Searches for 'virtual' in SYSTEM\\ControlSet001\\Services\\disk\\Enum

0x83A

Writes file(s) to klogs//

0x89a

Writes file(s) to screenshots\\

0x596

Writes to clp\clp_log.txt

0xf6

Writes file(s) to chromium_creds\\

0xCE

Copies files to filesystem\\

0x321

Creates messagemonitor window, which needed for the clipper

0x322

Destroys messagemonitor window, which is needed for the clipper

0x5DC

Gets environment ID

0x5E0

Runs GetModuleFileNameW, which is needed for resolving $itself_exe

表1. 虚拟机命令ID

图20. 在窃密器的二进制中实现的与键盘记录器有关的命令;在截图中也可以看到命令ID(0x835;0x837;0x836;0x839)

嵌入式模块

NetSupport RAT模块

一些嵌入式模块包含NetSupport RAT的client32.exe(SHA256 18DF68D1581C11130C139FA52ABB74DFD098A9AF698A250645D6A4A65EFCBF2D或SHA256 49A568F8AC11173E3A0D76CFF6BC1D4B9BDF2C35C6D8570177422F142DCFDBE3)文件。然而,这个单一的文件是不够的,因为NetSupport工具需要额外的DLL库和一个配置文件。请注意,这些缺失的文件已经被修改后的安装程序丢进了安装目录。

对于研究人员来说,最重要的文件叫做client32.ini,它包含重要的设置,如网关地址、网关密钥(GSK)和端口。

图21. NetSupport RAT的配置文件

NetSupport RAT下载器模块

一些嵌入式模块包含NetSupport RAT下载器(SHA256 C68096EB0A655924CA840EA1C71F9372AC055F299B52335AD10DDFA835F3633D)。这个下载器对URL的payload进行解密,然后下载并执行它。

图22. 解密后的下载器配置文件,额外的URL以清晰的文字显示出来

解密后的配置包含两个URL,一个通向包含NetSupport RAT的档案,就像之前的模块一样,而第二个则包含一些批处理脚本,显示的信息如图23中的信息。后来,这些批处理脚本中的一个下载了额外的窃密器。

图23. 告诉受害者等待程序安装的钓鱼信息

hVNC模块

一些嵌入式模块包含一个修改的hVNC模块F772B652176A6E40012969E05D1C75E3C51A8DB44712454975678F04DEDAAA。这个模块,除了标准的远程桌面功能外,还包含搜索以下加密货币相关的谷歌浏览器、微软Edge和火狐浏览器扩展(钱包)存在的例程:

Google Chrome extension ID

Extension name

ffnbelfdoeiohenkjibnmadjiehjhajb

Yoroi

ibnejdfjmmkpcnlpebklmnkoeoihofec

TronLink

jbdaocneiiinmjbjlgalhcelgbejmnid

Nifty Wallet

nkbihfbeogaeaoehlefnkodbefgpgknn

MetaMask

afbcbjpbpfadlkmhmclhkeeodmamcflc

Math Wallet

hnfanknocfeofbddgcijnmhnfnkdnaad

Coinbase Wallet

fhbohimaelbohpjbbldcngcnapndodjp

Binance Wallet

odbfpeeihdkbihmopkbjmoonfanlbfcl

Brave Wallet

hpglfhgfnhbgpjdenjgmdgoeiappafln

Guarda Wallet

blnieiiffboillknjnepogjhkgnoapac

Equall Wallet

cjelfplplebdjjenllpjcblmjkfcffne

Jaxx Liberty

fihkakfobkmkjojpchpfgcmhfjnmnfpi

BitApp Wallet

kncchdigobghenbbaddojjnnaogfppfj

iWallet

amkmjjmmflddogmhpjloimipbofnfjih

Wombat

fhilaheimglignddkjgofkcbgekhenbh

Oxygen

nlbmnnijcnlegkjjpcfjclmcfggfefdm

MyEtherWallet

nanjmdknhkinifnkgdcggcfnhdaammmj

GuildWallet

nkddgncdjgjfcddamfgcmfnlhccnimig

Saturn Wallet

fnjhmkhhmkbjkkabndcnnogagogbneec

Ronin Wallet

aiifbnbfobpmeekipheeijimdpnlpgpp

Station Wallet

fnnegphlobjdpkhecapkijjdkgcjhkib

Harmony

aeachknmefphepccionboohckonoeemg

Coin98

cgeeodpfagjceefieflmdfphplkenlfk

EVER Wallet

pdadjkfkgcafgbceimcpbkalnfnepbnk

KardiaChain

bfnaelmomeimhlpmgjnjophhpkkoljpa

Phantom

fhilaheimglignddkjgofkcbgekhenbh

Oxygen

mgffkfbidihjpoaomajlbgchddlicgpn

Pali

aodkkagnadcbobfpggfnjeongemjbjca

BoltX

kpfopkelmapcoipemfendmdcghnegimn

Liquality

hmeobnfnfcmdkdcmlblgagmfpfboieaf

XDEFI

lpfcbjknijpeeillifnkikgncikgfhdo

Nami

dngmlblcodfobpdpecaadgfbcggfjfnm

MultiversX DeFi

表2. 针对Chrome浏览器的扩展程序

Microsoft Edge extension ID

Extension name

akoiaibnepcedcplijmiamnaigbepmcb

Yoroi

ejbalbakoplchlghecdalmeeeajnimhm

MetaMask

dfeccadlilpndjjohbjdblepmjeahlmm

Math Wallet

kjmoohlgokccodicjjfebfomlbljgfhk

Ronin Wallet

ajkhoeiiokighlmdnlakpjfoobnjinie

Terra Station

fplfipmamcjaknpgnipjeaeeidnjooao

BDLT wallet

niihfokdlimbddhfmngnplgfcgpmlido

Glow

obffkkagpmohennipjokmpllocnlndac

OneKey

kfocnlddfahihoalinnfbnfmopjokmhl

MetaWallet

表3. 针对EDGE浏览器的扩展程序

Mozilla Firefox extension ID

Extension name

{530f7c6c-6077-4703-8f71-cb368c663e35}.xpi

Yoroi

ronin-wallet@axieinfinity.com.xpi

Ronin Wallet

webextension@metamask.io.xpi

MetaMask

{5799d9b6-8343-4c26-9ab6-5d2ad39884ce}.xpi

TronLink

{aa812bee-9e92-48ba-9570-5faf0cfe2578}.xpi


{59ea5f29-6ea9-40b5-83cd-937249b001e1}.xpi


{d8ddfc2a-97d9-4c60-8b53-5edd299b6674}.xpi


{7c42eea1-b3e4-4be4-a56f-82a5852b12dc}.xpi

Phantom

{b3e96b5f-b5bf-8b48-846b-52f430365e80}.xpi


{eb1fb57b-ca3d-4624-a841-728fdb28455f}.xpi


{76596e30-ecdb-477a-91fd-c08f2018df1a}.xpi


表4. 针对火狐浏览器的扩展程序

在我们分析的样本中,命令和控制(C&C)通信以下列魔法开始:

图24. HVNC网络通信魔法

下面的片段显示,有些值是硬编码到可执行文件中的,其他的是由MachineGuid生成的或随机生成的。注意图25中看到的字符串 "7.7",这可能是修改后的hVNC版本。

图25. 生成hVNC数据包魔法的代码

总结

OpcJacker的控制者的使用动机看起来是出于经济利益,因为该恶意软件的主要目的是从钱包中窃取加密货币资金。然而,其多功能性也允许OpcJacker作为一个窃密器或恶意软件loader,这意味着它可以在其最初的预期用途之外被使用。

我们在样本中发现的活动ID,如 "test "和 "test_installs",表明OpcJacker可能仍处于开发和测试阶段。鉴于其独特的设计与各种类似虚拟机的功能相结合,该恶意软件有可能广受攻击者欢迎,因此可能在未来的威胁活动中使用。

from https://www.freebuf.com/articles/paper/363188.html

相关推荐

当Frida来“敲”门(frida是什么)

0x1渗透测试瓶颈目前,碰到越来越多的大客户都会将核心资产业务集中在统一的APP上,或者对自己比较重要的APP,如自己的主业务,办公APP进行加壳,流量加密,投入了很多精力在移动端的防护上。而现在挖...

服务端性能测试实战3-性能测试脚本开发

前言在前面的两篇文章中,我们分别介绍了性能测试的理论知识以及性能测试计划制定,本篇文章将重点介绍性能测试脚本开发。脚本开发将分为两个阶段:阶段一:了解各个接口的入参、出参,使用Python代码模拟前端...

Springboot整合Apache Ftpserver拓展功能及业务讲解(三)

今日分享每天分享技术实战干货,技术在于积累和收藏,希望可以帮助到您,同时也希望获得您的支持和关注。架构开源地址:https://gitee.com/msxyspringboot整合Ftpserver参...

Linux和Windows下:Python Crypto模块安装方式区别

一、Linux环境下:fromCrypto.SignatureimportPKCS1_v1_5如果导包报错:ImportError:Nomodulenamed'Crypt...

Python 3 加密简介(python des加密解密)

Python3的标准库中是没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto和cryptography上,我...

怎样从零开始编译一个魔兽世界开源服务端Windows

第二章:编译和安装我是艾西,上期我们讲述到编译一个魔兽世界开源服务端环境准备,那么今天跟大家聊聊怎么编译和安装我们直接进入正题(上一章没有看到的小伙伴可以点我主页查看)编译服务端:在D盘新建一个文件夹...

附1-Conda部署安装及基本使用(conda安装教程)

Windows环境安装安装介质下载下载地址:https://www.anaconda.com/products/individual安装Anaconda安装时,选择自定义安装,选择自定义安装路径:配置...

如何配置全世界最小的 MySQL 服务器

配置全世界最小的MySQL服务器——如何在一块IntelEdison为控制板上安装一个MySQL服务器。介绍在我最近的一篇博文中,物联网,消息以及MySQL,我展示了如果Partic...

如何使用Github Action来自动化编译PolarDB-PG数据库

随着PolarDB在国产数据库领域荣膺桂冠并持续获得广泛认可,越来越多的学生和技术爱好者开始关注并涉足这款由阿里巴巴集团倾力打造且性能卓越的关系型云原生数据库。有很多同学想要上手尝试,却卡在了编译数据...

面向NDK开发者的Android 7.0变更(ndk android.mk)

订阅Google官方微信公众号:谷歌开发者。与谷歌一起创造未来!受Android平台其他改进的影响,为了方便加载本机代码,AndroidM和N中的动态链接器对编写整洁且跨平台兼容的本机...

信创改造--人大金仓(Kingbase)数据库安装、备份恢复的问题纪要

问题一:在安装KingbaseES时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在Linux系统中,需要以非root用户执行安装程序,且该用户要有标准的home目录,您可...

OpenSSH 安全漏洞,修补操作一手掌握

1.漏洞概述近日,国家信息安全漏洞库(CNNVD)收到关于OpenSSH安全漏洞(CNNVD-202407-017、CVE-2024-6387)情况的报送。攻击者可以利用该漏洞在无需认证的情况下,通...

Linux:lsof命令详解(linux lsof命令详解)

介绍欢迎来到这篇博客。在这篇博客中,我们将学习Unix/Linux系统上的lsof命令行工具。命令行工具是您使用CLI(命令行界面)而不是GUI(图形用户界面)运行的程序或工具。lsoflsof代表&...

幻隐说固态第一期:固态硬盘接口类别

前排声明所有信息来源于网络收集,如有错误请评论区指出更正。废话不多说,目前固态硬盘接口按速度由慢到快分有这几类:SATA、mSATA、SATAExpress、PCI-E、m.2、u.2。下面我们来...

新品轰炸 影驰SSD多款产品登Computex

分享泡泡网SSD固态硬盘频道6月6日台北电脑展作为全球第二、亚洲最大的3C/IT产业链专业展,吸引了众多IT厂商和全球各地媒体的热烈关注,全球存储新势力—影驰,也积极参与其中,为广大玩家朋友带来了...