17 Toolauswahl
Marcel Schwarz edited this page 2021-02-07 14:15:23 +00:00

Verwendete Tools

Letztendlich haben wir die drei Scanner Lynis, Testssl.sh und Otseca verwendet, sowie den JShielder. Alle angeschauten Tools stehen Open Source zur Verfügung.

Lynis

Lynis ist ein weitverbreiteter Vulnerability Scanner, der auch sehr aktuell gehalten wird. 8000 Sterne auf GitHub, viele Contributer und das Alter des Programms bei hoher Aktualität sind Argumente, die für die Verwendung von Lynis sprechen. Deshalb war uns schnell klar, dass wir Lynis verwenden wollen.

Das generierte Ergebnis betrachtet umfangreiche Gebiete des Systems und berechnet einen Hardening-Index. Dieser zeigt auf einer Skala von 0 bis 100, wie sicher Lynis das System einschätzt. Außerdem werden gefundene Warnungen und Vorschläge angezeigt mit direkter Issue-Nummer, diese beinhaltet zudem Anleitungen zur Behebung des Problems.

Um Lynis zu starten, genügt es, einen einzigen Befehl einzugeben.

./lynis audit system

image
Ausschnitt des Lynis-Outputs

Testssl.sh

Mit Testssl.sh haben wir die Ports unserer VM überprüft. Welche sind offen und welche sind zusätzlich verschlüsselt? Testssl.sh ist, wie Lynis, sehr beliebt und aktuell. Da es für das Scannen von Ports ausgelegt ist, kann man sich sicher sein, dass diese Aufgabe auch zuverlässig erledigt wird.

Beim Starten von Testssl.sh können verschiedene Parameter mitgegeben werden. Beispielsweise, wie das Log-File abgespeichert werden soll, welche Timeouts gesetzt werden und am Schluss welcher Port überprüft werden soll.

./testssl.sh --logfile "../outputs/testssl-$1.log" --append --connect-timeout 10 --openssl-timeout 10 -t ftp localhost:21

Im Output werden die gescannten Ports aufgelistet. Ist der Port nicht geöffnet, fällt die Analyse kurz aus. Andernfalls analysiert das Tool die Verschlüsselung, Cipher Suites und weitere Verwundbarkeiten.

image
Ausschnitt des Testssl.sh-Outputs

Otseca

Um ein kleineres Tool auszuprobieren, haben wir uns für Otseca entschieden. Es ist weniger bekannt und der letzte Commit liegt schon etwas in der Vergangenheit. Dennoch macht es einen soliden Eindruck mit vielen Features.

Startet man Otseca, gibt es die Möglichkeit die verschiedenen Aspekte anzugeben, die getestet werden sollen.

Otseca --ignore-failed --tasks system,kernel,permissions,services,network,distro,external

Im Gegensatz zu den anderen Tools erstellt Otseca HTML-Seiten zu jedem angegebenen Aspekt. Also in unserem Fall: System, Kernel, Permissions, Services, Network, Distribution und External. Auf Unterseiten steht, nach einer kurzen Erklärung des Moduls, eine Auflistung der durchgeführten Tests. Je nachdem wie Otseca die Ergebnisse sicherheitstechnisch einschätzt, wird der Hintergrund eingefärbt. Da die einzelnen Kommandos alleine recht wenig aussagen, muss recherchiert werden, was kontrolliert wurde und warum die Farbe entsprechend gewählt wurde. image
Ausschnitt des Otseca-Outputs

JShielder

Der JShielder hat ungefähr gleich viele Sterne auf GitHub wie Otseca. Allerdings liegt hier der letzte Commit im August 2019 (stand 6.2.2021). Außerdem soll er, laut Beschreibung, nahezu alle Systembereiche abdecken. Aus diesen Gründen entschieden wir uns, den JShielder zu testen.

Beim ersten Ausführen des JShielders bemerkten wir, dass direkt Änderungen am System vorgenommen wurden. Dabei wurde nicht gefragt, ob diese Option überhaupt ausgeführt werden darf. Somit hat der Anwender bei der automatischen Reparatur keinen Einfluss und Informationen darüber, was passiert. Deshalb kam es dazu, dass nach dem erforderten Neustart, wir uns nicht mehr auf die VM verbinden konnten. Wie sich später zeigte, lag das an eingerichtetem Portknocking und dem Setzen eines Bootloader-Passwortes. Glücklicherweise bietet der JShielder jedoch die Möglichkeit, nur spezielle Verbesserungen auszuführen. So konnten wir nur diese ausführen, die uns nicht aus unserer VM ausschlossen.

Der JShielder ist ein Komandozeilenprogramm, dem beim Aufruf keine Parameter mitgegeben werden können. Dadurch konnte wenig automatisiert werden und die 14 Optionen mussten händisch ausgewählt werden. Diese sind: 3, 8, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30 und 31.

JShielderChooseOption
JShielder Optionen

Log-Files und anderer verwertbarer Output wird nicht generiert.

Vuls

