Back to Intelligence

North Korean FaceStealer Campaign Disrupted: Defending Against $400M Cryptocurrency Social Engineering Operation

SA
Security Arsenal Team
November 14, 2026
13 min read

The U.S. Department of Justice, in coordination with the FBI and international partners, has disrupted a sophisticated North Korean social engineering campaign dubbed FaceStealer that successfully stole more than $400 million in cryptocurrency from victims worldwide. This operation represents one of the most financially damaging state-sponsored cryptocurrency theft campaigns publicly attributed to the Democratic People's Republic of Korea (DPRK), a nation that has increasingly relied on cryptocurrency theft to fund weapons programs and evade international sanctions.

FaceStealer targeted cryptocurrency investors, blockchain developers, DeFi platform employees, and digital asset custodians through highly personalized social engineering attacks. The campaign leveraged fake job recruitment schemes, compromised professional networking profiles, malicious video conferencing applications, and trojanized cryptocurrency wallet software to gain initial access and exfiltrate private keys, seed phrases, and authentication credentials.

For defenders, this campaign underscores a critical reality: North Korean threat actors have evolved beyond traditional spear phishing into multi-stage, weeks-long social engineering operations that exploit trust relationships and business workflows. Organizations operating in the cryptocurrency, fintech, blockchain development, and Web3 sectors face elevated risk and must implement defense-in-depth controls specifically designed to detect and disrupt these advanced persistent threats.

Technical Analysis

Threat Actor Profile

FaceStealer is attributed to North Korean state-sponsored actors, likely operating under the umbrella of APT38 (also tracked as Lazarus Group, Diamond Sleet, or TEMP.Hermit). DPRK cyber operations have historically focused on financial gain to circumvent international sanctions, with cryptocurrency theft representing a strategic revenue stream.

According to Chainalysis and other blockchain intelligence firms, North Korean-linked actors have stolen over $3 billion in cryptocurrency since 2017, with 2024-2025 representing the most aggressive operational tempo on record. The FaceStealer campaign demonstrates continued investment in social engineering tradecraft specifically optimized for high-value cryptocurrency targets.

Attack Chain and Techniques

The FaceStealer operation employed a multi-stage intrusion methodology:

Stage 1: Target Reconnaissance and Profiling

  • Threat actors conducted extensive OSINT collection on targets via LinkedIn, Twitter/X, GitHub, cryptocurrency forums, and blockchain developer communities
  • Victims were profiled based on job role (blockchain developer, smart contract engineer, wallet custodian, exchange operator), employer, cryptocurrency holdings, and technical skill set
  • Fake recruiter personas were created with sophisticated backstopping (fabricated work histories, stolen profile photos, deepfake video capabilities)

Stage 2: Initial Contact and Trust Building

  • Targets received personalized recruitment messages offering lucrative remote positions at fake blockchain startups or established firms (using typosquatted domains and cloned websites)
  • Multi-week engagement patterns designed to build rapport and establish credibility
  • Video interviews conducted using deepfake technology or compromised legitimate accounts

Stage 3: Malware Delivery

  • Victims instructed to download "technical assessment tools," "company VPN clients," or "secure communication apps" — actually trojanized installers containing credential stealers and remote access trojans (RATs)
  • Malicious packages distributed as npm modules, Python packages, or compiled binaries (Electron apps, macOS .dmg files, Windows .msi installers)
  • Code signing certificates stolen from compromised developers or purchased through criminal marketplaces

Stage 4: Credential and Cryptocurrency Theft

  • Deployed malware targeted browser-stored credentials, cryptocurrency wallet files (e.g., wallet.dat, *.keystore files, browser extension local storage), SSH private keys, and 2FA backup codes
  • Keylogging and clipboard monitoring to capture seed phrases and private keys during legitimate wallet access
  • Exfiltration via HTTPS to attacker-controlled infrastructure using domain fronting and legitimate cloud services (AWS, Cloudflare Workers)

Stage 5: Fund Laundering

  • Stolen cryptocurrency rapidly moved through mixers, chain-hopping techniques, and decentralized exchanges to obfuscate transaction trails
  • Conversion to privacy coins (Monero) and eventual cash-out through OTC brokers and unregulated exchanges

MITRE ATT&CK Mapping

  • T1566.001 – Phishing: Spearphishing Attachment
  • T1566.002 – Phishing: Spearphishing Link
  • T1204.002 – User Execution: Malicious File
  • T1059.006 – Command and Scripting Interpreter: Python
  • T1055 – Process Injection
  • T1003.001 – OS Credential Dumping: LSASS Memory
  • T1555.003 – Credentials from Password Stores: Credentials from Web Browsers
  • T1552.001 – Unsecured Credentials: Credentials in Files
  • T1041 – Exfiltration Over C2 Channel
  • T1027 – Obfuscated Files or Information

