Tekan ESC untuk menutup

Cara Kenali Crypto Drainer & Rug Pull Sebelum Terlambat

Buat deteksi crypto drainer atau rug pull sebelum dana lu ludes, cek dulu smart contract-nya di BscScan atau Etherscan buat nemuin kode yang nggak terverifikasi, fungsi mint() tersembunyi, atau sell tax di atas 10%. Selalu tes alamat kontrak lewat scanner otomatis kayak Token Sniffer, DEXScreener, dan GoPlus Security buat mastiin pelepasan kepemilikan (ownership renunciation) dan durasi kunci likuiditas (liquidity lock). Terakhir, amankan wallet lu dari drainer berbasis tanda tangan dengan menolak request blind eth_sign, Permit2, atau setApprovalForAll, serta selalu simulasikan setiap transaksi pake tools kayak Rabby Wallet atau Pocket Universe.

Halo semuanya. Oleg Filatov di sini. Tiga tahun terakhir ini gua ngejaga infrastruktur exchange tetap jalan sambil nanganin berbagai macam vektor fraud on-chain yang pernah ada. Sebelum ini, gawean gua ngebobol smart contract waktu audit keamanan dan begadang di hackathon Web3. Dunia ini udah jadi jalan ninja gua—jujur aja, nggak ada yang bisa nandingin sensasi adrenalin saat ngebongkar (reverse-engineering) bytecode zhalim jam 2 pagi, lalu nyadar gimana persisnya si hacker nyoba nge-exploit dana jutaan dolar.

Yuk, langsung aja kita bedah gimana cara ngelindungi wallet lu dari ranjau-ranjau yang tersebar di ekosistem Web3 saat ini.

1. Komparasi Cepat: Honeypot vs. Rug Pull vs. Wallet Drainer

Tipe ScamCara KerjanyaTanda-Tanda BahayaTools Utama Buat Deteksi
HoneypotSmart contract ngebolein user beli token secara bebas, tapi ngeblokir akses jual lewat logika tersembunyi atau conditional revert.Sell tax 100%, error TRANSFER_FAILED pas swap di DEX, atau nggak ada transaksi jual sama sekali di riwayat terbaru.Token Sniffer / DEXScreener
Rug PullDeveloper ngemasukin likuiditas, nge-hype tokennya, terus narik semua token LP atau nge-dump alokasi token mereka ke dalam pool.Likuiditas nggak dikunci, durasi kunci LP di bawah 6 bulan, atau wallet dev megang >10% dari total supply.DEXTools / Uncx Network
Wallet DrainerSitus phishing yang ngebodohin lu buat nandatanganin pesan off-chain atau transaksi allowance yang ngasih akses penuh ke wallet lu.Request eth_sign, tanda tangan Permit2, atau setApprovalForAll di dApp yang nggak jelas/terverifikasi.Pocket Universe / Rabby Wallet

2. Checklist Keamanan Step-by-Step Sebelum Beli Token Apa Pun

Langkah 1: Scan Kontrak Secara Otomatis

Masukkan alamat token ke Token Sniffer, API GoPlus Security, dan DEXScreener. Kalau DEXScreener nampilin 800 transaksi beli dan bener-bener nol transaksi jual dalam rentang 4 jam, mending berhenti saat itu juga. Fix itu honeypot. Titik.

Langkah 2: Durasi Kunci Likuiditas (Liquidity Lock)

Tim yang kredibel bakal mengunci token Liquidity Pool (LP) mereka lewat protokol resmi kayak Uncx Network atau PinkSale.

  • Red Flag: Likuiditas nggak dikunci, disimpan di EOA (Externally Owned Account), atau cuma dikunci kurang dari 6 bulan.
  • Green Flag: Token LP di-burn (dikirim ke 0x000000000000000000000000000000000000dead) atau dikunci di kontrak terverifikasi minimal selama satu tahun.

Langkah 3: Cek Distribusi Token & Kepemilikan (Ownership)

