BOOK THIS SPACE FOR AD
ARTICLE ADก่อนหน้านี้ทุกคนคงได้รู้จักกับ Subdomain และวิธีป้องกันคร่าว ๆ แล้ว ส่วนใครที่ยังนึกไม่ออก หรือต้องการทวนเนื้อหาก่อน ก็สามารถอ่านได้ที่บทความข้างล่างเลย
เอาหล่ะ…เพื่อไม่ให้เสียเวลา
เราเชื่อว่าหลาย ๆ คนต้องผ่าน ๆ ตากับเครื่องมือค้นหา Subdomain ที่มีอยู่เยอะมากในตลาด ทั้งให้ใช้งานฟรีและเสียเงิน แล้วทุกคนเคยสงสัยไหมว่าเครื่องมือพวกนี้มันทำงานยังไง… 🤔
ดังนั้น เราจะพาทุกคนมาเจาะลึกถึงหลักการทำงานของเครื่องมือพวกนี้กัน พร้อมแล้วก็ลุยยยย
สำหรับเครื่องมือเหล่านี้ มีวิธีการในการค้นหาและรวบรวม Subdomain ได้หลากหลายวิธีเลย ซึ่งเราจะขอยกวิธีการส่วนใหญ่ที่เขามักใช้งานกัน เช่น
เป็นเทคนิคที่เราใช้ search engine ยอดฮิตอย่าง Google มาใช้งานนี้แหล่ะ หรือเรียกอีกอย่างว่า “Google hacking technique”
ซึ่งวิธีการก็ใช้คำสั่งง่าย ๆ
อย่างเช่น
site:medium.com -wwwก็จะได้ผลลัพธ์
ซึ่งจะเห็นได้ว่า สิ่งที่ Google เจอจะเป็น subdomain ที่เกี่ยวข้องกับ Medium ทั้งสิ้นงั้นเรามาอธิบายคำสั่งเพิ่มเติมสักหน่อยกันดีกว่า
site:{website} เป็นการบอกให้ Google จำกัดการค้นหาแค่ใน domain หรือเว็บที่เกี่ยวข้องเท่านั้น-www เป็นการบอกว่า ไม่ต้องรวม keyword นี้ในการค้นหา จากตัวอย่างก็คือ ไม่ต้องค้นหา subdomain ที่มีคำขึ้นต้นด้วย “www” หรือคำนี้ปนอยู่ระหว่างคำ เช่น “testwwwzaza” แบบนี้ก็จะถูกยกเว้นด้วยแล้ว Google รู้ได้ยังไง มัน Hack Domain เราหรอ 😱
คำตอบ คือเปล่า! แต่ Google มันรู้ได้จาก file ที่ชื่อว่า sitemap.xml ซึ่งไฟล์นี้เป็นไฟล์ที่ใช้บอกกับเครื่องมือค้นหาเกี่ยวกับโครงสร้างของเว็บไซต์ แล้วพอมันไปไล่อ่านตามโครงสร้างว่า มี subdomain อยู่ ก็โป๊ะเชะ เจอแล้ววว
Tip ⭐️
เมื่อ Google มันเก่งกาจแบบนี้ แล้วถ้าเราไม่ต้องการให้มันค้นหาเห็น page สำคัญ ๆ อย่าง path ที่ขึ้นต้นด้วย /admin/* ละ เราจะทำยังไง ?
วิธีการง่ายมาก
เราก็บอก Google ผ่าน file ที่ชื่อว่า robots.txt ที่อยู่ในเว็บของเรา ซึ่งเป็นไฟล์ที่ใช้กำหนดข้อจำกัดหรือบอกให้เครื่องมือค้นหาทราบว่า ไม่ควรเข้าไปส่องนะจ้ะ
ref: https://www.elliance.com/media/61664/robots_txt_file_explained.gifนอกจากนี้ ยังทำผ่าน file HTML ที่เราคุ้นตากัน โดยสามารถทำได้โดยกำหนด meta tag ใน header tag
เรียกได้ว่าเป็นวิธีสุดแสน basic กับการ brute force เพื่อค้นหา subdomainโดยการใช้ wordlist ที่มีอยู่ ซึ่ง list เหล่านี้เป็นการรวบรวมคำที่มักนิยมใช้ตั้งชื่อ subdomain กันบ่อย ๆ
ตัวอย่าง
แม้ว่า Subdomain Scanner ที่ใช้วิธีนี้ จะทำงานช้าหน่อย เพราะต้องไล่หา keyword ตาม list แต่รับประกันได้ว่ามีความแม่นยำสูง
เป็นการ copy ข้อมูล DNS zone จาก DNS server ทั้งหมด ซึ่งจะทำให้เราสามารถเห็นชื่อ subdomain ทั้งหมดที่ถูกกำหนดไว้ใน DNS server นั้นๆ
แต่วิธีนี้จะใช้ได้ก็ต่อเมื่อ DNS server นั้น system admin ไม่ได้ทำการป้องกัน AXFR request ไว้
Tip ⭐️
สิ่งสำคัญคือ AXFR request มีความเสี่ยงด้านความปลอดภัย หาก DNS server อนุญาตให้ทำการ AXFR request โดยไม่กำหนดสิทธิ์ให้เฉพาะ DNS server ที่เกี่ยวข้องเท่านั้น อาจทำให้ผู้ที่ไม่หวังดีสามารถดึงข้อมูลโซนทั้งหมดได้ ซึ่งอาจนำไปสู่การโจมตีหรือการละเมิดความปลอดภัยอื่นๆ ได้
หลายคนน่าจะอ๋อ เมื่อบอกว่า SSL/TLS ทำให้เว็บของเรา เริ่มต้นด้วย “https://” แทนที่จะเป็น “http://” ซึ่งการมี SSL นี้เองช่วยป้องกันการถูกดักจับข้อมูล (Man-in-the-Middle Attack) ทำให้ผู้ใช้เว็บแบบเรา ๆ ท่องเว็บได้อย่างปลอดภัย
แต่รู้หรือไม่ว่า ในใบรับรอง SSL/TLS จะมีข้อมูล Subject Alternative Name (SAN) ที่สามารถดึงชื่อโดเมนและโดเมนย่อยออกมาได้
ref: https://s3.us-west-2.amazonaws.com/public-files.geocerts.com/support/C47DQiuKQZeBm1l9NcnMซึ่งถ้าใครเขียน Code เก่งๆ หน่อยก็สามารถเขียน script ด้วย Python เพื่อค้นหา subdomain ได้ง่าย ๆ เลย
สำหรับวิธีการในการค้นหาและรวบรวม Subdomain จริง ๆ แล้วไม่ได้หมดเพียงเท่านี้ แต่เครื่องมือ scanner ส่วนใหญ่ก็มักหยิบวิธีการที่อธิบายไว้ข้างต้นไปใช้งาน
นอกจากนี้เราจะเห็นได้ว่า วิธีการเหล่านี้ก็มีจุดบอดให้เห็น ที่นักพัฒนาอย่างเราสามารถตัดไฟแต่ต้นลมได้
ดังนั้น การที่เรารู้ว่าเครื่องมือเหล่านี้มีหลักการทำงานยังไง นั้นช่วยให้เรารู้วิธีป้องกันไม่ให้ผู้ไม่หวังดีใช้เครื่องมือเหล่านี้ในการค้นหา subdomain ของเราได้… 💪