< Back to blog
high🔑Stealer
investigatedMarch 8, 2026publishedMarch 8, 2026

ACRStealer Dissected: Decrypted Kill Chain, Stolen ASUS EV Certificate, and 9 Live C2 Servers Operating a Multi-Family Stealer Network

#stealer#vidar#acrstealer#sectoprat#dll-sideloading#phishing#social-engineering#credential-theft#c2#apt

TL;DR: ACRStealer (Arechclient2) is running an active credential theft operation with 9 live C2 servers, a compromised .edu WordPress site still hosting payloads, and a Go 1.26.0 loader with 7 obfuscated modules. We decrypted the XOR-encoded Config.ps1 dropper (key: MnZdJGRiwLze), revealing a 4-stage kill chain that abuses Windows Defender exclusions, sideloads DLLs capable of extracting Windows Hello NGC keys and Azure AD OAuth tokens, and signs payloads with a stolen ASUSTeK EV code signing certificate. The operation shares C2 infrastructure with SectopRAT, AmateraStealer, and NetSupport RAT.


The Decrypted Kill Chain

The investigation began with a XOR-encrypted PowerShell dropper (Config.ps1) recovered from a MalwareBazaar submission. The encryption is a 12-byte rotating XOR using key MnZdJGRiwLze (bytes: [77,110,90,100,74,71,82,105,119,76,122,101]). Decryption reveals a clean 4-stage infection chain.

Stage 1: Victim Fingerprinting

https://iplogger.co/1paLJ4

Before delivering any payload, the dropper beacons to iplogger.co with the victim's GUID, hostname ($env:COMPUTERNAME), username ($env:USERNAME), and timestamp. This is a filtering gate -- the operator uses it to identify high-value targets and discard sandboxes before committing the payload.

Stage 2: Defender Evasion

Add-MpPreference -ExclusionPath $env:TEMP
Add-MpPreference -ExclusionProcess "powershell.exe"

Two PowerShell commands add exclusions to Windows Defender: the user's %TEMP% directory (where the payload will land) and powershell.exe itself. This is T1562.001 (Impair Defenses: Disable or Modify Tools) -- simple, effective, and still surprisingly successful against default Windows configurations.

Stage 3: Payload Retrieval from Compromised .edu Site

https://acecareer.edu/wp-includes/certificates/acr-karimichikstrelyaet-639081475329349420.exe

The payload is hosted on ACE Career Education, a legitimate .edu institution running a compromised WordPress installation. The attacker buried the executable in /wp-includes/certificates/ -- a WordPress core directory that administrators rarely inspect and WAF rules typically whitelist.

The filename itself is operationally significant:

  • acr -- ACRStealer identifier
  • karimichikstrelyaet -- Russian transliteration of "каримичик стреляет" ("karimichik shoots"), confirming a Russian-speaking operator
  • 639081475329349420 -- campaign or build identifier

This payload was still live and downloadable as of 2026-03-08.

Stage 4: Execution and Cleanup

The downloaded binary lands at %TEMP%\<random12chars>.exe, executes hidden (-WindowStyle Hidden), and self-deletes after a brief runtime. No persistence mechanism at this stage -- persistence is handled by the Go loader that executes next.

The Go Loader: "continental"

The Stage 3 payload retrieved from the compromised .edu site is a Go binary compiled with Go 1.26.0 (the latest release at time of analysis), indicating active development.

PropertyValue
SHA-256c2475b4b179267d3dd7f9c54d9e9f39b21109baa2c5d7e5acdc5e49d11bb1e95
Size1,897,984 bytes
TypePE32 (GUI) x86, Go binary
Go Version1.26.0
Module Namecontinental
Imphash5af915f278815e76bad476ef32593028
Compile Timestamp1970-01-01 (zeroed -- anti-forensic)
Last-Modified2026-03-03
SourceSingle main.go

Semantic Obfuscation

The loader uses 7 innocuously-named Go modules to disguise stealer functionality. The naming convention is deliberate -- a cursory inspection of exported symbols reveals nothing overtly malicious:

