Assetfinder
Assetfinder เป็นเครื่องมือ subdomain enumeration ขนาดเล็กเร็วจาก tomnomnom — ดึง subdomain/related domain จากหลาย passive source (CT logs, search engine, API) เด่นเรื่องความเรียบง่ายและออกแบบมาเพื่อ pipeline แบบ Unix philosophy บทนี้ลงลึกการติดตั้ง/ใช้งาน, source ที่ query, การต่อ pipeline เข้า dnsx/httpx/nuclei, ตำแหน่งในกระบวนการ recon และการเทียบกับ subfinder/amass (เนื้อหาเพื่อ recon ที่ได้รับอนุญาต)
1. Assetfinder คืออะไร
Assetfinder (โดย tomnomnom) เป็นเครื่องมือเล็กๆ ที่ทำสิ่งเดียวให้ดี — หา domain และ subdomain ที่เกี่ยวกับเป้าหมายจาก passive source หลายแหล่ง โดยไม่ยิง traffic ไปที่ target ตรงๆ จุดเด่นคือ เรียบง่าย เร็ว และออกแบบมาเพื่อ pipeline — output เป็นบรรทัดละ subdomain ต่อกับ tool อื่นด้วย pipe ได้ทันที เป็นส่วนหนึ่งของชุดเครื่องมือ recon สาย Unix philosophy (ทำอย่างเดียว, อ่าน stdin, เขียน stdout)
'passive' หมายถึงมันไป query แหล่งข้อมูลบุคคลที่สาม (Certificate Transparency logs, search engine, DNS dataset) แทนการ brute-force หรือยิง DNS query ตรงไปที่ target — จึงเงียบ, เร็ว, และไม่ค่อยทิ้งร่องรอยบน infrastructure ของเป้าหมาย
2. Source ที่ assetfinder query
| source | ให้ข้อมูลอะไร |
|---|---|
| crt.sh (Certificate Transparency) | subdomain จาก SAN ใน TLS certificate |
| certspotter | CT log อีกแหล่ง |
| hackertarget | DNS/host dataset |
| threatcrowd | passive DNS + intel |
| Wayback Machine (web.archive.org) | host ที่เคยถูก archive |
| dns.bufferover.run | passive DNS dataset |
| Facebook CT API (ถ้าตั้ง token) | CT log ผ่าน Graph API |
| VirusTotal (ถ้าตั้ง token) | subdomain ที่เคยพบ |
FB_APP_ID/FB_APP_SECRET, VT_API_KEY) ถ้าไม่ตั้ง assetfinder ก็ข้ามไปเงียบๆ — จึงควรตั้ง token เพื่อ coverage ที่ดีกว่า3. ติดตั้ง + การใช้
# ติดตั้ง (ต้องมี Go)
go install github.com/tomnomnom/assetfinder@latest
# binary จะอยู่ที่ ~/go/bin/assetfinder (เพิ่มเข้า PATH)
# หา subdomain + related domain ทั้งหมด
assetfinder example.com
# เฉพาะ subdomain ของ domain นี้ (ตัด related domain อื่นออก)
assetfinder --subs-only example.com
# เก็บผลลงไฟล์
assetfinder --subs-only example.com > subs.txt
# ตั้ง token เพิ่ม coverage (optional)
export VT_API_KEY="..."
export FB_APP_ID="..." ; export FB_APP_SECRET="..."--subs-only จะคืน 'related domain' (โดเมนที่เกี่ยวข้องแต่คนละ root เช่น CDN, พาร์ตเนอร์) ซึ่งอาจนอก scope — ในงาน bug bounty ให้ใช้ --subs-only แล้วกรองด้วย grep เพื่ออยู่ใน scope เสมอ4. Pipeline (จุดเด่นที่แท้จริง)
assetfinder ออกแบบมาเพื่อเป็น 'ต้นน้ำ' ของ pipeline — output ดิบต่อเข้า tool ที่ resolve (dnsx), probe HTTP (httpx), และสแกน (nuclei/subzy) ได้ทันที นี่คือพลังจริงเมื่อรวมกับชุดเครื่องมือของ projectdiscovery
# assetfinder → resolve → probe alive (one-liner)
assetfinder --subs-only example.com | dnsx -silent | httpx -silent -title -status-code
# รวมหลาย tool → dedupe → probe
(assetfinder --subs-only example.com; subfinder -d example.com -silent) \
| sort -u > all_subs.txt
# resolve → probe → เก็บ URL ที่ alive
cat all_subs.txt | dnsx -silent | httpx -silent -o alive.txt
# หา subdomain takeover จากรายการที่ได้
cat all_subs.txt | dnsx -silent -cname | httpx -silent | subzy run --targets -
# ยิง nuclei ตามหลัง
cat alive.txt | nuclei -silent -t ~/nuclei-templates/
# หลาย root domain ทีเดียว
cat domains.txt | while read d; do assetfinder --subs-only "$d"; done | sort -u5. เทียบกับ subfinder / amass
| assetfinder | subfinder | amass | |
|---|---|---|---|
| ขนาด/ความเร็ว | เล็ก เร็วสุด | เร็ว | หนัก/ช้าสุด |
| จำนวน source | น้อย (~7-8) | มาก + config API ดี | มากสุด + ASN/brute |
| passive/active | passive | passive (เน้น) | passive + active + brute |
| ความง่าย | ง่ายสุด | ง่าย | ซับซ้อน (config เยอะ) |
| เหมาะกับ | pipeline เร็วๆ | passive ครบ | coverage ลึกสุด |
- assetfinder: เล็ก เร็ว ง่าย — ดีสำหรับ pass แรกและ pipeline แต่ source น้อยกว่า
- subfinder: source เยอะกว่า, config API key ได้ง่าย — passive ที่ครบกว่า (ดู
subfinder) - amass: ครอบคลุมสุด — passive + active + ASN + brute + DNS permutation แต่ช้าและ config เยอะ (ดู
amass) - best practice: รันหลายตัวรวมกัน (assetfinder + subfinder + amass) แล้ว
sort -u— แต่ละตัว query source ไม่เหมือนกัน เจอ subdomain ไม่ซ้ำ เพิ่ม coverage - ต่อด้วยเสมอ: dnsx (resolve) → httpx (probe alive) → subzy/nuclei (takeover/scan) (ดู
subdomain-enumeration)
6. Quick Reference
- subdomain enum เล็ก/เร็ว/pipeline-friendly (tomnomnom)
- ติดตั้ง:
go install github.com/tomnomnom/assetfinder@latest - ใช้:
assetfinder --subs-only example.com > subs.txt - pipeline:
assetfinder --subs-only X | dnsx -silent | httpx -silent - รวม tool:
(assetfinder --subs-only X; subfinder -d X -silent) | sort -u - source: crt.sh/CT, certspotter, hackertarget, wayback, VT/FB (ต้อง token)
- ต่อด้วย dnsx → httpx → subzy/nuclei เสมอ
- coverage ลึกกว่า → subfinder / amass
🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ
สมมติต้องการรายชื่อ subdomain แบบไวๆ เป็น pass แรกก่อนไปทำอย่างอื่น มีแค่ Kali เปล่าๆ ทำตามนี้ทีละขั้น
- 1เช็คว่ามี Go:
go version— ถ้าไม่มีsudo apt install golang-go -y - 2ติดตั้ง assetfinder:
go install github.com/tomnomnom/assetfinder@latestแล้วเพิ่ม~/go/binเข้า PATH - 3รันครั้งแรกแบบกรองเฉพาะ subdomain:
assetfinder --subs-only target.com > subs.txt - 4เช็คจำนวน:
wc -l subs.txt— ถ้าได้เยอะพอ ไปขั้น resolve ต่อ - 5ถ้าได้น้อย ลองไม่ใส่ --subs-only ดูว่ามี related domain โผล่ไหม (แต่ระวังอาจนอก scope):
assetfinder target.com - 6ตั้ง token เพิ่ม coverage (ถ้ามีเวลา):
export VT_API_KEY=...แล้วรันใหม่ - 7ต่อ pipeline resolve+probe ทันที:
cat subs.txt | dnsx -silent | httpx -silent -title -status-code - 8ถ้ายังได้น้อยเกินไป รวมกับ tool อื่นเพิ่ม coverage:
(assetfinder --subs-only target.com; subfinder -d target.com -silent) | sort -u > all.txt - 9เจอ host ที่ alive แล้ว → เช็ค subdomain takeover ไปในตัว:
cat all.txt | httpx -silent | subzy run --targets - - 10จดรายชื่อ host ที่น่าสนใจ (admin/api/dev) ไว้ก่อนไป enum เว็บต่อ
| ขั้นตอน/งาน | เครื่องมือใน Kali | ติดตั้งเพิ่ม (ถ้าไม่มี) | เครื่องมือออนไลน์ |
|---|---|---|---|
| หา subdomain แบบเร็ว | assetfinder (ถ้ามี Go) | go install github.com/tomnomnom/assetfinder@latest | crt.sh |
| resolve subdomain | dnsx | go install github.com/projectdiscovery/dnsx/cmd/dnsx@latest | dnsdumpster.com |
| probe web alive | httpx | go install github.com/projectdiscovery/httpx/cmd/httpx@latest | hackertarget.com |
| เช็ค subdomain takeover | subzy (ถ้ามี Go) | go install github.com/PentestPad/subzy@latest | - |
| รวม source เพิ่ม coverage | subfinder, amass | go install .../subfinder@latest | securitytrails.com |
| ดู CT log ตรงๆ | curl + jq | sudo apt install jq | crt.sh |
หัวข้อที่เชื่อมโยง
โน้ตของฉัน
ยังไม่มีโน้ตสำหรับหัวข้อนี้