恶意软件正劫持安全软件更新进行分发

GuptiMiner 是一个高度复杂的威胁,最早在 2018 年发现,主要为了在大型企业中分发后门。一种是 PuTTY Link 的增强版本后门,能够针对本地网络进行 SMB 扫描,并通过网络横向移动到网络上其他可能易受攻击的 Windows 7 和 Windows Server 2008 主机;另一种是多模块后门,接受攻击者的命令安装更多恶意代码模块,并专注于扫描本地系统上存储的私钥和加密钱包。令人感到不解的是,GuptiMiner 还会分发挖矿程序,对于此类攻击者来说有点不可思议。

GuptiMiner 利用了印度安全厂商 eScan 更新机制中的缺陷,进行恶意软件传播。研究人员向 eScan 与印度国家 CERT 披露了该安全漏洞,厂商也确认并进行了修复。

研究人员发现 Kimsuky 的 Keylogger 与 GuptiMiner 间存在相似性,认为 GuptiMiner 可能与朝鲜 APT 组织 Kimsuky 存在某种关联。

感染链

安装 eScan 的主机向更新服务器请求更新,链路中被中间人拦截并用恶意包替换官方包。eScan 本地软件解压后侧加载 DLL 文件,攻击者通过恶意 DLL 文件执行感染链,引入多个 Shellcode 和 PE 加载程序。

1715096020_663a49d412438b0b7456f.png!small?1715096021182

感染链

进化

GuptiMiner 从 2018 年以来一直保持活跃,开发运营人员一直在改进恶意软件,为其增加新功能。

时间线

GuptiMiner 使用的域名有多种功能:

  • 恶意域名:通过 TXT 响应提供实际 C&C 服务器域名
  • 请求域名:向 DNS 服务器请求的域名
  • PNG 下载:下载 PNG 文件的域名
  • 矿池域名:挖矿软件连接的矿池域名
  • C&C:最终后门使用的域名,提供额外恶意软件
  • 其他:各类目的使用的域名

恶意软件直接连接受攻击者控制的 DNS 服务器,合法的 DNS 服务器不会看到来自该恶意软件的请求。而 GuptiMiner 请求域名则很可能是用于迷惑安全软件和分析人员的,属于混淆技巧的一部分。

1715096051_663a49f3730e29e7295a6.png!small?1715096054570

域名时间线

攻击者认识到正确的 DNS 服务器对整个攻击链维持至关重要,所以攻击者快速进行变换维持有效性。

除了域名,攻击者也使用互斥量维持独立运行。2018 年以来,GuptiMiner 的互斥量也多次修改,并且后来用互斥量来区分样本文件的编译日期。

1715096069_663a4a05b5516726fab5d.png!small?1715096069775

互斥量时间线

MIVOD_6、SLDV15、SLDV13 和 Global\Wed Jun 2 09:43:03 2021 都重用了很多次,因此在更长的时间范围内存在。

PDB

GuptiMiner 在文件中留下了多个 PDB 路径,如下所示:

1715096099_663a4a23b3b40c03d8b76.png!small?1715096102167

PDB 时间线

阶段 0 - 安装

拦截更新

分析人员发现用户发出的合法请求收到了异常响应,例如请求 http://update3[.]mwti[.]net/pub/update/updll3.dlz下载 eScan 安全软件更新包。但请求被攻击者通过中间人替换了,受害者下载了恶意软件而非软件更新包。

更新包

分析人员能够找到最早的 GuptiMiner 样本是在 2018 年 4 月 19 日编译的,第二天被从印度上传到 VirusTotal,后续在德国也存在上传行为。

1715096114_663a4a327d1d90640aae1.png!small?1715096117124

提交信息

文件的完整命名 C:\Program Files\eScan\VERSION.DLL表明其受众是 eScan 用户下载的更新包。

尽管最初的样本并没有那么多功能,但安装部署的过程仍然是基本相同的。

  1. eScan 启动更新程序
  2. 请求没有进行加密,下载软件包被中间人使用恶意文件替换
  3. eScan 更新程序下载并解压恶意软件包
  4. eScan 侧加载恶意 DLL 文件 version.dll,获取与 eScan 进程相同的运行权限
  5. 如果系统中未能找到互斥量,检索 services.exe 进程并将后续 Payload 注入
  6. 清理执行环境,删除更新包

恶意 DLL 文件中包含正常 DLL 中不存在的函数,幸好这些函数名称非常长,清晰地显现了攻击者的意图。

1715096135_663a4a471ca9384250c2d.png!small?1715096135201

导出函数

函数 X64Call 用于在 64 位系统上的 32 位进程运行 64 位代码,恶意软件使用其运行注入的 Shellcode,具体取决于操作系统版本以及 service.exe 进程的位数。

1715096152_663a4a58cb5715551d3f4.png!small?1715096153464

运行 Shellcode

