< Back to blog
highπŸ€RAT
publishedMarch 12, 2026

Not BruteRatel: MalwareBazaar's Misclassified Sample Is a Weaponized Korean Remote Support Tool With a 727-Export Trojanized GDI32.dll

Threat Actors:| Unknown | South Korean actor (HIGH confidence) |ProfileAssessment
#rat#dll-sideloading#c2#apt

TL;DR: A MalwareBazaar sample tagged as BruteRatel C4 is not BruteRatel. Static analysis and SFX archive extraction reveal it is a Delphi SFX installer that deploys NQVM/NetSupport Manager -- a legitimate Korean remote support tool -- weaponized for stealth remote access with full filesystem control, webcam capture, and input logging. The operator registered with a Korean Naver email (10V2J@NAVER[.]COM) embedded directly in the RAT configuration, routes all traffic through relay servers on South Korean ISP infrastructure (LG DACOM), and uses a trojanized GDI32.dll with 727 proxy exports for DLL sideloading. Every IOC extracted from this sample -- C2 domains, file hashes, operator credentials -- is absent from ThreatFox, VirusTotal intelligence, and public reporting. This is entirely original research.


The Misclassification Problem

MalwareBazaar classifies sample fb91de5a3ce80ac51fded1719dc72c6c71acadc65ada3262e7bc74dac41cd65a as BruteRatel C4 -- a well-known adversary simulation framework. That classification is wrong. What follows is the actual kill chain.

The sample is a 7.8 MB PE32 executable compiled with Borland Delphi, structured as a self-extracting archive containing 57 files. BruteRatel badgers are not Delphi SFX installers. They do not contain Korean-language resource strings. They do not ship with legitimately code-signed remote support software from Ulsan, South Korea.

AspectMalwareBazaar ClassificationActual Findings
Malware familyBruteRatel C4NQVM/NetSupport Manager RAT
Sample typeEXE (BRc4 badger)Delphi SFX installer (57 embedded files)
C2 infrastructureUnknowninqvm[.]com:80 (KR), nqvm[.]com:10042 (AWS Seoul)
Operator identityUnknown10V2J@NAVER[.]COM (Korean email)
AttributionUnknownSouth Korean actor (HIGH confidence)
ThreatFox/VT coverageNoneNone -- entirely new IOCs
Code signingUnknownLegitimately signed by NTS (Ulsan, South Korea)
DLL sideloadingUnknownTrojanized GDI32.dll with 727 proxy exports

The SFX Installer and Attack Chain

The dropper is a Delphi-compiled self-extracting archive with a fabricated PE timestamp (0x2a425e19, resolving to 1992-06-19 -- an obvious anti-forensics measure). Both ASLR and DEP are disabled. No PDB path, no Rich header. The 8-section layout (CODE, DATA, BSS, .idata, .tls, .rdata, .reloc, .rsrc) is consistent with standard Borland Delphi compilation.

PropertyValue
SHA-256fb91de5a3ce80ac51fded1719dc72c6c71acadc65ada3262e7bc74dac41cd65a
MD504f1eb0ebaf71f827da7b1c4656960ad
SHA-14e8466ed384dec05aa8f524eab12aa5b723ae919
Size7,797,127 bytes (7.8 MB)
CompilerDelphi (Borland)
Imphashad1a33bd97238a4adf5548ab2780abe1
Timestamp0x2a425e19 (1992-06-19 -- FABRICATED)
ASLR/DEPDisabled / Disabled

When executed, the SFX extracts 57 files to %ProgramFiles(x86)%\ and launches the full NQVM remote support deployment:

Delivery (Unknown vector)
    |
    v
Delphi SFX Installer (fb91de...5a)
    | Extracts to %ProgramFiles(x86)%\
    v