Cek tab Holders di Etherscan atau BscScan.

Kalau ada segelintir wallet non-exchange dan non-burn yang menguasai lebih dari 5–10% dari total supply, siap-siap aja lu dijadikan exit liquidity. Cek juga apakah kepemilikan kontrak sudah dilepas (renounced). Kalau belum, si owner bisa seenaknya ngubah tax, nge-blacklist address lu, atau nge-pause transfer kapan pun dia mau.

Langkah 4: Audit Transaksi & Tanda Tangan (Signature)

Jangan pernah blind-sign transaksi. Drainer wallet zaman now udah jarang banget minta transfer ETH standar—mereka nyalahgunain tanda tangan off-chain kayak EIP-712, Permit2, atau EIP-2612 buat ngelewatin peringatan standar wallet. Pake ekstensi simulasi transaksi dinamis buat ngecek perubahan state sebelum lu broadcast transaksinya.

3. Analisis Keamanan Mendalam & Mekanisme Kode

Mari kita bedah mekanis teknis aslinya. Kenapa static analyzer tradisional sering kelewat pas nge-detect scam yang canggih? Soalnya para scammer nulis logika yang ramah konteks (context-aware).

Bentar... kenapa masih banyak orang mikir kalau verifikasi kode di Etherscan itu jaminan aman? Gua selalu heran tiap kali ada yang ngeluh rugi di project yang udah "terverifikasi". Verifikasi source code itu cuma ngebuktihin kalau EVM bytecode yang di-deploy cocok sama file Solidity yang dikirim. Itu sama sekali NGGAK menjamin apakah logika di dalam file tersebut etis atau zhalim!

Trik Honeypot: Gas-Griefing & Tax Dinamis

Trik honeypot yang umum biasanya nyetel fee standar 2% pas awal deploy, terus tiba-tiba menaikkan fee-nya jadi 99% di dalam fungsi _transfer() begitu likuiditas yang masuk udah cukup gede.

Yang lebih parah lagi adalah honeypot dengan teknik dynamic gas-griefing:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/*
 * Replika logika honeypot hasil reverse-engineer cepat yang gua temuin di lapangan.
 * JANGAN DEPLOY KODE INI. Ini murni untuk edukasi dan analisis.
 */
contract SneakyHoneypot {
    address private _owner;
    mapping(address => bool) private _isWhitelisted;
    mapping(address => uint256) private _balances;
    constructor() {
        _owner = msg.sender;
        _isWhitelisted[msg.sender] = true;
    }
    function transfer(address to, uint256 amount) public returns (bool) {
        _transfer(msg.sender, to, amount);
        return true;
    }
    function _transfer(address from, address to, uint256 amount) internal {
        require(_balances[from] >= amount, "ERC20: balance too low");
        // Kalau ini order jual (transfer ke alamat pair) dan pengirim nggak ada di whitelist
        if (!_isWhitelisted[from] && !_isWhitelisted[to]) {
            // Trik: Kuras gas dalam jumlah sangat besar pake infinite loop atau alokasi memori berat
            // bikin transaksi si pembeli gagal dengan error "Out of Gas"!
            assembly {
                let m := mload(0x40)
                mstore(m, 0xdeadbeef)
                // Kuras gas secara buatan pas ada upaya penjualan
                invalid()
            }
        }
        _balances[from] -= amount;
        _balances[to] += amount;
    }
}

Kelihatan kan apa yang terjadi di sini? Pas lu beli, semuanya lancar jaya. Tapi begitu lu nge-route panggilan swapExactTokensForETH di Uniswap, kontrak bakal ngecek apakah wallet lu masuk whitelist. Kalau enggak, dia bakal nge-eksekusi opcode invalid() atau infinite loop, ngebakar semua gas yang dialokasikan, dan nge-revert transaksi dengan error yang membingungkan. Kebanyakan user retail cuma ngira "Slippage-nya kurang tinggi nih" lalu nyerah, sementara si dev pelan-pelan nguras pool-nya.