为了保持 eScan 原有功能的完整,恶意 DLL 文件也保留了原有的所有函数。识别出对原有 DLL 函数的调用时,GuptiMiner 会解析原始函数并随后调用它。

1715096168_663a4a6866add768281c2.png!small?1715096168862

确保原功能可用

注入 Shellcode

Shellcode 注入 services.exe 后,读取嵌入的 PE 文件即可执行。

1715096178_663a4a72c98406d3f54bd.png!small?1715096178968

内嵌文件

该 PE 文件可以通过标准方式加载,加载完成后会从原始内存位置完全删除嵌入的代码。

命令行操作

在整个 GuptiMiner 感染链中,注入的 Shellcode 可以操纵当前进程的命令行。GetCommandLineA/W 更改了任务管理器中显示的命令行。

1715096193_663a4a81ddd911b42b56f.png!small?1715096194335

命令行操作

检查此功能后,分析人员认为并没有理解该功能的用法,或者并没有达到攻击者的预期。

代码虚拟化

另一个带有互斥量的样本文件使用了代码虚拟化,PE 文件中也使用了名为 .v_lizer 的附加段,段名也在后来的版本中被重命名了多次。

1715096207_663a4a8f108f725c73260.png!small?1715096207105

虚拟化段

幸运的是,Shellcode 与内嵌 PE 文件仍然是明文的,混淆程度并不高。

阶段 0.9 - 安装改进

攻击者多次优化安装过程,引入了计划任务、WMI 事件、关闭 Windows Defender 以及启用证书。

该阶段释放了多个文件,从而使恶意软件能够进一步进行侧加载。这些文件是良性的,专门用于进行侧加载,侧加载的恶意 DLL 文件是两个 PNG 加载器:

  • de48abe380bd84b5dc940743ad6727d0372f602a8871a4a0ae2a53b15e1b1739
  • e0dd8af1b70f47374b0714e3b368e20dbcfa45c6fe8f4a2e72314f4cd3ef16ee

WMI 事件

触发 WMI 事件加载第一个 PNG 加载器,被加载程序位于 C:\PROGRAMDATA\AMD\CNext\atiadlxx.dll,加载程序在以下位置之一:

  • C:\ProgramData\AMD\CNext\slsnotif.exe
  • C:\ProgramData\AMD\CNext\msvcr120.dll
  • C:\Program Files (x86)\AMD\CNext\CCCSlim\slsnotify.exe
  • C:\Program Files (x86)\AMD\CNext\CCCSlim\msvcr120.dll

通过 WMI 事件注册良性文件 slsnotify.exe,以便在满足以下条件时执行文件:

1715096253_663a4abd1af5552f98c98.png!small?1715096253037

触发侧加载条件

侧加载只会在 1 月、7 月以及 11 月的工作日被触发,这也凸显了 GuptiMiner 为了长久潜伏做出的努力。

计划任务

与 WMI 事件类似,GuptiMiner 也会在 C:\ProgramData\Brother\Brmfl14c\BrRemPnP.exe 释放用于侧加载的良性文件。随后,恶意 PNG 加载器被释放在:

  • C:\Program Files (x86)\Brother\Brmfl14c\BrLogAPI.dll
  • C:\Program Files\Brother\Brmfl14c\BrLogAPI.dll

计划任务是通过调用计划任务程序创建的。

关机时部署

GuptiMiner 只在系统关机过程中释放包含 PNG 加载器的最终 Payload,攻击者想要在其他应用程序关闭不能保护用户时发起攻击。

1715096290_663a4ae255ae968c31845.png!small?1715096291183

关机时释放载荷

只有当 SM_SHUTTINGDOWN 指标非零时,即当前会话正在被关闭,才会释放最终 Payload。

添加证书

大多数情况下,GuptiMiner 使用自签名的二进制文件进行攻击。但分析人员发现失陷主机上的 DLL 文件都由自定义的受信任根证书颁发机构签名。这意味着签名本身不可信,因为在恶意软件安装过程中,GuptiMiner 会将根证书增加到 Windows 系统证书中。

这样当签名的文件被执行时,会被认为持有合法的签名。攻击者是通过使用 CertCreateCertificateContext、CertOpenStore 和 CertAddCertificateContextToStoreAPI 函数来完成的。

1715096310_663a4af650cf25f3fe01c.png!small?1715096310543

添加根证书

证书以纯文本方式内嵌在 GuptiMiner 的样本文件中:

1715096324_663a4b043c6c6683954ec.png!small?1715096324439

内嵌证书

分析人员发现攻击者使用了三个不同的证书颁发者:

  • GTE Class 3 Certificate Authority
  • VeriSign Class 3 Code Signing 2010
  • DigiCert Assured ID Code Signing CA

注册表存储 Payload

GuptiMiner 会将 Payload 存储在注册表中,获得更好的持久化特性。此外,Payload 还使用固定密钥进行异或加密。