Exploitation Status

  • Confirmed Active Exploitation: Yes — campaign resulted in $400M+ in verified theft
  • Attribution: High-confidence attribution to North Korean state actors by U.S. government
  • Current Status: Disrupted through law enforcement action, but TTPs remain active across DPRK threat clusters
  • CISA KEV: Not applicable (social engineering campaign, not CVE-based exploitation)

Detection & Response

Sigma Rules

The following Sigma rules target behavioral indicators associated with FaceStealer's credential theft and cryptocurrency wallet targeting activities. These rules are designed to minimize false positives by focusing on suspicious process behaviors and file access patterns.

YAML
---
title: Suspicious Access to Cryptocurrency Wallet Files
id: 8f4e2a91-3b7c-4d1e-9a5f-2c6d8e1b4a7f
status: experimental
description: Detects suspicious processes accessing cryptocurrency wallet files and browser extension storage commonly targeted by FaceStealer and similar campaigns.
references:
  - https://attack.mitre.org/techniques/T1552/001/
  - https://attack.mitre.org/techniques/T1555/003/
author: Security Arsenal
date: 2026/01/15
tags:
  - attack.credential_access
  - attack.t1552.001
  - attack.t1555.003
logsource:
  category: file_event
  product: windows
detection:
  selection_wallet_paths:
    TargetFilename|contains:
      - '\AppData\Roaming\Bitcoin\wallet.dat'
      - '\AppData\Roaming\Ethereum\keystore\'
      - '\AppData\Roaming\Exodus\'
      - '\AppData\Roaming\Electrum\wallets\'
      - '\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\nkbihfbeogaeaoehlefnkodbefgpgknn'  # MetaMask
      - '\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\ejbalbakoplchlghecdalmeeeajnimhm'  # MetaMask Flask
  filter_legitimate:
    Image|endswith:
      - '\Bitcoin\bitcoin-qt.exe'
      - '\Ethereum\geth.exe'
      - '\Exodus\exodus.exe'
      - '\electrum.exe'
      - '\chrome.exe'
      - '\msedge.exe'
  condition: selection_wallet_paths and not filter_legitimate
falsepositives:
  - Legitimate wallet applications and browsers accessing their own data
  - Portfolio tracking software
level: high
---
title: Credential Dumping via LSASS Memory Access
id: 3c9f7b42-8e1d-4a6f-b2c9-5d7e8f1a3b6c
status: experimental
description: Detects suspicious processes accessing LSASS memory, a technique used by FaceStealer malware to extract authentication credentials.
references:
  - https://attack.mitre.org/techniques/T1003/001/
author: Security Arsenal
date: 2026/01/15
tags:
  - attack.credential_access
  - attack.t1003.001
logsource:
  category: process_access
  product: windows
detection:
  selection:
    TargetImage|endswith: '\lsass.exe'
    GrantedAccess|contains:
      - '0x1010'
      - '0x1410'
      - '0x1438'
      - '0x143a'
      - '0x1FFFFF'
  filter_legitimate:
    SourceImage|endswith:
      - '\Windows\System32\svchost.exe'
      - '\Windows\System32\wininit.exe'
      - '\Windows\System32\services.exe'
      - '\Program Files\'
      - '\Program Files (x86)\'
      - '\Windows\System32\MsMpEng.exe'
  condition: selection and not filter_legitimate
falsepositives:
  - Legitimate security tools and EDR agents
  - System management tools
level: high
---
title: Suspicious npm Package Installation from Non-Standard Directories
id: 6d2e8f4a-9c3b-4e7f-a1d6-8b5c2e9f4a7d
status: experimental
description: Detects npm package installations executed from temporary or user directories, a common delivery mechanism for malicious packages in supply chain and social engineering attacks.
references:
  - https://attack.mitre.org/techniques/T1195/
  - https://attack.mitre.org/techniques/T1059/006/
author: Security Arsenal
date: 2026/01/15
tags:
  - attack.execution
  - attack.t1195
  - attack.t1059.006
logsource:
  category: process_creation
  product: windows
detection:
  selection:
    Image|endswith:
      - '\npm.exe'
      - '\node.exe'
    CommandLine|contains:
      - 'install'
      - 'i '
    ParentImage|endswith:
      - '\explorer.exe'
      - '\cmd.exe'
      - '\powershell.exe'
  selection_suspicious_paths:
    CommandLine|contains:
      - '\AppData\Local\Temp\'
      - '\Downloads\'
      - '\Desktop\'
      - 'C:\Users\Public\'
  condition: selection and selection_suspicious_paths