57 Files Deployed
    |-- NQVM_RTM.exe    (Main RAT, code-signed by NTS)
    |-- NQVM_Runner.exe (Privilege escalation, process launch)
    |-- nts001.tmp      (Trojanized GDI32.dll, 727 exports)
    |-- NQHOOK.dll      (Input hooking)
    |-- NQHOOKEX.dll    (Extended input hooking)
    |-- Configuration files (INI, LIC, BIN)
    v
C2 Connection via Relay
    |-- inqvm[.]com:80  (Primary relay, LG DACOM, Korea)
    |-- inqvm[.]net:80  (Backup relay, DEAD)
    v
Remote Access Capabilities
    |-- Full desktop control (port 8888)
    |-- File transfer (port 8889, drives C:-K: with write access)
    |-- Audio/video capture (port 8887, webcam + microphone)
    |-- Input logging (NQHOOK.dll / NQHOOKEX.dll)
    |-- Auto-upgrade (nqvm[.]com:10042)

The Trojanized GDI32.dll: 727 Proxy Exports

The most technically interesting component is nts001.tmp -- a trojanized Windows GDI32.dll used for DLL sideloading. This is not a partial stub. It reimplements all 727 exports of the legitimate GDI32.dll.

Key characteristics:

  • 727 exports, 0 forwarded -- every function points to a custom implementation, not a simple forwarder to the real GDI32
  • PDB path: wgdi32.pdb -- the "w" prefix likely stands for "wrapped," confirming the proxy nature
  • Imphash: d0064bcb735e35414a2b094954ef12c7
  • Ntdll imports: NtSecureConnectPort, NtRegisterThreadTerminatePort, NtRequestWaitReplyPort -- IPC primitives for inter-process communication with the RAT
  • Device reference: \\.\DISPLAY -- consistent with screen capture and remote desktop functionality

The sideloading mechanism is straightforward: nts001.tmp is placed in the same directory as NQVM_RTM.exe. When the RAT loads, Windows DLL search order resolves the local trojanized GDI32.dll before the system copy in System32, giving the attacker screen capture and display manipulation capabilities without modifying system DLLs.

FileSHA-256SizePurpose
nts001.tmpea3bd7fec193a8cfe1d5736301acadc476fb6aac5475a45776d0a638e9845445311 KBTrojanized GDI32.dll (727 exports)
NQVM_RTM.exed5a71c02718887238ccf2d64bd51c78fd2d1e3d07d30fc112dcfe47ebd1f38d63.67 MBMain RAT binary (code-signed)
NQVM_Runner.exe2836383c2ed7ee1afec63a59e89572f90e48a3ea4a7c44d297ef782b9e09eba4303 KBPrivilege escalation launcher
NQHOOK.dllddf2f0e464c7edc7eadced02811888c53344ac2dffac9f1c63003a16e98bba7580 KBInput/keyboard hook
NQHOOKEX.dllad92b09781dbd1e2c427a2c6288aa2438baa3eeacb16ebad9f85fd75e96fe58943 KBExtended input hook

Legitimate Code Signing: Trusted by Default

The main RAT binary (NQVM_RTM.exe) carries a legitimate code signing certificate from NTS, the South Korean company that develops NQVM:

Subject: C=KR, ST=Ulsan, L=Buk-gu, O=NTS,
         OU=Digital ID Class 3 - Microsoft Software Validation v2, CN=NTS
Issuer:  VeriSign Class 3 Code Signing 2010 CA
Valid:   From Mar 26, 2012

This is not a stolen or forged certificate. The binary is the genuine NQVM remote support software, unmodified, deployed with a malicious configuration. From Windows' perspective, it is legitimately signed software from a real South Korean company -- it passes Authenticode verification, SmartScreen, and most application whitelisting policies. The attacker did not need to steal a certificate because the software itself is legitimate. The weaponization is entirely in the configuration.

RAT Configuration: Full Stealth, Full Access

The extracted configuration files reveal the operator's intent -- maximum access with zero visibility to the victim.

Relay Server Configuration (NQNMSRV.INI):