Vuls gehörte ursprünglich auch zu den ausgewählten Tools, bis wir es zum ersten Mal ausgeführt hatten. Denn Vuls lädt bei jeder Installation zwei bis drei Gigabyte CVEs (Common Vulnerabilities and Exposures) der letzten Jahrzehnte herunter. Bei 18 virtuellen Maschinen dauert das viel zu lange und macht den ganzen Prozess träge. Deshalb ist Vuls eher für größere Maschinen oder Server geeignet, auch weil es das System kontinuierlich scannt.

Archery

Archery war auch ein Tool, das in der näheren Auswahl stand. Fiel jedoch auch aus der Auswahl heraus, da das Werkzeug lediglich eine Oberfläche bietet für die zusammenfassung verschiedener anderer Scanner.

Prozess

In der Liste unten sind 32 Tools aufgeführt, die wir uns alle angeschaut haben. Nachdem wir definiert hatten, nach welchen Kriterien wir uns die Tools anschauen, haben wir uns die Tools aufgeteilt. Dabei haben wir auf die Aktualität (letzter Commit in GitHub), Beliebtheit (GitHub Stars) und die Beschreibung geachtet. Punkte wie: "Welche Features werden angegeben?", "Wie ist das Erscheinungsbild?", "Wie lässt sich das Programm ausführen?" spielten dabei eine Rolle für uns.
Die Ergebnisse der Recherchen wurden in einer gemeinsamen Tabelle zusammengetragen. Anhand derer haben wir dann die Entscheidungen getroffen, welche wir auswählen.

Alle Tools

Name Ausgewählt Letztes Update Features Homepage Github Stars
Vuls Ja Dec 15, 2020 Debian, ExploitDB, Metasploit, Node, Outdated Software, PHP, Python, RHEL, Ruby, SSL, Ubuntu, Webservers, WordPress 8157
Lynis Ja Nov 13, 2020 Compliance, Configurations, Intrusion Detection, Patch Management, Penetration Testing, Security Auditing, System Hardening, Vuln Detection Link 7946
Testssl.sh Ja Dec 5, 2020 Debian, Ports, SSL, Ubuntu, WSL, Webservers Link 4683
Nikto Nein (teil eines anderen) Nov 30, 2020 Webservers 4421
Kube Bench Nein Dec 8, 2020 Kubernetes 3224
Prowler Nein Nov 20, 2020 AWS, Logging, Monitoring, Networking 2830
ssh-audit Eher Nein Nov 2, 2016 Algorithm Information, Key Algorithms, SSH 2662
NMAP Vulns Nein (teil eines anderen) Nov 12, 2020 CVE Scanning, Ports 2207
ScoutSuite (former AWS Scout2) Nein Oct 24, 2020 AWS, Alibaba Cloud, Azure, Google Cloud Platform, Oracle Cloud Infrastructure 1664
Archery Nein Nov 27, 2020 Hosts own Vuln-Scan service Link 1532
Scanner for PHP.ini Nein Feb 4, 2018 PHP 1451
sslscan2 Nein (teil eines anderen) Dec 9, 2020 OpenSSl, SSL 1222
CloudSploit scans Nein Nov 30, 2020 AWS, Azure, Google Cloud Platform Link 1173
Anchore Engine Eher Nov 25, 2020 CentOS, Debian, Docker, Hosts own Vuln-Scan service, Monitoring, RHEL, Ubuntu Link 1099
OpenVAS Nein (teil eines anderen) Dec 1, 2020 Networking Link 938
Cloud Security Suite (cs-suite) Eher Nein Oct 24, 2020 AWS, Azure, Debian, Google Cloud Platform, Ubuntu Link 774
ssh_scan Nein Nov 5, 2020 Configurable, SSH 736
VHostScan Nein Sep 1, 2020 HTTP, Webservers 715
OpenSCAP Nein Nov 25, 2020 CWE, SCAP Link 698
Zeus Nein Oct 3, 2019 AWS 620
JShielder Ja Aug 21, 2019 Apache, Compilers, Critical Files, Cronjobs, Fail2Ban, IpTables, Kernel, MySql, PHP, SSH 458
otseca Ja Mar 24, 2020 Distribution, External, Kernel, Networking, Permissions, System 408
Bash Scanner Nein Dec 8, 2016 Apache, Debian, Nginx, OpenSSH, OpenSSl, Outdated Software, PHP, Ubuntu 377
arch-audit Nein Dec 1, 2020 Arch 267
LUNAR Eher Nein Sep 23, 2020 AWS, CentOS, Debian, Docker, RHEL, Ubuntu 236
G-Scout Nein Apr 11, 2019 Google Cloud Platform 206
DAudit Nein Jun 21, 2020 BigData, Hadoop, MongoDB, MySql, Redis, Spark 104
Nix Auditor Nein Jul 10, 2020 CentOS, RHEL 63
orthrus Nein Oct 26, 2017 (unstable), EC2, IAM configurations 17
sshsec Nein Aug 29, 2017 SSH 12
System Security Checker Nein Aug 31, 2019 CVE Scanning 11
YASAT Nein Aug 30, 2016 Apache, Bind DNS, Kernel, MySql, OpenVPN, PHP, Samba, Squid, Tomcat 10