Defensive Research

การวิจัยภัยคุกคามเชิงรับ: การเยี่ยมชม URL ที่น่าสงสัยผ่านการแยกพร็อกซี

3 min read Published Updated 654 words

การเข้าชม URL ที่น่าสงสัยโดยตรงจากเวิร์กสเตชันวิจัยของคุณนั้นประมาท — กว่า 70% ของหน้า Landing Page ที่เป็นอันตรายจะทำการตรวจสอบลายนิ้วมือของ IP ที่เชื่อมต่อ และแสดงหน้าเว็บที่ปลอดภัยหรือบล็อกคำขอทั้งหมด การแยกพร็อกซีไม่ใช่ทางเลือกอีกต่อไป แต่เป็นพื้นฐานสำหรับการรวบรวมข่าวกรองภัยคุกคามที่เชื่อถือได้ หากไม่มีมัน คุณกำลังส่งเน็ตบล็อกของโครงสร้างพื้นฐานของคุณให้กับผู้ไม่หวังดี ซึ่งจะเปลี่ยนเป้าหมายไปโจมตีบริการภายในของคุณภายในไม่กี่นาที

เหตุใดการเรียกดูโดยตรงจึงล้มเหลวสำหรับ Threat Intel

ชุดเครื่องมือเอ็กซ์พลอยต์และฟิชชิ่งสมัยใหม่จะตรวจสอบ REMOTE_ADDR กับรายการบล็อกข่าวกรองภัยคุกคาม ฐานข้อมูลตำแหน่งทางภูมิศาสตร์ และแม้แต่การค้นหา DNS แบบย้อนกลับ การเชื่อมต่อโดยตรงจาก ASN วิจัยที่รู้จักจะทำให้เกิดการเปลี่ยนเส้นทางไปยังหน้าที่สะอาดหรือ 404 ที่แย่กว่านั้นคือ หลายชุดเครื่องมือใช้ JavaScript เพื่อแจกแจง IP ท้องถิ่นของไคลเอ็นต์ผ่านการรั่วไหลของ WebRTC (RFC 8834) — ซึ่งเปิดเผยเครือข่ายจริงของคุณแม้จะอยู่เบื้องหลัง VPN การแยกพร็อกซีจะทำลายห่วงโซ่นี้โดยการยุติการเชื่อมต่อที่ตัวกลางระยะไกลซึ่งไม่มีชื่อเสียงร่วมกับโครงสร้างพื้นฐานของคุณ ตัวพร็อกซีเองต้องใช้แล้วทิ้ง: อินสแตนซ์คลาวด์แบบใช้ครั้งเดียวหรือพูลพร็อกซีที่อยู่อาศัยแบบหมุนเวียน พร็อกซีคงที่จากผู้ให้บริการรายเดียวจะถูกเผาหมดภายในไม่กี่วัน

การแยกแบบหลายชั้น: พร็อกซี + VM หรือคอนเทนเนอร์

พร็อกซีเพียงอย่างเดียวไม่เพียงพอหากเบราว์เซอร์รั่วไหลข้อมูลผ่าน DNS, ช่องทางด้านข้างตามเวลา หรือการทำลายนิ้วมือเบราว์เซอร์ รวมพร็อกซีเข้ากับ VM หรือคอนเทนเนอร์ที่สร้างขึ้นโดยเฉพาะซึ่งไม่มีพื้นที่จัดเก็บถาวร ไม่มีการเมานต์ระบบไฟล์โฮสต์ และโปรไฟล์เบราว์เซอร์ที่ลดทอนลง ใช้ iptables บนคอนเทนเนอร์เพื่อบังคับให้ทราฟฟิกขาออกทั้งหมดผ่านพร็อกซี และทิ้งทราฟฟิกทั้งหมดไปยังที่อยู่ RFC 1918 ตัวอย่างเช่น คอนเทนเนอร์ Docker ที่มี --network none และอุโมงค์ SOCKS5 ผ่าน ssh -D 1080 ไปยัง Jump Box แบบใช้แล้วทิ้ง วิธีนี้ป้องกันไม่ให้เบราว์เซอร์บายพาสพร็อกซีผ่าน WebSocket หรือ WebRTC — ซึ่งเป็นโหมดความล้มเหลวทั่วไปเมื่อใช้เฉพาะการตั้งค่าพร็อกซีระดับเบราว์เซอร์ ควรทำลาย VM หรือคอนเทนเนอร์หลังแต่ละเซสชัน สแนปชอตจะยอมรับได้ก็ต่อเมื่อคุณล้างคุกกี้ แคช และ localStorage ทั้งหมด