USE RELAY SERVER = 1
RELAY SERVER NAME = inqvm[.]com;inqvm[.]net
PORT = 80
LOGIN USER NAME = 10V2J@NAVER[.]COM
LOGIN PASSWORD = 9de9ea1194bdd1d9580d39205ecd582f
HTTP = 0
AUTO = 1

Stealth Settings (Server Config):

SHOW CONNECT INFO = 0          # No connection notification to victim
FILE SERVICE SECURITY USER ACCEPT = 0  # No file access prompt

Access Configuration:

  • Control port: 8888 (TCP) -- full desktop
  • File manager port: 8889 -- all drives C: through K: with write access
  • Audio/video port: 8887 -- webcam and microphone capture
  • Data compression: level 6
  • Connection limit: 10 simultaneous sessions

Persistence (NQVMINST.INI):

SERVER INSTALL = 1
SERVER AUTO START = 1    # Survives reboot
CLIENT INSTALL = 0       # Server-only (no GUI for victim)
OVERWRITE SETUP = 1
DISABLE AERO = 1
REMOVE WALLPAPER = 1

The configuration tells the whole story: silent installation, automatic startup, no user interface on the victim machine, all drives shared with write access, webcam enabled, audio capture enabled. This is a legitimate remote support tool configured as a full-featured surveillance platform.

Infrastructure: All Roads Lead to South Korea

Every piece of infrastructure resolves to South Korean providers.

Network Infrastructure

IPASN/ProviderCountryPortsPurposeStatus
112.216.147.68LG DACOM (BORANET)KR80C2 relay (inqvm[.]com)LIVE
3.37.49.225AWS ap-northeast-2 (Seoul)KR80, 443Vendor web/updates (nqvm[.]com)LIVE
218.147.39.240KT Corp (KORNET)KR443, 1521, 5357, 5985, 7777, 8889GitLab/Dev (gitlab.nqvm[.]com)LIVE
112.220.65.101LG DACOMKRUnknownHRCS (hrcs.nqvm[.]com)UNKNOWN

Domain Infrastructure

DomainRegistrarCreatedPurpose
inqvm[.]comDoregi.com (KR)2007-12-08C2 relay server
inqvm[.]netN/AN/ABackup relay (DEAD, unregistered)
nqvm[.]comDoregi.com (KR)2005-09-20Vendor website and updates

Both domains are registered through Doregi.com, a Korean domain registrar operated by HANGANG Systems. The C2 relay domain inqvm[.]com has been registered since 2007 -- this is not throwaway infrastructure.

Certificate Transparency: Deeper Infrastructure

CT log enumeration on nqvm[.]com reveals additional subdomains indicating a full organizational footprint:

SubdomainIPCertificatePurpose
gitlab.nqvm[.]com218.147.39.240Let's Encrypt R12Source code repository
hrcs.nqvm[.]com112.220.65.101Let's Encrypt R12HR/CRM system
lb.nqvm[.]comUnknownLet's EncryptLoad balancer
samoo.nqvm[.]comUnknownLet's EncryptUnknown

The GitLab instance at 218.147.39.240 has port 8889 open -- the same port used by the NQVM file manager service. This server appears to serve double duty as both a development environment and an operational file transfer endpoint.

Hosting Hierarchy:

LG DACOM/LG U+ (AS3786) -- BORANET, South Korea
    |-- 112.216.147.68  (inqvm.com relay)
    |-- 112.220.65.101  (hrcs.nqvm.com)

KT Corporation (AS4766) -- KORNET, South Korea
    |-- 218.147.39.240  (gitlab.nqvm.com, port 8889 open)

Amazon Web Services (ap-northeast-2, Seoul)
    |-- 3.37.49.225     (www.nqvm.com)

Operator OPSEC Failure

The operator embedded their real Naver email address (10V2J@NAVER[.]COM) in the relay server configuration file that ships with every deployed instance of the RAT. Naver is South Korea's dominant web portal -- the Korean equivalent of Google. This is a significant OPSEC failure: every victim machine contains the operator's login credentials for the relay infrastructure.

