Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
sub.Monitor — Selbstgehostetes passives Tool zur kontinuierlichen Subdomain-Überwachung. | Kitploit
Tools/GitHubGitHub/e1abrador/sub.monitor
AufklärungInformationsbeschaffungSubdomain-Enumeration
GitHube1abrador/sub.monitor

sub.Monitor

Selbstgehostetes passives Tool zur kontinuierlichen Subdomain-Überwachung.

Repository anzeigen
17220vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

sub.Monitor

root@kitploit:~

   Schnelles und benutzerfreundliches Subdomain-Überwachungstool für kontinuierliches Attack-Surface-Management.

image

Warum?

Warum sub.Monitor wählen? Dieses Programm bietet eine einfache Einrichtung, da es SQLite zur Speicherung aller identifizierten Domains verwendet (wodurch keine vorherige Datenbankverwaltung notwendig ist). Darüber hinaus ist es hochgradig anpassbar, da Benutzer nur wenige Zeilen Code zum Skript mit ihren ausgewählten Tools hinzufügen müssen. Im Gegensatz zu anderen bestehenden Lösungen, die auf Datenbanken wie MySQL oder MongoDB basieren, kann die Initialisierung des Skripts zu einer mühsamen Aufgabe werden.

Funktionen

  • Schnell
  • Einfach zu bedienen
  • Einfach zu installieren
  • Einfach anzupassen
  • Kontinuierliches Speichern von Subdomains in der lokalen Datenbank (mit der Möglichkeit, alle auszugeben)
  • Telegram/Slack/Discord-Benachrichtigungen

Hilfemenü

sub.Monitor Flags:

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

Vorher notwendige Konfigurationen

Du musst die Pfade der Konfigurationsdateien (API) in der Datei config.ini eintragen.

  • Subfinder API-Konfigurationsdatei.
  • Amass API-Konfigurationsdatei.
  • Notify API-Konfigurationsdatei.
  • Du musst die Pfade der Binärdateien und Konfigurationsdateien in der Datei sub.monitor-config.ini angeben.
  • Führe abschließend pip3 install -r requirements.txt aus.

Du kannst deine eigenen Tools einfach im Skript implementieren, indem du die folgenden Codezeilen modifizierst:

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}'

Wichtig zu beachten: Wenn du ein benutzerdefiniertes Tool hinzufügst, muss die letzte Ausgabe die Domain-Ergebnisse sein, damit sub.Monitor diese in der Datenbank speichern kann. Zum Beispiel wäre die Nutzungsweise:

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

Füge hier auch den Namen deines Tools hinzu:

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

Schließlich musst du das Tool natürlich in der Datei sub.monitor-config.ini hinzufügen, damit das Python-Skript die Binärdatei aus dieser Konfigurationsdatei abrufen kann.

Das Einzige, was benötigt wird, ist, dass nach Abschluss des Befehls in der Ausgabe alle entdeckten Domains angezeigt werden, damit das Tool sie in der Logdatei und in der Datenbank speichern kann.

Arbeitsplan

Zunächst einmal benötigt sub.Monitor eine Liste bereits gescannter Domains:

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

Die Datei mit den Subdomains kann nun mit folgendem Befehl an sub.Monitor übergeben werden:

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.

Es besteht auch die Möglichkeit, eine Out-of-Scope-Flag zu setzen. Angenommen, ein Bug-Bounty-Programm hat die folgende Richtlinie:

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

Es ist möglich, eine Datei mit diesen Informationen zu erstellen:

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

Nun kannst du alle entdeckten Domains manuell zur Datenbank hinzufügen (wobei diejenigen gefiltert werden, die im Scope sind):

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.

Dadurch werden alle deine Subdomains zur Datenbank hinzugefügt, aber diejenigen, die out of scope sind, werden mit der Markierung [Out of scope] versehen (wie man im Abschnitt zum Ausgeben von Domains sehen kann, wie man In-Scope-Domains aus der Datenbank filtert).

Um zu bestätigen, dass die Domain zur Datenbank hinzugefügt wurde, führe folgenden Befehl aus:

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]

