คลัง
recon

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 ที่ได้รับอนุญาต)

BeginnerIntermediate#assetfinder#recon#subdomain#tomnomnom#passive#pipeline#httpx#dnsx

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 ของเป้าหมาย

เนื้อหานี้เพื่อการ reconnaissance ในงานที่ได้รับอนุญาต (CTF, bug bounty scope, pentest engagement) เท่านั้น — ยืนยัน scope ก่อนเสมอ

2. Source ที่ assetfinder query

sourceให้ข้อมูลอะไร
crt.sh (Certificate Transparency)subdomain จาก SAN ใน TLS certificate
certspotterCT log อีกแหล่ง
hackertargetDNS/host dataset
threatcrowdpassive DNS + intel
Wayback Machine (web.archive.org)host ที่เคยถูก archive
dns.bufferover.runpassive DNS dataset
Facebook CT API (ถ้าตั้ง token)CT log ผ่าน Graph API
VirusTotal (ถ้าตั้ง token)subdomain ที่เคยพบ
บาง source (Facebook, VirusTotal) ต้องตั้ง environment variable token ถึงจะ query ได้ (FB_APP_ID/FB_APP_SECRET, VT_API_KEY) ถ้าไม่ตั้ง assetfinder ก็ข้ามไปเงียบๆ — จึงควรตั้ง token เพื่อ coverage ที่ดีกว่า

3. ติดตั้ง + การใช้

assetfinder — พื้นฐานLinux
# ติดตั้ง (ต้องมี 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 กรองเฉพาะ subdomain ของ target (ไม่เอา related domain เช่น partner/CDN); output บรรทัดละ host — พร้อม pipe ต่อ
assetfinder แบบไม่ใส่ --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

ต่อ pipeline เข้า tool อื่นLinux
# 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 -u
รูปแบบมาตรฐาน: assetfinder | dnsx (resolve) | httpx (probe) | nuclei/subzy (สแกน); รวมกับ subfinder แล้ว sort -u เพิ่ม coverage
ตำแหน่งใน recon pipeline
assetfinder passive subs dnsx resolve DNS httpx probe alive nuclei / subzy scan / takeover | pipe บรรทัดละ host ต่อกันตรงๆ (Unix philosophy)

5. เทียบกับ subfinder / amass

assetfindersubfinderamass
ขนาด/ความเร็วเล็ก เร็วสุดเร็วหนัก/ช้าสุด
จำนวน sourceน้อย (~7-8)มาก + config API ดีมากสุด + ASN/brute
passive/activepassivepassive (เน้น)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. 1เช็คว่ามี Go: go version — ถ้าไม่มี sudo apt install golang-go -y
  2. 2ติดตั้ง assetfinder: go install github.com/tomnomnom/assetfinder@latest แล้วเพิ่ม ~/go/bin เข้า PATH
  3. 3รันครั้งแรกแบบกรองเฉพาะ subdomain: assetfinder --subs-only target.com > subs.txt
  4. 4เช็คจำนวน: wc -l subs.txt — ถ้าได้เยอะพอ ไปขั้น resolve ต่อ
  5. 5ถ้าได้น้อย ลองไม่ใส่ --subs-only ดูว่ามี related domain โผล่ไหม (แต่ระวังอาจนอก scope): assetfinder target.com
  6. 6ตั้ง token เพิ่ม coverage (ถ้ามีเวลา): export VT_API_KEY=... แล้วรันใหม่
  7. 7ต่อ pipeline resolve+probe ทันที: cat subs.txt | dnsx -silent | httpx -silent -title -status-code
  8. 8ถ้ายังได้น้อยเกินไป รวมกับ tool อื่นเพิ่ม coverage: (assetfinder --subs-only target.com; subfinder -d target.com -silent) | sort -u > all.txt
  9. 9เจอ host ที่ alive แล้ว → เช็ค subdomain takeover ไปในตัว: cat all.txt | httpx -silent | subzy run --targets -
  10. 10จดรายชื่อ host ที่น่าสนใจ (admin/api/dev) ไว้ก่อนไป enum เว็บต่อ
assetfinder ได้ผลไหม? ทำอะไรต่อ
assetfinder --subs-only target.com
เก็บลง subs.txt
ได้ subdomain พอไหม?
✅ ได้พอสมควร→ resolve/probe ต่อ
❌ ได้น้อย/ว่างเปล่า→ รวม tool อื่นเพิ่ม coverage
dnsx (resolve) → httpx (probe alive)
✅ เจอ host alive→ เช็ค takeover + enum ต่อ
❌ resolve ไม่ติดสักตัว→ เช็ค DNS ของเรา / ลอง tool อื่น
ขั้นตอน/งานเครื่องมือใน Kaliติดตั้งเพิ่ม (ถ้าไม่มี)เครื่องมือออนไลน์
หา subdomain แบบเร็วassetfinder (ถ้ามี Go)go install github.com/tomnomnom/assetfinder@latestcrt.sh
resolve subdomaindnsxgo install github.com/projectdiscovery/dnsx/cmd/dnsx@latestdnsdumpster.com
probe web alivehttpxgo install github.com/projectdiscovery/httpx/cmd/httpx@latesthackertarget.com
เช็ค subdomain takeoversubzy (ถ้ามี Go)go install github.com/PentestPad/subzy@latest-
รวม source เพิ่ม coveragesubfinder, amassgo install .../subfinder@latestsecuritytrails.com
ดู CT log ตรงๆcurl + jqsudo apt install jqcrt.sh
🚑 ถ้าตันสนิท ลองท่าถัดไป: Subfinder (source เยอะกว่า config API ได้ ลองสลับ/รวมกัน), Amass (ถ้าต้องการ coverage ลึกสุด ยอมรับว่าช้ากว่า), DNS Enumeration (ลองมุมอื่น เช่น zone transfer แทนการหา subdomain แบบ passive), Subdomain Enumeration (ดู workflow รวมทั้งหมดตั้งแต่ passive ถึง takeover check)

โน้ตของฉัน

ยังไม่มีโน้ตสำหรับหัวข้อนี้