The password hash (9de9ea1194bdd1d9580d39205ecd582f) is unsalted MD5, potentially crackable with modern GPU hardware. The same credentials appear in both the server configuration (NQNMSRV.INI) and user configuration (NQNMUSR.INI), indicating a single operator account.

Attribution Evidence

EvidenceConfidenceDetails
Operator emailHIGH10V2J@NAVER[.]COM -- Naver is Korea's largest web portal
Code signing certificateHIGHNTS, Ulsan, Buk-gu, South Korea
All infrastructure IPsHIGHEvery IP resolves to South Korean providers
NQVM vendorHIGHNTS is a South Korean company based in Ulsan
Domain registrarMEDIUMDoregi.com -- Korean domain registrar
Resource language IDMEDIUM1042 = Korean (ko-KR)
NQLANG.INI defaultMEDIUMKorean listed first as language #0
Desktop path stringsMEDIUMNQVM_DSVR contains Korean characters in directory path

Attribution assessment: South Korean threat actor, HIGH confidence. Motivation is unclear -- the tooling and configuration are consistent with either cybercrime (remote access for fraud) or corporate espionage (surveillance and data exfiltration). The sophistication level is intermediate: the operator is using a legitimate commercial tool rather than custom malware, but the DLL sideloading technique and stealth configuration show deliberate tradecraft.

MITRE ATT&CK Mapping

TacticTechniqueIDImplementation
ExecutionUser ExecutionT1204SFX installer requires victim to run executable
PersistenceBoot or Logon Autostart ExecutionT1547SERVER AUTO START = 1 in NQVMINST.INI
Privilege EscalationAccess Token ManipulationT1134NQVM_Runner.exe imports AdjustTokenPrivileges, DuplicateTokenEx
Defense EvasionDLL Side-LoadingT1574.002Trojanized GDI32.dll (nts001.tmp) with 727 proxy exports
Defense EvasionMasqueradingT1036.005Installs to %ProgramFiles(x86)%, appears as legitimate software
Defense EvasionSubvert Trust Controls: Code SigningT1553.002Legitimate NTS code signing certificate (VeriSign-issued)
Credential AccessInput CaptureT1056NQHOOK.dll and NQHOOKEX.dll for keyboard/input hooking
DiscoverySystem Information DiscoveryT1082Full system access via remote desktop session
CollectionScreen CaptureT1113Full desktop control via NQVM (port 8888)
CollectionAudio CaptureT1123Audio capture enabled (port 8887)
CollectionVideo CaptureT1125Webcam capture enabled
CollectionData from Local SystemT1005All drives C:-K: shared with write access
Command and ControlRemote Access SoftwareT1219Abuse of legitimate NQVM/NetSupport Manager
Command and ControlProxy: External ProxyT1090.002Traffic routed through relay server (inqvm[.]com:80)
ExfiltrationExfiltration Over C2 ChannelT1041File transfer via NetSupport file manager (port 8889)

Indicators of Compromise

Network Indicators

# C2 Relay Domains
inqvm[.]com
inqvm[.]net

# Vendor/Update Domains
nqvm[.]com
www[.]nqvm[.]com
gitlab[.]nqvm[.]com
hrcs[.]nqvm[.]com

# C2 IP Addresses
112.216.147.68   # C2 relay -- inqvm[.]com (LG DACOM, KR)
3.37.49.225      # Vendor web -- nqvm[.]com (AWS Seoul)
218.147.39.240   # GitLab -- gitlab.nqvm[.]com (KT Corp, KR)
112.220.65.101   # HRCS -- hrcs.nqvm[.]com (LG DACOM, KR)

# Ports
80     # C2 relay
8887   # Audio/video capture
8888   # Remote desktop control
8889   # File manager
10042  # Auto-upgrade channel
55031  # PFPORT custom
35101  # PFPORT custom
13005  # PFPORT custom

