How Modern Drainer Kits Actually Work
Forget the Hollywood hacker image. A 2026-era drainer kit is a SaaS product with better UX than most DeFi protocols.
The Architecture
┌─────────────────────────────────────────────────────┐
│ OPERATOR DASHBOARD │
│ Campaign manager • Analytics • Revenue split (80/20)│
└───────────────┬─────────────────────────────────────┘
│
┌───────────▼───────────┐
│ PHISHING FRONTEND │
│ Fake airdrop / mint │
│ AI-generated content │
│ SEO-poisoned domains │
└───────────┬───────────┘
│ User visits, connects wallet
┌───────────▼───────────┐
│ DRAINER SCRIPT v3 │
│ ┌─────────────────┐ │
│ │ Asset Discovery │ │ ← Scans all chains, tokens, NFTs
│ │ Value Ranking │ │ ← Prioritizes highest-value assets
│ │ Signature Craft │ │ ← Picks optimal drain method per asset
│ │ Warning Bypass │ │ ← Evades wallet security UI
│ │ Execution Engine │ │ ← Timed drain, batched transfers
│ └─────────────────┘ │
└───────────┬───────────┘
│
┌───────────▼───────────┐
│ SMART CONTRACT LAYER │
│ Single-use contracts │
│ Encrypted config │
│ Proxy-based C2 │
└───────────────────────┘
The Kill Chain (Step by Step)
Step 1: Bait. The operator creates a phishing page — fake airdrop claim, NFT mint, or DeFi protocol UI. In 2026, generative AI produces pixel-perfect clones in minutes. Domains rotate every 24–48 hours to stay ahead of blocklists.
Step 2: Connect. The victim connects their wallet. The drainer script immediately performs multi-chain asset discovery — scanning Ethereum, Solana, BNB Chain, Arbitrum, and every other connected network for tokens, NFTs, and native balances.
Step 3: Craft. Based on what it finds, the script selects the optimal drain strategy per asset type:
| Asset Type | Drain Method | Why It Works |
|---|---|---|
| ERC-20 tokens |
Permit2 signature |
No on-chain approval tx — harder to detect |
| Native ETH/SOL | Direct transfer via eth_signTransaction
|
Simplest path, fewest warnings |
| NFTs (ERC-721) | setApprovalForAll |
One signature drains entire collection |
| ERC-20 (no Permit2) | Legacy approve(MAX_UINT256)
|
Delayed drain — wait for accumulation |
| Solana SPL tokens | Owner reassignment via malicious program | Transfers ownership of token accounts |
Step 4: Bypass. This is where 2026-era kits earn their price tag. Modern techniques include:
- Transaction simulation spoofing: The malicious page intercepts the wallet's simulation call and returns a benign result, while the actual transaction is malicious
- Warning fatigue exploitation: Presenting multiple low-risk-looking signatures before the real drain
- Permit2 timing attacks: Capturing the signature now, executing the drain hours or days later when the victim has accumulated more tokens
Step 5: Drain. Average time from approval to empty wallet: under 32 seconds. Assets are immediately routed through mixers, cross-chain bridges, or — increasingly — Solana blockchain transactions used as covert data channels.
Why Your Wallet's Security Warnings Are Losing
Wallet security teams are fighting an asymmetric battle. Here's the core problem:
The Simulation Gap
Transaction simulation — the technology behind MetaMask's "this transaction will..." warnings and Phantom's scam detection — analyzes transactions, not signatures.
WHAT SIMULATION SEES:
→ User signs a message (looks harmless)
WHAT ACTUALLY HAPPENS:
→ Message is a valid Permit2 authorization
→ Attacker submits it later as a transaction
→ Tokens transferred without user's wallet ever firing
Permit2 signatures are the perfect weapon because they separate the moment of authorization (signing) from the moment of execution (draining). By the time the drain transaction hits the blockchain, the victim's wallet isn't involved at all.
The Blocklist Race
Wallet security relies heavily on domain and contract blocklists. But when drainer kits deploy single-use smart contracts (created and destroyed in the same transaction) and rotate domains every 24 hours, blocklists are always 24–48 hours behind.
The Trust Problem
The most effective drainer campaigns don't come from random spam. They come from:
- Compromised Discord servers of legitimate projects (Bored Ape, Azuki, and dozens of smaller projects in 2026)
- Hacked Twitter/X accounts of crypto influencers
- Google Ads that outrank legitimate project sites
- Telegram groups where the admin's account was stolen
When the phishing link comes from a source you already trust, even sophisticated users let their guard down.
The Defense Playbook: 12 Layers That Actually Work
Generic advice like "be careful" doesn't cut it. Here's what actually reduces your attack surface:
Layer 1: Wallet Architecture (Structural Defense)
Separate your wallets by function:
HOT WALLET (daily use)
├── DeFi interactions
├── NFT mints
├── Token swaps
└── MAX VALUE: What you can afford to lose
WARM WALLET (periodic transfers)
├── Medium-term holdings
├── Staking positions
└── Hardware wallet integration required
COLD WALLET (long-term storage)
├── Hardware wallet ONLY
├── Never connects to any dApp
└── Air-gapped signing for any movement
Why this matters: If a drainer compromises your hot wallet, it gets your daily-use funds — not your life savings. The UXLINK exploiter who stole $44M in September 2025 was himself drained by Inferno Drainer because he kept stolen funds in a hot wallet. Even hackers get hacked when wallet hygiene is poor.
Layer 2: Approval Minimization
For EVM chains:
// NEVER DO THIS:
token.approve(spender, type(uint256).max);
// DO THIS INSTEAD:
token.approve(spender, exactAmountNeeded);
// And revoke after the transaction:
token.approve(spender, 0);
For Solana:
- Use
delegatewith exact amounts, never full balance - Prefer
approve_checkedoverapprovefor SPL tokens - Close unused token accounts (they can be reassigned)
Tools for approval cleanup:
- revoke.cash — Multi-chain approval scanner and revoker
- app.unrekt.net — Approval dashboard
- Phantom's built-in "Connected Apps" → revoke unused connections
Layer 3: Permit2 Awareness
Permit2 (Uniswap's universal approval contract) is now used by most major DeFi protocols. It's more efficient than per-token approvals but creates a single point of compromise.
Critical rule: If you've approved Permit2 for a token, anyone with a valid Permit2 signature from you can transfer that token — no further wallet interaction needed.
Defense:
- Set Permit2 allowances with expiration timestamps (48 hours max)
- Use Permit2's
lockdown()function to revoke all sub-permissions - Never sign
PermitBatchmessages from unfamiliar dApps
Layer 4: Signature Literacy
Before signing anything, ask:
- Is this a transaction or a message? Messages can be Permit2 authorizations
- What contract is involved? Verify the address on a block explorer
-
What permissions am I granting? Look for
approve,permit,setApprovalForAll - Is there an expiration? If not, you're granting permanent access
-
Does this match what the dApp claims to do? A "claim airdrop" that requests
setApprovalForAllis a scam
Layer 5: Browser Isolation
DEDICATED CRYPTO BROWSER
├── Firefox or Brave (separate profile)
├── Only crypto bookmarks — NEVER search for protocols
├── uBlock Origin + NoScript
├── No other extensions
└── Never used for email, social media, or general browsing
DAILY BROWSER
├── Everything else
├── No wallet extensions installed
└── Cannot interact with any dApp
Layer 6: DNS and Domain Verification
Before connecting to any protocol:
- Type the URL manually or use bookmarks — never click links
- Verify the SSL certificate issuer
- Check the domain age on
whois— new domains are red flags - Cross-reference on DeFiLlama or CoinGecko for official links
Layer 7: Hardware Wallet as Kill Switch
Configure your hardware wallet to require physical confirmation for:
- Any
approveorpermittransaction - Transfers above a threshold you set
- Any interaction with a contract you haven't whitelisted
Ledger's Clear Signing and Trezor's Smart Contract verification both support this.
Layer 8: Real-Time Monitoring
Set up alerts for your wallets:
- Forta Bot alerts for suspicious approvals
- Tenderly alerts for large transfers
- Nansen portfolio alerts
- Phantom and MetaMask built-in activity notifications
The UXLINK exploit took 47 minutes from first drain to final transfer. An alert at minute 1 could have saved most of the funds.
Layer 9: Social Channel Verification
When you see a "mint is live" or "claim your airdrop" message:
- Check the project's multiple official channels (Twitter, Discord, website)
- If only one channel mentions it, assume it's compromised
- Wait 10 minutes — legitimate mints don't sell out in seconds (and if they do, the gas war isn't worth it)
Layer 10: Transaction Simulation (But Verify)
Use wallet simulation features, but understand their limits:
- Simulation shows what happens if the transaction executes now
- It can't predict what happens with a signed message used later
- Use Tenderly or Blocknative for independent simulation
Layer 11: Emergency Response Plan
Prepare before you need it:
IF YOU SIGNED SOMETHING SUSPICIOUS:
1. IMMEDIATELY revoke all approvals from that dApp (revoke.cash)
2. Transfer remaining assets to a clean wallet
3. Revoke Permit2 allowances (permit2.revoke function)
4. Disconnect wallet from all dApps
5. Report the phishing site to chainabuse.com
DO NOT:
- Wait to see if anything happens
- Try to "front-run" the drainer (they have MEV bots)
- Click any "recovery" links (double-dip scams)
Layer 12: Stay Current
The threat landscape changes weekly. Follow:
- @ScamSniffer — Real-time drainer tracking
- @realScamSniffer — Phishing campaign alerts
- rekt.news — Post-mortem analysis
- Forta Network — On-chain threat alerts
The Numbers Don't Lie
| Metric | 2024 | 2025 | 2026 (YTD) |
|---|---|---|---|
| Total drained by DaaS kits | ~$295M | ~$490M | ~$185M (Q1) |
| Active drainer services | 4-5 | 8-10 | 12+ |
| Average victim loss | $12,400 | $18,200 | $22,800 |
| Time to drain after approval | ~45 sec | ~38 sec | ~32 sec |
| Permit2 as % of drain method | 15% | 42% | 61% |
The professionalization is accelerating. Drainer kits now have customer support, feature roadmaps, and affiliate programs. Sector Drainer's 80/20 revenue split (80% to operator, 20% to kit developer) mirrors legitimate SaaS business models.
What Protocol Teams Should Build
If you're building a DeFi protocol, you're part of the defense:
-
Default to scoped approvals — Don't request
MAX_UINT256. Request exactly what you need. - Implement approval expiration — Auto-expire approvals after the transaction completes.
- Add approval dashboards — Let users see and revoke all permissions from within your UI.
- Support EIP-6900 modular accounts — Enable users to set spending limits and whitelists at the account level.
- Integrate Permit2 with short TTLs — If you use Permit2, enforce 1-hour expiration by default.
The Uncomfortable Reality
Wallet drainers are winning the arms race because they've industrialized. They have QA processes, beta testing, customer feedback loops, and rapid iteration cycles. The defense side is fragmented — wallet teams, security firms, and protocol developers all work in silos.
The best defense right now isn't any single technology. It's structural: separate your wallets, minimize approvals, verify everything independently, and assume that any link you click could be hostile.
The drainer kits will keep evolving. Your architecture should make their evolution irrelevant.
This article is part of the DeFi Security Research series. Previous entries cover share inflation attacks, OWASP Smart Contract Top 10, and frontend supply chain security.
Top comments (0)