Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sub.Monitor — Strumento di monitoraggio continuo passivo dei sottodomini auto-ospitato. | Kitploit
Strumenti/GitHubGitHub/e1abrador/sub.monitor
RicognizioneRaccolta InformazioniEnumerazione Sottodomini
GitHube1abrador/sub.monitor

sub.Monitor

Strumento di monitoraggio continuo passivo dei sottodomini auto-ospitato.

Vedi Repository
172202 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

sub.Monitor

root@kitploit:~

   Strumento di monitoraggio dei sottodomini veloce e facile da usare per la gestione continua della superficie d'attacco.

image

Perché?

Perché scegliere sub.Monitor? Questo programma offre una configurazione semplice grazie all'uso di SQLite per memorizzare tutti i domini identificati (eliminando la necessità di una gestione preliminare del database). Inoltre, vanta un'elevata personalizzabilità, con gli utenti che devono aggiungere solo poche righe di codice allo script utilizzando i propri strumenti. A differenza di altre soluzioni esistenti che si basano su database come MySQL o MongoDB, inizializzare lo script può diventare un compito noioso.

Caratteristiche

  • Veloce
  • Facile da usare
  • Facile da installare
  • Facile da personalizzare
  • Salva continuamente i sottodomini nel database locale (con la possibilità di esportarli tutti)
  • Notifiche Telegram/Slack/Discord

Menu di Aiuto

Flag di sub.Monitor:

root@kitploit:~
options:
  --add ADD             Domain to scan
  --out-scope OUT_SCOPE
                        File with out-of-scope domains
  --file FILE           File with known subdomains
  -D DOMAIN, --domain DOMAIN
                        Domain to scan
  -H HOURS, --hours HOURS
                        Hours between scans
  --dump                Dump all subdomains for a specific domain
  --list                List all root domains in the database
  -df DF                File with domains to scan
  --inscope             Dump only in-scope domains
  --notinscope          Dump only out-of-scope domains
  --dumpall             Dump all subdomains with their details
  --info                Show discovery date for subdomains
  -help, -?             Show this help message and exit

Configurazioni preliminari necessarie

Devi scrivere i percorsi dei file di configurazione (api) nel file config.ini.

  • File di configurazione api di Subfinder.
  • File di configurazione api di Amass.
  • File di configurazione api di Notify.
  • Dovrai specificare i binari e i percorsi di configurazione nel file sub.monitor-config.ini.
  • Infine, esegui pip3 install -r requirements.txt

Puoi facilmente implementare i tuoi strumenti nello script, basta modificare le righe di codice:

root@kitploit:~
def run_tool(tool, domain, output_file):
    print(f'[{datetime.datetime.now()}] - Running {tool} on {domain}')
    if tool == 'assetfinder':
        assetfinder_binary = config.get('Binary paths', 'assetfinder')
        cmd = f'echo {domain} | {assetfinder_binary} -subs-only | grep -E "{domain}$" |grep -v "*" | grep -v "@"'
    elif tool == 'subfinder':
        subfinder_binary = config.get('Binary paths', 'subfinder')
        subfinder_api = config.get('Api', 'subfinder_api')
        cmd = f'{subfinder_binary} -d {domain} -silent -pc {subfinder_api} -all'
    elif tool == 'amass':
        amass_binary = config.get('Binary paths', 'amass')
        amass_api = config.get('Api', 'amass_api')
        cmd = f'{amass_binary} enum -passive -norecursive -noalts -d {domain} -config {amass_api}'
    elif tool == 'my-custom-tool':
        my-custom-tool-binary = config.get('Binary paths', 'my-custom-tool-binary-or-script')
        cmd = f'{my-custom-tool-binary} -d {domain}'

È importante notare che se aggiungi uno strumento personalizzato, l'ultimo output deve essere i risultati dei domini affinché sub.Monitor li salvi nel database. Ad esempio, il modo di utilizzarlo sarebbe:

root@kitploit:~
cmd = f'bash customtool.sh {domain}''
...
cat customtool.sh
mycustomtool -d $1 > /tmp/$1.txt &>/dev/null; cat /tmp/$1.txt | unfurl domains | anew; rm -r /tmp/$1.txt

Aggiungi anche il nome del tuo strumento qui:

root@kitploit:~
                for tool in ['subfinder', 'amass', 'assetfinder', 'my-custom-tool-name']:
                    run_tool(tool, domain, output_file)

Infine, ovviamente, devi aggiungere lo strumento nel file sub.monitor-config.ini in modo che lo script Python possa ottenere il binario da quel file di configurazione.

L'unica cosa necessaria è che una volta terminato il comando, deve mostrare in output tutti i domini scoperti in modo che lo strumento possa salvarli nel file di log e nel database.

Piano di lavoro

Prima di tutto, sub.Monitor necessita di una lista di domini già scansionati:

