1 คะแนน โดย GN⁺ 2025-03-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

บล็อกโฆษณา YouTube บน Apple TV

ภาพรวม

สามารถวางพร็อกซีแบบ Man-in-the-Middle ไว้ระหว่าง Apple TV กับโลกภายนอกเพื่อถอดรหัสทราฟฟิก HTTPS ได้ ทำให้สามารถอ่านข้อมูล ProtocolBuffer ที่ Google ใช้ในการแทรกโฆษณาลงใน YouTube ได้ การถอดรหัส ProtocolBuffer แบบเรียลไทม์ใช้ CPU สูง จึงอาศัยการค้นพบข้อบกพร่องในฟอร์แมต ProtocolBuffer เพื่อเอาโฆษณาออกได้

เป้าหมาย

สร้างเราเตอร์เข้ารหัสที่ทรงพลังด้วย FreeBSD และ pfSense และใช้ข้อบกพร่องของฟอร์แมต Google ProtocolBuffer เพื่อบล็อกโฆษณา YouTube บน Apple TV และ iPhone ได้อย่างสมบูรณ์ทั่วทั้งเครือข่าย

เหตุผลที่ต้องบล็อกโฆษณาและการติดตามพฤติกรรม

  • ความเป็นส่วนตัว: กิจกรรมออนไลน์ของผู้ใช้กำลังถูกเฝ้าติดตาม และนี่เป็นข้อมูลที่มีมูลค่าสูงมากสำหรับผู้ลงโฆษณา
  • แบนด์วิดท์: ทราฟฟิกเครือข่าย 25%~40% ประกอบด้วยโฆษณาและสคริปต์ติดตาม
  • คลิกเบต: คลิกเบตอาจล่อผู้ใช้ไปยังเว็บไซต์อันตรายได้
  • คริปโตแจ็กกิง: บางเว็บไซต์พยายามใช้คอมพิวเตอร์ของผู้ใช้ในการขุดคริปโตเคอร์เรนซี

ฮาร์ดแวร์เราเตอร์ที่ต้องใช้

  • มินิพีซีที่มีชุดคำสั่ง AES-NI (เช่น J4125)
  • DDR4 RAM หลายกิกะไบต์ (เช่น 32 GiB)
  • ไดรฟ์ SSD แบบ mSATA ที่เหมาะสม (เช่น 128 GiB)
  • USB drive สำหรับแฟลช pfSense

การติดตั้งและตั้งค่า pfSense

  • แฟลช pfSense ลง USB drive เพื่อติดตั้ง
  • เปิดใช้งานคำสั่งเข้ารหัส AES-NI
  • เปิดใช้งาน RAM disk เพื่อใช้กับ /var และ /tmp
  • ตั้งค่าการบล็อกโฆษณาด้วย pfBlockerNG

การแยกเครือข่าย LAN

  • สร้างเครือข่ายฮาร์ดแวร์แยกต่างหากสำหรับอุปกรณ์ที่ไม่น่าเชื่อถือ
  • ดักจับคำขอ DNS ผ่าน pfSense และบล็อกแม้กระทั่งคำขอไปยัง DNS server ที่ฮาร์ดโค้ดไว้

หลอกอัลกอริทึมโฆษณา YouTube

  • ศึกษาวิธีจำกัดโฆษณา YouTube บน Apple TV
  • เราต์ทราฟฟิกของ Apple TV แบบเลือกเฉพาะผ่าน VPN

การถอดรหัสทราฟฟิก HTTPS

  • ติดตั้ง MITMProxy เพื่อดักจับและวิเคราะห์ทราฟฟิก HTTPS
  • ทำวิศวกรรมย้อนกลับข้อความ Protobuf เพื่อลบโฆษณา

สรุป

  • การทดลองบล็อกโฆษณาผ่าน YouTube Premium
  • การพิจารณาประเด็นทางกฎหมาย เช่น DMCA และข้อกฎหมายอื่น ๆ
  • การวิเคราะห์การประยุกต์ใช้เทคนิคบล็อกโฆษณาที่ประสบความสำเร็จ

