Artikel mit Tag pentest

Nuclei - schneller Schwachstellen Scanner mit praktischen Vorlagen

In der Vergangenheit wurden auf ITrig öfters Security Scanner erwähnt, z.B. OpenVAS oder Trivy. Diese Security Scanner sind natürlich nicht die einzigen im Internet. Ein weiterer Kandidat auf Go Basis ist Nuclei. Der vorlagenbasierte Schwachstellen-Scanner ist inzwischen Teil des Kali-Universums (2022.1) und bekommt daher heute einen gesonderten Artikel spendiert.

Nuclei

Das Open-Source-Tool scannt verschiedene Protokolle (TCP, SSH, DNS, HTTP/S, SSL, Websocket, Whois usw.) auf Schwachstellen und mehr. Dazu werden YAML-Vorlagen verwendet. Diese Templates werden zum größten Teil von der Community beigesteuert, können aber auch selbst für die eigenen Bedürfnisse geschrieben werden. So kann für die vor wenigen Tagen veröffentlichte Confluence Lücke CVE-2022-26134 bereits ein Scan Template gefunden werden.

 

nuclei-flow

Neben Nuclei bietet ProjectDiscovery noch weitere gute Programme für das Security-Umfeld. Beispielsweise subfinder, ein Subdomain Discovery Tool.

Bevor tiefer in Nuclei eingetaucht werden kann, muss der Scanner installiert werden.

Installation Nuclei unter Debian/Ubuntu

Da das Tool auf der Programmiersprache Go basiert, muss diese zunächst installiert werden.

curl -OL https://go.dev/dl/go1.18.3.linux-amd64.tar.gz
sudo tar -C /usr/local -xvf go1.18.3.linux-amd64.tar.gz
sudo nano ~/.profile
    export PATH=$PATH:/usr/local/go/bin
source ~/.profile

Alternativ

sudo apt install golang-1.16

Nun kann die neueste Nuclei Version gebaut werden.

git clone https://github.com/projectdiscovery/nuclei.git
cd nuclei/v2/cmd/nuclei
go build
sudo mv nuclei /usr/local/bin/
nuclei -version

Nach der Installation sollte die Datenbank aktualisiert werden, damit Templates zur Verfügung stehen.

nuclei -ut
?  nuclei git:(master) nuclei -ut

                     __     _
   ____  __  _______/ /__  (_)
  / __ \/ / / / ___/ / _ \/ /
 / / / / /_/ / /__/ /  __/ /
/_/ /_/\__,_/\___/_/\___/_/   2.7.2

        projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions.
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
[INF] nuclei-templates are not installed, installing...
[INF] Successfully downloaded nuclei-templates (v9.0.6) to /home/user/nuclei-templates. GoodLuck!

ls -l ~/nuclei-templates/

Nachdem die Template-Datenbank aktualisiert wurde, können einzelne Vorlagen direkt in den Scanbefehl eingebunden werden.

Im Folgenden möchte ich einen kleinen Teil der möglichen Befehle mithilfe von Templates aufzeigen:

Einfacher API Scan

nuclei -u $URL -t ~/nuclei-templates/exposures/apis/

WordPress Scan

nuclei -u $URL -t ~/nuclei-templates/vulnerabilities/wordpress/

CVE Scan

nuclei -u $URL ~/nuclei-templates/cves/2022/CVE-2022-XXXX.yaml

Token Spray

nuclei -u $URL ~/nuclei-templates/token-spray/ -var token=XXX_TOKEN_XXX

Listen

Der Scanner kann mit Listen umgehen, was beim Scannen mehrerer URLs durchaus helfen kann.

nuclei -u $URL -list http_urls.txt

Filter

Nuclei unterstützt Filter, wie tags, severity, author

nuclei -u $URL -tags cve

Workflows

Nuclei kann Workflows abbilden, d.h. es könnten z.B. Templates in einem Workflow gebündelt werden. Hier ein Beispiel:

id: workflow-example
info:
  name: Test Workflow Template
  author: pdteam

workflows:
  - template: technologies/tech-detect.yaml
    matchers:
      - name: wordpress
        subtemplates:
          - template: cves/CVE-2019-6715.yaml
          - template: cves/CVE-2019-9978.yaml

