BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

หมอกช้า: ว่างเปล่า ตรวจสอบ eth_sign การวิเคราะห์ฟิชชิ่ง

慢雾科技
特邀专栏作者
2022-10-11 03:30
บทความนี้มีประมาณ 2468 คำ การอ่านทั้งหมดใช้เวลาประมาณ 4 นาที
การคลิกของ "คุณ" NFT ของ "ฉัน"
สรุปโดย AI
ขยาย
การคลิกของ "คุณ" NFT ของ "ฉัน"

ผู้เขียนต้นฉบับ: Lisa & Kong

เมื่อเร็ว ๆ นี้ เราพบเหตุการณ์ฟิชชิงมากมายเกี่ยวกับลายเซ็น eth_sign

เว็บไซต์ฟิชชิ่ง 1: https://moonbirds-exclusive.com/

เมื่อเราเชื่อมต่อกระเป๋าเงินและคลิกอ้างสิทธิ์ กล่องแอปพลิเคชันลายเซ็นก็โผล่ขึ้นมา และ MetaMask แสดงคำเตือนสีแดงพร้อมกัน และเป็นไปไม่ได้ที่จะบอกได้จากหน้าต่างป๊อปอัปนี้ว่าลายเซ็นนั้นจำเป็นสำหรับอะไร

อันที่จริง นี่เป็นลายเซ็นประเภทที่อันตรายมาก โดยพื้นฐานแล้วก็คือ "เช็คว่าง" ของ Ethereum ด้วยฟิชชิงนี้ สแกมเมอร์สามารถใช้รหัสส่วนตัวของคุณเพื่อลงนามธุรกรรมใดๆ

นอกจากนี้ ยังมีฟิชชิ่งอีกประเภทหนึ่ง: หลังจากที่คุณปฏิเสธเครื่องหมายด้านบน มันจะแสดงกล่องลายเซ็นอื่นโดยอัตโนมัติใน MetaMask ของคุณ และโกงลายเซ็นของคุณในขณะที่คุณไม่ได้สนใจ และดูที่เนื้อหาลายเซ็น มีการใช้เมธอด SetApprovalForAll และเป้าหมายของสินทรัพย์ที่อนุมัติจะแสดงเป็น NFT ทั้งหมดของคุณ กล่าวคือ เมื่อคุณเซ็นชื่อ นักต้มตุ๋นสามารถขโมย NFT ทั้งหมดของคุณโดยไม่มีการยับยั้ง ดังนี้

เว็บไซต์ฟิชชิ่ง 2: https://doooooodles.org/

เราใช้ MistTrack เพื่อวิเคราะห์ที่อยู่หลอกลวง:

0xa594f48e80ffc8240f2f28d375fe4ca5379babc7

จากการวิเคราะห์ สแกมเมอร์ได้เรียก SetApprovalForAll หลายครั้งเพื่อขโมยทรัพย์สินของผู้ใช้ ที่อยู่ของสแกมเมอร์ได้รับ NFT 33 รายการ และหลังจากขายไปบางส่วน เขาก็ได้รับ ETH มากกว่า 4 รายการ

กลับมาที่หัวข้อเรามาศึกษาวิธีการตกปลานี้กัน ก่อนอื่น มาดูกันว่า MetaMask อธิบายอย่างเป็นทางการอย่างไร:

กล่าวอีกนัยหนึ่ง ปัจจุบัน MetaMask มีวิธีลายเซ็นหกวิธี (เช่น personal_sign) และมีเพียงวิธีเดียวที่จะทำให้เกิดคำเตือนของ MetaMask ซึ่งเกิดขึ้นในกรณีของลายเซ็น eth_sign เนื่องจากวิธี eth_sign เป็นวิธีลายเซ็นแบบเปิด ซึ่งอนุญาตให้มีการลงนามแบบแฮชใดๆ หมายความว่าสามารถใช้เพื่อลงนามธุรกรรมหรือข้อมูลอื่น ๆ ซึ่งก่อให้เกิดความเสี่ยงในการฟิชชิงที่เป็นอันตราย