存储 Payload 的位置包括:

  • SYSTEM\CurrentControlSet\Control\Nls\Sorting\Ids\en-US
  • SYSTEM\CurrentControlSet\Control\PnP\Pci\CardList
  • SYSTEM\CurrentControlSet\Control\Wdf\DMCF
  • SYSTEM\CurrentControlSet\Control\StorVSP\Parsers

阶段 1.0 - PNG 加载器

恶意样本通过向攻击者的 DNS 服务器发送 DNS 请求,通过响应的 TXT 记录获取实际 C&C 服务器的加密 URL 地址,进一步请求其他 Payload。通常是 T-Mobile 徽标的 PNG 图片,文件末尾附带了 Shellcode。随后,恶意软件在单独的线程中执行 Shellcode。

由于 DNS 服务器本身是恶意的,所以请求的域名并不重要。流量解析后,可以发现攻击者设置的 Transaction ID 始终为 0x034b。

1715096341_663a4b1562e2e3c45096e.png!small?1715096341863

TXT 响应

恶意软件执行的请求是随机间隔的。PNG 加载器执行后 20 分钟左右请求 DNS 的 TXT 记录,而恶意软件更新程序执行的连续请求间长达 69 小时。

Shellcode 创建独立的互斥量实现,版本号由 DNS TXT 响应的前两个字节解密后提供,确保相同版本的 Shellcode 不会被运行两次。

1715096355_663a4b234b782478fb01f.png!small?1715096355293

互斥量编号

DNS TXT 解密

接收到 TXT 响应后,首先使用 base64 解码,再使用 MD5 与 RC2 进行解密。解密过程中,攻击者选择使用标准 Windows Crypto API 函数。

1715096367_663a4b2f62d0347fdbfde.png!small?1715096367439

标准函数

分析人员可以发现初始化过程中存在问题,CryptHashData 函数的第二个参数是指向长度为 dwDataLen 的字节数组的指针。而恶意软件使用 Unicode(UTF-16)格式的字符串,密钥分为两部分并用零填充。

1715096379_663a4b3b29bc6c1faa644.png!small?1715096379146

字符数组

尽管攻击者不断修改密钥,但这一缺陷却从未被修复。

DNS TXT 记录解析

返回的 DNS TXT 响应为 VUBw2mOgagCILdD3qWwVMQFPUd0dPHO3MS/CwpL2bVESh9OnF/Pgs6mHPLktvph2,完全解码/解密该字符串后可以得到如下内容:

1715096391_663a4b47d39f71691a8f4.png!small?1715096391713

解密信息

具体来说,前两个字节为 Shellcode 的版本信息。分析人员认为第一个字节为主要版本,第二个字节为次要版本,只有主要版本才能触发更新过程。第三个字节是密钥大小,表示之后应该读取多少字节当作密钥。紧跟着密钥后的是 URL,最后还可以计算所有字节的校验和来进行验证。

样本文件利用 URL 下载下一阶段的 Payload,其 User-Agent 被设置为当前正在运行的进程的位数。

1715096407_663a4b5781d672f09ee31.png!small?1715096407681

回传请求

攻击者获取 User-Agent 主要用于两件事:

  • 获取下一阶段对应位数的 Shellcode
  • 过滤掉不正确的 HTTP 请求

解析 PNG 文件

PNG 文件的图片部分精确为 805 字节,恶意软件会跳过这些字节再读取。数据利用 TXT 响应提供的密钥,使用 RC2 算法进行解密。

1715096424_663a4b68e371954ece282.png!small?1715096425116

PNG 文件数据

IP 掩码

2023 年年末,攻击者放弃使用 DNS TXT 记录转而使用 IP 掩码机制。基本流程如下所示:

  • 使用 gethostbyname 函数获取攻击者注册的硬编码服务器的 IP 地址
  • 返回两个 IP 地址,第一个是掩码地址,第二个是可用的 Payload 版本且以 23.195. 开头
  • 如果版本比当前版本新,掩码地址将生成实际 IP 地址
  • 实际 IP 地址与硬编码的常量字符串组合起来下载 PNG 文件

去掩码的过程将 IP 地址的每八位字节与 0xA、0xB、0xC、0xD 进行异或,即可获取实际 IP 地址。

例如服务器 www.elimpacific[.]net 的响应为:

1715096441_663a4b7988d3c3c35b837.png!small?1715096441570

响应信息

23.195.101.1 代表版本信息,如果高于当前版本即可下载 PNG 文件进行更新。实际 IP 计算方式如下所示:

1715096451_663a4b838ad84acfaa9d2.png!small?1715096451557

掩码计算

从某种意义上说,硬编码的常量值可以当作密码:

1715096467_663a4b93aa1cf7e5791a0.png!small?1715096468255

网络请求

研究人员发现的两个服务器如下所示:

1715096486_663a4ba6297b878b0080e.png!small?1715096486039

服务器

反调试

GuptiMiner 通过 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Disk\Enum 检查磁盘的驱动程序是否为以下厂商,确认是否处于虚拟机中。

  • vmware
  • qemu
  • vbox
  • virtualhd