falsepositives:
  - Developers installing packages from project directories
  - Legitimate development workflows
level: medium

KQL Hunt Query (Microsoft Sentinel / Defender)

The following KQL query hunts for cryptocurrency wallet access patterns and credential theft behaviors associated with FaceStealer. This query is designed for environments using Microsoft Defender for Endpoint with Sysmon or similar telemetry.

KQL — Microsoft Sentinel / Defender
// Hunt for suspicious access to cryptocurrency wallet files and browser credential stores
// Targets FaceStealer and similar cryptocurrency theft campaigns
let WalletPaths = dynamic([
    @"\AppData\Roaming\Bitcoin\wallet.dat",
    @"\AppData\Roaming\Ethereum\keystore",
    @"\AppData\Roaming\Exodus",
    @"\AppData\Roaming\Electrum\wallets",
    @"nkbihfbeogaeaoehlefnkodbefgpgknn",  // MetaMask extension ID
    @"ejbalbakoplchlghecdalmeeeajnimhm"   // MetaMask Flask
]);
let LegitimateWalletApps = dynamic([
    @"bitcoin-qt.exe", @"geth.exe", @"exodus.exe", @"electrum.exe",
    @"chrome.exe", @"msedge.exe", @"firefox.exe"
]);
union isfuzzy=true
    (DeviceFileEvents
    | where TimeGenerated > ago(7d)
    | where FolderPath has_any (WalletPaths)
    | where not(FileName in~ (LegitimateWalletApps))
    | where not(InitiatingProcessFileName in~ (LegitimateWalletApps))
    | project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine,
              FolderPath, FileName, SHA256, InitiatingProcessAccountName
    | extend DetectionType = "Wallet File Access"),
    (DeviceProcessEvents
    | where TimeGenerated > ago(7d)
    | where ProcessCommandLine has_any (@"lsass", @"sekurlsa", @"mimikatz")
    | where not(FileName in~ (@"MsMpEng.exe", @"svchost.exe", @"wininit.exe"))
    | where not(FolderPath startswith @"C:\Program Files")
    | project TimeGenerated, DeviceName, FileName, ProcessCommandLine,
              FolderPath, SHA256, AccountName
    | extend DetectionType = "Credential Dumping Attempt")
| sort by TimeGenerated desc
| summarize arg_max(TimeGenerated, *) by DeviceName, DetectionType

Velociraptor VQL Artifact

This VQL artifact hunts for evidence of cryptocurrency wallet theft and credential dumping on Windows endpoints. It combines process monitoring with file system artifacts.

VQL — Velociraptor
-- FaceStealer Campaign Detection Artifact
-- Hunts for cryptocurrency wallet access and credential theft indicators

LET wallet_processes = SELECT Pid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE CommandLine =~ '(bitcoin|ethereum|exodus|electrum|metamask|wallet\\.dat|keystore)'
  AND NOT Exe =~ '(bitcoin-qt|geth|exodus|electrum|chrome|firefox|msedge)\\.exe$'

LET suspicious_lsass_access = SELECT Pid, Name, CommandLine, Exe, Username
FROM pslist()
WHERE CommandLine =~ '(lsass|sekurlsa|mimikatz|procdump.*lsass)'
  AND NOT Exe =~ '(MsMpEng|svchost|wininit|csrss)\\.exe$'

LET wallet_files = SELECT FullPath, Size, Mtime, Atime
FROM glob(globs=[
    'C:/Users/*/AppData/Roaming/Bitcoin/wallet.dat',
    'C:/Users/*/AppData/Roaming/Ethereum/keystore/*',
    'C:/Users/*/AppData/Roaming/Exodus/**',
    'C:/Users/*/AppData/Roaming/Electrum/wallets/*'
])
WHERE Mtime > now() - (7 * 24 * 60 * 60)  // Files accessed in last 7 days

SELECT 'Suspicious Wallet Process' AS DetectionType, Pid, Name, CommandLine, Username, CreateTime AS Timestamp
FROM wallet_processes
UNION ALL
SELECT 'Credential Dumping Tool' AS DetectionType, Pid, Name, CommandLine, Username, NULL AS Timestamp
FROM suspicious_lsass_access
UNION ALL
SELECT 'Recent Wallet File Activity' AS DetectionType, NULL AS Pid, FullPath AS Name, 
       format(format='Size: %d bytes', args=[Size]) AS CommandLine, NULL AS Username, Mtime AS Timestamp
FROM wallet_files

PowerShell Remediation and Hardening Script

The following PowerShell script implements immediate protective controls for Windows endpoints at risk from FaceStealer-style attacks. Run with administrative privileges.

PowerShell
#Requires -RunAsAdministrator
# FaceStealer Campaign - Endpoint Hardening Script
# Implements controls to prevent cryptocurrency theft and credential dumping

Write-Host "[+] FaceStealer Threat Mitigation Script" -ForegroundColor Cyan
Write-Host "[+] Implementing endpoint hardening controls..." -ForegroundColor Cyan

# 1. Enable Windows Defender Credential Guard (requires reboot)
Write-Host "`n[1] Enabling Windows Defender Credential Guard..." -ForegroundColor Yellow
$CGPath = "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard"
if (!(Test-Path $CGPath)) { New-Item -Path $CGPath -Force | Out-Null }
Set-ItemProperty -Path $CGPath -Name "EnableVirtualizationBasedSecurity" -Value 1
Set-ItemProperty -Path "$CGPath\Scenarios\CredentialGuard" -Name "Enabled" -Value 1 -ErrorAction SilentlyContinue
Write-Host "    Credential Guard configured (reboot required)" -ForegroundColor Green

# 2. Enable LSASS Protection (RunAsPPL)
Write-Host "`n[2] Enabling LSASS Protection (RunAsPPL)..." -ForegroundColor Yellow
$LSAPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa"
Set-ItemProperty -Path $LSAPath -Name "RunAsPPL" -Value 1 -ErrorAction SilentlyContinue
Write-Host "    LSASS protection enabled (reboot required)" -ForegroundColor Green

# 3. Block suspicious processes from accessing wallet directories via Windows Defender Attack Surface Reduction
Write-Host "`n[3] Configuring Attack Surface Reduction rules..." -ForegroundColor Yellow
$ASRRules = @{
    "Block credential stealing from LSASS" = "9e6c4e1f-7d60-472f-b1ba-a39c669d1a9b"
    "Block process creations from PSExec and WMI" = "d1e49aac-8f56-4280-b9ba-993a6d77406c"
    "Block untrusted processes from USB" = "b2b3f03d-6a65-4f7b-a9c7-1c7ef74a9ba4"
}
foreach ($RuleName in $ASRRules.Keys) {
    $RuleGUID = $ASRRules[$RuleName]
    Add-MpPreference -AttackSurfaceReductionRules_Ids $RuleGUID -AttackSurfaceReductionRules_Actions Enabled
    Write-Host "    Enabled: $RuleName" -ForegroundColor Green
}

# 4. Create controlled folder access rules for wallet directories
Write-Host "`n[4] Configuring Controlled Folder Access for wallet paths..." -ForegroundColor Yellow
$WalletPaths = @(
    "$env:APPDATA\Bitcoin",
    "$env:APPDATA\Ethereum",
    "$env:APPDATA\Exodus",
    "$env:APPDATA\Electrum"
)
foreach ($Path in $WalletPaths) {
    if (Test-Path $Path) {
        Add-MpPreference -ControlledFolderAccessProtectedFolders $Path
        Write-Host "    Protected: $Path" -ForegroundColor Green
    }
}
Set-MpPreference -EnableControlledFolderAccess Enabled

# 5. Audit for suspicious npm/python packages installed outside Program Files
Write-Host "`n[5] Auditing for suspicious package installations..." -ForegroundColor Yellow
$SuspiciousPaths = @("$env:TEMP", "$env:USERPROFILE\Downloads", "$env:USERPROFILE\Desktop", "C:\Users\Public")
$SuspiciousPackages = Get-ChildItem -Path $SuspiciousPaths -Recurse -Include "package.json","setup.py","requirements.txt" -ErrorAction SilentlyContinue | 
    Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-30) }
if ($SuspiciousPackages) {
    Write-Host "    WARNING: Found $($SuspiciousPackages.Count) recently modified package files in user directories:" -ForegroundColor Red
    $SuspiciousPackages | ForEach-Object { Write-Host "      - $($_.FullName)" -ForegroundColor Red }
    Write-Host "    Review these for potential malicious packages" -ForegroundColor Yellow
} else {
    Write-Host "    No suspicious packages found" -ForegroundColor Green
}