1 ความคิดเห็น

 
GN⁺ 2025-03-19
ความเห็นจาก Hacker News
  • พบว่ามีช่องโหว่ในรูปแบบ Protobuf ที่สามารถใช้ลบโฆษณาได้
    • คาดว่าเป็นการเปลี่ยนหมายเลขฟิลด์ไปเป็นหมายเลขขนาดใหญ่ที่ไม่ได้ใช้งาน
    • สแกนไบต์ของ Protobuf เพื่อหาลายเซ็น URL ของโฆษณา จากนั้นหาแท็กของฟิลด์แล้วเปลี่ยนคีย์ของฟิลด์
    • นี่ไม่ใช่ช่องโหว่ แต่เป็นพฤติกรรมที่ตั้งใจไว้
    • ถ้าพยายามหาแท็ก ก็สามารถอ่านความยาวที่อยู่ถัดไปแล้วข้ามไบต์เหล่านั้นได้
    • จำเป็นต้องคัดลอกบัฟเฟอร์หรือย้ายไบต์ แต่ byte object ที่ API ของ mitmproxy ส่งกลับมานั้นเปลี่ยนแปลงไม่ได้
    • พร็อกซีขนาดเล็กที่เขียนด้วย C++/Go สามารถทำงานแบบเดียวกันได้โดยมี overhead น้อยกว่า
    • ถ้ารูตทุกอย่างผ่านพร็อกซี ประสิทธิภาพจะลดลง
    • แทนที่จะใช้ pfSense เซิร์ฟเวอร์ Linux แบบเรียบง่ายพร้อมชุดกฎ iptables มีประสิทธิภาพมากกว่า
    • สามารถเขียนไฟล์ .proto จากฟิลด์ proto ที่ reverse engineer มาแล้ว เพื่อสร้างโค้ดและสลับแฟล็กได้
    • การเพิกเฉยต่อแท็กฟิลด์ที่ไม่รู้จักเป็นฟีเจอร์สำคัญของ Protobuf
  • ต้องการสนับสนุนครีเอเตอร์ จึงบล็อกโฆษณา YouTube แล้วสมัคร YouTube Premium
    • สงสัยว่า YouTube Premium สนับสนุนครีเอเตอร์จริงหรือไม่
  • บัญชี YouTube ของแฟนไม่มีโฆษณาแสดง
    • สงสัยว่าภายในมีการตั้งแฟล็กอะไรไว้จึงปิดโฆษณาได้
  • สามารถถอดรหัสทราฟฟิก HTTPS ได้ด้วยการวาง man-in-the-middle proxy ไว้ระหว่าง Apple TV กับโลกภายนอก
    • ประหลาดใจที่สามารถเพิ่ม CA เข้าไปใน certificate store ของ Apple TV ได้
    • ขอบคุณสำหรับคำอธิบายที่ละเอียดมาก
  • น่าเศร้าที่ต้องพยายามอย่างมากเพื่อให้ได้สิทธิ์ความเป็นเจ้าของฮาร์ดแวร์หรือซอฟต์แวร์
  • ลองกับ Apple TV หลายครั้งแต่ไม่สำเร็จ
    • ดูเหมือนว่าแอป YouTube จะใช้ certificate pinning
  • ชอบบล็อกบริการออนไลน์ทั้งเครือข่าย
    • นอกจากบล็อกโฆษณาแล้ว อยากให้มีวิธีบล็อก infinite scroll มากกว่านี้
    • อยากดูโพสต์/สตอรี่ของคนที่ติดตามใน Instagram แต่ไม่อยากให้มีการแนะนำวิดีโอที่ดึงความสนใจ
  • ไม่รู้มาก่อนว่า YouTube มีโฆษณา
    • ประสบการณ์บน AppleTV แย่กว่าบนเว็บเบราว์เซอร์ทั่วไปมาก
    • การที่ Apple ล็อกฮาร์ดแวร์ไว้ทำให้ YouTube ได้ประโยชน์จากรายได้โฆษณามากขึ้น
  • ถ้าต้องถึงขั้นถอดโปรโตคอลและ reverse engineer ก็น่าจะดีกว่าถ้าไม่ใช้อุปกรณ์ประเภทนี้
    • น่าจะดีกว่าถ้าออกจากระบบเศรษฐกิจแบบนี้และหาวิธีอื่นในการหาความบันเทิงให้ตัวเอง