File Indicators

# SFX Dropper
SHA256: fb91de5a3ce80ac51fded1719dc72c6c71acadc65ada3262e7bc74dac41cd65a
MD5:    04f1eb0ebaf71f827da7b1c4656960ad
SHA1:   4e8466ed384dec05aa8f524eab12aa5b723ae919

# Main RAT Binary (NQVM_RTM.exe)
SHA256: d5a71c02718887238ccf2d64bd51c78fd2d1e3d07d30fc112dcfe47ebd1f38d6
MD5:    643e19b200c9c15466623ae156608fca

# RAT Runner (NQVM_Runner.exe)
SHA256: 2836383c2ed7ee1afec63a59e89572f90e48a3ea4a7c44d297ef782b9e09eba4
MD5:    d44e4c5a6a0e1f2002e702ac98636efb

# Trojanized GDI32.dll (nts001.tmp)
SHA256: ea3bd7fec193a8cfe1d5736301acadc476fb6aac5475a45776d0a638e9845445
MD5:    d6d3ad7bf1d6f6ce9547613ed5e170a2

# Input Hook DLLs
SHA256: ddf2f0e464c7edc7eadced02811888c53344ac2dffac9f1c63003a16e98bba75  (NQHOOK.dll)
SHA256: ad92b09781dbd1e2c427a2c6288aa2438baa3eeacb16ebad9f85fd75e96fe589  (NQHOOKEX.dll)

Behavioral Indicators

# Imphashes
ad1a33bd97238a4adf5548ab2780abe1  # SFX dropper
fd9fbe982734fd4ee29b8b9ff284db11  # NQVM_RTM.exe
138422b031539c86183a1ce775700759  # NQVM_Runner.exe
d0064bcb735e35414a2b094954ef12c7  # nts001.tmp (GDI32 proxy)

# Operator Credentials (embedded in config)
Email:        10V2J@NAVER[.]COM
Password MD5: 9de9ea1194bdd1d9580d39205ecd582f
Auth SHA256:  24f153a5ded473fb4635d14b53edb457b8bc45f99fb57144e913b706f0ecc3dd

# Version Info Strings
CompanyName:      NTS(www.nqvm.com)
ProductName:      NQVM
FileVersion:      2.2.0.8
OriginalFilename: NQVM_RTM.EXE

Detection Opportunities

YARA Rules

rule NQVM_Weaponized_SFX_Installer {
    meta:
        description = "Detects weaponized NQVM/NetSupport Manager SFX installer"
        author = "Breakglass Intelligence"
        date = "2026-03-10"
        tlp = "TLP:CLEAR"
        severity = "HIGH"
        reference = "https://intel.breakglass.tech"
    strings:
        $nqvm1 = "NQVM_RTM" ascii wide
        $nqvm2 = "NQVM_Runner" ascii wide
        $nqvm3 = "NQHOOK" ascii wide
        $nqvm4 = "nts001.tmp" ascii wide
        $cfg1 = "RELAY SERVER NAME" ascii
        $cfg2 = "NAVER.COM" ascii nocase
        $cfg3 = "NQNMSRV" ascii
        $delphi = "Borland" ascii
    condition:
        uint16(0) == 0x5A4D and
        filesize > 5MB and
        $delphi and
        2 of ($nqvm*) and
        1 of ($cfg*)
}

rule NQVM_Trojanized_GDI32_Proxy {
    meta:
        description = "Detects trojanized GDI32.dll proxy used by weaponized NQVM"
        author = "Breakglass Intelligence"
        date = "2026-03-10"
        tlp = "TLP:CLEAR"
        severity = "HIGH"
    strings:
        $pdb = "wgdi32.pdb" ascii
        $nt1 = "NtSecureConnectPort" ascii
        $nt2 = "NtRegisterThreadTerminatePort" ascii
        $nt3 = "NtRequestWaitReplyPort" ascii
        $display = "\\\\.\\DISPLAY" ascii wide
    condition:
        uint16(0) == 0x5A4D and
        $pdb and
        2 of ($nt*) and
        $display
}