ตามเอกสารอย่างเป็นทางการของ MetaMask เมธอด eth_sign สามารถลงนามแฮชใดๆ ก็ได้ และเมื่อเราเซ็นทรานแซกชัน เราจะเซ็นแฮชเป็นชุดๆ แต่กระบวนการเข้ารหัสตรงกลางนั้นจัดการโดย MetaMask แทนเรา เราสามารถตรวจสอบกระบวนการโดยสังเขปตั้งแต่การเข้ารหัสไปจนถึงการออกอากาศธุรกรรม:

ก่อนที่จะเผยแพร่ธุรกรรม MetaMask จะได้รับวัตถุของการโอนของเรา (ถึง) จำนวนการโอน (มูลค่า) ข้อมูลประกอบ (ข้อมูล) และพารามิเตอร์ nonce, gasPrice และ gasLimit ที่ MetaMask ได้รับและคำนวณให้เราโดยอัตโนมัติ และดำเนินการเข้ารหัส RLP เพื่อรับเนื้อหาธุรกรรมดิบ (rawTransaction) หากเป็นการโทรตามสัญญา ที่อยู่ของสัญญาคือ to และข้อมูลคือข้อมูลการโทร

rlp = require('rlp');

// Use non-EIP115 standard

const transaction = {

nonce: '',

gasPrice: '',

gasLimit: '',

to: '0x',

value: '',

data: '0x'

};

// RLP encode

const rawTransaction = rlp.encode([transaction.nonce, transaction.gasPrice, transaction.gasLimit, transaction.to, transaction.value, transaction.data]);

จากนั้นทำการแฮช keccak256 กับเนื้อหานี้เพื่อรับสตริงข้อมูล bytes32 ซึ่งเป็นข้อมูลที่เราต้องการลงนาม

// keccak256 encode

const msgHex = rawTransaction.toString('hex');

const msgHash = Web3.utils.keccak256('0x'+ msgHex);

หลังจากที่เราใช้ MetaMask เพื่อลงนามสตริงข้อมูลนี้ เราจะได้ค่า r, s, v จากนั้นใช้ค่าทั้งสามนี้เพื่อดำเนินการเข้ารหัส RLP ด้วย nonce/gasPrice/gasLimit/to/value/data เพื่อรับต้นฉบับที่ลงนามแล้ว เนื้อหาการทำธุรกรรม ตอนนี้การทำธุรกรรมสามารถออกอากาศได้ในขณะนี้

rlp = require('rlp');

const transaction = {

nonce: '',

gasPrice: '',

gasLimit: '',

to: '',

value: '',

data: '',

v: '',

r: '',

s: ''

};

// RLP encode

const signedRawTransaction = rlp.encode([transaction.nonce, transaction.gasPrice, transaction.gasLimit, transaction.to, transaction.value, transaction.data, transaction.v, transaction.r, transaction.s]);

ดังที่กล่าวไว้ข้างต้น เมธอด eth_sign สามารถลงนามแฮชใดๆ ได้ ดังนั้นจึงเป็นเรื่องปกติที่จะลงนามในข้อมูล bytes32 ของเรา ดังนั้น ผู้โจมตีต้องการเพียงแค่ได้รับที่อยู่ของเราเพื่อวิเคราะห์และสอบถามบัญชีของเราหลังจากที่เราเชื่อมต่อกับ DApp แล้ว จากนั้นจึงสร้างข้อมูลใดๆ (เช่น: การถ่ายโอนโทเค็นดั้งเดิม การเรียกสัญญา) เพื่อให้เราลงชื่อเข้าใช้ผ่าน eth_sign

วิธีการฟิชชิ่งนี้จะทำให้ผู้ใช้สับสนอย่างมาก MetaMask จะแสดงข้อมูลที่ผู้โจมตีต้องการให้เราเซ็นชื่อสำหรับฟิชชิงที่ได้รับอนุญาตที่เราพบในอดีตโดยสัญชาตญาณ ดังที่แสดงด้านล่าง MetaMask แสดงให้เห็นว่าเว็บไซต์ฟิชชิ่งนี้ชักจูงให้ผู้ใช้อนุญาต NFT ไปยังที่อยู่ที่เป็นอันตราย

สรุป

สรุป

ลิงค์ต้นฉบับ

ลิงค์ต้นฉบับ

NFT
ค้นหา
สารบัญบทความ
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android