Tản mạn về lừa đảo trên Blockchain

Tản mạn về lừa đảo trên Blockchain

Trong mấy năm làm với Blockchain, mình gặp không ít chiêu trò lừa đảo tiền kỹ thuật số, và nếu đào sâu tìm hiểu thì mới thấy đúng kiểu "Vỏ quýt dày có móng tay nhọn", cuốn hút vô cùng.

Ở level thấp nhất, kẻ gian sẽ đánh vào lòng tham và sự thiếu hiểu biết của người dùng (user):

Kẻ gian sẽ mở các đợt tặng token "có giá trị", nhưng để đổi token đó sang các loại token khác (để rút tiền chẳng hạn) thì cần user phải approve để smart contract trên blockchain tiến hành lấy token mang đi chuyển đổi. Thay vì tạo yêu cầu approve cho token được tặng kia, kẻ gian tạo yêu cầu approve cho token có giá trị thực sự khác mà chúng muốn chôm. Do "kiến thức blockchain hạn chế" hoặc sai sót cá nhân, bất cẩn, người dùng chấp nhận approve, và sau đó thì tiền sẽ tự động bay màu thôi. Phương thức lừa đảo này, như đã nói ở trên là level thấp nhất, nên cũng chỉ ăn được chút xíu thôi, vì không phải user nào cũng có "token có giá trị thực sự khác" để mà chôm, và hiện nay các loại ví cũng đã rất cẩn trọng cảnh báo người dùng khi xác nhận lệnh approve, nên khả năng nhầm lẫn giảm đi đáng kể.

Ví dụ về một yêu cầu approve cho smart contract sử dụng token.

Để đối phó với người dùng trình độ cao hơn hoặc không ham đồ miễn phí, kẻ gian cũng cần tiến hóa lên level cao hơn một chút. Ở level này, kẻ gian cần tạo ra các con bot chuyên quét tài khoản và rình rập. Nguyên lý rất đơn giản, có sẵn 1 danh sách các địa chỉ blockchain mà kẻ gian có private key (dùng private key có thể chuyển token/coin đi chỗ khác), con bot cứ lần lượt kiểm tra số dư các địa chỉ đó, thấy cái nào đủ token/coin thì chuyển về ví sếp thôi.
Trò mèo này nghe thì giống há miệng chờ sung, nhưng thật ra có những chiêu thức thú vị đi kèm:

  • Kẻ gian có thể tạo ra những trang web "chọn địa chỉ ví số đẹp", mục đích của nó đối với user là tìm cho mình một địa chỉ Blockchain có số đẹp như kiểu kết thúc bằng năm sinh, lộc phát, blah blah. Còn về phía đằng sau, kẻ gian khi tạo được địa chỉ ví cho user thì cũng có thể lưu lại private key của địa chỉ đó, và ném vào ds chờ tiền thôi.
  • Kẻ gian cũng có thể sử dụng các công cụ tạo ví đơn giản (thứ mà những user non kinh nghiệm hay dùng) để tạo ví cá nhân. Với một seedphrase đầu vào sẽ cho ra một địa chỉ Blockchain nhất định. Bằng việc sử dụng những seedphrase đơn giản, kẻ gian tạo ra được những địa chỉ mà xác suất được user non tạo ra khá cao. Lại lưu privatekey và chờ đợi, hoặc thậm chí cao hơn nữa là thả câu: gửi một chút token có giá trị vào để chờ user non nhìn thấy. Hãy tưởng tượng mình là user non, khi nhìn thấy một lượng token trị giá cả nghìn $ trong 1 địa chỉ Blockchain mà mình vừa tạo ra, mình có privatekey, nhưng để chuyển token đó đi bán được thì phải trả phí giao dịch trên blockchain, nên phải chuyển một ít coin vào địa chỉ đó trước đã. Thế là user non sẽ chuyển coin vào, nhưng mà vừa chuyển thì cũng bị Bot nó quét, nó chuyển tiền đi mất tiêu luôn. Tiền mất mà token cũng chẳng lấy được. Token vẫn nằm đó chờ user non tiếp theo tự tìm đến...
Ví dụ về một con Bot chuyển tiền khỏi ví ngay khi vừa thay đổi số dư.

Một ví dụ về bot quét ví chuyển tiền được thể hiện trong hình ở trên. Các bạn có thể thấy là tiền vào ở block 17537010 thì tiền ra luôn ở block tiếp theo 17537011. Tiền vào tiền ra có sự chênh lệch vì phải trả phí giao dịch và sai số tính toán thôi.

Một bất lợi của Bot quét số dư địa chỉ Blockchain là độ trễ. Độ trễ của việc check và chuyển tiền đi có thể lên tới 30s - 1 phút, một khoảng thời gian đủ dài để những user gạo cội hơn có thể xử lý những giao dịch tiếp theo và bot chẳng còn gì để lấy, hoặc cũng có thể là sự cạnh tranh giữa những con bot khác nhau tình cờ giăng chung một cái bẫy.

Vậy là Bot lại phải tiến hóa thêm một mức nữa: thay vì chờ cho giao dịch chuyển tiền hoàn thành, số dư thay đổi rồi mới tạo lệnh chuyển tiền đi, thay vì cứ 5-10s một lần, kiểm tra số dư các địa chỉ mình có, bot sẽ làm một việc hoàn toàn khác, cao cấp hơn rất nhiều - nghe ngóng giao dịch.
Trước khi được xử lý thêm vào blockchain và thay đổi số dư, các giao dịch được đẩy vào hàng đợi (nôm na vậy đi cho dễ hiểu). Bot sẽ lắng nghe việc thêm giao dịch vào danh sách này, tức là giao dịch chưa được thực thi thì bot đã biết nội dung rồi. Khi đó, nó sẽ kiểm tra địa chỉ đích có phải địa chỉ nó đang chờ không, nếu đúng thì tạo luôn một giao dịch chuyển tiền từ đích sang ví kẻ gian. Hai giao dịch sẽ cùng vào hàng đợi, khi blockchain xử lý, thường hai giao dịch đó sẽ đi lần lượt với nhau, tức là gần như cùng thời điểm, coin được chuyển vào ví thì cũng chuyển đi luôn. Cơ hội cho các bot thế hệ cũ hay user kịp trở tay gần như là không có.

Rất tiếc là mình không tìm lại được bằng chứng về con bot dạng front-run này, trước mình có thấy rồi nhưng không chụp lại, giờ mò kim đáy bể không thấy.

Nghe có vẻ như đã không thể xử lý được nữa khi mà giao dịch của user bị lộ trước cả khi thực thi, nhưng thật ra, user hoàn toàn có thể "tiến hóa" để thịt hết những token "chôn giấu" trong cái tài khoản lộ private key kia. Cụ thể thế nào, mình sẽ làm rõ trong bài viết sau nhé.