root@kitploit:~
➜  cat ibm_sorted_subdomains.txt
test1.ibm.com
test2.ibm.com
test3.ibm.com
subtest.testX.ibm.com
...

Ora, il file contenente i sottodomini può essere passato a sub.Monitor con il comando seguente:

root@kitploit:~
python3 monitor.py --add ibm.com --file ibm_sorted_subdomains.txt
          _    ___  ___            _ _
          | |   |  \/  |           (_) |
 ___ _   _| |__ | .  . | ___  _ __  _| |_ ___  _ __
/ __| | | | '_ \| |\/| |/ _ \| '_ \| | __/ _ \| '__|
\__ \ |_| | |_) | |  | | (_) | | | | | || (_) | |
|___/\__,_|_.__/\_|  |_/\___/|_| |_|_|\__\___/|_|

                    github.com/e1abrador/sub.Monitor

[2023-06-06 18:16:26.002521] - 538 subdomains were added to the local database.

Esiste anche la possibilità di aggiungere un flag out-of-scope, per esempio, supponiamo che un programma Bug Bounty abbia la seguente politica:

root@kitploit:~
*.ibm.com - in scope
super-admin.ibm.com - out of scope
*.super-admin.ibm.com - out of scope

È possibile creare un file con questi dati:

root@kitploit:~
cat outscope.txt
super-admin.ibm.com
*.super-admin.ibm.com

Ora, puoi aggiungere manualmente tutti i tuoi domini scoperti al database (filtrando quelli in scope):

root@kitploit:~
python3 monitor.py --add ibm.com --file ibm_sorted_subdomains.txt --out-scope outscope.txt
          _    ___  ___            _ _
          | |   |  \/  |           (_) |
 ___ _   _| |__ | .  . | ___  _ __  _| |_ ___  _ __
/ __| | | | '_ \| |\/| |/ _ \| '_ \| | __/ _ \| '__|
\__ \ |_| | |_) | |  | | (_) | | | | | || (_) | |
|___/\__,_|_.__/\_|  |_/\___/|_| |_|_|\__\___/|_|

                    github.com/e1abrador/sub.Monitor

[2023-06-06 18:16:26.002521] - 538 subdomains were added to the local database.

Questo aggiungerà tutti i tuoi sottodomini al database, ma contrassegnerà quelli fuori scope con il flag [Out of scope] (vedremo come filtrare i domini in scope dal database nella sezione di esportazione dei domini).

Per confermare che il dominio è stato aggiunto al database, esegui:

root@kitploit:~
python3 monitor.py --list
          _    ___  ___            _ _
          | |   |  \/  |           (_) |
 ___ _   _| |__ | .  . | ___  _ __  _| |_ ___  _ __
/ __| | | | '_ \| |\/| |/ _ \| '_ \| | __/ _ \| '__|
\__ \ |_| | |_) | |  | | (_) | | | | | || (_) | |
|___/\__,_|_.__/\_|  |_/\___/|_| |_|_|\__\___/|_|

                    github.com/e1abrador/sub.Monitor

ibm.com [9 subdomains added manually] [2 subdomains discovered] [11 total unique in database]

Una volta caricato correttamente, il processo di monitoraggio può iniziare. Si consiglia di usare TMUX in un VPS e lasciarlo in esecuzione per molto tempo. Con il seguente comando, lo script eseguirà gli strumenti di enumerazione dei sottodomini e confronterà i nuovi risultati con quelli vecchi. Se viene trovato un nuovo sottodominio, sub.Monitor lo aggiungerà prima al database locale (quindi non notificherà più quella scoperta) e poi notificherà l'utente tramite slack/telegram/discord.

root@kitploit:~
python3 monitor.py -D ibm.com -H 12 --out-scope outscope.txt

Se viene trovato un sottodominio, sub.Monitor mostrerà il seguente messaggio nell'output:

root@kitploit:~
➜ python3 monitor.py -D ibm.com -H 8 # To filter the subdomains that are in the current scope from the out-scope ones, you can use:
                                      # python3 monitor.py -D ibm.com -H 8 --out-scope outscope.txt

          _    ___  ___            _ _
          | |   |  \/  |           (_) |
 ___ _   _| |__ | .  . | ___  _ __  _| |_ ___  _ __
/ __| | | | '_ \| |\/| |/ _ \| '_ \| | __/ _ \| '__|
\__ \ |_| | |_) | |  | | (_) | | | | | || (_) | |
|___/\__,_|_.__/\_|  |_/\___/|_| |_|_|\__\___/|_|

                    github.com/e1abrador/sub.Monitor

[2023-06-06 18:07:25.191169] - New subdomain xxxx.ibm.com discovered
[2023-06-06 18:07:25.353156] - New subdomain xyxyxyxyxyx.ibm.com discovered
[2023-06-06 18:07:25.641082] - New subdomain x1.xxxx.ibm.com discovered