rule NQVM_RAT_Config_INI {
    meta:
        description = "Detects NQVM RAT configuration files with relay server settings"
        author = "Breakglass Intelligence"
        date = "2026-03-10"
        tlp = "TLP:CLEAR"
        severity = "MEDIUM"
    strings:
        $relay = "USE RELAY SERVER" ascii nocase
        $domain1 = "inqvm" ascii nocase
        $domain2 = "nqvm" ascii nocase
        $login = "LOGIN USER NAME" ascii nocase
        $naver = "NAVER.COM" ascii nocase
    condition:
        2 of ($relay, $login, $naver) and
        1 of ($domain*)
}

Snort/Suricata Rules

# NQVM C2 Relay -- inqvm.com traffic on port 80
alert tcp any any -> 112.216.147.68 80 \
  (msg:"NQVM-RAT C2 Relay Connection to inqvm.com"; \
  flow:established,to_server; sid:2026031001; rev:1;)

# NQVM Control Channel -- port 8888
alert tcp any any -> any 8888 \
  (msg:"NQVM-RAT Remote Desktop Control Channel"; \
  flow:established,to_server; \
  content:"NQVM"; \
  sid:2026031002; rev:1;)

# NQVM File Transfer -- port 8889
alert tcp any any -> any 8889 \
  (msg:"NQVM-RAT File Transfer Channel"; \
  flow:established,to_server; \
  sid:2026031003; rev:1;)

# NQVM Auto-Upgrade Channel
alert tcp any any -> 3.37.49.225 10042 \
  (msg:"NQVM-RAT Auto-Upgrade Connection to nqvm.com"; \
  flow:established,to_server; sid:2026031004; rev:1;)

# NQVM Custom Ports (PFPORT.INI)
alert tcp any any -> any [55031,35101,13005] \
  (msg:"NQVM-RAT PFPORT Custom Communication Channel"; \
  flow:established,to_server; sid:2026031005; rev:1;)

Hunting Queries

Endpoint (Sysmon / EDR):

# Process creation -- NQVM binaries
EventID=1 AND (Image CONTAINS "NQVM_RTM" OR Image CONTAINS "NQVM_Runner" OR Image CONTAINS "NQHOOK")

# DLL load -- trojanized GDI32 from non-system directory
EventID=7 AND ImageLoaded CONTAINS "nts001.tmp"

# DLL load -- GDI32 loaded from ProgramFiles instead of System32
EventID=7 AND ImageLoaded CONTAINS "gdi32" AND NOT ImageLoaded CONTAINS "System32"

# File creation -- NQVM config files
EventID=11 AND (TargetFilename CONTAINS "NQNMSRV.INI" OR TargetFilename CONTAINS "PFPORT.INI" OR TargetFilename CONTAINS "NQVMINST.INI")

Network (Zeek / Firewall Logs):

# DNS queries to C2 relay domains
dns.query.name IN ("inqvm.com", "inqvm.net", "nqvm.com")

# Connections to known C2 relay IP
dst_ip = "112.216.147.68" AND dst_port = 80

# Connections on NQVM service ports from internal hosts
dst_port IN (8887, 8888, 8889, 10042, 55031, 35101, 13005) AND src_ip IN internal_ranges

Imphash Hunting:

# Search for any binaries matching extracted imphashes
imphash IN (
    "ad1a33bd97238a4adf5548ab2780abe1",
    "fd9fbe982734fd4ee29b8b9ff284db11",
    "138422b031539c86183a1ce775700759",
    "d0064bcb735e35414a2b094954ef12c7"
)

Published by Breakglass Intelligence. Investigation conducted 2026-03-09. 57 files extracted from SFX archive. 4 live infrastructure IPs confirmed. All IOCs are net-new -- zero prior public reporting. Classification: TLP:CLEAR

Share: