tags: dns Bruteforce_Subdomain DNS_Bruteforce


 
for sub in $(cat /opt/wordlists/SecList/Discovery/DNS/subdomains-top1million-110000.txt);do dig $sub.inlanefreight.htb @10.129.66.77 | grep -v ';\|SOA' | sed -r '/^\s*$/d' | grep $sub | tee -a subdomains.txt;done 
 
ns.inlanefreight.htb.	604800	IN	A	127.0.0.1
mail1.inlanefreight.htb. 604800	IN	A	10.129.18.201
app.inlanefreight.htb.	604800	IN	A	10.129.18.15
 

| grep -v ';\|SOA'

Questo comando serve a escludere (invert match, opzione -v) le righe indesiderate.

  • ;: L’output di dig utilizza il punto e virgola per i commenti e i metadati (come ;; QUESTION SECTION:, ;; SERVER:, ecc.). Rimuovendo le righe che contengono ;, elimini tutta l’intestazione e le statistiche finali.

  • SOA: Il record Start of Authority appare spesso anche nelle risposte negative (quando un sottodominio non esiste) o nella sezione “Authority”. Rimuovendo le righe con “SOA”, si evita di salvare risultati falsi positivi o ridondanti, concentrandosi solo sulle risposte valide (come i record A o CNAME).

  • \|: È l’operatore logico “OR”. Dice a grep di rimuovere la riga se trova un punto e virgola OPPURE la stringa “SOA”.

2. | sed -r '/^\s*$/d'

Questo comando utilizza sed (Stream Editor) per rimuovere le righe vuote rimaste dopo la prima pulizia.

  • -r: Abilita le espressioni regolari estese.

  • /^\s*$/: È l’espressione regolare (regex) che identifica le righe vuote.

    • ^: Inizio della riga.

    • \s*: Qualsiasi numero di spazi bianchi (spazi o tabulazioni).

    • $: Fine della riga.

  • d: Sta per “delete”. Cancella le righe che corrispondono alla regex.

3. | grep $sub

Questo è un filtro di conferma.

  • Mantiene solo le righe che contengono effettivamente il nome del sottodominio che stai cercando in quel momento nel ciclo ($sub).

  • Serve a garantire che l’output salvato sia pertinente al sottodominio testato, scartando eventuali altre righe di “rumore” che potrebbero essere sopravvissute ai filtri precedenti.

4. | tee -a subdomains.txt

Questo comando gestisce l’output finale.

  • tee: Legge dallo standard input e scrive l’output in due direzioni contemporaneamente: lo mostra a schermo (standard output) e lo scrive in un file.

  • -a: Sta per “append”. Invece di sovrascrivere il file subdomains.txt ogni volta (che cancellerebbe i risultati precedenti), aggiunge il nuovo risultato alla fine del file esistente.

5. ;done

  • Segna semplicemente la fine del blocco di istruzioni (do ... done) del ciclo for in Bash.