Auf solche Workflows können wiederum auch Filter angesetzt werden

nuclei -u $URL -w workflows/workflow-example.yaml -severity critical,high -list http_urls.txt

Rate Limits

Um die Anzahl der gleichzeitigen Zugriffe zu regulieren, können Rate Limits gesetzt werden.

  • rate-limit     Control the total number of request to send per seconds
  • bulk-size     Control the number of hosts to process in parallel for each template
  • c     Control the number of templates to process in parallel

Custom Header

Es kann notwendig sein, einen eigenen Header zu setzen. Gerade bei BugBounty Programmen oder um euch als Pentester erkennen zu geben. Dazu kann die "/home/user/.config/nuclei/config.yaml" angepasst werden:

    # Headers to include with each request.
header:
  - 'X-BugBounty-Hacker: h1/geekboy'
  - 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) / nuclei'

Wer dies ad hoc via CLI erledigen möchte, der muss nur "Header" in der Befehlskette verwenden.

nuclei -header 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) / nuclei' -list urls.txt -tags cves

Hier endet auch schon der Schnelleinstieg in Nuclei. Ich hoffe, ihr habt einen schnellen Einblick bekommen, was mit dem Scanner möglich ist und warum die vorhandenen Vorlagen und Einstellmöglichkeiten Nuclei momentan zu einem sehr beliebten Tool machen.

Weitere Tipps findet ihr direkt auf Github oder beim Template Guide

Viel Erfolg beim Testen der eigenen Webseite, Apps, Sockets.

 

Security Distributionen: Kali Linux 2021.2, NST 34, Parrot OS 4.11

Nachdem ich die letzte Release-Runde ausgelassen hatte, möchte ich die aktuelle wieder mitnehmen und ein paar Worte über Kali Linux, NST und Parrot verlieren.

Kali Linux 2021.2

kali

Das neueste Release stellt einen Mix aus Verbesserungen des vorhandenen Systems und der Einführungen einiger Neuerungen dar.

Kaboxer

Das CLI Tool soll in Zukunft eine Paketierung von Programmen mit vielen Abhängigkeiten erleichtern. Dazu werden Kaboxer/Docker Images erstellt. Alles, was es dazu braucht, ist einen Nutzer, welcher Mitglied in der Kaboxer/Docker Gruppe ist, ein Dockerfile und eine kaboxer.yaml.

Damit lassen sich nun Images bauen, welche die gewünschten Abhängigkeiten enthalten. Auch eine Einbindung in das Kali Startmenü ist zum Beispiel möglich. Hier ein grobes Beispiel.

Dockerfile erstellen

FROM debian:stable-slim
RUN apt update && apt install -y \
    python3 \
    python3-prompt-toolkit
COPY ./hello /usr/bin/hello
RUN mkdir /kaboxer \
 && hello version > /kaboxer/version

kaboxer.yaml erstellen

application:
  id: hello-cli
  name: Hello World for Kaboxer (CLI)
  description: >
    hello-kbx is the hello-world application demonstrator for Kaboxer
packaging:
  revision: 1
components:
  default:
    run_mode: cli
    executable: /usr/bin/hello cli

builden

kaboxer build hello-cli

ausführen

kaboxer run hello-cli

Weitere Details findet ihr unter packaging-apps-with-kaboxer.

Fazit

Ein praktisches Tool, welches sicherlich das Tool Spektrum der Distribution erweitern wird.

Auch wenn beispielsweise Greenbone Vulnerability Management bereits mit Kali ausgeliefert wird, würde sich dieses Tool sehr gut für einen Kaboxer Container eignen.

Drei Tools bringt Kali Linux bereits auf diese Weise mit:

  • Covenant - Daemon using server/client network model

Kali Tweaks

Eine weitere Neuerung sind Kali Tweaks. Diese erlauben es das System auf die eigenen Bedürfnisse besser anzupassen. So lassen sich damit Repositorys verwalten, Virtualisierungseinstellungen anpassen oder Metapakete installieren.
Auch hierzu haben die Entwickler einen eigenen Artikel angelegt.

Sonstiges