该恶意软件还会检查注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Cylance,来确认是否存在 Cylance 安全软件。

恶意软件还会检查进程前缀,确认是否有分析软件存在:

1715096504_663a4bb810e938adef226.png!small?1715096504068

进程前缀

注册表存储

运营后期,攻击者将下载的 PNG 图片存储在注册表中。研究人员已经在以下位置发现存储 PNG 图片:

  • SYSTEM\CurrentControlSet\Control\Arbiters\Class
  • SYSTEM\CurrentControlSet\Control\CMF\Class
  • SYSTEM\CurrentControlSet\Control\CMF\CORE
  • SYSTEM\CurrentControlSet\Control\CMF\DEF
  • SYSTEM\CurrentControlSet\Control\CMF\Els
  • SYSTEM\CurrentControlSet\Control\CMF\ASN
  • SYSTEM\CurrentControlSet\Control\MSDTC\BSR

阶段 2.0 - Gzip 加载器

Gzip 加载器是由 PNG 文件中的 Shellcode 提取并执行的,只是一个简单的 PE 文件,使用 Gzip 解压另一个 Shellcode 并在单独的线程中执行。

该线程还会加载后续名为 Puppeteer 的 Payload,是所有后门功能的核心。

阶段 3.0 - Puppeteer

Puppeteer 是整个攻击行动的中枢,控制部署两个核心组件:门罗币挖矿程序与后门程序。

Puppeteer 设置

Puppeteer 会设置新的电源方案,强制失陷主机不会进入睡眠状态。后续,杀死所有名为 msiexec.exe、cmstp.exe 或 credwiz.exe 的进程。并且,通过停止服务来禁用 Windows Defender。

Puppeteer 会创建一个独特的计划任务:

  • 复制并重命名合法文件 rundll32.exe 到 C:\ProgramData\Microsoft\Crypto\Escan\dss.exe
  • 释放恶意 DLL 文件到 C:\ProgramData\Microsoft\Crypto\Escan\updll3.dll3 由 dss.exeValidateFile 加载
  • 设置 TASK_TRIGGER_BOOT 可以在启动时以 TASK_RUNLEVEL_HIGHEST 优先级执行定时任务
  • 任务被重命名并位于 C:\Windows\system32\tasks\Microsoft\windows\autochk\ESUpgrade

恶意软件将 Payload 复制到内存中,并在硬盘上删除原始文件。随后,Puppeteer 会每隔一百毫秒检查一次系统是否关闭,仅在系统关闭时将恶意文件重新引入磁盘。

这样确实更加隐蔽,但如果受害者的设备遇到断电或者其他类型的意外关闭,无法从内存中恢复文件也会导致 Puppeteer 停止工作。这可能也是后来攻击者删除了这个机制的原因,提升复杂度换取恶意软件的稳定性。

1715096524_663a4bcc637dd35342dab.png!small?1715096525525

确保重启后正常执行

部署挖矿

Puppeteer 创建了一个单独的线程,将挖矿程序注入 credwiz.exe 进程中。挖矿程序会根据失陷主机的硬件稳健性动态分配挖矿线程:

1715096537_663a4bd978e79c024bb48.png!small?1715096537443

动态资源分配

Puppeteer 持续监控系统的运行进程,默认情况下每 5 秒检查一次。如果遇到监控工具,恶意软件就会终止 credwiz.exe 进程,推迟五个小时后再进行注入。

  • taskmgr.exe
  • autoruns.exe
  • wireshark.exe
  • wireshark-gtk.exe
  • tcpview.exe

Puppeteer 持续监控系统上的 CPU 使用情况并调整资源分配,使其不占用太多资源并保持在安全软件的监控之下。

后门设置

后门通过查看 DNS 服务器注册表(SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server)来检查是否在 Windows Server 上运行。

随后,通过 net group "domain computers" /domain查看加入域中的计算机数量。该命令打印每三台计算机一个换行符,如下所示:

1715096552_663a4be8a6538d90c651c.png!small?1715096552669

命令输出

新版的后门中,Puppeteer 会检查返回的字节数是否超过 100。如果超过,Puppeteer 会认为它在至少拥有五台计算机的网络中运行,通过硬编码的 C&C 服务器下载 Payload 并执行。更新版本的后门,返回字节数的阈值明显增大,甚至目标集中在哪些超过 7000 台计算机的网络。

如果上述检查通过,Puppeteer 将使用 PowerShell 命令下载并执行 Payload。

1715096562_663a4bf29a58a5faed98c.png!small?1715096562479

PowerShell 命令

另一个 Payload 则与网络规模无关,但由于分析时域名已经失效,无法验证该域名分发的 Payload 属于什么类型。

更新版本的 Puppeteer

更新版本中,不仅切换到日期的互斥量,还引入了更多分析工具(Process explorer、Process Monitor、llyDbg、WinDbg 和 TeamViewer)的监控。

