Custom Scripts
Sie können die von uns eingepflegten Checks durch eigene Skripte erweitern, um den Funktionsumfang des Penetrationstests nochmals zu erweitern. Die Skripte hinterlegen Sie direkt auf dem Linux-Server, auf dem der Hacktor installiert ist.
Custom Script hinzufügen
Gehen Sie folgendermaßen vor, um ein eigenes Skript hinzuzufügen:
1. Navigieren Sie in den Ordner scripts
.
cd /opt/enginsight/hacktor/scripts
2. Legen Sie eine Datei für das Custom Script an. Der Dateiname muss dem folgendem Schema entsprechen: <runtime>_<severity>_name.extension,
z.B. python2_critical_CVE1234.py
oder ruby_ok_my custom script.rb
.
Unterstützte Runtimes:
bash
python2
python3
ruby
Unterstützte Severities (Dringlichkeit):
ok
low
medium
high
critical
nano <runtime>_<severity>_name.extension
3. Fügen Sie Ihr Skript, das Sie gemäß der Richtlinien erstellt haben, ein.
4. Speichern und schließen Sie die Datei.
5. Machen Sie Ihre angelegte Datei für Hacktor ausführbar.
chmod 755 <filename>
6. Starten Sie Hacktor neu.
systemctl restart ngs-hacktor
Richtlinien für Custom Scripts
Damit Hacktor das Ergebnis des Custom Scripts auslesen kann, muss die folgende Konvention für den Exit Code eingehalten werden.
passed
exit code 0
Der Check ist bestanden.
error
exit code 1
Der Check hat nicht funktioniert.
skipped
exit code 5
Der Check ist für das Zielsystem irrelevant.
failed
exit code 9
Das Zielsystem ist verwundbar.
Jeder andere exit code wird wie error
behandelt.
Unabhängig vom Check Status werden stdout
und stderr
im Audit ausgegeben. Ab 1024 Zeichen wird der Output abgeschnitten.

Das erste Argument ist immer der hostname
, das zweite bis n (2-n) sind immer die offenen Ports.
Muster
python2, python3
import sys
print("Host:",sys.argv[1])
print("Ports:",sys.argv[2:])
print("Use 'sys.exit(1)' with error codes (1=error, 5=skipped, 9=failed) to determine check status")
sys.exit(9)
import socket
import sys
# This is an example script
# It checks if a host uses an OpenSSH implementation
host = sys.argv[1]
ports = sys.argv[2:]
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if '22' in ports:
addr = (host, 22)
try:
sock.connect(addr)
except:
print >>sys.stderr, 'failed to connect'
sys.exit(1) # check has 'error' status
try:
message = 'SSH-2.0-Hacktor'
sock.sendall(message)
data = sock.recv(256)
print >>sys.stdout, "Banner: %s" % data
if 'OpenSSH' in data:
print >>sys.stdout, "Host uses OpenSSH implementation"
sock.close()
sys.exit(0)
else:
print >>sys.stdout, "Host does not use OpenSSH implementation."
sock.close()
sys.exit(9) # check is 'failed'
finally:
sock.close()
else:
print >>sys.stdout, 'host %s does not use port 22' % host
sys.exit(5) # check is 'skipped'
ruby
puts "Host: "+ARGV[0]
puts "Ports: "+ARGV.inspect[0..-1]
puts "Use 'exit(1)' with error codes (1=error, 5=skipped, 9=failed) to determine check status"
bash
#!/bin/bash
echo "Host: $1"
shift # remove the first argument
echo "Shift. Then Ports:" "$@"
exit 5 # Use 'exit 1' with error codes (1=error, 5=skipped, 9=failed) to determine check status
Eigenen Titel und Empfehlungstext hinzufügen
Optional können Sie einen eigenen Titel hinterlegen, der im Audit Ihren im Dateinamen hinterlegten Titel ersetzt. Außerdem können Sie eine Empfehlung hinterlegen, wie mit der Schwachstelle umzugehen ist.
1. Öffnen Sie die Datei descriptions.json
.
nano /opt/enginsight/hacktor/scripts/descriptions.json
Fügen Sie die Informationen nach folgendem Schema ein:
{
<filenameA>":{
"title":"<check title>",
"recommendation":"<recommendation on how to fix>"
},
"<filenameB>":{
"title":"<check title>",
"recommendation":"<recommendation on how to fix>"
}
}
2. Speichern und schließen Sie die Datei.
3. Starten Sie Hacktor neu.
systemctl restart ngs-hacktor
Custom Script ausführen
Um ein Custom Script für einen Penetrationstest zu nutzen, fügen Sie das Skript einfach gemäß der Anleitung zum entsprechenden Hacktor hinzu. Achten Sie außerdem darauf, in den erweiterten Einstellungen der Audit Defintionen die Ausführung von Custom Scripts zu erlauben.

Last updated
Was this helpful?