È anche possibile monitorare più di un dominio, con il seguente comando:

root@kitploit:~
python3 monitor.py -df root-domains.txt -H 8
python3 monitor.py -df roots.txt -H 8 --out-scope outscope.txt

Dopo che questi messaggi vengono segnalati, contemporaneamente l'utente riceverà le notifiche su Telegram

image

Come gestisco le notifiche? Ho trovato un modo abbastanza facile (e facile da gestire) per vedere tutti i domini appena scoperti con Discord. Ho ottenuto questo (sfocato poiché sono tutti programmi privati):

image

L'idea è di creare prima una categoria relativa al nome del programma:

> Yahoo

--- yahoo.com

--- yahoo.net

--- ecc.

> IBM

--- ibm.com

--- whateverdomain.com

--- ecc.

Ecco come appare il mio file di configurazione di notify:

image

Raccomando di fare questo per ogni dominio (potrebbe essere piuttosto noioso da configurare, ma è un ottimo modo per gestire i risultati). Lo script monitor.py invierà i risultati al webhook specificato in base all'ID (che deve essere lo stesso del nome del dominio da scansionare).

Supponiamo che lo script sia stato in esecuzione per 2 mesi e tu voglia ottenere tutti i risultati (vecchi sottodomini e quelli scoperti di recente). Con sub.Monitor è possibile utilizzando il flag --dump:

root@kitploit:~
python3 monitor.py -D ibm.com --dump

          _    ___  ___            _ _
          | |   |  \/  |           (_) |
 ___ _   _| |__ | .  . | ___  _ __  _| |_ ___  _ __
/ __| | | | '_ \| |\/| |/ _ \| '_ \| | __/ _ \| '__|
\__ \ |_| | |_) | |  | | (_) | | | | | || (_) | |
|___/\__,_|_.__/\_|  |_/\___/|_| |_|_|\__\___/|_|

                    github.com/e1abrador/sub.Monitor

Subdomains for ibm.com:
subdomain1.ibm.com
subdomain2.ibm.com
...

Puoi anche usare il seguente comando per vedere il giorno in cui il dominio è stato scoperto:

root@kitploit:~
python3 monitor.py -D ibm.com --dump --info

          _    ___  ___            _ _
          | |   |  \/  |           (_) |
 ___ _   _| |__ | .  . | ___  _ __  _| |_ ___  _ __
/ __| | | | '_ \| |\/| |/ _ \| '_ \| | __/ _ \| '__|
\__ \ |_| | |_) | |  | | (_) | | | | | || (_) | |
|___/\__,_|_.__/\_|  |_/\___/|_| |_|_|\__\___/|_|

                    github.com/e1abrador/sub.Monitor

Subdomains for ibm.com:
test.ibm.com [discovered on 06/08/2023]
test2.ibm.com [discovered on 08/08/2023] [Out of scope]

Poiché è molto probabile che alcuni domini siano contrassegnati come fuori scope usando il comando python3 monitor.py -d ibm.com --dump --info, per mostrare solo i domini in-scope è possibile usare il flag --inscope:

root@kitploit:~
python3 monitor.py -D ibm.com --dump --info --inscope

          _    ___  ___            _ _
          | |   |  \/  |           (_) |
 ___ _   _| |__ | .  . | ___  _ __  _| |_ ___  _ __
/ __| | | | '_ \| |\/| |/ _ \| '_ \| | __/ _ \| '__|
\__ \ |_| | |_) | |  | | (_) | | | | | || (_) | |
|___/\__,_|_.__/\_|  |_/\___/|_| |_|_|\__\___/|_|

                    github.com/e1abrador/sub.Monitor

Subdomains for ibm.com:
test.ibm.com [discovered on 06/08/2023]
test3.ibm.com [discovered on 08/08/2023]

Ringraziamenti

Grazie a:

  • Projectdiscovery per aver creato subfinder e notify!.
  • Grazie a OWASP per il loro fantastico progetto amass!.
  • Tomnomnom per aver creato assetfinder!.

TODO

  • Implementare il monitoraggio di più di un sottodominio. [FATTO]
  • Leggere continuamente i file dei domini in modo che nuovi domini possano essere scansionati senza fermare il programma. [FATTO]
  • Implementare il filtraggio fuori scope [FATTO]

Se hai qualche idea per nuove funzionalità apri una PR su https://github.com/e1abrador/sub.Monitor/pulls.

Buona fortuna e buona caccia! Se ami davvero lo strumento (o altri), o ti hanno aiutato a trovare una fantastica bounty, considera OFFRIMI UN CAFFÈ! ☕ (Potrei usare la caffeina!)

⚪ e1abrador

Twitter: https://twitter.com/e1abrador

Buy Me a Coffee at ko-fi.com

Scarica lo strumento