DLL 多样性

Puppeteer 会使用许多不同名称和位置的 DLL 文件进行侧加载,或者使用计划任务进行直接加载。例如:

  • C:\Program Files (x86)\eScan\updll3.dll3
  • C:\Program Files\Common Files\SYSTEM\SysResetErr\SysResetErr.DLL
  • C:\Program Files\Microsoft SQL Server\SpellChecking\MsSpellChecking.DLL
  • C:\Program Files\Microsoft SQL Server\SpellChecking\MsSpellCheckingHost.DLL
  • C:\ProgramData\AMD\CNext\atiadlxx.dll
  • C:\ProgramData\Microsoft\Assistance\LunarG\vulkan-1.dll
  • C:\ProgramData\Microsoft\Crypto\Escan\updll3.dll
  • C:\ProgramData\Microsoft\Crypto\Escan\updll3.dll3
  • C:\ProgramData\Microsoft\Network\Escan\AutoWake.dll

每季度部署

特定版本的后门,会每三个月执行一次,即每季度部署。

1715096582_663a4c06d738f1423a1ac.png!small?1715096582806

隔三个月执行

阶段 4.0 - 后门

不会有攻击者这么大费周章只是为了进行挖矿,研究人员对攻击行为进行了全面分析。

PuTTY 后门

GuptiMiner 部署的后门之一基于 PuTTY Link 自定义构建,该版本包含本地 SMB 扫描进行横向平移。当 GuptiMiner 发现支持 SMB 设备时,就保存到列表中。扫描也是有条件的,例如扫描只在一周中的某一天进行,并且只能在中午 12 点到 18 点间进行。

1715096600_663a4c1882d254d1bf5c9.png!small?1715096600563

SMB 扫描条件

恶意软件还会在成功扫描三小时后创建一个新的注册表项 HKEY_LOCAL_MACHINE\SYSTEM\RNG\FFFF,作为扫描完成的标志。如下所示,恶意软件通过名为 SystemTimeToVariantTime 的 API 函数获取注册表项的写入时间和当前系统时间,并将它们相减。相减结果是一个浮点数,其中整数部分表示天数。

1715096616_663a4c280a353f97c6797.png!small?1715096616293

时间计算

阈值设置为六十天对应的秒数,但由于主要用天进行比较,在 51.84 天时即可激活。

横向平移

恶意软件根据 SMB 响应数据包判断主机是否运行 Windows 7 和 Windows Server 2008,确认就会增加到潜在目标列表中。此外,GuptiMiner 会在攻击者服务器与失陷主机的 445 端口间创建一条隧道。

1715096627_663a4c339ca8e0646cf1b.png!small?1715096628378

函数参数

该隧道可以将 SMB 流量转发到目标列表的 IP 地址,从而实现横向平移。攻击者可以通过后门动态手动拼接 SMB 数据包,如下所示:

1715096640_663a4c4001f5e42ed8c80.png!small?1715096640554

组接 SMB 数据包

建立连接后,恶意软件会尝试以匿名身份登录,并向 \IPC$管道发出请求。

1715096651_663a4c4b5ec612ad42cb4.png!small?1715096651371

SMB 流量

模块化后门

恶意软件可以通过扫描 .pvk 与 .wallet 来发现系统上的私钥和钱包文件,确认将路径记录在 C:\Users\Public\Ca.txt。现有的恶意样本没有发现单独处理该文件的代码,可能是后续会窃取回传给攻击者。扫描行为是通过建注册表项(HKEY_LOCAL_MACHINE\SYSTEM\Software\Microsoft\DECLAG)来标记的。

1715096678_663a4c66d6ccaa47fb6b9.png!small?1715096678852

命令输出

如果在系统上发现一些私钥或钱包,或者恶意软件在大型企业环境中运行,恶意软件会继续以 Shellcode 的形式将后门注入到进程 mmc.exe 中。与前述方法类似,攻击者以 20 万字符为阈值,寻找 7781 台计算机的失陷环境。

多模块后门中只有网络通信模块是硬编码的并且默认可用。配置中包含有关要与哪个服务器通信、要使用哪些端口、命令/请求之间应设置的延迟等待长度等详细信息。配置中用于通信的域名是 www.righttrak[.]net:443 与 185.248.160[.]141。

1715096699_663a4c7bba6bdd5db9ada.png!small?1715096699831

解密配置

网络模块包含七个不同的命令,攻击者通过这些命令控制后门程序。

1715096711_663a4c872a916f0c5be93.png!small?1715096711076

命令列表

这些模块以加密形式存储在注册表(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PCB)中,以确保其持久性。

后门还是用哈希函数进行混淆,具体算法如下所示:

1715096720_663a4c90a2dd755103224.png!small?1715096720548

算法伪码

服务器 www.righttrak[.]net:443 在分析时拥有有效的证书,如下所示:

1715096732_663a4c9c219e714e5fb7c.png!small?1715096732800

