Sau khi tìm hiểu về giao diện và chức năng của Etherscan, hãy cùng Coincuatui tiếp nối series "Hướng dẫn sử dụng On-chain Tools" bằng các ví dụ về cách ứng dụng Etherscan thông qua giao dịch flash loan và nhận biết token scam/spam.
Hướng dẫn sử dụng On-chain Tools (Phần 2c): Cách đọc giao dịch flash loan và token spam/scam trên Etherscan
Flash loan là một loại vay không cần tài sản đảm bảo/thế chấp, cho phép người vay vay một số tiền trong một khoảng thời gian ngắn, thường chỉ trong vài giây. Khoản vay được hoàn trả đầy đủ trong cùng giao dịch mà nó được vay.
Trong một cuộc tấn công flash loan, một hacker vay một số lượng lớn tiền thông qua flash loan và sử dụng số tiền đó để thao túng giá của một tài sản trên một nền tảng DeFi.
Mô phỏng quy trình flash loan. Nguồn: Moonpay.com
Flash loan là phương thức được nhiều thành phần xấu sử dụng để tiến hành các vụ tấn công gây thiệt hại nghiêm trong trong ngành DeFi, có thể kể đến :
Tại trang Home của Etherscan, gõ “flash loan" và dùng filter để lọc theo nhu cầu.
Etherscan sẽ đưa ra một số địa chỉ ví được gắn tag là flash loan. Tuy nhiên, nếu chỉ dùng từ khoá flash loan thì sẽ không đưa cho bạn đáp án mà bạn muốn. Vì vậy nếu bạn đã có sẵn địa chỉ cụ thể thì sẽ dễ tìm hơn.
Tìm từ khoá flash loan
Gợi ý kết quả flash loan từ Etherscan
Phần tiếp theo là một số ví dụ về các ví và hợp đồng thông minh liên quan đến sự kiện exploit từ flash loan.
Những ví dụ này sẽ cho bạn thấy rõ quy trình thực hiện flash loan như thế nào để giúp bạn có thể nhận biết những giao dịch đáng ngờ.
Điển hình cho một vụ tấn công liên quan đến flash loan có thể nói đến Euler Finance. Vào tháng 3 năm nay, Euler Finance bị tấn công flash loan dẫn đến mất mát khoảng 196 triệu USD. Kẻ tấn công tận dụng một lỗ hổng trong hàm donateToReserves của eToken, cho phép tạo lợi nhuận bằng cách thực hiện nhiều lệnh gọi với các loại tiền tệ khác nhau.
Ở đây chúng ta sẽ không phân tích từng code của Euler Finance mà chỉ đi giải thích giao dịch bị exploit trên Euler Finance.
Để tìm tất cả địa chỉ liên quan đến sự kiện flash loan Euler Finance bạn chỉ cần gõ tên dự án trên thanh tìm kiếm. Các gợi ý sẽ xuất hiện.
Gợi ý kết quả tìm kiếm Euler Finance từ Etherscan
Có 3 Exploiter, chúng ta sẽ tìm hiểu giao dịch của ví Exploiter 3 (0x5f25…8b8c). Ví này từ sau cuộc tấn công đã bị cộng đồng report liên quan đến sự kiện flash loan trên Euler.
Cảnh báo địa chỉ ví liên quan flash loan exploit
Exploiter 3 tạo một hợp đồng thông minh 0xeBC2…Bf99 (Euler Exploiter Contract 1) dùng để đi vay flash loan với txn_hash:
0x725db76cf4bf3bdc72be4f755ed72df4adbc8e4e803c044617cc11e34907ccdc
Giao dịch tạo Exploit Contract 1 từ Exploiter 3
Sau đó kẻ tấn công đã vay trước 30 triệu DAI thông qua một flash loan từ Aave và gửi tiền về Contract 1:
Txn_hash: 0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6b111d
Thực hiện flash loan với Aave
Nhìn vào giao dịch chuyển token ERC-20 thì chúng ta thấy là sau khi nhận 30 triệu DAI, kẻ tấn công sau đó chuyển toàn bộ tiền cho 0x583c21…0B366c72, sau đó tiếp tục deposit 20 triệu DAI vào Euler Protocol, nhận lại 19,5 triệu eDAI (token bằng chứng cho lượng DAI nạp lên Euler, vì 1 eDAI > 1 DAI nên lượng eDAI trả về thấp hơn lượng DAI nạp vào) .
Diễn biến quá trình exploit
0x583c21…0B366c72 (Borrower Contract) là hợp đồng thông minh được Euler Exploiter 3 tạo ra để nhận 30 triệu DAI:
Diễn biến quá trình exploit
Đáng chú ý là Euler Protocol cho phép người dùng vay lên đến 10 lần số tiền đã gửi. Kẻ tấn công đã tận dụng khả năng này, dùng 19,5 triệu eDAI để thế chấp, rồi vay 195,6 triệu eDAI (token đại diện cho lượng DAI nạp lên Euler) và 200 triệu dDAI (token đại diện cho lượng DAI nợ trên Euler, 1 DAI = 1 dDAI).
Diễn biến quá trình vay tiền từ Euler Finance
Kẻ tấn công sử dụng 10 triệu DAI còn lại đã vay thông qua flash loan để nạp lên Euler, sau đó dùng 10 triệu DAI này để trả lại cho Euler nhằm tránh bị giao thức tự động thanh lý lệnh.
Diễn biến quá trình vay-trả DAI
Sau đó, với 20 triệu DAI còn lại trên tay, hacker thực hiện lại bước thế chấp và vay tiền đầu tiên, vay lại 195,6 triệu eDAI và 200 triệu dDAI. Mục đích của việc này là để giá trị khoản vay vượt quá lượng tài sản thế chấp, đẩy vị thế vay vào diện thanh lý.
Diễn biến quá trình exploit
Lợi dụng lỗ hổng trong hàm donateToReserves, kẻ tấn công gửi đi 100 triệu eDAI nhưng không nhận về bất kỳ token nào khác, về bản chất đã khiến vị thế bị đẩy vào diện thanh lý khi tài khoản lúc này có eDAI thấp hơn dDAI.
Hành động gửi 100 triệu eDAI đi để khiến vị thế vay mất cân bằng, dẫn đến bị thanh lý
Ở đây địa chỉ 0xA0b3ee897f233F385E5D61086c32685257d4f12b (liquidator contract) cũng là một hợp đồng thông minh được tạo bởi Exploiter 3.
Exploiter 3 tạo hợp đồng thanh lý
Sau đó, kẻ tấn công khởi động quá trình thanh lý vị thế vay, nhận về 310 triệu eDAI và 260 triệu dDAI ở liquidator contract.
Exploiter rút tiền sau khi thanh lý khoản vay
Giao dịch liên quan liquidator contract
Cuối cùng sau khi rút tiền trên Euler, Exploiter này thu được 38,9 triệu DAI trong đó 30 triệu DAI được dùng để trả khoản nợ đã vay thông qua flash loan. Hacker đã thu được lợi nhuận là 8,87 triệu DAI từ cuộc tấn công này.
Kết quả quá trình exploit
Tương tự, bạn cũng có thể phân tích một giao dịch tấn công flash loan khác trên Euler Finance của cùng hacker, nhắm vào token WETH, với Etherscan theo txn_hash sau:
0x47ac3527d02e6b9631c77fad1cdee7bfa77a8a7bfd4880dccbda5146ace4088f
Trình tự giao dịch như sau:
Vay 20,895 WETH thông qua flash loan từ Aave.
Gửi 13,930 WETH vào pool eToken.
Mint eToken và nhận lại 13,930 WETH từ pool eToken.
Trả 6,965 WETH để có thể vay thêm tiền.
Mint 13,930 WETH và gửi 69,650 WETH vào donatetoReserves.
Kích hoạt hợp đồng thanh lý và nhận được 28,994 WETH.
Trả lại khoản vay Aave và thu được 8,099 ETH.
Diễn biến quá trình exploit
Hoặc bạn có thể dùng công cụ Advanced filter mới của Etherscan để xem giao dịch này bằng cách:
Tìm địa chỉ contract 0x036cec1a199234fC02f72d29e596a09440825f1C
Tại trang thông tin của hợp đồng này chọn Advanced filter.
Định vị Advanced filter
Thực hiện lọc theo các tiêu chí sau để thấy được các giao dịch liên quan đến hash:
0x47ac3527d02e6b9631c77fad1cdee7bfa77a8a7bfd4880dccbda5146ace4088f
Các tiêu chí lọc
Lúc đó một loạt 25 giao dịch sẽ được xổ ra như bên dưới:
Giao dịch sau khi dùng Advanced filter
Trong lĩnh vực blockchain nói chung và cryptocurrency nói riêng, có rất nhiều cách để lừa nhà đầu tư. Có nhiều hình thức scam người dùng, dưới đây là các loại phổ biến :
ICO giả: Kẻ lừa đảo tạo ra dự án giả và quảng bá để thu hút nhà đầu tư. Sau khi thu được tiền, kẻ lừa đảo biến mất, nhà đầu tư nhận token vô giá trị.
Pump and dump: Kẻ lừa đảo tạo ra sự tăng giá ảo cho một token. Khi giá đạt đỉnh, họ xả token, gây thiệt hại cho nhà đầu tư không nắm rõ thông tin.
Lừa đảo qua token phishing: Kẻ lừa đảo tạo ra các trang web hoặc tài khoản xã hội giả mạo các dự án token hợp pháp. Sau đó lừa người dùng cung cấp private key hoặc gửi tiền vào địa chỉ giả, rồi cướp đoạt token hoặc tiền.
Hợp đồng thông minh nhiều lỗ hổng: Kẻ lừa đảo triển khai các hợp đồng thông minh chứa lỗ hổng, cho phép họ khai thác và lấy cắp tiền của những người giữ token.
Airdrop giả: Kẻ lừa đảo giả danh các dự án hợp pháp và cung cấp token miễn phí hoặc quà tặng cho người dùng. Tuy nhiên, người dùng phải cung cấp thông tin cá nhân hoặc gửi tiền để tham gia.
Có những lúc khi kiểm tra ví, bạn có thể thấy xuất hiện các token lạ. Khi xem thông tin về token đó trên Etherscan, bạn nhận thấy rằng token đó không có giá trị và số lượng giao dịch chủ yếu là gửi đến các ví khác.
Check địa chỉ ví của Vitalik.eth: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
Nhấn chọn token holdings và kéo xuống dưới bạn sẽ thấy một loạt các token có giá trị dưới $1.
Xem token trong ví
Hoặc chọn biểu tượng ví bên cạnh Token holdings để thấy tất cả danh mục token trong ví này:
Xem trang token holdings
Khác với các token chính thống, token scam/spam thường không có symbol (biểu tượng), giá, hay trị số USD. Chọn một token với địa chỉ contract là:
0x7816EF3667a5f06B7Bb7B25cc475130c00Fc9C87. Ở phần token tracker, contract này được Etherscan đánh dấu spam.
Dấu hiệu nhận biết một token spam
Dấu hiệu nhận biết một token spam
Tạo token giả mạo để lừa người mua và sau đó lấy cắp toàn bộ tiền như token Metamoonmars M3.
Contract: 0x8ed9c7e4d8dfe480584cc7ef45742ac302ba27d7
Token này thuộc chain BSC, bạn vẫn có thể tìm địa chỉ trên Etherscan sau đó vào mục Multichain address và chọn dẫn hướng đến BscScan.
Kiểm tra token M3 trên Etherscan
Ví dụ này minh họa lỗ hổng trong hợp đồng thông minh của token M3, giúp hacker lấy cắp tiền của người giao dịch. Để biết được lỗ hổng trong hợp đồng thông minh có thể đòi hỏi một chút kĩ năng đọc code. Dưới đây là một lỗi trong contract mà bạn có thể nhìn thấy rõ nhất.
Vào mục Contract bạn sẽ thấy cảnh báo từ Etherscan rằng code hợp đồng này đang chứa bug. Trong code hợp đồng token này có hàm "aprove", một hàm ẩn cố gắng giả mạo chức năng hợp lệ "approve".
Bug trong hợp đồng thông minh
Cảnh báo từ Etherscan liên quan đến hợp đồng thông minh
Lệnh "aprove" được thực hiện hai lần
Trên đây là một số ví dụ về các ví dụ đặc biệt mà Coincuatui muốn hướng dẫn bạn khi đọc giao dịch. Có nhiều trường hợp mà trong một hash có rất nhiều lệnh được gọi và thực hiện, đòi hỏi kĩ năng đọc hiểu blockchain cao hơn. Tuy nhiên, bạn có thể bắt đầu với những giao dịch đơn giản và dùng thêm các tool bổ trợ để hiểu rõ luồng đi của giao dịch và rút ra insight từ chúng.
Coincuatui hi vọng 3 bài viết về Etherscan sẽ giúp quá trình tìm hiểu on-chain và blockchain của bạn dễ dàng hơn.
Nguồn: Coin68