4. Gimana Cara Wallet Drainer Ngelewatin Pertahanan Web3

Sekarang mari kita bahas exploit tanda tangan off-chain—khususnya penyalahgunaan Permit2 dan EIP-712.

Pemberian izin (allowance) tradisional nuntut lu buat ngirim transaksi on-chain yang manggil approve(spender, amount). Ini makan biaya gas dan bakal memicu pop-up UI wallet yang ngasih peringatan jelas soal allowance.

Skrip drainer ngelewatin proses ini dengan memanfaatkan standar Permit2 Uniswap atau approval EIP-2612. dApp jahat bakal minta lu nandatanganin deretan data yang kelihatan sepele pake signature wallet (eth_signTypedData_v4). Di balik layar, tanda tangan digital itu ngasih otorisasi eksplisit ke smart contract penyerang buat mindahin token ERC-20 atau NFT lu keluar dari akun tanpa perlu konfirmasi on-chain tambahan dari lu!

// Sampel payload jahat yang dibuat oleh skrip drainer
const domain = {
    name: 'Permit2',
    chainId: 1, // Mainnet
    verifyingContract: '0x000000000022D473030F116dDEE9F6B43aC78BA3' // Alamat resmi Uniswap Permit2
};
const types = {
    PermitSingle: [
        { name: 'details', type: 'PermitDetails' },
        { name: 'spender', type: 'address' },
        { name: 'sigDeadline', type: 'uint256' }
    ],
    PermitDetails: [
        { name: 'token', type: 'address' },
        { name: 'amount', type: 'uint160' },
        { name: 'expiration', type: 'uint48' },
        { name: 'nonce', type: 'uint48' }
    ]
};
// User ngira mereka lagi login ke situs, padahal sebenarnya ngasih akses saldo token maksimal:
const value = {
    details: {
        token: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC
        amount: "1461501637330902918203684832716283019655932542975", // nilai maksimal uint160
        expiration: 2000000000,
        nonce: 0
    },
    spender: "0xMaliciousAttackerContractAddressHere...",
    sigDeadline: 2000000000
};

Kalau lu tanda tanganin payload ini, si penyerang bakal ngambil tanda tangan off-chain itu, ngirim sendiri ke kontrak Permit2, ngebayar biaya gasnya, dan langsung nguras USDC lu secara instan.

5. Reverse Engineering Bytecode EVM: Cara Lacak Scam Tanpa Kode Sumber

Apa yang terjadi kalau token baru belum terverifikasi di Etherscan atau BscScan? Sebagian besar orang pasti langsung kabur. Tapi sebagai seorang CTO (dan mantan security auditor), bytecode yang belum terverifikasi justru tempat di mana keseruan sebenarnya dimulai. Kamu sebenarnya gak butuh kode sumber Solidity asli cuma buat nyari tahu apakah suatu smart contract berniat ngerampok kamu atau enggak.

Saat para developer mengompilasi kode Solidity menjadi bytecode EVM, nama-nama fungsi akan diubah menjadi pengenal 4-byte yang disebut Function Selector (4 byte pertama dari hash Keccak-256 pada signature fungsi).

Sebagai contoh, transfer(address,uint256) bakal selalu di-hash menjadi 0xa9059cbb.

Kalau kamu tempel bytecode kontrak yang belum terverifikasi ke tool seperti Dedaub Bytecode Decompiler atau ethervm.io, langsung cek bagian selector dispatcher atau cari hash fungsi mencurigakan berikut di dalam bytecode mentahnya:

0x40c10f19 -> mint(address,uint256)
0xbf8b0f72 -> enableTrading() / setTradingStatus(bool)
0x0283c741 -> setFee(uint256)
0xe47d6060 -> setBlacklist(address,bool)