ModuleSubfunctionsAssessed Purpose
main.Activities10Browser data theft (cookies, passwords, history)
main.Batteries4System information collection
main.Conversations2Messenger data extraction
main.Definitions2Config parsing / dead-drop C2 resolution
main.Happiness3Cryptocurrency wallet theft
main.Procurement6Credential harvesting
main.Supplements4Data exfiltration

Two additional single-use functions (main.Discussionsattraction, main.Nominationsconsensus) have no subfunctions and likely serve as initialization or orchestration routines.

Network Indicators in the Binary

  • DNS resolvers hardcoded: 8.8.8.8, 1.1.1.1, 9.9.9.9 (bypasses corporate DNS for dead-drop resolution)
  • Development IPs: 192.168.1.100-102 (operator's dev environment leaked in strings)
  • Crypto API imports: CryptGenRandom, CertOpenSystemStore, CertEnumCertificatesInStore
  • C2 URLs: Encrypted at rest -- not visible in plaintext strings

The verification.google DLL: Windows Hello and Azure AD Theft

The most technically sophisticated component is a DLL sideloaded as verification.google -- a filename chosen to look like a Google domain verification file. This DLL embeds 5 legitimate Microsoft system binaries as resources, each repurposed for credential theft:

Resource IDEmbedded DLLStealer Function
resource_120sppc.dllWindows license/activation data theft
resource_224fwbase.dllFirewall state manipulation
resource_561fltLib.dllMinifilter driver interaction (AV bypass)
resource_818aclui.dllACL/security permission escalation
resource_921ngc.dllWindows Hello / NGC private key extraction

Credential Theft Capabilities

The DLL implements a comprehensive credential harvesting toolkit:

  • ADAL/OAuth token theft -- intercepts Azure AD authentication tokens for login.microsoftonline.com, enabling cloud account takeover without password knowledge
  • Smart card certificate enumeration -- enumerates certificates on attached smart card readers, targeting enterprise PKI environments
  • Windows Hello / NGC key extraction -- extracts Next Generation Credential private keys, bypassing biometric and PIN-based authentication
  • DPAPI decryption -- calls CryptUnprotectData to decrypt locally stored credentials protected by the Windows Data Protection API
  • WinHTTP C2 communication -- uses the WinHTTP API for exfiltration, blending with legitimate Windows HTTP traffic

The DLL exports are obfuscated with generic names that mimic a legitimate SDK: AllocateNamespaceData, CreateNotificationEx, OpenSchemaAsync, ResetPropertiesEx, ValidateEndpointEx. Internally, the code uses VM-based obfuscation with a state machine driving execution flow through the exports.

Stolen ASUSTeK EV Code Signing Certificate

One distribution vector uses a stolen Extended Validation code signing certificate from ASUSTeK Computer Inc.

PropertyValue
SubjectASUSTeK COMPUTER INC.
Registry#23638777, Taipei City
IssuerDigiCert Trusted G4 Code Signing RSA4096 SHA384
Signed Binarysunwukongs.exe
DisguiseASUS AI Suite III
Registry CheckSOFTWARE\ASUS\AI-SUITE_II\
SHA-256430b69b2268bb1f2f0821c8cf65d648917e1d13fd5c6f945b5830534e1d0e559

The binary sunwukongs.exe masquerades as ASUS AI Suite III and checks for the ASUS registry key to determine if it is running on a genuine ASUS system. The stolen EV certificate means the payload passes SmartScreen, most application whitelisting solutions, and default Authenticode verification -- it appears to be legitimately signed by one of the world's largest hardware manufacturers.

"Sun Wukong" (the Monkey King) is a character from Chinese mythology, though the Russian-language indicators elsewhere in the campaign suggest the operator is Russian-speaking, not Chinese.

DLL Sideloading Matrix

ACRStealer uses multiple DLL sideloading vectors to execute its payloads through legitimate binaries:

Sideloading DLLLegitimate Host BinaryObserved Samples
python311.dll / python312.dll / python315.dllPython interpreter10+
wke.dllWeb toolkit engine6
verification.googleUnknown2
CrashRpt1403.dllCrashRpt crash reporter1

The Python DLL sideloading is the most prolific vector -- the operator bundles a legitimate Python interpreter with a malicious python3XX.dll that gets loaded before the real one. The progression from python311 to python315 tracks Python's release cycle, suggesting the operator updates the sideloading target with each new Python release to maximize compatibility.

Distribution Ecosystem

ACRStealer does not operate in isolation. It sits at the center of a multi-family distribution network with at least 6 distinct delivery mechanisms:

Delivery MethodDescription
ClickFix / FakeCAPTCHASocial engineering via fake CAPTCHA verification pages (March 2026 wave)
OffLoaderSecondary dropper; delivers sunwukongs.exe
HIjackLoader / IDATLoaderLoader chain for initial delivery
RenPyLoaderNovel loader disguised as Ren'Py game engine runtime
AsgardProtectorFake security tool ("your PC is at risk")
AmateraStealerCross-family delivery partnership

The dead-drop C2 resolver is also noteworthy: ACRStealer resolves its actual C2 address by reading encoded strings from Steam Community profiles and Google user profiles -- a technique that makes the C2 address impossible to extract from the binary alone and trivial for the operator to rotate.

C2 Infrastructure: 18 IPs, 9 Live, 50% Churn

All live TLS-enabled C2 servers share an identical fingerprint:

  • Self-signed TLS certificate with CN=<IP address> (not a domain)
  • 1-year validity period, issued within days of deployment
  • HTTP GET returns 405 Method Not Allowed
  • HTTP POST returns 400 Bad Request (requires valid stealer beacon format)
  • Single port: 443

Active C2 Servers (as of 2026-03-08)

IPCert CreatedTagsFirst Seen
212.118.41.1802026-02-10dllHijack2026-02-20
193.33.195.372026-02-20--2026-02-22
46.149.72.662026-03-03acecareer-edu2026-03-07
46.149.72.2262026-03-05dllHijack2026-03-07
77.91.96.2092026-03-05RenPyLoader2026-03-07
45.150.34.02026-03-06OffLoader2026-03-07
94.26.106.216--SectopRAT (no TLS)2026-03-07
91.84.123.250--SectopRAT (no TLS)2026-03-07
116.203.167.195--ClickFix, NetSupport (no TLS)2026-03-01

Dead C2 Servers

IPTagsFirst Seen
212.34.155.34OffLoader2026-02-07
144.124.236.99dllHijack2026-02-13
144.124.233.47dllHijack2026-02-20
146.103.103.78OffLoader2026-02-22
144.124.246.132AsgardProtector2026-02-24
146.103.104.188dllHijack2026-03-01
185.121.235.118ClickFix, AmateraStealer2026-03-01
77.238.228.60ClickFix, FakeCaptcha2026-03-01
89.110.118.6AmateraStealer2026-03-05

Infrastructure Observations

  • 50% churn rate -- 9 of 18 known IPs are already dead, indicating rapid rotation on roughly 2-week cycles
  • Multi-provider hosting -- IPs spread across many ASNs with no single bulletproof host, making ASN-level blocking ineffective
  • 3 non-TLS C2s -- 91.84.123.250, 94.26.106.216, 116.203.167.195 lack TLS and may run a different C2 panel variant
  • Certificate pattern -- self-signed, CN=<IP>, 1-year validity, created 1-3 days before first observed sample tagging

Cross-Family Infrastructure Overlap

Shared C2 infrastructure reveals operational relationships between multiple malware families:

FamilyRelationshipShared Infrastructure
SectopRAT / Arechclient2Same operator94.26.106.216, 91.84.123.250
AmateraStealerDistribution partner89.110.118.6, 185.121.235.118
ClickFix / FakeCAPTCHADelivery vectorMultiple samples via fake CAPTCHA pages
HIjackLoader / IDATLoaderLoader chainUsed for initial delivery
OffLoaderDropperDrops sunwukongs.exe
VidarSame campaignCo-distributed via groveri.eu lures
NetSupport RATCo-deliveredShared ClickFix infrastructure (116.203.167.195)

The SectopRAT overlap is the strongest signal -- SectopRAT is the .NET variant of the same Arechclient2 family, and the shared C2 IPs confirm a single operator running both the Go-based ACRStealer and the .NET-based SectopRAT from the same infrastructure.

MITRE ATT&CK Mapping

TacticTechniqueIDImplementation
Resource DevelopmentCompromise InfrastructureT1584.004Compromised acecareer.edu WordPress for payload hosting
Resource DevelopmentCode Signing CertificatesT1588.003Stolen ASUSTeK EV certificate
Initial AccessPhishingT1566ClickFix/FakeCAPTCHA social engineering
ExecutionUser Execution: Malicious FileT1204.002Fake CAPTCHA triggers PowerShell execution
ExecutionCommand and Scripting Interpreter: PowerShellT1059.001Config.ps1 dropper
PersistenceHijack Execution Flow: DLL Side-LoadingT1574.002python3XX.dll, wke.dll, verification.google, CrashRpt1403.dll
Defense EvasionImpair Defenses: Disable or Modify ToolsT1562.001Defender exclusion for %TEMP% and powershell.exe
Defense EvasionSubvert Trust Controls: Code SigningT1553.002Stolen ASUSTeK EV cert passes SmartScreen
Defense EvasionObfuscated Files or InformationT1027XOR-encrypted Config.ps1, VM-obfuscated DLL
Defense EvasionIndicator Removal: File DeletionT1070.004Payload self-deletes after execution
Credential AccessCredentials from Password StoresT1555DPAPI decryption via CryptUnprotectData
Credential AccessCredentials from Web BrowsersT1555.003Browser credential, cookie, history theft
Credential AccessSteal Application Access TokenT1528ADAL/OAuth token theft (Azure AD)
Credential AccessSteal Web Session CookieT1539Browser session cookie extraction
Credential AccessUnsecured CredentialsT1552Windows Hello NGC key extraction
DiscoverySystem Information DiscoveryT1082main.Batteries module, iplogger.co beacon
CollectionData from Local SystemT1005Smart card cert enumeration, wallet data
Command and ControlWeb Service: Dead Drop ResolverT1102.001Steam Community / Google profile C2 resolution
Command and ControlEncrypted ChannelT1573Self-signed TLS to C2 servers
Command and ControlApplication Layer Protocol: WebT1071.001HTTPS POST exfiltration
ExfiltrationExfiltration Over C2 ChannelT1041Stolen data exfiltrated via same HTTPS channel

Indicators of Compromise

C2 IPs -- Live

45.150.34.0
46.149.72.66
46.149.72.226
77.91.96.209
91.84.123.250
94.26.106.216
116.203.167.195
193.33.195.37
212.118.41.180

C2 IPs -- Dead (historical)

77.238.228.60
89.110.118.6
144.124.233.47
144.124.236.99
144.124.246.132
146.103.103.78
146.103.104.188
185.121.235.118
212.34.155.34

URLs

https://iplogger.co/1paLJ4
https://acecareer.edu/wp-includes/certificates/acr-karimichikstrelyaet-639081475329349420.exe

File Indicators

FilenameSHA-256Description
Go Loader (continental)c2475b4b179267d3dd7f9c54d9e9f39b21109baa2c5d7e5acdc5e49d11bb1e95Stage 3 payload, Go 1.26.0
verification.google4df58b7e964f595fbdd1a345ea8a42d7477a473527174eb07aba7a236369933bSideloaded DLL with NGC/ADAL theft
sunwukongs.exe430b69b2268bb1f2f0821c8cf65d648917e1d13fd5c6f945b5830534e1d0e559Stolen ASUSTeK EV-signed binary

Encryption

Config.ps1 XOR key: MnZdJGRiwLze (12-byte rotating)
Key bytes: [77, 110, 90, 100, 74, 71, 82, 105, 119, 76, 122, 101]

YARA Detection Opportunities

rule ACRStealer_Go_Loader_Continental {
    meta:
        description = "Detects ACRStealer Go loader with 'continental' module name"
        author = "Breakglass Intelligence"
        date = "2026-03-08"
        tlp = "TLP:CLEAR"
        severity = "HIGH"
        reference = "https://intel.breakglass.tech"
    strings:
        $module = "continental" ascii
        $go_ver = "go1.26" ascii
        $fn1 = "main.Activities" ascii
        $fn2 = "main.Batteries" ascii
        $fn3 = "main.Conversations" ascii
        $fn4 = "main.Definitions" ascii
        $fn5 = "main.Happiness" ascii
        $fn6 = "main.Procurement" ascii
        $fn7 = "main.Supplements" ascii
        $disc = "main.Discussionsattraction" ascii
        $nom = "main.Nominationsconsensus" ascii
    condition:
        uint16(0) == 0x5A4D and
        $module and $go_ver and
        4 of ($fn*)
}

rule ACRStealer_Verification_Google_DLL {
    meta:
        description = "Detects ACRStealer verification.google DLL with embedded Microsoft binaries"
        author = "Breakglass Intelligence"
        date = "2026-03-08"
        tlp = "TLP:CLEAR"
        severity = "HIGH"
    strings:
        $exp1 = "AllocateNamespaceData" ascii
        $exp2 = "CreateNotificationEx" ascii
        $exp3 = "OpenSchemaAsync" ascii
        $exp4 = "ResetPropertiesEx" ascii
        $exp5 = "ValidateEndpointEx" ascii
        $res1 = "sppc.dll" ascii wide
        $res2 = "ngc.dll" ascii wide
        $res3 = "fltLib.dll" ascii wide
        $res4 = "aclui.dll" ascii wide
    condition:
        uint16(0) == 0x5A4D and
        3 of ($exp*) and
        2 of ($res*)
}

rule ACRStealer_Config_PS1_XOR {
    meta:
        description = "Detects ACRStealer XOR-encrypted PowerShell dropper"
        author = "Breakglass Intelligence"
        date = "2026-03-08"
        tlp = "TLP:CLEAR"
    strings:
        $xor_key = { 4D 6E 5A 64 4A 47 52 69 77 4C 7A 65 }
        $defender1 = "Add-MpPreference" ascii wide nocase
        $defender2 = "-ExclusionPath" ascii wide nocase
        $defender3 = "-ExclusionProcess" ascii wide nocase
        $iplogger = "iplogger.co" ascii wide
    condition:
        $xor_key or
        (2 of ($defender*) and $iplogger)
}

Network Detection -- Snort/Suricata

# ACRStealer C2 — Self-signed cert with CN=IP pattern (common across all live servers)
alert tls any any -> [45.150.34.0,46.149.72.66,46.149.72.226,77.91.96.209,193.33.195.37,212.118.41.180] 443 \
  (msg:"ACRSTEALER C2 Self-Signed Cert CN=IP"; tls.cert_subject; content:"CN="; \
  flow:established,to_server; sid:2026030801; rev:1;)

# ACRStealer — Compromised .edu payload delivery
alert http any any -> any any (msg:"ACRSTEALER Payload Download from Compromised EDU"; \
  content:"acecareer.edu"; http_host; content:"/wp-includes/certificates/"; http_uri; \
  sid:2026030802; rev:1;)

# ACRStealer — iplogger.co victim beacon
alert http any any -> any any (msg:"ACRSTEALER Victim Beacon to iplogger"; \
  content:"iplogger.co"; http_host; content:"/1paLJ4"; http_uri; \
  sid:2026030803; rev:1;)

# ACRStealer — Defender exclusion via PowerShell (host-based)
alert any any any -> any any (msg:"ACRSTEALER Defender Exclusion PowerShell"; \
  content:"Add-MpPreference"; content:"-ExclusionPath"; content:"TEMP"; \
  sid:2026030804; rev:1;)

Published by Breakglass Intelligence. Investigation conducted 2026-03-08. 50 MalwareBazaar samples analyzed. 9 live C2 servers confirmed. Compromised .edu payload host still active. Classification: TLP:CLEAR

Share: