Cybersecurity 101 : Subdomain Scanner ทำงานยังไง ?

2 months ago 30
BOOK THIS SPACE FOR AD
ARTICLE AD

ก่อนหน้านี้ทุกคนคงได้รู้จักกับ Subdomain และวิธีป้องกันคร่าว ๆ แล้ว ส่วนใครที่ยังนึกไม่ออก หรือต้องการทวนเนื้อหาก่อน ก็สามารถอ่านได้ที่บทความข้างล่างเลย

เอาหล่ะ…เพื่อไม่ให้เสียเวลา

เราเชื่อว่าหลาย ๆ คนต้องผ่าน ๆ ตากับเครื่องมือค้นหา Subdomain ที่มีอยู่เยอะมากในตลาด ทั้งให้ใช้งานฟรีและเสียเงิน แล้วทุกคนเคยสงสัยไหมว่าเครื่องมือพวกนี้มันทำงานยังไง… 🤔

ดังนั้น เราจะพาทุกคนมาเจาะลึกถึงหลักการทำงานของเครื่องมือพวกนี้กัน พร้อมแล้วก็ลุยยยย

สำหรับเครื่องมือเหล่านี้ มีวิธีการในการค้นหาและรวบรวม Subdomain ได้หลากหลายวิธีเลย ซึ่งเราจะขอยกวิธีการส่วนใหญ่ที่เขามักใช้งานกัน เช่น

เป็นเทคนิคที่เราใช้ search engine ยอดฮิตอย่าง Google มาใช้งานนี้แหล่ะ หรือเรียกอีกอย่างว่า “Google hacking technique”

ซึ่งวิธีการก็ใช้คำสั่งง่าย ๆ

อย่างเช่น

site:medium.com -www

ก็จะได้ผลลัพธ์

ตัวอย่างผลลัพธ์จากคำสั่ง “site:medium.com -www”

ซึ่งจะเห็นได้ว่า สิ่งที่ Google เจอจะเป็น subdomain ที่เกี่ยวข้องกับ Medium ทั้งสิ้นงั้นเรามาอธิบายคำสั่งเพิ่มเติมสักหน่อยกันดีกว่า

site:{website} เป็นการบอกให้ Google จำกัดการค้นหาแค่ใน domain หรือเว็บที่เกี่ยวข้องเท่านั้น-www เป็นการบอกว่า ไม่ต้องรวม keyword นี้ในการค้นหา จากตัวอย่างก็คือ ไม่ต้องค้นหา subdomain ที่มีคำขึ้นต้นด้วย “www” หรือคำนี้ปนอยู่ระหว่างคำ เช่น “testwwwzaza” แบบนี้ก็จะถูกยกเว้นด้วย

แล้ว Google รู้ได้ยังไง มัน Hack Domain เราหรอ 😱

คำตอบ คือเปล่า! แต่ Google มันรู้ได้จาก file ที่ชื่อว่า sitemap.xml ซึ่งไฟล์นี้เป็นไฟล์ที่ใช้บอกกับเครื่องมือค้นหาเกี่ยวกับโครงสร้างของเว็บไซต์ แล้วพอมันไปไล่อ่านตามโครงสร้างว่า มี subdomain อยู่ ก็โป๊ะเชะ เจอแล้ววว

ref: https://spotibo.com/wp-content/uploads/2017/11/sitemap-vs-website.png

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

ref: https://www.ilovewp.com/wp-content/uploads/2017/08/hermesthemes-meta-robots-noindex-view-source.png

เรียกได้ว่าเป็นวิธีสุดแสน basic กับการ brute force เพื่อค้นหา subdomainโดยการใช้ wordlist ที่มีอยู่ ซึ่ง list เหล่านี้เป็นการรวบรวมคำที่มักนิยมใช้ตั้งชื่อ subdomain กันบ่อย ๆ

ตัวอย่าง

แม้ว่า Subdomain Scanner ที่ใช้วิธีนี้ จะทำงานช้าหน่อย เพราะต้องไล่หา keyword ตาม list แต่รับประกันได้ว่ามีความแม่นยำสูง

ref: https://www.cloudns.net/blog/wp-content/uploads/2023/08/DNS-Zone-Transfer.png

เป็นการ 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 ของเราได้… 💪

Read Entire Article