Tunggu dulu... kenapa kamu harus peduli sama signature persis kayak gini? Karena kalau kontrak token yang belum terverifikasi punya 0x40c10f19 (mint) dan owner-nya belum di-renounce, developer bisa diam-diam mencetak 10 miliar token dari udara hampa langsung ke wallet pribadi mereka, nge-dump semuanya di Uniswap, dan menguras habis seluruh likuiditas dalam hitungan detik.

Nah, ini snippet Python sederhana pakai web3.py yang biasa gue pakai secara internal buat melakukan scan bytecode kontrak tak terverifikasi demi mendeteksi akses admin yang berbahaya sebelum mulai berinteraksi dengan token apa pun:

# Snippet alat keamanan internal untuk mendeteksi signature fungsi berisiko tinggi pada bytecode EVM yang belum terverifikasi.
# Ditulis untuk pemeriksaan otomatis secara cepat selama investigasi smart contract.
from web3 import Web3
# Hubungkan ke node RPC publik
w3 = Web3(Web3.HTTPProvider('https://eth.llamarpc.com'))
# 4-byte function selector berisiko tinggi yang sudah dikenal (hash Keccak-256)
DANGEROUS_SELECTORS = {
    "0x40c10f19": "mint(address,uint256)",
    "0xe47d6060": "setBlacklist(address,bool)",
    "0x8a8c523c": "preventSell(address)",
    "0x70480932": "pauseTrading()"
}
def analyze_bytecode(contract_address: str):
    # Ambil bytecode mentah dari chain
    code = w3.eth.get_code(Web3.to_checksum_address(contract_address)).hex()
    
    if code == '0x' or len(code) <= 2:
        print("[-] Alamat tidak memiliki kode kontrak yang dideploy (EOA).")
        return
    print(f"[+] Menganalisis Bytecode EVM untuk: {contract_address}")
    
    found_flags = []
    for selector, func_name in DANGEROUS_SELECTORS.items():
        # Hapus prefiks '0x' untuk pencocokan pada string hex mentah
        clean_selector = selector[2:]
        if clean_selector in code:
            found_flags.append(func_name)
    if found_flags:
        print("[!] PERINGATAN RED FLAG! Terdeteksi fungsi berbahaya dalam bytecode:")
        for flag in found_flags:
            print(f"    - {flag}")
    else:
        print("[+] Tidak ada selector admin tersembunyi yang terdeteksi dalam pemindaian standar.")
# Contoh penggunaan dengan alamat sembarang
# analyze_bytecode("0x...")

6. Taktik Drainer Tingkat Lanjut: Poisoned Approvals & Address Poisoning

Penipu sekarang gak cuma mengandalkan liquidity pool di DEX; mereka langsung mengincar saldo wallet kamu menggunakan bug UX dan trik psikologis.

Serangan Address Poisoning

Pernah gak kamu melihat riwayat transaksi di wallet dan menemukan transfer 0 ETH atau 0.0001 Token dari alamat yang kelihatan hampir persis sama dengan alamat wallet kamu sendiri?

Itulah yang dinamakan Address Poisoning.

Skrip serangan memantau mempool untuk mencari transaksi wallet bernilai tinggi. Mereka lalu membuat vanity address memakai GPU generator (seperti profanity) yang punya 4-5 digit awal dan 4-5 digit akhir yang sama persis dengan alamat wallet kamu (atau alamat yang sering kamu kirimi dana).

Setelah itu, mereka mengirim transaksi bernilai nol ke wallet kamu menggunakan transferFrom().

Tujuannya? Mereka ingin alamat palsu tersebut muncul di riwayat transaksi terbaru kamu. Saat berikutnya kamu membuka wallet buat transfer dana, alih-alih mengetik alamat atau mengecek setiap karakternya satu per satu, kamu malah asal copy-paste alamat teratas dari riwayat... dan tanpa sadar langsung mengirim ETH kamu tepat ke tangan penipu.

Patokan Utama: Jangan pernah copy alamat wallet dari daftar riwayat transaksi! Selalu copy alamat dari daftar kontak yang disimpan, domain ENS, atau verifikasi ulang setiap karakter alamatnya tanpa terkecuali.

