译者:知道创宇404实验室翻译组
原文链接:https://blogs.jpcert.or.jp/en/2021/10/gh0sttimes.html

前言

自2018年以来,黑客组织BlackTech一直在频繁攻击日本组织。虽然它不像以前那么突出,日本计算机应急响应协调中心(JPCERT/CC)现在仍然可以看到它的一些案例。这篇文章介绍了恶意软件Gh0stTimes的详细信息。

Gh0stTimes概述

Gh0stTimes是基于Gh0st RAT定制的,自2020年以来已经在一些攻击案例中使用。下图显示了Gh0stTimes和Gh0st RAT代码的比较。

Gh0stTimes和Gh0st RAT (CFileManager)代码的比较(左:Gh0stTimes /右:Gh0st RAT)

图1(左:Gh0stTimes /右:Gh0st RAT)
这两组代码都是用于文件操作的函数,它们几乎是相同的。Gh0stTimes对许多Gh0st RAT函数进行了升级,但代码的某些部分仍保持原样。下一节将展示Gh0stTimes的特性。

  • 通信协议
  • 命令
  • 伪代码
  • C2服务器控制面板

通信协议

与Gh0st RAT一样,Gh0stTimes与C2服务器通信时使用自定义协议,但包格式不同。下图显示了通信流程。

图2
在与C2服务器通信的开始阶段,Gh0stTimes发送一个身份验证ID和数据(图2中的“密钥”),以生成用于后续通信的加密密钥。C2服务器检查身份验证ID,只接受与特定身份ID的通信。图3显示了特定身份验证id的示例。

图3
身份验证成功后,接下来的通信将使用通信开始时提供的密钥进行加密。下一轮通信与受感染主机的信息有关,如主机名、用户名和处理器名(图4)。

图4
发送受感染主机信息后,命令就交换了(数据交换的格式见附录A)。在交换命令时,数据是RC4加密的,然后是zlib压缩的。Gh0stTimes使用其自定义RC4算法,该算法对加密数据进行XOR 0xAC处理。

图5
下面是用来解码交换数据的Python代码。

import zlib

# Load keydata for first packet
with open(args[1], "rb") as fb:
    keydata = fb.read()

# Load encoded packet data
with open(args[2], "rb") as fb:
    data = fb.read()

comp_data = custom_rc4(data[12:], keydata[5:21])
dec_data = zlib.decompress(comp_data)

def custom_rc4(data, keydata):
    key = []
    key_1 = [0x98, 0x19, 0x3C, 0x56, 0xD9, 0xBB, 0xC7, 0x86, 0xFF, 0x3E]
    key_2 = [0] * 16
    key_3 = [0xAC, 0xBB, 0x30, 0x5E, 0xCC, 0xDD, 0x19, 0x23, 0xFC, 0xBD] 
    keybox = [7, 0, 2, 3, 9, 10, 4, 13, 14, 8, 1, 11, 5, 6, 12, 15]

    i = 0
    for i in range(16):
        key_2[i] = keydata[keybox[i]]

    key = key_1 + key_2 + key_3
    x = 0
    box = list(range(256))
    for i in range(256):
        x = (x + box[i] + key[i % len(key)]) % 256
        box[i], box[x] = box[x], box[i]

    x = 0
    y = 0
    out = []
    for char in data:
        x = (x + 1) % 256
        y = (y + box[x]) % 256
        box[x], box[y] = box[y], box[x]
        out.append((char ^ box[(box[x] + box[y]) % 256] ^ 0xAC).to_bytes(1, byteorder='little'))

    return b''.join(out)

命令

Gh0stTimes配备了以下5种类型的命令:

  • FileManager(命令号0x1):文件操作
  • ShellManager(命令编号0x28):远程shell执行
  • PortmapManager(命令号0x32): C2服务器重定向功能
  • UltraPortmapManager(命令号0x3F):代理功能
  • 无名称(命令号0):结束通信

图6
ShellManager和FileManager与Gh0st RAT的原始功能相同。FileManager具有多种功能,可以对感染病毒的主机上的文件进行操作。(详见附录B) PortmapManager和UltraPortmapManager是Gh0stTimes特有的两个组件,说明其中继功能相对Gh0st RAT进行了增强。

伪代码

BlackTech使用的某些类型的恶意软件包含伪代码,这会加大分析难度。Gh0stTimes便有这样的代码(图7),但是它对分析没有太大的影响。

图7

C2服务器控制面板

在分析过程中,我们发现了Gh0stTimes控制面板。图8显示了控制面板运行时的GUI。这个被命名为“Times v1.2”。

图8
图9显示了可以在控制面板上执行的命令。

图9

总结

BlackTech一直在进行攻击行动,我们将继续分析和监控。请确保您的任何设备都没有与它们通信。 我们已经确定,感染Gh0stTimes的服务器也会受到其他类型的恶意软件影响,如下载程序,后门,ELF Bifrose和下面列出的攻击工具。请注意,这些工具可能被BlackTech使用。

  • https://github.com/Yang0615777/PocList
  • https://github.com/liuxu54898/CVE-2021-3019
  • https://github.com/knownsec/pocsuite3
  • Citrix exploit tool
  • MikroTik exploit tool
  • Exploit for CVE-2021-28482
  • Exploit for CVE-2021-1472/CVE-2021-1473
  • Exploit for CVE-2021-28149/CVE-2021-28152
  • Exploit for CVE-2021-21975/CVE-2021-21983
  • Exploit for CVE-2018-2628
  • Exploit for CVE-2021-2135

附录

附录A:交换数据

Table A-1: Format of data sent

Offset Length Contents
0x00 4 ID
0x04 4 Data length xor 0x3A4BFDCC
0x08 4 Data length after 0x0C before compression xor 0x7C2E56D2
0x0C - Encrypted data (zlib + RC4)

Table A-2: Format of data received

Offset Length Contents
0x00 4 ID
0x04 4 Data length xor 0xC3A2B5D2
0x08 4 Data length after 0x0C before compression xor 0x68FC2AD3
0x0C - Encrypted data (zlib + RC4)

附录B: 命令

Table B: FileManager commands

Value Contents
2 SendFilesList
3 UploadToRemote
4 CreateLocalRecvFile
5 WriteLocalRecvFile
7 SendFileData
8 StopTransfer
9 DeleteFile
10 DeleteDirectory
11 GetFileData
12 CreateFolder
13 MoveFile
14 OpenFile(SW_SHOW)
15 OpenFile(SW_HIDE)

附录C:IoCs

附录D: Malware hash value

  • 01581f0b1818db4f2cdd9542fd8d663896dc043efb6a80a92aadfac59ddb7684
  • 18a696b09d0b7e41ad8ab6a05b84a3022f427382290ce58f079dec7b07e86165
  • 15b8dddbfa37317ccdfbc340764cd0f43b1fb8915b1817b5666c4816ccb98e7c
  • 849ec6055f0c18eff76170912d8500d3da7be1435a9117d67f2134138c7e70c3
  • f19ab3fcbc555a059d953196b6d1b04818a59e2dc5075cf1357cee84c9d6260b
  • 836b873ab9807fbdd8855d960250084c89af0c4a6ecb75991542a7deb60bd119
  • a69a2b2a6f5a68c466880f4c634bad137cb9ae39c2c3e30c0bc44c2f07a01e8a
  • bd02ca03355e0ee423ba0e31384d21b4afbd8973dc888480bd4376310fe6af71

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