Die restlichen Meldungen beziehen sich auf die Unterstützung neuer Systeme wie Raspberry Pi 400 oder den Support von Nethunter für Android 11. Für ersteres gibt es nun mit kalipi-config eine eigene Config Oberfläche speziell für Kali Linux.

Neben den kosmetischen Anpassungen wurden ebenfalls neue Tools integriert. So ist unter anderem das Reverse Engineering Tool Ghidra und Visual Studio (OSS) Code mit an Bord oder der Webserver Verzeichnis Scanner Dirsearch, sowie Cloudbrute für eine Dateisuche in der Cloud.

Alle Neuerungen, Tools und Co finden sich ebenfalls im Release Log.

Download


NST 34

nst

Das Network Security Toolkit hat ebenfalls ein Update auf eine neue Version erhalten.

Bei der Fedora basierten Distribution halten sich die Neuerungen in Grenzen. Die Weboberfläche NST WUI bindet nun lft (Layer-4 Traceroute) und Ntopng REST API ein. Der Verzeichnisscanner dirble beherrscht nun die Ausgabe in Tabellenform. Das alles läuft auf dem Linux Kernel 5.12.10.

Weitere Änderungen können direkt im Changelog nachgelesen werden.

Download


Parrot OS 4.11.2

parrot

Der Vollständigkeit halber sei hier noch das Release vom März erwähnt, welches einen neuen Kernel 5.10 und viele Updates auf der Tooling Seite erhalten hat. Auch hier lässt sich alles im Release Log nach recherchieren.

Download



Übersicht 06/2021

 

Name Version Tools Besonderes Basis GUI
Autopsy 4.18 ??? The Sleuth Kit Windows  
BackBox 7.0 100+ AWS Ubuntu Xfce
BlackArch 2020.12.01 1750+ ArchLinux ArchLinux Multi
CAINE 11 100+ WinUFO Ubuntu Mate
DracOS 3.0   veraltet LFS DWM
DEFT Zero 2018.2   offline Lubuntu 14.04 Lxde
Kali Linux 2021.01 300+ ARM Images Debian Testing Multi
Kali AppStore   40+   Android  
LionSec 5.0   veraltet Ubuntu  
Matriux v3 RC1   offline Debian Gnome
NST 34 ??? Server integriert Fedora  
NetSecL OS 6.0   veraltet OpenSuse Lxde
Paladin 7.0     Ubuntu  
Parrot OS 4.11.2 700+ Cloud fähig Debian Buster MATE/KDE
Pentoo 2018.0 RC7.1   veraltet Gentoo Xfce
Ronin     veraltet Lubuntu Lxde
Sans SIFT 3.0   veraltet Ubuntu  

Parrot 4.9 Security OS und Kali NetHunter Images für Nexus 6P, OnePlus 7 und mehr veröffentlicht

Im Security OS Bereich gab es in letzter Zeit ein paar kleine Updates.

Parrot OS 4.9

Knapp einen Monat nach der letzten Version wurde Parrot 4.9 mit einem neuen Kernel (5.5.x) und einem neuem Installer basierend auf Calamares veröffentlicht. Zusätzlich wurde das Startmenü entkernt und alte, doppelte oder fehlerhafte Einträge entfernt.

ParrotOS

Wegen der vielen Paketänderungen, gerade in Bezug auf Python 2, hat man sich entschieden die Versionsnummer anstatt von 4.8.1 auf 4.9 anzuheben.

Das Team hat einige Pentest Tools aus der Distribution entfernt, da sie nicht auf Python 3 aktualisiert wurden. Die Entwcikler freuen sich auf Vorschläge, welche Python 3 unterstützen.

Ein größeres Update hat Anonsurf erhalten.  Der anonyme Surfmodus wurde an vielen Punkten, wie DNS, Autostart, usw. verbessert, hat allerdings noch keine GUI erhalten.

Download Parrot


Kali NetHunter Updates

Bereits im April gab es bei Kali NetHunter diverse Updates, so wurden einige neue Images veröffentlicht.

  • Nexus 6P with Android 8.1
  • Nexus 6P with LineageOS 17.1
  • OnePlus 7 with Android 10
  • Xiaomi Mi 9T with Miui 11

