CLIPPER
CLIPBOARD
WALLET SWAP
CANARY
DetectionBlue TeamSOCOctober 12, 2026•9 min read

Detecting Clipboard Hijacking and Crypto Clippers

A clipper does not steal your wallet. It waits for you to copy an address, then quietly swaps in the attacker’s. The theft happens at paste time.

Scroll

Clippers are small, quiet programs that monitor the clipboard, match anything that looks like a cryptocurrency address and replace it with an attacker-controlled one. They are often bundled into stealers and loaders. Because the clipboard APIs are legitimate and widely used, detection leans on three things: what the binary contains, what it does at startup, and a canary that proves the swap is happening.

Signals at a Glance

SignalWhereATT&CK
Binary containing clipboard APIs and several wallet-address regex patternsYARA, file scanningT1115
Clipboard content changes without a user paste or copy actionCanary test, EDR API telemetryT1115
Small unsigned process with a hidden window, started at logonEDR, autoruns baselineT1547.001
Clipboard listener registered by a process with no UIEDR API-call telemetry (product dependent)T1115
Clipper bundled with a stealer or loader on the same hostCorrelated alertsT1005

Static Hunting for Clipper Logic

A clipper has to carry the patterns it matches. Address formats are regular expressions, and .NET or native clippers embed them as plain or UTF-16 strings alongside the clipboard API names. That combination is rare in legitimate software and worth a scheduled scan of user-writable paths and email attachments:

rule HUNT_Clipper_WalletRegex_ClipboardAPIs
{
    meta:
        description = "Hunt: PE with clipboard APIs and multiple wallet-address patterns"
        note = "tune/validate against a clean corpus before alerting"
    strings:
        $api1 = "OpenClipboard" ascii wide
        $api2 = "SetClipboardData" ascii wide
        $api3 = "GetClipboardData" ascii wide
        $api4 = "AddClipboardFormatListener" ascii wide
        $re_btc = "[a-km-zA-HJ-NP-Z1-9]{25,34}" ascii wide
        $re_eth = "0x[a-fA-F0-9]{40}" ascii wide
        $re_bech = "bc1[ac-hj-np-z02-9]" ascii wide
    condition:
        uint16(0) == 0x5A4D and filesize < 5MB and
        2 of ($api*) and 2 of ($re_*)
}

Prove It with a Canary

The most convincing test is behavioural. Place a syntactically valid address you control on the clipboard, wait, and read it back. If the value changes with no user action, something on that host is swapping addresses. Run it from your endpoint tooling against suspect hosts or as a periodic purple-team check:

# Clipboard canary - run in the interactive user session
$canary = '<ADDRESS_YOU_CONTROL>'          # a valid-format address you own; never a real balance
Set-Clipboard -Value $canary
Start-Sleep -Seconds 20
$now = Get-Clipboard -Raw
if ($now.Trim() -ne $canary) { "CLIPBOARD CHANGED: possible clipper on $env:COMPUTERNAME" }
# tune/validate: clipboard managers and remote-desktop tools can also rewrite content
Vetted sources

Use MITRE ATT&CK T1115, the YARA rules published in public malware-research repositories for specific clipper families, and EDR vendor documentation on clipboard API telemetry. Baseline your environment: clipboard managers, remote-desktop clients and password managers legitimately monitor the clipboard.

Build Detections That Fire

Mjolnir Security helps blue teams turn threat intelligence into high-fidelity detections across endpoint, network, identity and cloud telemetry.

Detection EngineeringManaged Detection & ResponseThreat HuntingIncident ResponsePurple Teaming
  • Detection Engineering We build and tune detections mapped to ATT&CK from your own telemetry.
  • Threat Hunting as a Service Hypothesis-driven hunts for the behaviours on this page.
  • 24/7 Incident Response Containment when a detection fires. Call +1 833 403 5875.
Written by: Mjolnir Threat Research (MTAC)  |  Published: October 12, 2026  |  Last reviewed: October 12, 2026