เครื่องมือ: Burp Suite พร้อม Proxy Chain และ Headless Browsers

สำหรับการวิเคราะห์ด้วยตนเอง ให้เชื่อมต่อ Burp Suite ผ่านพร็อกซี SOCKS5 (RFC 1928) โดยกำหนดค่า User options > Connections > SOCKS Proxy เป็น 127.0.0.1:1080 และเปิดใช้งาน Do DNS resolution via SOCKS proxy ซึ่งจะบังคับให้การค้นหา DNS ทั้งหมดผ่านพร็อกซี หลีกเลี่ยงการรั่วไหลของ DNS สำหรับการรวบรวมอัตโนมัติ ฟาร์มเบราว์เซอร์ไร้ส่วนหัวที่ใช้ Puppeteer หรือ Playwright เป็นมาตรฐาน ด้านล่างนี้คือสคริปต์ Puppeteer ขั้นต่ำที่กำหนดเส้นทางทราฟฟิกทั้งหมดผ่านพร็อกซี SOCKS5 และปิดการใช้งาน WebRTC:

const puppeteer = require('puppeteer');
const proxy = 'socks5://127.0.0.1:1080';

const browser = await puppeteer.launch({
  args: [
    `--proxy-server=${proxy}`,
    '--disable-webrtc',
    '--no-sandbox',
    '--disable-setuid-sandbox'
  ]
});
const page = await browser.newPage();
await page.authenticate({ username: 'user', password: 'pass' });
await page.goto('http://malicious.example', { waitUntil: 'networkidle0' });
// Capture screenshot, HAR, DOM snapshot
await page.screenshot({ path: 'screenshot.png' });
await browser.close();

วิธีนี้ใช้ได้ผล แต่ต้องระวัง: เบราว์เซอร์ไร้ส่วนหัวจำนวนมากสามารถตรวจจับได้ผ่าน navigator.webdriver และการขาด chrome.runtime ใช้ puppeteer-extra-plugin-stealth หรือแพตช์ซ่อนตัวในตัวของ Playwright เพื่อลดการทำลายนิ้วมือ แม้กระนั้น ชุดเครื่องมือที่ซับซ้อนจะตรวจจับ Chrome แบบไร้ส่วนหัวโดยการตรวจสอบคุณสมบัติ window.chrome ที่หายไป หรือความยาว navigator.plugins ที่ผิดปกติ มาตรการตอบโต้ที่เชื่อถือได้เพียงอย่างเดียวคือการเรียกใช้เบราว์เซอร์แบบเต็ม (ไม่ใช่ไร้ส่วนหัว) ใน VM ที่มีไดรเวอร์จอแสดงผลจริง — แต่การปรับขนาดทำได้ไม่ดี

ทางเลือกแทน urlscan.io สำหรับการวิเคราะห์แบบโฮสต์เอง

urlscan.io สะดวกแต่แชร์ข้อมูลเมตาการสแกนของคุณกับชุมชนและบันทึก IP ของคุณ สำหรับการสืบสวนที่ละเอียดอ่อน ให้โฮสต์แพลตฟอร์มจับภาพด้วยตนเอง PhantomJS ตายแล้ว ใช้ Playwright พร้อมตัวบันทึก HAR แบบกำหนดเองและอินสแตนซ์ mitmproxy ในเครื่อง mitmproxy (--mode socks5 --listen-port 8080) บันทึกคู่คำขอ/ตอบกลับทั้งหมดและอนุญาตให้แก้ไขส่วนหัวหรือการตอบกลับแบบอินไลน์ จับคู่กับ wireshark สำหรับการวิเคราะห์ PCAP อีกทางเลือกหนึ่งคือ ThreatPinch Lookup — ส่วนขยาย Chrome ที่สอบถามฟีดข่าวกรองภัยคุกคามในเครื่อง — แต่ไม่ใช่โซลูชันการแยกแบบสมบูรณ์ สำหรับการสแกนจำนวนมาก ให้ปรับใช้ PhishingKitTracker หรือสคริปต์ Python แบบกำหนดเองที่ใช้ requests พร้อมรายการพร็อกซีหมุนเวียนจาก proxybroker ข้อแลกเปลี่ยน: ระบบที่โฮสต์เองต้องบำรุงรักษาพูลพร็อกซีและโปรไฟล์เบราว์เซอร์ แต่ให้คุณควบคุมการเก็บรักษาข้อมูลได้อย่างเต็มที่ และหลีกเลี่ยงการรั่วไหลของเป้าหมายการสืบสวนของคุณไปยังบุคคลที่สาม