证书信息

其他样本

分析人员在其他样本文件中发现了来自后门设置阶段的 C&C 域名,但这些脚本并不是由我们所知的传统 GuptiMiner 操作分发的,研究人员认为这可能是 GuptiMiner 的另一部分攻击行动。PowerShell 脚本如下所示:

1715096742_663a4ca6edbb264e31787.png!small?1715096743101

PowerShell 脚本

仅当安装了防病毒软件时,才会从恶意域名下载并执行 Payload,攻击者将矛头直指 eScan。

使用被盗证书

研究人员发现了两个被盗的用于签署 GuptiMiner 样本文件的证书,其中一个被盗证书来自 Winnti。该证书与卡巴此前分析的一样,当然不仅仅被 GuptiMiner 利用。

证书SHA-1样本文件
529763AC53562BE3C1BB2C42BCAB51E3AD8F8A5631dfba1b102bbf4092b25e63aae0f27386c480c10191c96c04295cb284f20878
529763AC53562BE3C1BB2C42BCAB51E3AD8F8A568e96d15864ec0cc6d3976d87e9e76e6eeccc23c551b22dcfacb60232773ec049
31070C2EA30E6B4E1C270DF94BE1036AE7F8616Bb0f94d84888dffacbc10bd7f9983b2d681b55d7e932c2d952d47ee606058df54
31070C2EA30E6B4E1C270DF94BE1036AE7F8616Bf656a418fca7c4275f2441840faaeb70947e4f39d3826d6d2e50a3e7b8120e4e

与 Kimsuky 的关系

研究人员发现了一个窃密程序,与 GuptiMiner 的 PDB 路径(F:!PROTECT\Real\startW-2008\MainWork\Release\MainWork.pdb)相似。但并不是由 GuptiMiner 分发的,二者有着不同的感染链。该窃密程序可以进行多种窃密,例如按键记录、记录程序打开时间等。

AhnLab 与思科的分析人员都曾提到信息收集模块 49B46336-BA4D-4905-9824-D282F05F6576 实时检测窗口类名的方法。样本发现的窗口,会被终止或者隐藏在受害者的视野之外。

1715096763_663a4cbbd384c3df15d07.png!small?1715096763870

检索函数

另外,窃密程序在资源中包含加密的 Payload 也具有 PDB 路径(F:\PROTECT\Real\startW-2008\HTTPPro\Release\HTTPPro.pdb)。该模块使用 RC4 算法进行加密,通信的 URL 为 http://stwu.mygamesonline[.]org/home/sel.php或 http://stwu.mygamesonline[.]org/home/buy.php?filename=%s&key=%s。该域名是 Kimsuky 常用的域名。

Keylogger 的下一阶段载荷名为 ms12.acm,如下所示:

1715096774_663a4cc66b3b1a9c088c5.png!small?1715096774490

下阶段载荷

相似的命名、模块化后门的链接与 SFX 压缩文件中包含一个名为 ms00.dat 的加密文件等,很难忽略二者的相似之处。

最后,思科的文章也提到 Kimsuky 的 Keylogger 也包含一个名为 .vlizer 的段,如下所示:

1715096788_663a4cd4dffa92e8a06f3.png!small?1715096788996

Kimsuky Keylogger

结论

GuptiMiner 针对 eScan 的更新机制进行中间人攻击,部署了多样的攻击链。研究人员发现了两种针对大型企业网络的不同类型后门,但也会分发 XMRig 进行挖矿。研究人员认为 GuptiMiner 与朝鲜黑客组织 Kimsuky 可能存在关联,二者间存在许多相似之处。

IOC

_spf.microsoft[.]com

acmeautoleasing[.]net

b.guterman[.]net

breedbackfp[.]com

crl.microsoft[.]com

crl.peepzo[.]com

crl.sneakerhost[.]com

desmoinesreg[.]com

dl.sneakerhost[.]com

edgesync[.]net

espcomp[.]net

ext.microsoft[.]com

ext.peepzo[.]com

ext.sneakerhost[.]com

gesucht[.]net

gesucht[.]net

globalsign.microsoft[.]com

icamper[.]net

m.airequipment[.]net

m.cbacontrols[.]com

m.gosoengine[.]com

m.guterman[.]net

m.indpendant[.]com

m.insomniaccinema[.]com

m.korkyt[.]net

m.satchmos[.]net

m.sifraco[.]com

ns.bretzger[.]net

ns.deannacraite[.]com

ns.desmoinesreg[.]com

ns.dreamsoles[.]com

ns.editaccess[.]com

ns.encontacto[.]net

ns.gravelmart[.]net

ns.gridsense[.]net

ns.jetmediauk[.]com

ns.kbdn[.]net

ns.lesagencestv[.]net

ns.penawarkanser[.]net

ns.srnmicro[.]net

ns.suechiLton[.]com

ns.trafomo[.]com

ns.trafomo[.]com