Weitere Neuerungen sind:

  • Monitor Unterstützung für Qualcomm Wifi Chips in verschiedenen Snapdragon SOCs
  • Neuer RTL88XXXU Treiber mit Injection Unterstützung
  • Neue GUI zur Verwaltung von USB-Funktionen für HID-Angriffe und vieles mehr
  • Gitlab CI zur drastischen Beschleunigung der Release-Workflows
  • NetHunter Kernel-Builder zur Vereinfachung der Erstellung benutzerdefinierter Kernel

Download NetHunter


Übersicht 05/2020

 

Name Version Tools Besonderes Basis GUI
Autopsy 4.13.0 ??? The Sleuth Kit Windows  
BackBox 6.0 100+ AWS Ubuntu Xfce
BlackArch 2020.01.01 1750+ ArchLinux ArchLinux Gnome
CAINE 11 100+ WinUFO Ubuntu Mate
DracOS 3.0   veraltet LFS DWM
DEFT Zero 2018.2   offline Lubuntu 14.04 Lxde
Kali Linux 2020.01 300+ ARM fähig Debian Testing Multi
Kali App Store   20+   Android  
LionSec 5.0   veraltet Ubuntu  
Matriux v3 RC1   offline Debian Gnome
NST 30 ??? Server integriert Fedora  
NetSecL OS 6.0   veraltet OpenSuse Lxde
Paladin 7.0     Ubuntu  
Parrot Sec 4.9 700+ Cloud fähig Debian Buster MATE/KDE
Pentoo 2018.0 RC7.1   veraltet Gentoo Xfce
Ronin     veraltet Lubuntu Lxde
Sans SIFT 3.0   veraltet Ubuntu  

SSLyze - SSL Server Einstellungen per Kommandozeile überprüfen

Die richtigen SSL/TLS Einstellungen für Server zu finden ist nicht immer leicht. Eine etablierte Prüfvariante wird von SSL Labs gestellt. Auf deren Webseite können Server auf Herz und Nieren geprüft werden und bekommen im Optimalfall ein A+ Rating, wenn Techniken wie beispielsweise HTTP Strict Transport Security aktiv sind.

Seit kurzen stellt Qualys mit ssllabs-scan ein Tool auf Github zur Verfügung, welches einen Server Test via Kommandozeile erlaubt. Das Tool basiert auf der vorhandenen Technik und greift somit auch immer auf die Qualys Server zurück.

Als Alternative bietet sich das ebenfalls etablierte Phyton Script SSLyze an. Anders als ssllabs-scan unterstützt der SSL Scanner bereits SMTP, XMPP, LDAP, POP, IMAP, RDP und FTP und steht auch für Windows Nutzer zur Verfügung.

Download SSLyze

SSLyze unter Ubuntu Server 14.04, 16.04, 20.04 LTS verwenden

Installation

sudo apt install python-pip
pip install --upgrade setuptools
pip install sslyze
pip install --upgrade setuptools
pip install --upgrade sslyze
python -m sslyze --regular www.yahoo.com:443 www.google.com "[2607:f8b0:400a:807::2004]:443"

Alle Funktionen anzeigen

./sslyze.py --help

     Usage: sslyze.py [options] target1.com target2.com:443 etc...

Normaler Scan

Prüfung auf die Protokolle SSLv2.0, SSLv3.0, TLS1.0/1.1/1.2 Heartbleed, CipherSuites und andere Einstellungen.

Die reguläre Methode fast quasi eine Befehlskette zusammen "--sslv2 --sslv3 --tlsv1 --reneg --resum --certinfo=basic --hide_rejected_ciphers --http_get"

python -m sslyze --regular url.de:443