Sobald es korrekt geladen wurde, kann der Überwachungsprozess gestartet werden. Es wird empfohlen, TMUX auf einem VPS zu verwenden und ihn für längere Zeit laufen zu lassen. Mit folgendem Befehl führt das Skript die Subdomain-Erkennungstools aus und vergleicht die neuen Ergebnisse mit den alten. Wenn eine neue Subdomain gefunden wird, fügt sub.Monitor sie zuerst zur lokalen Datenbank hinzu (damit sie bei dieser Entdeckung nicht mehr benachrichtigt wird) und benachrichtigt den Benutzer dann über Slack/Telegram/Discord.

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

Wenn eine Subdomain gefunden wird, zeigt sub.Monitor die folgende Meldung in der Ausgabe an:

root@kitploit:~
➜ python3 monitor.py -D ibm.com -H 8 # Um die Subdomains zu filtern, die im aktuellen Scope sind, von denen, die out of scope sind, kannst du:
                                      # 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

Es ist auch möglich, mehr als eine Domain zu überwachen, mit folgendem Befehl:

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

Nachdem diese Meldungen gemeldet wurden, erhält der Benutzer gleichzeitig die Benachrichtigungen auf Telegram.

image

Wie verwalte ich die Benachrichtigungen? Ich habe einen ziemlich einfachen (und einfach zu verwaltenden) Weg gefunden, um alle neu entdeckten Domains mit Discord zu sehen. Ich habe das so eingerichtet (verpixelt, da es sich um private Programme handelt):

image

Die Idee ist, zuerst eine Kategorie für den Programmnamen zu erstellen:

> Yahoo

--- yahoo.com

--- yahoo.net

--- usw.

> IBM

--- ibm.com

--- whateverdomain.com

--- usw.

So sieht meine Notify-Konfigurationsdatei aus:

image

Ich empfehle, dies für jede Domain zu tun (es mag mühsam sein, dies einzurichten, aber es ist eine großartige Möglichkeit, die Ergebnisse zu verwalten). Das Skript monitor.py sendet die Ergebnisse an den gegebenen Webhook basierend auf der ID (die mit dem zu scannenden Domainnamen übereinstimmen muss).

Angenommen, das Skript läuft seit 2 Monaten und du möchtest alle Ergebnisse (alte Subdomains und neu entdeckte) abrufen. Mit sub.Monitor ist das möglich, indem du die --dump-Flag verwendest:

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

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

                    github.com/e1abrador/sub.Monitor

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

Du kannst auch folgenden Befehl verwenden, um das Datum anzuzeigen, an dem die Domain entdeckt wurde:

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]

Da es sehr wahrscheinlich ist, dass einige Domains mit python3 monitor.py -d ibm.com --dump --info als out of scope markiert sind, kann man mit der --inscope-Flag nur die Domains im Scope anzeigen:

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]

Danksagung

Danke an:

  • Projectdiscovery für die Entwicklung von subfinder und notify!.
  • Vielen Dank an OWASP für ihr großartiges Projekt amass!.
  • Tomnomnom für die Entwicklung von assetfinder!.

TODO

  • Implementierung der Überwachung von mehr als einer Subdomain. [ERLEDIGT]
  • Kontinuierliches Lesen der Domain-Dateien, sodass neue Domains gescannt werden können, ohne das Programm anzuhalten. [ERLEDIGT]
  • Implementierung von Out-of-Scope-Filterung [ERLEDIGT]

Wenn du eine Idee für eine neue Funktion hast, erstelle einen PR unter https://github.com/e1abrador/sub.Monitor/pulls.

Viel Erfolg und gute Jagd! Wenn du das Tool (oder andere) wirklich liebst, oder sie dir geholfen haben, eine tolle Prämie zu ergattern, denk darüber nach, MIR EINEN KAFFEE ZU KAUFEN! ☕ (Ich könnte das Koffein gebrauchen!)

⚪ e1abrador

Twitter: https://twitter.com/e1abrador

Buy Me a Coffee at ko-fi.com

Tool herunterladen