หุ่นยนต์ทำความสะอาด Ethereum ออกอาละวาด บทความเดียวเข้าใจวิธีแก้ปัญหาสามประการ
บทความนี้มาจาก:วิถีแห่ง DeFiบทความนี้มาจาก:
วิถีแห่ง DeFi
, ผู้แต่ง: ฟรีและง่าย, ส่งต่อด้วยการอนุญาต
หมายเหตุ: คุณเคยพบสถานการณ์เช่นนี้หรือไม่ เมื่อคุณส่งกองทุน Ethereum แล้วพบว่าเงินในกระเป๋าเงินหมดในทันที คุณอาจตกเป็นเป้าหมายของ Sweeper บทความนี้มีเป้าหมายเพื่อช่วยคุณแก้ปัญหานี้ ต้นฉบับ ผู้เขียนคือ Harry Denley วิศวกรด้านความปลอดภัยและต่อต้านฟิชชิ่งของ MyCrypto
เมื่อความลับของคุณถูกบุกรุก บุคคลที่ประสงค์ร้ายมักจะตั้งค่า Sweeper ในบัญชีของคุณเพื่อใช้ประโยชน์จากสิ่งที่เกิดขึ้นกับที่อยู่นั้นในอนาคต เช่น เมื่อผู้ใช้ฝาก ETH เพื่อลองและถอนโทเค็นบางส่วน เมื่อ airdrop หรืออื่นๆ สถานการณ์เกิดขึ้น
บทความนี้สรุปวิธีการที่เงินของผู้ใช้ถูกกวาดออกไป และสามวิธีที่ไม่ซ้ำกันในการกอบกู้เงินที่ไม่ได้ถูกกวาดไป (เช่น เงินที่เดิมพันไว้)
1. ผู้ใช้ถูกฟิชอย่างไร
เมื่อเร็ว ๆ นี้เราได้เห็นผู้ใช้จำนวนมากที่แอบอ้างเป็นผู้ดูแลกลุ่ม Telegram ผู้ดูแลระบบปลอมเหล่านี้จะช่วยเหลือผู้ใช้ที่ขอความช่วยเหลือในช่องทางหลัก (แม้ว่าพวกเขาจะไม่ใช่ผู้ดูแลระบบจริง แต่พวกเขาก็คัดลอกข้อมูลโปรไฟล์ผู้ดูแลระบบ แต่ชื่อผู้ใช้กับบางคน ความแตกต่างเล็กน้อย) ผู้แอบอ้างเหล่านี้มักพูดศัพท์แสงจำนวนมากเพื่อสร้างความสับสนให้กับผู้ใช้และแชร์ลิงก์ไปยังเว็บไซต์ที่ดูเหมือนจะถูกต้องตามกฎหมาย แต่สุดท้ายกลับถามคุณถึงวลีเริ่มต้นหรือคีย์ส่วนตัว
จากนั้นสินทรัพย์ crypto ของคุณก็หายไปพร้อมกับตัวกวาด
นี่คือตัวอย่างหนึ่งในไซต์ปลอมเหล่านี้:
2. วิธีการทำงานของน้ำยาทำความสะอาด
Sweeper คือโค้ดบางส่วนที่ตรวจสอบบล็อกเชน (รวมถึง txpool ซึ่งทางเทคนิคแล้วไม่ใช่แบบออนเชน) และตอบสนองเชิงโปรแกรมเพื่อลงนามในธุรกรรมเฉพาะด้วยชุดกฎที่เร็วกว่าที่มนุษย์จะทำได้
ซึ่งหมายความว่า UI จะมองไม่เห็นตัวกวาดเมื่อคุณดูที่อยู่ของคุณบน blockchain explorer หรือ "เชื่อมต่อ" กับ dapp หลังจากที่คุณลงนามและเผยแพร่ธุรกรรมไปยังเครือข่ายแล้ว Sweeper (สวีปเปอร์) จะสามารถเห็นกิจกรรมของคุณได้
เมื่อเวลาผ่านไป เราได้เห็นวิวัฒนาการของเครื่องเก็บกวาดและการรณรงค์ที่ใช้ประโยชน์จากสิ่งเหล่านี้
3. วิวัฒนาการของเครื่องกวาดพื้น
ในช่วงปี 2560 มีกิจกรรมจำนวนมากที่ใช้โทเค็นที่มีคุณสมบัติการล็อค (เช่น คุณไม่สามารถโอนสาย () ) ได้สำเร็จ แต่รวมฟีดราคา Dave Appleton เผยแพร่บทความเกี่ยวกับกิจกรรมเหล่านี้
วิธีที่กลุ่มผู้ไม่หวังดีใช้ประโยชน์จากการหลอกลวงนี้คือพวกเขาจะโพสต์รหัสส่วนตัวไปยังที่อยู่นี้ (ในทางที่ดูเหมือนไร้เดียงสาหรือผิดวิธี) และรอให้ผู้คนฝาก ETH ลงในที่อยู่ (เพื่อโอนโทเค็นในที่อยู่) บุคคลที่ประสงค์ร้ายจะมีโปรแกรมกวาดสำหรับบัญชีนั้นเพื่อโอน ETH ที่ฝากไปยังที่อยู่นั้นไปยังบัญชีของเขาอย่างรวดเร็ว โทเค็นที่ถูกล็อกนั้นถือว่าไร้ค่าในทางทฤษฎี ดังนั้นพวกเขาจึงพยายามดึงผลกำไรจากผู้ใช้ที่ "โลภ" ที่ไม่สงสัย
ทุกวันนี้ ที่อยู่ที่รั่วไหลโดยทั่วไปจะถูกปรับใช้กับโปรแกรม ETH scrubber และบางองค์กรใช้ตรรกะของโปรแกรม scrubber ขั้นสูงเพื่อล้างโทเค็น ERC20 ตามฟีดราคา
เมื่อต้นปีนี้ ฉันได้ทำการวิจัยลาดตระเวนเกี่ยวกับที่อยู่ที่รั่วไหล และพบว่าเครื่องกวาดพื้นมีการพัฒนาอย่างต่อเนื่อง:
ผู้กวาดล้างชอบสินทรัพย์ที่มีค่าดอลลาร์สูงสุด แม้ว่าจะต้องใช้จ่ายมากขึ้นในค่าธรรมเนียมการทำธุรกรรมเพื่อกวาดล้างก็ตาม
Sweeper จะใช้ ETH ที่มีอยู่ทั้งหมดเพื่อเพิ่มมูลค่าการกวาดสูงสุดในขณะที่ยังมีการทำธุรกรรมที่ "ชนะ" ในเปอร์เซ็นต์สูง
Sweeper มีเครื่องมือจับคู่ที่จับคู่โทเค็นที่จำนำ (เช่น: xKNCa=KNC) กับโทเค็นดั้งเดิม เพื่อให้ฟีดราคาสะท้อนบนโทเค็นที่จำนำ
Sweeper มีตัวนับ nonce ภายในของตัวเอง และจะรีเซ็ต nonce nonce เป็นเอาต์พุต eth.getTransactionCount() เป็นระยะๆ หาก nonce nonce สูงสุดไม่ได้รับการยืนยันภายในกรอบเวลา (หรือถูกทิ้ง/แทนที่ด้วยอันอื่น)
หากมีสินทรัพย์ที่มีมูลค่าสูงเป็นเป้าหมายโดย Sweeper มีกิจกรรมบางอย่างที่แนะนำให้ผู้ดำเนินการ "เสียสละ" ETH บางส่วนโดยการให้เงินทุนแก่ที่อยู่ในความพยายามที่จะกวาดสินทรัพย์ที่มีมูลค่าสูงออกจากบัญชีอย่างรวดเร็ว
ตัวขัดบางตัวจะไม่กวาดทรัพย์สินหากค่าเงินดอลลาร์ต่ำกว่าเกณฑ์ที่กำหนด ซึ่งหมายความว่าคุณอาจไม่ทราบว่าบัญชีของคุณกำลังถูกกำหนดเป้าหมายโดยตัวขัด ซึ่งน่ากลัว
บทความที่อธิบายเกี่ยวกับเครื่องขัดพื้นปรากฏขึ้นครั้งแรกในปี 2017 และตอนนี้เครื่องขัดพื้นที่เราสังเกตเห็นมีความก้าวหน้ามากขึ้น และได้รับการออกแบบมาเพื่อเพิ่มผลกำไรสูงสุดให้กับผู้ปฏิบัติงาน ในขณะที่ทำให้เหยื่อสูญเสียมากที่สุด
4. จะเอาชนะสวีปเปอร์ได้อย่างไร?
ประการแรก ในฐานะมนุษย์ เราไม่สามารถเร็วกว่าโค้ดได้ ดังนั้นโซลูชันของเราจึงเกี่ยวข้องกับการเขียนโค้ดเท่านั้น มีเส้นทางที่แตกต่างกันสองสามเส้นทางที่คุณสามารถเลือกได้ ไม่มีเส้นทางใดรับประกันได้ 100% แต่ได้ผลดีกับเรา
คุณต้องสร้างรายการเหรียญที่คุณต้องการพยายามกอบกู้ จัดเรียงตามลำดับความสำคัญเพื่อให้คุณสามารถกำหนดแผนการของคุณได้อย่างง่ายดาย คุณต้องทำรายการ:
ที่อยู่สัญญาโทเค็น;
โทเค็นถูกเดิมพันหรือไม่ (และการเลิกเดิมพันจะถูกล็อคเวลาหรือไม่);
โทเค็นนั้นสามารถโอนได้หรือไม่
มูลค่าโทเค็น (เป็น USD);
5. การใช้ไทชิ
วิธีการทำงานของ Sweeper คือการตรวจสอบ txpool สำหรับธุรกรรมขาเข้าที่ไปยังที่อยู่ของ Sweeping และ TAICHI อนุญาตให้คุณส่งธุรกรรมที่ลงนามโดยตรงไปยังนักขุด (SparkPool) โดยไม่ต้องออกอากาศผ่าน txpool สาธารณะ ซึ่งหมายความว่าโปรแกรม Sweeper จะเป็นสิ่งที่มองไม่เห็น และเป็นไปได้มากว่าการซื้อขายของคุณจะไม่ถูกแทนที่โดยบอทตัวกวาด (อย่างน้อยก็จากประสบการณ์ของฉัน)
คำอธิบายภาพ
ภาพจาก TAICHI.NETWORK
แนวทางที่นี่คือให้ธุรกรรมทั้งหมดของคุณลงนามล่วงหน้าในลำดับที่ไม่มี และส่งไปยัง TAICHI โดยทางโปรแกรม Sweeper ส่วนใหญ่ตรวจสอบเฉพาะ txpool/mempool สาธารณะสำหรับธุรกรรม ETH ที่เข้ามา และไม่เรียกใช้ eth_getBalance ในทุกบล็อกใหม่ (เพื่อประหยัดต้นทุนของรอบ CPU และการเรียกใช้เมธอด RPC) ซึ่งหมายความว่าพวกเขาจะกำหนดเส้นทางผ่าน txpool ETH ส่วนตัวที่ส่งไปยัง บัญชีจะถูกละเว้น ดังนั้นจึงไม่ถูกกวาด
สิ่งนี้ต้องการให้คุณคำนวณและหากคำนวณถูกต้อง โปรแกรมตัวกวาดที่พยายามรันส่วนหน้าอาจล้มเหลว! (โดยปกติแล้ว ฉันจะตั้งค่าเริ่มต้นเป็นราคาน้ำมันที่สูงกว่าหมวดหมู่ "เร็ว" บน GasNow สองสามเปอร์เซ็นต์ ดังนั้นนักขุดจะมีแนวโน้มที่จะยืนยันธุรกรรมของคุณในบล็อกถัดไป)
คุณสามารถใช้ MyCrypto แบบออฟไลน์เพื่อสร้างธุรกรรมที่ลงชื่อแล้วและส่งไปยัง TAICHI เมื่อพร้อม หรือใช้ ethers.js (หรือไลบรารีอื่นๆ) เพื่อสร้างโค้ดเพื่อสร้างธุรกรรมที่ลงนาม
วิธีที่ 1: ใช้สัญญาอัจฉริยะแบบทำลายตัวเอง
เช่นเดียวกับวิธี TAICHI เราสามารถใช้สัญญาอัจฉริยะเพื่อให้ ETH เข้าสู่บัญชีโดยไม่ต้องแสดงใน txpool สาธารณะ เราทำสิ่งนี้โดยการปรับใช้สัญญาอัจฉริยะจากที่อยู่ที่ปลอดภัย จากนั้นส่ง ETH เชิงโครงสร้างไปยังที่อยู่ที่ถูกบุกรุก (นี่จะเป็นธุรกรรมภายใน)
ด้วยการปรับใช้สัญญานี้ เราสามารถส่ง ETH พร้อมกับสตริงที่อยู่รั่วไหลในพารามิเตอร์ตัวสร้าง สัญญาทำงานโดยการสร้างสัญญาและการทำลายตัวเองในธุรกรรมเดียวกัน การใช้ selfdestruct() หมายความว่าเราล้างสถานะบล็อกเชน (เนื่องจากเป็นสัญญาแบบใช้ครั้งเดียว) และส่งต่อ ETH ไปยังที่อยู่ที่รั่วไหลในธุรกรรมเดียว
ตัวอย่าง: https://goerli.etherscan.io/tx/0x82ccb222eae55aaea73dd0efee1ea6ed7320f880889f280d4a343b8823f86692
โปรดทราบว่าแม้ว่าวิธีนี้จะได้ผล แต่จะเพิ่มค่าใช้จ่ายเพิ่มเติม เนื่องจากเราทำมากกว่าการส่ง ETH จากบัญชีหนึ่งไปยังอีกบัญชีหนึ่ง ต้นทุนของวิธีนี้คือประมาณ 70,000 แก๊ส ในบริบทของราคาแก๊สที่สูง ต้นทุนของการใช้วิธีนี้อาจสูงถึง 0.0112ETH
วิธีที่ 2: การใช้ Flashbots
โดยทั่วไป เราต้องจ่าย ETH เพื่อให้ธุรกรรมได้รับการยืนยัน (เนื่องจากผู้ส่งเป็นผู้ชำระค่าธรรมเนียมการทำธุรกรรม) อย่างไรก็ตาม ต้องขอบคุณ Flashbots ทำให้เราสามารถยืนยันธุรกรรมที่ราคาก๊าซ 0 (เช่น ค่าธรรมเนียมการทำธุรกรรม 0 USD) จาก EOA ได้ง่ายขึ้นโดยการ "ติดสินบน" นักขุดด้วยเงินจากบัญชีอื่น ซึ่งหมายความว่าเราสามารถโอนโทเค็นเพื่อโอนจากที่อยู่ที่รั่วไหลโดยไม่ต้องจ่ายเงิน สำหรับแก๊สใน ETH ใช่ แค่นั้นแหละ
กลยุทธ์นี้ต้องใช้ 2 บัญชี บัญชีหนึ่งคือบัญชีที่รั่วไหล และอีกบัญชีหนึ่งคือบัญชีที่ใช้ติดสินบนคนขุดแร่
ทีม Flashbots ได้เปิดตัวโครงการ Flashbots/searcher-sponsored-tx ซึ่งมีเหตุผลในการตั้งค่ากลยุทธ์นี้เพื่อยืนยันธุรกรรมของคุณจากสองบัญชี
เนื่องจากเราจะใช้บัญชีอื่นเพื่อชำระเงินสำหรับการทำธุรกรรม จึงไม่จำเป็นต้องฝาก ETH ไปที่บัญชีที่ถูกบุกรุก
เพื่อให้แน่ใจว่าไม่มี ETH ในบัญชีที่ถูกบุกรุก เราขอแนะนำอย่างยิ่งให้คุณเรียกใช้บอท Burner
โดยทั่วไป เราแนะนำให้เรียกใช้เบิร์นเนอร์บอทบนคอมพิวเตอร์มากกว่าหนึ่งเครื่อง โดยใช้โหนด RPC ที่แตกต่างกันต่ออินสแตนซ์ ตัวอย่างเช่น รันเบิร์นเนอร์บอทในเครื่องด้วย Infura และรันเบิร์นเบิร์นบอทบนเซิร์ฟเวอร์ระยะไกลกับผู้ให้บริการรายอื่น เช่น Quiknode ด้วยวิธีนี้ คุณจะมีแผนสำรองในกรณีที่เวลาแฝงของเครือข่ายสูงหรือปัญหาเกี่ยวกับโหนด (การจำกัดอัตรา ปัญหาการซิงค์)