ns1.earthscienceclass[.]com

ns1.peepzo[.]com

ns1.securtelecom[.]com

ns1.sneakerhost[.]com

p.bramco[.]net

p.hashvault[.]pro

r.sifraco[.]com

spf.microsoft[.]com

widgeonhill[.]com

www.bascap[.]net

http://update3[.]mwti[.]net/pub/update/updll3.dlz

c3122448ae3b21ac2431d8fd523451ff25de7f6e399ff013d6fa6953a7998fa3

7a1554fe1c504786402d97edecc10c3aa12bd6b7b7b101cfc7a009ae88dd99c6

f884d4c01fccf08a916f1e7168080a2d740a62a774f18e64f377d23923b0297

ext.peepzo[.]com

crl.peepzo[.]com

ns1.peepzo[.]com

http://www.deanmiller[.]net/m/

294b73d38b89ce66cfdefa04b1678edf1b74a9b7f50343d9036a5d549ade509a

185.45.192[.]43/elimp/

6305d66aac77098107e3aa6d85af1c2e3fc2bb1f639e4a9da619c8409104c414

357009a70daacfc3379560286a134b89e1874ab930d84edb2d3ba418f7ad6a0b

364984e8d62eb42fd880755a296bd4a93cc071b9705c1f1b43e4c19dd84adc65

4dfd082eee771b7801b2ddcea9680457f76d4888c64bb0b45d4ea616f0a47f21

https://m.airequipment[.]net/gpse/

487624b44b43dacb45fd93d03e25c9f6d919eaa6f01e365bb71897a385919ddd

07beca60c0a50520b8dbc0b8cc2d56614dd48fef0466f846a0a03afbfc42349d

gesucht[.]net

f0ccfcb5d49d08e9e66b67bb3fedc476fdf5476a432306e78ddaaba4f8e3bbc4

8446d4fc1310b31238f9a610cd25ea832925a25e758b9a41eea66f998163bb34

74D7F1AF69FB706E87FF0116B8E4FA3A9B87275505E2EE7A32A8628A2D066549

www.righttrak[.]net:443

185.248.160[.]141

af9f1331ac671d241bf62240aa52389059b4071a0635cb9cb-58fa78ab942a33b

31dfba1b102bbf4092b25e63aae0f27386c480c10191c96c04295cb284f20878

8e96d15864ec0cc6d3976d87e9e76e6eeccc23c551b22dcfacb60232773ec049

b0f94d84888dffacbc10bd7f9983b2d681b55d7e932c2d952d47ee606058df54

f656a418fca7c4275f2441840faaeb70947e4f39d3826d6d2e50a3e7b8120e4e

7f1221c613b9de2da62da613b8b7c9afde2ea026fe6b88198a65c9485ded7b3d

参考来源

Avast

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

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

相关文章

如何给文件和文件夹添加备注信息

1. 给文件添加备注信息 1. 打开文件夹,点击查看 → 选项 → 更改文件夹和搜索选项 → 勾除隐藏受保护的操作系统文件 → 勾选显示隐藏的文件、文件夹和驱动器; 2. listary工具搜索desktop.ini,随便点击一个desktop.ini文件,即可…

线程同步--互斥锁,读写锁

