นั่งคอมอยู่ดี ๆ จู่ ๆ ก็มีแชตเด้งจากใน Steam ขึ้นมา เป็นลิงก์แจก Steam Gift มูลค่า 50 ดอลลาร์ หรือประมาณ 1,900 บาท เห็นแบบนี้แล้วมันตาลุกวาวนะครับ แต่ด้วยเลือดของความเป็น Cybersecurity แบบนี้มันฟิชชิงชัด ๆ ไหน ๆ พี่แกก็ส่งลิงก์มาให้ดูละ เราไปชำแหละดูกันสักหน่อยดีกว่า
แค่ลิงก์ก็ดูปลอมแล้ว
อันนี้คือตัวอย่างลิงก์ที่แฮกเกอร์เพื่อนรักส่งมาให้ใน Steam ครับ steamcoermmunity.com/643519051136
โธ่ !! ดูยังไงมันก็ของปลอม สังเกตที่ชื่อโดเมนนะครับ แทนที่จะเป็น steamcommunity.com
แต่ดันเป็น steamcoermmunity.com
(ตกภาษาอังกฤษเปล่าเนี่ยไอ้หนู)
พอเปิดเว็บขึ้นมาจะพบกับหน้าเพจของ Steam ที่บอกว่ามีการแจก Steam Gift แค่ล็อกอินเพื่อรับการ์ด มีจำกัด 300,000 ใบ (แล้วตัวเลขมันรันให้ดูด้วยนะ แต่พอรีเฟรชหน้าจอ มันก็จะกลับมาอยู่ที่ราว ๆ 250,000 เหมือนเดิม)
iframe cloaking
หลังจากเข้ามาในลิงก์ ผมก็เปิดดู Developer Tools เพื่อเช็กดูโค้ดของหน้าเว็บ
สิ่งแรกที่เห็นใน HTML คือบรรทัดนี้
iframe src="https://steamcoermmunity.com/..." style="position:absolute; top:0; left:0; width:100%; height:100%; z-index:999999;"></iframe
อ้าว…หน้าเว็บนี้มัน iframe ทั้งดุ้นเลยนี่นา หากใครยังไม่รู้ว่ามันคืออะไรนะครับ ลองนึกถึงเวลาเราฝังคลิปยูทูบลงบนเว็บของเรา นั่นแหละคือเรากำลังฝัง iframe ของยูทูบลงไป แฮกเกอร์คนนี้ก็ทำแบบนั้นครับ มันฝัง iframe ที่เลียนแบบหน้าตาการล็อกอินของ Steam ลงไปคลุมทับหน้าเพจจริง ๆ เพราะถ้าเป็นเว็บปกติ มันต้องมีโค้ดเยอะกว่านี้มากครับ
พอลองลบ iframe ออกจาก เว็บทั้งหน้าก็กลายเป็นว่างเปล่าเลย เทคนิคนี้เราเรียกว่า iframe cloaking สวมทับเว็บเพจด้วย iframe เพื่อทำเว็บฟิชชิงหลอกเอาข้อมูล
นอกจากนี้ เวลาเราคลิกลิงก์ในเมนู เช่น ไม่ว่าจะเป็น Login, About หรือ Support มันจะมีหน้าต่างให้ล็อกอิน Steam เด้งขึ้นมาตลอด และจะไม่รันไปหน้าอื่นเลยครับ มันจะอยู่ที่หน้า iframe แรก เพราะทั้งเว็บมันมีแค่นี้แหละ แหม! แถมยังบังคับให้เราล็อกอินด้วยนะเนี่ย
ส่อง JavaScript
ในแท็บ Sources ของ DevTools จะพบว่า JavaScript ส่วนใหญ่ถูกทำให้อ่านไม่ออก (obfuscate)
(function _0xa9614d() {
...
if {
ทำอะไรสักอย่างนี่แหละ....
} else {
debugger;
}
})();
ตัวแปรอย่าง _0x58f12b
, _0x2d7d
มันไม่มีความหมาย โค้ดแบบนี้จะทำงานจริงก็ต่อเมื่อตอนรัน ทำให้เข้าใจพฤติกรรมได้ยากถ้าไม่ debug ทีละบรรทัด (ผมขี้เกียจทำอะ เอาแค่นี้ละกัน 55555)
ส่วนคำสั่ง debugger;
เข้าใจว่าใช้ดักไม่ให้คนที่มาวิเคราะห์โค้ดอ่านสคริปต์ได้ง่าย ถ้าหน้า DevTools เปิดอยู่ หน้าเว็บจะไม่สามารถสั่งการได้ครับ เขาคงไม่อยากให้เรารันหน้าเพจไปด้วยเพื่อดูการเปลี่ยนของโค้ด
แบบนี้ต้องดักด้วย Burp Suite
ผมจะลองเสี่ยงกรอกข้อมูลลงไปในหน้าล็อกอิน หลังจากนั้นทำการ Intercept ด้วย Burp คั่นกลางเพื่อแอบดูว่าตอนที่พิมพ์ลงไปและกดสั่ง ข้อมูลที่จะส่งไปปลายทางมันเป็นยังไง
จากภาพพบว่ามีการส่ง POST Request /request.php
พร้อมพารามิเตอร์
userName=teammy&password=1234&url=https://steamcoermmunity.com/...
วิเคราะห์ได้ประมาณนี้
- Request: POST ไปยัง /request.php
- Content-Type: application/x-www-form-urlencoded
- Response: ไม่ว่าเราจะใส่อะไรไปก็ตาม ระบบจะตอบกลับว่า
{ "success": false, "isReturned": false, "message": null }
หลังจากที่ผมลองล็อกอินด้วยหลาย ๆ ชื่อ และการตอบกลับของปลายทาง จะตอบกลับแบบเดิม ๆ แสดงว่าว่าเว็บยี้มันเป็นฟิชชิ่งที่เน้นเก็บข้อมูล ไม่มีการตรวจสอบว่าถูกต้องหรือไม่ ขอแค่เอา Username และ Password ของเหยื่อไปก่อน แล้วค่อยแสดงผลออกมาว่าล็อกอินไม่สำเร็จ
แล้วปลายทางได้อะไรไปบ้าง?
เนื่องจากว่าผมไม่สามารถเข้าถึงหลังบ้านของแฮกเกอร์ได้ ดังนั้น ขอคาดการณ์ลักษณะของโค้ดที่เป็นไปได้จากที่วิเคราะห์ผ่านการทดลองข้างต้น คาดว่าน่าจะเป็นประมาณนี้ครับ
<?php
# เก็บ username ที่เหยื่อป้อน
$u = $_POST['userName'] ?? json_decode(file_get_contents("php://input"))->userName;
# เก็บ password ที่เหยื่อป้อน
$p = $_POST['password'] ?? json_decode(file_get_contents("php://input"))->password;
# เก็บใส่ไว้เป็นไฟล์ log.txt
file_put_contents("log.txt", "$u:$p\n", FILE_APPEND);
echo json_encode(["success" => false]);
?>
ข้อมูลจากถูกเขียนลงไฟล์ log.txt เสร็จแล้วก็จะส่ง JSON มาหาเหยื่อว่าล็อกอินไม่สำเร็จ นี่ถ้าเหยื่อพยายามล็อกอินซ้ำนะ แฮกเกอร์ยิ่งมั่นใจได้เลยว่า username/password ที่ได้มาเป็นของจริงแน่นอน
วิธีป้องกันตัวเอง
- อย่าคลิกลิงก์แปลก ๆ พึงระลึกไว้ให้หัวสมองว่าของฟรีไม่มีในโลก
- ตรวจสอบชื่อโดเมนเว็บให้ดีก่อนจะกรอกข้อมูลล็อกอิน
- เปิดใช้ Steam Guard หรือ 2FA
- อย่าลืมรายงานเว็บปลอมผ่าน Google Safe Browsing หรือส่งให้ทีมงาน Steam ด้วยนะจ๊ะ
ใด ๆ ก็ตาม เว็บไซต์หรืออีเมลฟิชชิงต่าง ๆ จะไม่สามารถทำอะไรเราได้ หากเรามีความระมัดระวังและรู้เท่าทันเสมอในการใช้อินเทอร์เน็ตครับ ถ้าไม่คลิกไม่กรอกซะอย่าง มันไม่มีทางได้ข้อมูลเราไปแน่นอน
You must be logged in to post a comment.