REGISTERING AVAILABLE PLUGINS
 -----------------------------
  PluginSessionRenegotiation
  PluginCompression
  PluginSessionResumption
  PluginHSTS
  PluginOpenSSLCipherSuites
  PluginChromeSha1Deprecation
  PluginCertInfo
  PluginHeartbleed

 CHECKING HOST(S) AVAILABILITY
 -----------------------------

   url.de:443                        => 127.0.0.1:443

 SCAN RESULTS FOR url.DE:443 - 127.0.0.1:443
 ---------------------------------------------------

  Deflate Compression:
      OK - Compression disabled

  Session Renegotiation:
      Client-initiated Renegotiations:   OK - Rejected
      Secure Renegotiation:              OK - Supported

  OpenSSL Heartbleed:
      OK - Not vulnerable to Heartbleed

  Session Resumption:
      With Session IDs:                  OK - Supported (5 successful, 0 failed, 0 errors, 5 total attempts).
      With TLS Session Tickets:          OK - Supported

  Certificate - Content:
      SHA1 Fingerprint:                  xxxxxxxxxxxxxxxx
      Common Name:                       url.com
      Issuer:                            url Internet xxxxxxxxx G2
      Serial Number:                     xxxxxxxxxxxxx
      Not Before:                        
      Not After:                         
      Signature Algorithm:               sha1WithRSAEncryption
      Key Size:                          2048 bit
      Exponent:                          xxxxxx (0x10001)
      X509v3 Subject Alternative Name:
 * Certificate - Trust:
      Hostname Validation:               FAILED - Certificate does NOT match url.de
      "Mozilla NSS - 08/2014" CA Store:  OK - Certificate is trusted
      "Microsoft - 08/2014" CA Store:    OK - Certificate is trusted
      "Apple - OS X 10.9.4" CA Store:    OK - Certificate is trusted
      "Java 6 - Update 65" CA Store:     OK - Certificate is trusted
      Certificate Chain Received:        ['url.com', ']

  Certificate - OCSP Stapling:
      NOT SUPPORTED - Server did not send back an OCSP response.

  SSLV2 Cipher Suites:
      Server rejected all cipher suites.

...........

Mit dem Zusatz "--hide_rejected_ciphers" lassen sich abgelehnte CipherSuites ausblenden, was die Übersicht erhöht.

Scan auf SHA-1

Eine ebenso praktische Scanvariante ist der Test auf SHA-1.

Die Hasfunktion SHA-1 wird beispielsweise von Google Chrome inzwischen als unsicher gemeldet.

python -m sslyze --chrome_sha1 url.de:443

 REGISTERING AVAILABLE PLUGINS
 -----------------------------

  PluginSessionRenegotiation
  PluginCompression
  PluginSessionResumption
  PluginHSTS
  PluginOpenSSLCipherSuites
  PluginChromeSha1Deprecation
  PluginCertInfo
  PluginHeartbleed

 CHECKING HOST(S) AVAILABILITY
 -----------------------------

  url.de:443                        => xxxxxxxxx:443

 SCAN RESULTS FOR url.DE:443 - xxxxxxxx:443
 ------------------------------------------------

  Google Chrome SHA-1 Deprecation Status:
      OK - Certificate chain does not contain any SHA-1 certificate.

Prüfung auf  HTTP Strict Transport Security HSTS Unterstützung

Auch das bereits oben erwähnte HSTS lässt sich überprüfen.

python -m sslyze --hsts url.de:443

Test auf StartTLS für SMTP oder XMPP Server

Gleiches gilt für XMPP oder SMTP Server.

python -m sslyze --starttls=smtp url

python -m sslyze --starttls=xmpp url

Zu den genannten Befehlen gibt es noch zig weitere Möglichkeiten SSL Server auf Konfiguration zu testen. Hier sei für alle Funktionen auf die Hilfe verwiesen, welche alle Befehle auflistet und erklärt. (Die Scanausgaben wurden zugunsten der Übersicht gekürzt).

Fazit

Anders als SSL Lab zeigt SSLyze kein Ranking und macht keine Überprüfung auf Browserunterstützung, dafür werden mehr Protokolle unterstützt. Je nach Einsatzgebiet werden wohl beide Tools benötigt. Auf einem Server ohne Browser und Co bietet sich SSLyze natürlich an.

Das Tool ist auf gängigen Linux Distributionen wie Kali Linux, die für Pentesting und andere Sicherheitschecks verwendet werden, mit an Bord.

Eine Übersicht, auf welche Wege SSL/TLS Cipher Suites gestetet werden können, bietet Oswap.