线程同步 基本概念 线程的能力在于能够方便地通过全局变量或共享内存来交换信息,但这也带来了并发控制的复杂性,主要表现在如何安全地管理多个线程对共享资源的访问。这里涉及到几个关键的概念和技术: 临界区(Critical Section…

走进C++:C到C++的过渡

目录 什么是C呢? C的发展史 多了一些吃前来很香的“语法糖”。 语法糖一:命名空间 命名空间有个强大的功能 如何使用 语法糖二:缺省参数 语法糖三:函数重载 语法糖四:引用 引用传参 引用返回 引用和…

算法学习011-不同的二叉查找树/搜索树 c++动态规划算法实现 中小学算法思维学习 信奥算法解析

目录 C不同的二叉查找树 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 六、推荐资料 C不同的二叉查找树 一、题目要求 1、编程实现 二叉查找树(Binary Search Tree),(…

AI图书推荐:ChatGPT全面指南—用AI帮你更健康、更富有、更智慧

你是否在努力改善你的健康? 你是否长期遭受财务困难? 你想丰富你的思想、身体和灵魂吗? 如果是这样,那么这本书就是为你准备的。 《ChatGPT全面指南—用AI帮你更健康、更富有、更智慧》(CHATGPT Chronicles AQuick…

Mybatis-Plus常用的增删改查坑

添加依赖 <!--实体类上加上Data注解就不用写get&#xff0c;set&#xff0c;toString&#xff0c;equals等方法了--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional…

Three.js基础练习——渲染一个立方体

1.学习内容参考了 three.js入门教程--零基础也能学会_threejs菜鸟教程-CSDN博客 本章内容包含渲染立方体&#xff0c;并配合ui工具食用~ 2.效果图 import * as THREE from three import * as dat from dat.gui import { OrbitControls } from three/addons/controls/OrbitC…

ETL中如何执行Python脚本

Python的解读 Python 是一种高级、通用的编程语言&#xff0c;由荷兰程序员吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;于1990年代初设计并发布。Python的设计哲学强调代码的可读性和简洁性&#xff0c;它的语法清晰且表达力强&#xff0c;使得开发者能够以更少的代…

中国各地级市的海拔标准差数据集

01、数据简介 海拔标准差是指对某个地点的海拔进行测量后&#xff0c;所得结果与平均海拔之间的差异。它反映了测量结果的离散程度&#xff0c;即海拔数据的可靠性。如果标准差较小&#xff0c;说明测量结果的可靠性较高&#xff1b;如果标准差较大&#xff0c;则说明测量结果…

《解锁高效合同管理系统:优化业务流程,提升管理效率》

随着企业规模的扩大和业务复杂性的增加&#xff0c;合同管理变得愈发重要。合同是企业与客户、供应商、合作伙伴之间的法律约束和商业承诺&#xff0c;而有效的合同管理系统则成为企业提高运营效率、降低风险的关键工具。本文将探讨合同管理系统的重要性以及如何利用合同管理系…

Electron 报错:WinState is not a constructor

文章目录 问题分析 问题 在使用 electron-win-state 库时报错如下 代码如下&#xff1a; const WinState require(electron-win-state) const winState new WinState({ defaultWidth: 800,defaultHeight: 600,// other winState options, see below })const browserWindow…

工作中使用Optional处理空指针异常

工作中使用Optional处理空指针异常 实体类以前对空指针的判断Optional处理空指针测试结果 实体类 package po;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;Data AllArgsConstructor NoArgsConstruct…

【Vue2】关于response返回数据的错误小记

关于Vue2中response返回数据的一个错误小记 如图&#xff0c;在这里返回的时候&#xff0c;后端是通过List< String >返回的&#xff0c;response接收到的实际上是一个Array数组&#xff0c;但是赋值给searchedTaskList的时候&#xff0c;需要在.then包括的范围里面赋值给…

a-auto-complete 请求后端数据做模糊查询,解决下拉框选择选不上,不回显的问题

a-auto-complete 请求后端数据做模糊查询&#xff0c;解决下拉框选择选不上&#xff0c;不回显的问题 记录一个a-auto-complete卡bug卡了两天&#xff0c;找不到哪里的问题下拉框选择选不上&#xff0c;不回显&#xff0c;最后终于解决了。 我还对下拉框显示的内容做了小调整。…

使用Vue调用ColaAI Plus大模型,实现聊天(简陋版)

首先去百度文心注册申请自己的api 官网地址&#xff1a;LuckyCola 注册点开个人中心 查看这个文档自己申请一个ColaAI Plus定制增强大模型API | LuckyColahttps://luckycola.com.cn/public/docs/shares/api/colaAi.html来到vue的页面 写个样式 <template><Header …

知识库文档系统源码部署/搭建/上线/运营/售后/更新

一款基于ThinkPHPFastAdmin开发的知识库文档系统&#xff0c;可用于企业工作流程的文档管理&#xff0c;结构化记录沉淀高价值信息&#xff0c;形成完整的知识体系&#xff0c;能够轻松提升知识的流转和传播效率&#xff0c;更好地成就组织和个人。为部门、团队或项目搭建知识库…

Ubuntu/Linux 安装Docker + PyTorch

文章目录 1. 提前准备2. 安装Docker2.1. 卸载冲突软件&#xff08;非必要&#xff09;2.2. 在Ubuntu系统上添加Docker的官方GPG密钥2.3. 将Docker的仓库添加到Ubuntu系统的APT源列表中2.4. 安装最新Docker2.5. 检查 3. 安装Nvidia Container Toolkit3.1. 在Ubuntu系统上添加官方…

回炉重造java----双列集合(HashMap,TreeMap)

体系结构 ①基本操作: ②遍历方式: 第一种: 键找值&#xff0c;通过map.keySet()获取Map的键集合&#xff0c;通过键去匹配Map中的值 Set<String> strings map.keySet();for (String string : strings) {System.out.println(map.get(string));} 第二种: 键值对&…

编程式导航

目录 一、问题引入 二、基本跳转 1.path路径跳转&#xff08;简易方便&#xff09; 2.name命名路由跳转&#xff08;适合path路径长的场景&#xff09; 三、路由传参 1.path路径跳转传参 &#xff08;1&#xff09;query传参 &#xff08;2&#xff09;动态路由传参 2.…

【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案

log4cplus简介 log4cplus是C编写的开源的日志系统&#xff0c;前身是java编写的log4j系统&#xff0c;受Apache Software License保护&#xff0c;作者是Tad E. Smith。 log4cplus具有线程安全、灵活、以及多粒度控制的特点&#xff0c;通过将日志划分优先级使其可以面向程序…