รู้จักกับ Inferno Drainer และภัยร้ายจากการถูก phishing scam
ก่อนเข้าเนื้อหา มาทำความเข้าใจเกี่ยวกับ Contract Approval ก่อน
ในโลกของฝั่งทาง Web3 / EVM / Smart Contract ที่ผู้คนสามารถเขียนโค้ดเพื่อสร้าง protocol หรือ ชุดคำสั่งอื่นๆที่สามารถปฏิบัติการได้บน blockchain การที่ผู้ใช้จะไปใช้งาน protocol อื่นๆมักจะคุ้นเคยกับการที่จะต้องทำ Token Approvals/ Allowances เพื่อให้สามารถใช้งาน token ประเภท ERC20 อื่นๆที่นอกเหนือจากตัว native token (เช่น ETH, BNB, MATIC) ที่อยู่บนเครือข่ายเชนนั้นๆ ในกรณีนี้เราจะพูดถึงเฉพาะ ERC-20 Standard
“Approvals” เป็นการอนุญาตให้ smart contract นั้นๆ สามารถที่จะดึง token ใน wallet ของคุณ ออกไปตามคำสั่งของ smart contract นั้นๆ
“Allowance” เป็นการระบุถึงขีดความสามารถในการที่จะอนุมัติจำนวนของ token ที่จะสามารถดึงออกไปใช้ได้
การให้สิทธิ์อนุญาตเหล่านี้ล้วนเป็นเรื่องปกติในการไปใช้งานพวก DeFi Protocol ต่างๆ หากแต่ว่าผู้ใช้จำเป็นที่จะต้องมั่นใจก่อนว่า smart contract เหล่านั้นปลอดภัย และยอมรับความเสี่ยงด้วยตัวของคุณเองก่อนที่จะให้สิทธิ์อนุญาตใดๆ
Malicious Contract Approval ท่าคลาสสิคของเหล่า Scammer
อย่างที่ได้เกริ่นไว้ก่อนหน้านี้ โดยปกติแล้ว Token ใดๆที่อยู่ในกระเป๋าของเรา ถ้าไม่มีสิ่งใดไปกระทำหรือกระทบ มันก็จะยังคงอยู่อย่างนั้น จนกว่าจะมีตัวแปรอื่นมากระทำ และสิ่งที่ผมพบได้บ่อยมากในสายงานของ blockchain cybersecurity คือ การที่ผู้ใช้ไป approval malicious contract เรียกได้ว่าเป็นท่า classic ของเหล่า scammer ที่ทำ phishing scam เลยก็ว่าได้ เพราะง่าย ไม่ต้องอาศัยช่องโหว่ใดๆ เพียงแค่ทำหน้าเว็บปลอมขึ้นมาให้คนกด approval ก็สามารถดูดเงินจาก wallet ได้ทันที แถมมีประสิทธิภาพด้วย เพราะสามารถเขียน contract code ให้ดึง token ทั้งหมด ไม่ว่าจะเป็น token ใดๆ แม้กระทั่ง NFT เรียกได้ว่าคลาสสิคแบบ all in one คลิ๊กเดียวครอบจักรวาล เพราะถ้าผู้ใช้ไม่ได้อ่าน message บน wallet ให้ดีพอ ก็อาจเผลอกดได้ทันที และนั่นเป็นเหตุที่ทำให้มีเหยื่อจำนวนมากตามมาด้วยมูลค่าความเสียหายที่สูงมาก
นอกจากนี้อาจสามารถสร้างสรรค์ท่าทางพิสดารแปลกๆขึ้นมา ทั้งนี้ก็ขึ้นอยู่กับว่าเชฟจะรังสรรค์เมนูแบบไหนเพื่อเชือดเหยื่อเท่านั้นเอง
Inferno Drainer ภัยร้ายที่ทำผู้คนสูญเงินกว่า 100 ล้านเหรียญฯ
Inferno Drainer เป็น scam as a service โดยเปิดให้บริการกับลูกค้าที่ต้องการนำไปใช้สำหรับก่อการโจรกรรม เรียกได้ว่าเป็นชุดคำสั่งที่พร้อมใช้งานโดยที่ผู้ใช้ไม่ต้องยุ่งยากในการ deploy ใดๆ เพียงแต่ต้องเสียค่าธรรมเนียมให้กับแพลตฟอร์ม
จำนวน 20% จากยอดธุรกรรมที่ขโมยมาได้ ทำให้ได้รับความนิยมในหมู่อาชญากร
โดยปกติแล้วการก่ออาชญากรรมในรูปแบบ phishing scam นั้น จะต้องหาวิธีการให้เหยื่อเข้ามาที่หน้าเว็บไซต์ โดยใช้วิธีการเชิญชวนหลากหลายรูปแบบ เช่น Fake NFT Airdrop, Project Impersonation, Fake Revoke Service และอื่นๆอีกจำนวนมาก แล้วแต่ว่าจะใช้กลยุทธ์ไหนในการที่จะนำพาเหยื่อให้เข้ามา เราคาดการณ์ว่า การที่กลุ่มคนหรือทีมผู้พัฒนาแพลตฟอร์ม Inferno Drainer นั้น จะไปสร้างเว็บไซต์หรือไปหลอกคนจำนวนมากๆได้นั้น อาจไม่สู้ให้คนอื่นๆที่มีแนวร่วมที่ต้องการจะก่ออาชญากรรม มาช่วยในการหาเหยื่อเข้ามา แล้วคิดค่าบริการเป็น percentage จากยอดที่ทำได้ ซึ่งมันก็แฟร์กับลูกค้าที่จะนำไปใช้ก่ออาชญากรรม เพราะไม่ต้องจ่ายเงินไปก่อน (ในโลกคริปโทนั้นการจ่ายเงินซื้อบริการก่อนอาจถูกหลอกได้ง่าย ผู้คนส่วนใหญ่มักจะไม่จ่ายเงินก่อน ยกเว้นว่าผู้ขายนั้นมีความน่าเชื่อถือ) ทำให้สามารถหาเหยื่อได้จำนวนมาก และโอกาศที่จะประสบความสำเร็จมีสูงกว่า
ซึ่งตัว inferno drainer นั้นรองรับการทำงานในรูปแบบ multichain (หมายถึงรองรับการทำงานบน blockchain ที่หลากหลาย network เช่น BNB Chain, Ethereum, Polygon เป็นต้น)
จากรายงานบน Dune ที่เป็น Analytics Platform ชื่อดัง โดยมี scamsniffer เป็นผู้รวบรวมฐานข้อมูล ปรากฎพบว่าอาจมีเหยื่อมากกว่า 150k คน และมูลค่าความเสียหายโดยประมาณคือ $108M นับว่าเป็นจำนวนที่สูงมาก
ในวันที่ 26 พฤศจิกายน 2023 ทางทีมของ Inferno Drainer ได้ประกาศปิดตัวแพลตฟอร์ม แต่อย่างไรก็ตาม ยังพบการใช้งานอยู่ และมีผู้ตกเป็นเหยื่ออยู่เรื่อยๆ
หากใครอยากอ่านเรื่องราวเกี่ยวกับ inferno drainer เพิ่มเติม โดยเฉพาะการเจาะลึกอย่างละเอียด ผมแนะนำบทความจากบริษัท Group-IB ซึ่งได้เขียนไว้อย่างละเอียดมาก คลิ๊กที่นี่
ในไทยพบว่าก็มีผู้ตกเป็นเหยื่อเช่นกัน เช่น กรณีของคุณ นาวิน ต้าร์
เนื่องจากเป็นกรณีข่าวดัง และคุณ นาวิน ต้าร์ ได้ให้สัมภาษณ์ในรายการ
“ถกไม่เถียง” ซึ่งได้มีการเผยแพร่ภาพธุรกรรมในช่วงนาทีที่ 4:28 ทำให้ทราบธุรกรรมที่อยู่บน blockchain และสามารถสืบค้นได้อย่างสาธารณะ ผมจึงได้เอามาวิเคราะห์
ปรากฎพบว่าตัว Malicious Contract Address ที่ได้มีการ interacted เป็น source code เดียวกันกับของ inferno drainer (เนื่องจากผมเคยได้ตรวจสอบกรณีที่มีคนในกลุ่มคอมมูนิตี้ด้านบล็อกเชนในไทยเคยโดน) ตัว contract code เหล่านี้มักจะไม่ทำการ verified นั่นหมายความว่าการที่จะดูโค้ดว่ามีฟังก์ชั่นอะไรบ้างจะต้องทำวิธีการ disasembled หรือ reverse engineering เท่านั้น นั่นหมายความว่านอกจากผู้ใช้ทั่วๆไปจะดูยากแล้ว คนที่จะดูโค้ดก็ต้องมีทักษะอยู่พอสมควรถึงจะแกะดูได้
ผมได้ตรวจสอบรายละเอียดดูแล้ว ระหว่าง Malicious Contract Address: 0x6bd779F8A92668139E19090d9b4E49B05BfA5774 [Polygon POS]
0xed0e416e0fEEA5b484ba5c95d375545AC2b60572 [Ethereum Mainnet]
ซึ่งปรากฎว่าขนาด MD5 Bytecode ที่เท่ากัน และ deployer address คือ 0x0000db5c8B030ae20308ac975898E09741e70000 มีการระบุ label ว่าเป็น Inferno Drainer ยืนยันได้อย่างแน่ชัดว่าโดนจากแพลตฟอร์ม inferno drainer
ลองแกะการทำงานคร่าวๆของ inferno drainer
จากข้อมูลสาธารณะที่อยู่บน blockchain ทำให้เราทราบว่า ก่อนเกิดเหตุการณ์ที่ถูกขโมยหรือดูดเหรียญออกไปจากกระเป๋าคริปโท เราพบว่า transaction ก่อนหน้าที่ทำการขอ “increaseAllowance”
ในรูปแสดงให้เห็นชัดว่ามีการขอสิทธิ์ให้ malicious contract spender 1 [0x8edfe3a5e71e9ca51bc0e6c9df770b6f601b9a54] สามารถเข้าถึงเหรียญ stETH (Lido) ในฐานะ spender ได้แบบ maximum integer เอาแบบสูงสุดในรูปแบบ Uint256 คือมีเท่าไหร่ขอสิทธิ์ทั้งหมด
จากนั้นไม่นานเมื่อรู้ว่ามี tx ที่อนุญาตสิทธิ์ให้ malicious contract แล้ว ตัว inferno contract deployer [0x0000db5c8B030ae20308ac975898E09741e70000] ก็รันคำสั่งไปยัง malicious contract 2 [0xed0e416e0fEEA5b484ba5c95d375545AC2b60572] ให้ดำเนินการโอนเหรียญออกจากกระเป๋าเหยื่อ ซึ่งจริงๆแล้วก็รันผ่านสิทธิ์ spender 1 [0x8edfe3a5e71e9ca51bc0e6c9df770b6f601b9a54] ที่ได้ให้สิทธิ์ไว้นั่นแหละ คร่าวๆ แค่นี้พอดีกว่า เพราะจริงๆถ้าดูดีๆ จะพบว่ายังมี contract address อื่นๆที่เกี่ยวข้องกันอีก ซึ่งผมก็ไม่ได้ไปแกะต่อ
โดยทั้งหมดนี้เกิดขึ้นภายในไม่เกิน 1 นาที นั่นหมายความว่าเป็นไปได้ยากมากที่จะทำการ revoke ทัน และต่อให้ใช้ hardware wallet ก็ป้องกันไม่ได้ เพราะเป็นการให้สิทธิ์ การยกเลิกสิทธิ์เราจะทำได้โดยผ่านการ revoke เท่านั้น ถ้าทำไม่ทันก็โดนดึงเงินไปอยู่ดี
แนวทางแก้ไข
ไม่มี นอกจากจะทำ revoke ทันก่อนจะถูกขโมย ซึ่งเป็นไปแทบไม่ได้
แนวทางป้องกัน
- ตรวจสอบ link ก่อนว่าหน้าเว็บไซต์ที่เราเข้าไป เป็นของโครงการนั้นๆจริงหรือไม่
- เมื่อคิดว่าเป็นของโครงการนั้นจริง เมื่อเรา connect wallet หรือจะ sign ธุรกรรมใดๆ โปรดพึงละลึกว่าควรทำด้วยความใจเย็น รอบคอบ มีสติ อ่าน message ที่เด้งโชว์ก่อน ดูให้ดีว่ากำลังจะทำอะไร ไป intereact กับ contract address ไหน แล้วลองเช็คดูในพวก blockchain explorer นั้นๆ ว่ามีการทำ contract verified แล้วหรือยัง โดยส่วนมากแล้วพวก phishing scam จะไม่ค่อยทำ เพราะว่าถ้าทำทุกคนเห็นโค้ดหมด มันทำให้โป๊ะแตกได้ง่ายกว่า
- ถึงกระนั้นก่อนจะกด sign หรือทำอะไรก็ตาม ก็ต้องคิดก่อนว่า เช่น คุณเคยทำธุรกรรมกับเว็บนี้แล้ว โครงการนี้ แพลตฟอร์มนี้ เคยทำ approval ไปแล้ว แต่ทำไมให้ทำอีก ต้องเอ๊ะใจสักนิดว่า มีการเปลี่ยนแปลง contract address ของโครงการหรือไม่ เพราะภัยคุกคามที่ผมเจอ บางโครงการโดนโจมตี hijack dns หรือ ขโมย domain name แล้วเปลี่ยนเส้นทางไปยังหน้าเว็บของอาชญากร ทีนี้เขาก็ฝัง malicious ui ไว้ได้อย่างง่ายดาย ควรติดตามข่าวสารอยู่เสมอว่ามี
ประกาศใดๆจากโครงการหรือไม่ เพราะหลังๆเจอท่าแบบนี้เยอะ - สายล่า airdrop หรือเล่นพวก DeFi ควรแยก wallet ที่ต้องนำไปใช้บ่อยๆ กับ ที่เก็บเงินระยะยาวออกจากกัน หรือการ staking ที่เราตั้งเป้าหมายระยะยาว ก็ควรแยก wallet ออกมา เพื่อทำหลัก opsec
- ระลึกไว้ว่าไม่มีอะไรปลอดภัย 100% ทุกอย่างมีความเสี่ยง ยิ่งบน blockchain จะสูงกว่าปกติ โปรดแน่ใจว่าคุณได้ศึกษามาอย่างดี และกระทำการด้วยตัวคุณเอง โดยอย่าเชื่อใจใคร เพราะโลก decentralized คือโลกที่ไร้กฎเกณฑ์ ใครไม่พร้อม อย่าโดดเข้ามาในโลก defi / web3 เพราะความเสี่ยงสูงกว่าการที่คุณซื้อ bitcoin เก็บนอนกอดไว้ใน hardware wallet เฉยๆ
- หากพบว่าโครงการใดที่คุณเคยไปใช้งานพบการ exploit หรือสุ่มเสี่ยงให้รีบทำ revoke approval โดยทันที โดยสามารถใช้บริการจาก https://revoke.cash/ หรือผู้ให้บริการอื่นๆที่สามารถทำ revoke ได้
- อย่าเชื่อใจใคร โลกนี้ไม่มีอะไรฟรี และได้มาโดยง่าย ระวังจะถูกหลอก Trust No One ทำเป็นซีรีย์มาแล้ว ไปหาดู จะเข้าใจว่าโลกนี้ต่อให้มีใบอนุญาตใดๆอย่างถูกกฎหมาย ก็สามารถฉ้อฉลได้เช่นกัน ใจคน ยากแท้ หยั่งถึง
ถึงแม้ว่าม้าจะเร็ว แต่วันนี้ขอลาไปก่อน……..
ปล. หากมีข้อผิดพลาดประการใดขออภัย ณ โอกาศนี้ และได้โปรดส่งข้อมูลที่ถูกต้องมาเพื่อที่จะได้แก้ไขให้ถูกต้องครับ