# 6. Check for suspicious browser extensions (cryptocurrency wallet extensions should be verified)
Write-Host "`n[6] Auditing browser extensions..." -ForegroundColor Yellow
$ChromeExtPath = "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Extensions"
if (Test-Path $ChromeExtPath) {
    $Extensions = Get-ChildItem $ChromeExtPath -Directory
    Write-Host "    Found $($Extensions.Count) Chrome extensions. Manually verify cryptocurrency wallet extensions." -ForegroundColor Yellow
    Write-Host "    Legitimate MetaMask ID: nkbihfbeogaeaoehlefnkodbefgpgknn" -ForegroundColor Cyan
}

# 7. Enable PowerShell Script Block Logging for better detection
Write-Host "`n[7] Enabling PowerShell Script Block Logging..." -ForegroundColor Yellow
$PSLogPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging"
if (!(Test-Path $PSLogPath)) { New-Item -Path $PSLogPath -Force | Out-Null }
Set-ItemProperty -Path $PSLogPath -Name "EnableScriptBlockLogging" -Value 1
Write-Host "    Script Block Logging enabled" -ForegroundColor Green

# 8. Summary and recommendations
Write-Host "`n[+] Hardening Complete" -ForegroundColor Green
Write-Host "`n[IMPORTANT] Next Steps:" -ForegroundColor Cyan
Write-Host "  1. Reboot the system to activate Credential Guard and LSASS Protection" -ForegroundColor White
Write-Host "  2. Review any suspicious packages identified in step 5" -ForegroundColor White
Write-Host "  3. Educate users about social engineering risks (fake job offers, malicious interviews)" -ForegroundColor White
Write-Host "  4. Consider hardware wallets for cryptocurrency storage" -ForegroundColor White
Write-Host "  5. Implement application whitelisting (AppLocker/WDAC) for high-risk users" -ForegroundColor White
Write-Host "  6. Deploy network segmentation to isolate cryptocurrency operations" -ForegroundColor White

Remediation

Immediate Actions

  1. User Awareness and Social Engineering Defense

    • Conduct mandatory security awareness training specifically covering FaceStealer TTPs: fake job recruitment, video interview scams, and malicious "technical assessments"
    • Implement a verification policy: require secondary channel confirmation (phone call to known number) before executing any software or scripts sent by external contacts
    • Establish a "suspicious recruitment" reporting channel for employees in cryptocurrency, blockchain, and fintech roles
  2. Cryptocurrency Asset Protection

    • Migrate cryptocurrency holdings from software wallets to hardware wallets (Ledger, Trezor) or institutional-grade custody solutions
    • Implement multi-signature wallet configurations requiring multiple approvals for transactions above defined thresholds
    • Audit all cryptocurrency wallet software for legitimacy — download only from official sources, verify code signatures, check for typosquatting
    • Never store seed phrases or private keys in digital format on internet-connected systems
  3. Endpoint Hardening

    • Deploy the PowerShell hardening script provided above on all Windows systems
    • Enable Windows Defender Credential Guard and LSASS Protection on all supported systems
    • Implement application whitelisting (Windows Defender Application Control or AppLocker) to prevent unauthorized executables
    • Configure Controlled Folder Access to protect cryptocurrency wallet directories
    • Deploy EDR solutions with behavioral analytics tuned for credential dumping and wallet theft techniques
  4. Network Segmentation

    • Isolate cryptocurrency operations, wallet management, and private key handling to dedicated, air-gapped, or heavily segmented systems
    • Implement strict egress filtering to block unauthorized data exfiltration
    • Monitor for DNS queries to known cryptocurrency mixing services and suspicious blockchain-related domains
  5. Browser Security

    • Audit all browser extensions, especially cryptocurrency wallet extensions (MetaMask, Phantom, etc.)
    • Verify extension IDs against official sources (e.g., MetaMask: nkbihfbeogaeaoehlefnkodbefgpgknn)
    • Deploy browser isolation technologies for high-risk users
    • Disable password storage in browsers; enforce enterprise password managers
  6. Supply Chain Security

    • Audit all npm, PyPI, and other package dependencies for legitimacy and recent changes
    • Implement Software Composition Analysis (SCA) tools to detect malicious or compromised packages
    • Require code review and security testing for all third-party libraries
    • Use private package registries with allowlist policies for production environments

Official Resources

Reporting

If you believe you have been targeted or compromised by FaceStealer or a similar campaign:

  1. Immediately move cryptocurrency assets to new wallets with freshly generated keys
  2. Report the incident to FBI IC3 (https://www.ic3.gov/) and your local FBI field office
  3. Preserve forensic evidence: system images, memory dumps, email communications, social media messages
  4. Contact your organization's incident response team or engage external DFIR services
  5. Report phishing attempts to Anti-Phishing Working Group (reportphishing@apwg.org)

Related Resources

Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.