MalwareBazaar Sample #7

2026-08-08

Скачивал я этот семпл как семпл под тегом AsyncRAT, но в итоге оказалось, что это xworm. На это точно есть разбор, но ладно.

      "bazaar_url": "https://bazaar.abuse.ch/sample/ff1c3a2866f389f8ec2e4d57600446da4d131bad8ded341aa6619c0a0d35f752/",
      "local_path": "samples\\ff1c3a2866f389f8ec2e4d57600446da4d131bad8ded341aa6619c0a0d35f752.zip"
    },
    {
      "category": "rat",
      "family": "AsyncRAT",
      "sha256": "0a50174b6ef5b50a5d26fd07855446697d6d8145d5162a8df3de50c6e54aaad9",
      "sha1": "702ce7777c83b63a0d20ffbf80b439394b712e64",
      "md5": "1f7c4122131ba1c798fe09827fe1ee9b",
      "file_name": "Our Order no. 274419.exe",
      "file_type": "exe",
      "file_size": 807936,
      "first_seen": "2026-07-28 12:29:00",
      "signature": "AsyncRAT",
      "tags": [
        "AsyncRAT",
        "exe"
      ],
      "imphash": "f34d5f2d4577ed6d9ceec516c1f5a744",
      "tlsh": "T16E0512007699D612F47B2BF829B6E17053B5BC9EA930D25A8FDA7CDF78727108800767",
      "downloads": "204",
      "uploads": "1",
      "clamav": [
        "Win.Trojan.Spynoon-9939401-0"
      ],
Fig. 1

Image File Execution Options\async.exe - два раза, SUCCESS и NAME NOT FOUND. Проверка на дебагинг

LoadAppInit_DLLs - DLL inject через AppInit. Event Triggered Execution, но тут возможно как проверка на наличие инжекта В процесс

Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6

Здесь видна библиотека для криптографии и получение pid(lsass).

Дальше опять долгий процесс машинерии, потом загрузка ntdll, kernel, advapi, shell32 , проверка реестра, загрузка крипто длл, проверка шрифтов, локали, ,большой сбор инфы о компьютере, windows.storage

Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11

Разная проверка Fig. 12

Проверка на дебаг - GetTickCount64, NtQueryInformationProcess, queryperformacecounter, GetTickCount.

Fig. 13 PID: 2132, Command line: "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" Add-MpPreference -ExclusionPath "C:\Users\bergman\Desktop\samples\asyncrat\async.exe"

Exclusion про defender

Fig. 14

Я не знал какой это процесс, но из определения функции первым аргументом является хендл - так и нашел 8804: (так же там был виден мьютекс, видимо рандомно сгенерированный)

Fig. 15
Fig. 16

Этот пейлод был неполным, я сдампил его до окончания всех аллокаций, ниже правильное

Fig. 17
Fig. 18

В строках видно что-то осмысленное, значит это пейлод (ExecutionPolicy Bypass, user agent и тд)

Fig. 19
Fig. 20
Fig. 21
Fig. 22

Проблема полученного файла в том, что это дамп из виртуальной памяти, в pe bear поменял для каждой секции Raw Addr = Virtual Addr и Raw Size = Virtual Size: - .text: Raw Addr = 2000, Raw Size = 85A4 - .rsrc: Raw Addr = C000, Raw Size = 4E8 - .reloc: Raw Addr = E000, Raw Size = C

получил готовый xwormclient.exe , сначала подумал что это что-то простое, сделал

import base64

iocs = [
    "SErmUuQjwQQtKeyQe4Hrqii1+09H1Te0lDxfBENUaA8=", "/c872iQ/8XbxgiQCqpfXug==", "36pNkH/JnvXQ5CXwcawRdw==", "2B7HLE7nXIzGq07o",
]

for x in iocs:
    print(base64.b64decode(x))

НЕ сработало \Rightarrow достаточно было полистать функции, Fig. 23

import base64
import hashlib
from Crypto.Cipher import AES

def rva_to_offset(rva, sections):
    for vaddr, vsize, raw_addr, raw_size in sections:
        if vaddr <= rva < vaddr + vsize:
            return raw_addr + (rva - vaddr)
    return None

sections = [
    (0x2000, 0x85A4, 0x200, 0x8600), #.text
    (0xC000, 0x4E8,  0x8800, 0x600), #.rsrc
    (0xE000, 0xC,    0x8E00, 0x200), # .reloc
]

with open("fixed.exe.malware", "rb") as f:
    data = f.read()

mutex = "2B7HLE7nXIzGq07o" # динамически генерируется, инфа про md5 из гугла
key = bytearray(32)
h = hashlib.md5(mutex.encode()).digest()
key[:16] = h
key[15:31] = h

def decrypt(b64):
    raw = base64.b64decode(b64)
    cipher = AES.new(bytes(key), AES.MODE_ECB)
    return cipher.decrypt(raw).rstrip(b"\x00").decode(errors="ignore")


fields = [
    ("Hosts", "SErmUuQjwQQtKeyQe4Hrqii1+09H1Te0lDxfBENUaA8="),
    ("Port",  "/c872iQ/8XbxgiQCqpfXug=="),
    ("KEY",   "00nigsR9VBXVzYOqNjJI4TYEc5OMB0LIhcWdc6nlWjY="),
    ("SPL",   "36pNkH/JnvXQ5CXwcawRdw=="),
    ("Groub", "mPqTN7SX8R+V+Eg9VSb29g=="),
    ("USBNM", "JQjo6EhhlaN4iijvd1RJQg=="),
]


for name, val in fields:
    print(f"{name}: {decrypt(val)}")
Hosts: carrenzaalwarex.ddns.net
Port: 7004

KEY: <V74PV74PV74PV74PV74P>

SPL: <Xwormmm>
Groub: XWorm V7.4
USBNM: USB.exe

Функционал расписывать не буду, там очень много всего.

Хэш пейлода:

> openssl sha256 .\fixed.exe.malware
SHA2-256(.\fixed.exe.malware)= 3231f9ee5637ddfa033fb23f014c78add7b4996a97a7591f87accce9cd923500