7. Checklist Pengerasan Utama untuk Pertahanan On-Chain

Demi menjaga aset kamu tetap aman di era Web3 modern, terapkan konfigurasi keamanan operasional (OpSec) berikut:

  • Gunakan Hardwallet Terpisah untuk Interaksi vs Penyimpanan: Miliki hardware wallet khusus "cold storage" (Ledger, Trezor, Keystone) yang gak pernah terhubung ke dApp, ttd pesan, atau klaim airdrop. Siapkan "burn-wallet" terpisah dengan saldo minimal untuk aktivitas swap harian dan uji coba protokol DeFi eksperimental.
  • Tolak Blind Signing Pesan Off-Chain: Matikan fitur "blind signing" di perangkat hardware wallet kamu sebisa mungkin. Jika ada dApp berbasis web yang meminta eth_sign atau payload hex samar yang gak bisa kamu baca, langsung tolak saat itu juga.
  • Atur Batas Pengeluaran Kustom (Custom Spend Limit): Saat menyetujui batas pengeluaran ERC-20 di Uniswap atau 1inch, jangan pernah pilih opsi "Unlimited". Atur allowance secara manual sesuai jumlah tepat yang ingin kamu transaksikan. Dengan begitu, meski protokol tersebut kena exploit di kemudian hari, sisa token kamu bakal tetap aman.
  • Higiene Revokasi Berkala: Buat pengingat kalender setiap tanggal 1 bulan berjalan untuk membuka Revoke.cash atau Token Approval Checker milik Etherscan guna mencabut izin akses lama atau yang sudah tidak dipakai di seluruh jaringan (Ethereum, Arbitrum, Solana, Base, BSC).

Nah, kayaknya semua mekanik utamanya udah ngebahas lengkap nih! Kalau lu nemu smart contract yang mencurigakan, ada pertanyaan soal snippet kode di atas, atau butuh bantuan bedah hash transaksi yang aneh—langsung aja drop di kolom komentar di bawah. Gua bakal usahain mampir dan bantu jawab!


FAQ

Langsung putusin koneksi dompet lu dari situs scam tersebut dan revoke semua izin (permissions) yang masih aktif. Pakai tools kayak Revoke.cash atau Approval Checker di Etherscan/BscScan. Kalau lu sempat tanda tangan off-chain permit untuk suatu token, buru-buru pindahin sisa aset lu yang masih aman ke dompet baru yang bersih—kadang para pembuat drainer nyimpen tanda tangan itu secara off-chain dan baru mengeksekusinya pas saldo lu nambah.

Bisa banget, bro. Verifikasi itu cuma ngecek apakah source code yang diunggah cocok sama bytecode yang di-deploy. Kontraktual yang udah terverifikasi tetap bisa nyimpen pajak jual yang gila-gilaan, fungsi emergency withdraw buat dev-nya, logika mint tersembunyi, atau pembatasan transfer. Jangan pernah nganggep status terverifikasi itu sebagai lencana audit keamanan.

Banget. `eth_sign` itu ngizinin aplikasi eksternal buat minta tanda tangan hash mentah yang bisa dipakai buat mengesahkan transaksi apa pun atau operasi off-chain atas nama lu, tanpa nampilin apa yang sebenarnya lagi lu tanda tangani di UI dompet. Makanya, dompet-dompet modern yang fokus ke keamanan sengaja nge-block `eth_sign` secara default buat nghindarin hal ini.
Oleg Filatov

As the Chief Technology Officer at EXMON Exchange, I focus on building secure, scalable crypto infrastructure and developing systems that protect user assets and privacy.

With over 15 years in cybersecurity, blockchain, and DevOps, I specialize in smart contract analysis, threat modeling, and secure system architecture.

At EXMON Academy, I share practical insights from real-world...

...

Sampaikan pemikiran Anda

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *