Hallo allerseits! Im
letzten Teil haben wir über bestehende Lösungen zum "Orchestrieren" der parallelen Aufgaben des "Hash-Crackings" auf Hashcat gesprochen.
In diesem Teil sprechen wir weiter über das Hashtopolis-Projekt. Bereiten Sie die Komponenten der Webumgebung auf dem Server vor. Lassen Sie uns die Hauptparameter des Servers und des Hashtopolis-Agenten analysieren.
Hashtopolis installieren und konfigurieren
Für seine Arbeit möchte der Hashtopolis-Server die folgenden Komponenten von Ihnen:
- Apache2 / Nginx
- 64-Bit-PHP 7.0+ und Module: PHP-GD-Module, Birne, PHP-Curl
- MySQL 5.x + KM mit vollem Zugriff auf die Anwendungsdatenbank
Hashtopolis bietet Nginx-Unterstützung, für die Sie die Zugriffssperre für alle Unterverzeichnisse "/ hashtopolis" konfigurieren müssen, die die .htaccess-Datei enthalten. In diesem Artikel erwägen wir die Installation von Hashtopolis mit dem Apache2-Webserver (daher LAMP).
Sie können auch
XAMPP verwenden , um sich mit dem Projekt vertraut zu machen. In Version 5.6.40 ist alles ohne Probleme „gestartet“. Das Material in diesem Artikel ist nützlich für die Konfiguration von Hashtopolis unter XAMPP.
Unter dem Spoiler ein wenig über das Bild von Hocktopolis Docker:
Installieren Sie Hashtopolis im DockerIm Docker Hub wurden mehrere Hashtopolis-Server-Images gefunden, von denen jedoch nur eines zumindest ein gewisses Vertrauen erzeugte:
hub.docker.com/r/kpeiruza/hashtopolisDer Autor war nicht zu faul und fügte eine Beschreibung der "Installation" von Hashtopolis in Docker hinzu. Einstellungsdetails und Container werden ausführlich beschrieben. Ein wichtiger Hinweis: Berücksichtigen Sie beim Konfigurieren der Portzuordnung (z. B. "Docker ausführen ... -p 80:80") die Funktionen Ihres Betriebssystems und die Notwendigkeit, auf Hashtopolis-Agentenhosts auf den Webserver zuzugreifen.
Der Vorgang zum Einrichten der Webanwendung selbst wird später in unserem Artikel beschrieben.
Die Version des Projekts, die wir verwendet haben: Hashtopolis 0.10.1
Damit der Hashtopolis-Server funktioniert, hatten wir genug von einem Host mit der folgenden Konfiguration:
- 1 CPU
- 1 GB RAM
- 25 GB Festplatte
Wir empfehlen die Installation von phpMyAdmin, Adminer oder einem anderen Analogon für die Arbeit mit dem DBMS. Daher kann bei Problemen mit der Hashtopolis-Funktionalität die Fehlerbehebung durchgeführt werden, ohne den Browser zu verlassen.
Bei der Installation der Software auf unserem LAMP-Server haben wir die Anweisungen aus dem Wiki des Hashtopolis-Projekts (https://github.com/s3inlc/hashtopolis/wiki/Server-Prerequisites) verwendet:
- sudo apt update && sudo apt upgrade
- sudo apt mysql-server installieren
- sudo apt install apache2
- sudo apt install libapache2-mod-php php-mysql php php-gd php-pear php-curl
- sudo apt install git
- sudo apt install phpmyadmin
Wenn der interaktive Konfigurationsassistent während der Installation von MySQL-Paketen nicht gestartet wurde, müssen Sie den folgenden Befehl ausführen: mysql_secure_installation.
Daher wird mithilfe des „interaktiven Assistenten“ ein Kennwort für den Zugriff auf das DBMS festgelegt.
Anschließend müssen Sie einen Benutzer in MySQL und eine Datenbank erstellen, auf die dieser Benutzer Lese- / Schreibzugriff hat.
Wir fahren mit der Installation des Hashtopolis-Servers fort.
Sie können den Hashtopolis-Quellcode aus dem Git-Repository des Projekts klonen. Wir haben gemäß den Anweisungen gehandelt und das Repo geklont und aus dem Verzeichnis "Hashtopolis" "src" rekursiv nach "www" übertragen:
- Git-Klon github.com/s3inlc/hashtopolis.git
- cd hashtopolis / src
- sudo mkdir / var / www / hashtopolis
- sudo cp -r * / var / www / hashtopolis
- sudo chown -R www-data: www-data / var / www / hashtopolis
Setzen Sie die Direktive "KeepAliveTimeout" auf 10 Millisekunden, wie von den Entwicklern empfohlen. Begründung:
Um die Verwendung von TCP-Sitzungen im Python-Client optimal nutzen zu können, muss das Zeitlimit des Servers auf einen höheren Wert als die Statusaktualisierungszeit festgelegt werden
Unsere kostenlose Übersetzung: „Um TCP-Sitzungen in einem in Python implementierten Client verwenden zu können, muss das Sitzungszeitlimit in der Webserverkonfiguration höher als der Agentenwert für die Statusaktualisierung festgelegt werden.
Öffnen Sie einen beliebigen (bevorzugten) Editor mit der Apache2-Konfigurationsdatei (in unserem System den Pfad zur Datei "/etc/apache2/apache2.conf") und ändern Sie den Wert der Anweisung "KeepAliveTimeout" von 5 auf 10.
Fügen Sie bei Bedarf einen Alias zum Hashtopolis-Ordner in der Webserverkonfiguration hinzu (wenn das Verzeichnis in einem anderen Verzeichnis als "/ var / www / html" erstellt wurde). Wir fügen auch die Direktive "AllowOverride All" hinzu, um die Verwendung von .htaccess-Dateien in untergeordneten Verzeichnissen zu ermöglichen.
Für alle Fälle haben wir die Anweisungen "ServerSignature Off" und "ServerTokens Prod" zur Konfigurationsdatei "/etc/apache2/apache2.conf" mit dem anschließenden Neustart des Apache2-Dienstes hinzugefügt und auch die zulässigen IP-Adressen für den Zugriff auf die Anweisung "phpMyAdmin" angegeben. Erlaube ab 1.2.3.4/28 "in der Konfiguration" /etc/apache2/conf-enabled/phpmyadmin.conf ". Erlauben Sie den Zugriff von einer beliebigen Adresse auf Hashtopolis oder beschränken Sie den locahost / PrivateIP-Raum - abhängig von der spezifischen Einrichtung. In unserem Fall ist der Zugriff von jeder IP-Adresse aus gestattet. Wenn Sie besser dran sind, entscheiden Sie diesen Punkt.
Es wäre eine gute Idee, den Zugriff auf das Hashtopolis-Verzeichnis einzuschränken. Wir sind schnell und einfach vorgegangen - um auf das Verzeichnis "/ hashtopolis" zuzugreifen, muss der Webclient die Standardauthentifizierung durchlaufen.
Installieren Sie das Paket apache-utils (falls noch nicht geschehen). Von den Dienstprogrammen in dieser Phase ist "htpasswd" erforderlich. Erstellen Sie eine Datei und Benutzeranmeldung:
sudo htpasswd -c /etc/apache2/.htpasswd kraud
Nach Eingabe des Passworts wird der Benutzer zur .htpasswd-Datei hinzugefügt. Dies können Sie mit dem Befehl "cat /etc/apache2/.htpasswd" überprüfen. Das Hinzufügen von Benutzern erfolgt mit einem ähnlichen Befehl ohne die Taste "-c".
Als Nächstes konfigurieren wir den Zugriff auf das Webanwendungsverzeichnis, indem wir der Konfiguration apache2 / sites-available / 000-default.conf Anweisungen hinzufügen. Als Ergebnis haben wir eine solche "Verzeichnis" -Konfiguration erhalten:
Alias /hashtopolis "/var/www/hashtopolis" <Directory /var/www/hashtopolis> AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Order allow,deny Allow from all AllowOverride All Require valid-user </Directory>
Bitte beachten Sie, dass Sie bei Verwendung von "Basic-Auth" zusätzlich Parameter zur Konfiguration des Hashtopolis-Agenten hinzufügen müssen (Datei "\ hashtopolis_agent_dir \ config.json"):
{ "url": "http://1.2.3.4/hashtopolis/api/server.php", "voucher": "", "token": "token", "uuid": "d54de86f-3942-4127-af63-f257c45b66cd", "debug": false, "auth-user": "kraud", "auth-password": "password" }
Über Hashtopolis Agent etwas später.
Sie müssen auch eine neue Datenbank für die Hashtopolis-Anwendung und den MySQL-Benutzer mit Zugriff auf diese Datenbank erstellen. Dann sollte es jemandem nicht gefallen, der es mehr mag - in der PMA oder in der Konsole, eine Datenbank zu erstellen. Wir speichern den Datenbanknamen und die Anmeldeinformationen in Notizen - sie werden später benötigt.
Als Ergebnis dieser Schritte sollte die Installationsseite der Hashtopolis-Webanwendung unter der folgenden URL geladen werden: http: // <Server_IP> / Hashtopolis:

Wenn dies nicht der Fall ist, liegt das Problem wahrscheinlich in den Berechtigungen für das Verzeichnis "/ var / www / hashtopolis" oder in der Konfiguration des Webservers (z. B. ein Fehler in "Alias"). Es lohnt sich, die URL http: // <Server_IP> /hashtopolis/src/index.php oder http: // <Server_ip> /hashtopolis/src/install/index.php zu überprüfen
Anschließend wird das Formular „DB-Verbindung“ geladen, in das die Parameter für die Verbindung zum DBMS, der Datenbankname (z. B. 'hashtopolis') und die Benutzeranmeldeinformationen für den Zugriff eingegeben werden müssen. Wenn die Verbindung korrekt hergestellt wurde, wird das folgende Formular mit einer einzigen Schaltfläche "Weiter" geöffnet - klicken Sie darauf. Wenn alles in Ordnung ist - das folgende Formular "Administrator-Benutzer erstellen" wird geöffnet - geben wir hier die Anmeldeinformationen des Administrators der Hashtopolis-Webanwendung an:

Nach dem Klicken auf die Schaltfläche "Erstellen" wird bei korrekter Verarbeitung des Formulars ein Dokument mit Bestätigung der erfolgreichen Installation und Empfehlungen angezeigt:
- Stellen Sie sicher, dass die Berechtigungen für das Verzeichnis "./install" korrekt sind, oder löschen Sie dieses Verzeichnis
- Überprüfen Sie den Inhalt der Datei "./install/.htaccess" (sollte "Bestellung verweigern, \ nDeny von allen zulassen" lauten).
- Auf die an "./install" gerichtete Anfrage sollte der Statuscode 403 zurückkehren
Nach Abschluss aller Schritte sollte das Hashtopolis-Authentifizierungsformular unter der URL "http: // <Server_IP> / hashtopolis /" geladen werden:

Als nächstes (optional) konfigurieren Sie die Verwendung von HTTPS, die Verbindung des Sicherheitszertifikats - wir werden diesen Schritt weglassen. Wir fahren mit der Konfiguration des Hashtopolis-Agenten fort.
Agenteninstallation
Die Agenten sind direkt an der Aufgabe "Hash-Cracking" beteiligt - Instanzen von "Hashcat" oder einem anderen Cracker werden auf den Host-Agenten gestartet. Der Dialog zwischen dem Hashtopolis-Server und den Agenten erfolgt über HTTP / HTTPs.
Der Agent kann auf Systemen unter Windows / Linux / MacOS X installiert werden. In der aktuellen Version von Hashtopolis wird nur der Python-Agent unterstützt.
Die .Net-Version des Hashtopolis-Agenten wird nicht mehr unterstütztWir hatten bereits einen Windows 10-Host, mit dem wir Hashes mit 'hashcat' geknackt haben. Aus diesem Grund haben wir beschlossen, nichts zu ändern, sondern ein vorgefertigtes Arbeitssystem für die Verbindung mit Hashtopolis zu verwenden.
Auf einem Windows-System müssen Sie zuerst den Python 3-Interpreter installieren. Vergessen Sie nicht, den Birdie "Python 3.x zu PATH hinzufügen" zu installieren (Beispiel unten):

Anschließend müssen Sie das Archiv hastopolis.zip vom Hashtopolis-Server herunterladen oder die Archivdatei auf andere Weise an den Agentenhost senden.
Um Agentendateien vom Server herunterzuladen, klicken Sie im Dropdown-Menü "Agenten" auf "Neuer Agent". Dann kommen wir zum Abschnitt "Neuen Agenten hinzufügen", in dem der Download-Button enthalten sein wird - "Download".

Außerdem werden im Abschnitt "Neuen Agenten hinzufügen" die URL zum Verbinden des Agenten und die Schaltfläche zum Erstellen eines Gutscheins angezeigt (Sie müssen auf "Erstellen" klicken).
In unserem Fall wurde das Archiv im Verzeichnis "C: \ hashtopolis" gespeichert, das das Arbeitsverzeichnis des Agenten ist.
Zur Vereinfachung der Arbeit mit dem Agenten (Anzeigen des Protokolls, Kopieren / Einfügen usw.) verwenden wir eine PowerShell-Sitzung. Der Agent wird mit dem folgenden Befehl gestartet:
> python.exe .\hashtopolis.zip
Der Agent wird im Debug-Modus mit der Option -d gestartet.
> python3.exe .\hashtopolis.zip -d
Sie können das Debuggen deaktivieren, indem Sie die config.json-Konfiguration mit der Zeichenfolge debug bearbeiten: false ".
PraktischSie können die Hilfe für zusätzliche Argumente zum Ausführen des Agentenbefehls mit der Option "-h" aufrufen:
Hashtopolis Agent Befehle> python.exe. \ hashtopolis.zip -h
Verwendung: python3 hashtopolis.zip [-h] [--de-register] [--version]
[--number-only] [--disable-update] [--debug]
[--voucher VOUCHER] [--url URL]
Hashtopolis Client v0.4.0
optionale Argumente:
-h, --help Diese Hilfemeldung anzeigen und beenden
--de-register client sollte sich jetzt automatisch vom Server abmelden
--version Versionsinformationen anzeigen
--number-only bei Verwendung von --version wird nur die Nummer angezeigt
--disable-update Deaktiviert das Abrufen von automatischen Updates des Clients von der
Server
--debug, -d erzwingt die Debugging-Ausgabe
--voucher VOUCHER Gutschein zur automatischen Registrierung
--url URL URL zur Hashtopolis-Client-API
Nach der Initialisierung fragt der Agent die Hashtopolis-Server-URL (Sie können sie aus dem Abschnitt "Neuen Agenten hinzufügen" kopieren): "Bitte geben Sie die URL in die API Ihrer Hashtopolis-Installation ein:"
Hinweis: Das Agentenskript muss immer im Hintergrund funktionieren. Es gibt eine Hashtopolis-Runner-Komponente, die den Agenten beim Empfang von Multicast-Nachrichten vom Server ausführt. Runner funktioniert nur auf Linux-Hosts. Lesen Sie hier mehr:
github.com/s3inlc/hashtopolis-runnerWenn die URL korrekt ist und der Agent eine Verbindung herstellen konnte, wird eine Nachricht mit der Frage nach dem Gutschein empfangen: „Kein Token gefunden! Bitte geben Sie einen Gutschein ein, um Ihren Agenten zu registrieren: "
Der Agent gibt eine Bestätigung aus, wenn der Gutscheincode korrekt ist, und wechselt in den Standby-Modus der Aufgaben:
Successfully registered! Collecting agent data... Login successful! Hashtopolis Server version: 0.10.1 () Client is up-to-date! No task available!
Im Abschnitt "Agenten" der Tabelle wird ein neuer Agent mit Informationen zum System hinzugefügt: Hostname, GPU / CPU und weitere Informationen:

Im Verzeichnis C: \ hashtopolis werden eine config.json-Datei mit Agentenkonfiguration und eine client.log-Protokolldatei erstellt. Zusätzliche Parameter (z. B. HTTP-Proxy) können gemäß den Anweisungen manuell hinzugefügt werden:
github.com/s3inlc/hashtopolis-agent-pythonEs war nicht möglich, Informationen über die Protokollrotation oder die maximale Protokollgröße zu finden, gemessen an der Quelle des Agenten. Alle Standarddaten des Terminals werden ebenfalls in eine Datei geschrieben. Es wurden keine Einschränkungen oder Überprüfungen gefunden.
Wir empfehlen, dass Sie sofort zu den Agenteneinstellungen in der Hashtopolis-Weboberfläche gehen - klicken Sie einfach auf den Hostnamen (im obigen Screenshot ist es „DENIGMA“). Es ist besser, den Birdie "Vertrauensagent mit geheimen Daten" zu installieren und den Eigentümer ("Eigentümer") anzugeben:

Einrichtung der Cracker-Binärdateien
Der Abschnitt „Cracker / Cracker-Binärdateien“ enthält die Parameter der ausführbaren Dateien „Cracker“. Standardmäßig enthält der Abschnitt „Hashcat 5.1.0“. Wenn Sie für bestimmte Aufgaben eine andere Version von Hashcat verwenden müssen, klicken Sie auf "Version / Binär hinzufügen" (Versionsliste:
github.com/hashcat/hashcat/releases ). Füllen Sie im Formular alle Felder aus und klicken Sie auf "Binär erstellen":

Seien Sie beim Ausfüllen des Formulars vorsichtig, vermeiden Sie insbesondere "Leerzeichen" in der "Download-URL", geben Sie "Hashcat" im Feld "Name der binären Basis" an - das Agentenskript ergänzt die fehlenden Teile im Namen der ausführbaren Datei. Deshalb haben wir einen zusätzlichen Satz ausführbarer Dateien für Version 4.1.0 hinzugefügt. Sie können Änderungen vornehmen, indem Sie auf den Namen des Crackers in der Spalte „Name“ klicken.
Aufgrund dieses „Setups“ kann beim Erstellen einer neuen Aufgabe („Aufgaben / Neue Aufgaben“) eine Hashcat-Version ausgewählt werden.

Im Abschnitt Cracker können Sie auch einen anderen Crackertyp hinzufügen. Weitere Informationen
zur Arbeit mit dem generischen Cracker finden Sie hier .
Beim Starten der Aufgabe im lokalen Verzeichnis "Cracker" auf dem Agentenhost wird das in der "Download-URL" angegebene 7z-Archiv in den Ordner mit der Cracker-ID-Nummer entpackt

Wenn diese Version des Crackers früher „installiert“ wurde, wird das Archiv nicht erneut heruntergeladen.
Erstellen Sie eine Aufgabe, um Hashes zu knacken
Wir richten den Agenten ein und können es kaum erwarten, ihn zu überprüfen. Um mit dem "Knacken von Hashes" zu beginnen, müssen Sie eine Liste von Hashes (oder "Hash-Liste") erstellen und diese dann in der Aufgabe angeben. Um eine Liste in der Hashtopolis-Weboberfläche zu erstellen, klicken Sie auf "Listen" und wählen Sie "Neue Hashliste" aus dem Dropdown-Menü. Bei unseren Projekten stoßen wir regelmäßig auf NTLM / NetNTLM-Hashes - wir werden sie üben. Wir werden jeden Onlinedienst nutzen und NTLM-Hashes generieren. Stellen Sie dann die verbleibenden Parameter der Liste ein und klicken Sie auf "Hashliste erstellen":
Ein wichtiger Punkt - alle "geknackten / nicht geknackten" Hashes sind in der erstellten Liste zu sehen, d. H. Alle Hash-Daten sind der Liste zugeordnet, auch die damit verbundenen Aufgaben. Seien Sie daher vorsichtig, wenn Sie Hash-Listen löschen. Und wenn aus irgendeinem Grund die Anwendungsmodule nicht mehr funktionieren, beispielsweise das Modul "notifications.php" nach dem Löschen der Aufgabe, der Benachrichtigungen zugewiesen wurden, deaktiviert wurde, mussten wir auf Einträge in der Tabelle "NotificationSetting" klicken
Als nächstes müssen Sie das Wörterbuch hinzufügen, da wir die Hashes mit der Auswahl "Wörterbuch" aufbrechen (der Schlüssel '-a0' in 'Hashcat'). Gehen Sie zum Abschnitt "Dateien" (die Registerkarte "Wortlisten" ist aktiv), klicken Sie auf die Schaltfläche "Datei hinzufügen" und wählen Sie eine lokale Datei aus. Klicken Sie dann auf "Dateien hochladen". Wir können auch den Download per URL verwenden, z. B.
das Wörterbuch aus einem "bekannten" Repository herunterladen :

Jetzt können Sie die Aufgaben für den Agenten starten. Wählen Sie im Hauptmenü von Hashtopolis die Option „Aufgaben / Neue Aufgabe“. Füllen Sie als nächstes das Formular aus:
- Geben Sie den Namen der Aufgabe in den Parameter "Name" ein
- Wählen Sie die Hash-Liste im Parameter Haslist aus
- Wir markieren das Wörterbuch aus der Liste der "Wortlisten" auf der rechten Seite - der Name des Wörterbuchs wird automatisch im Feld "Befehlszeile" ersetzt: Geben Sie den Pfad zum Wörterbuch im Format ".. \ Pfad \ zu \ Datei \% Dateiname%" an.
- Geben Sie im Feld "Befehlszeile" Hashcat-Startparameter ein, z. B. "-a0".
- Priorität ist relevant, wenn es viele Aufgaben gibt.
- "Aufgabennotizen" werden für Notizen verwendet, außerhalb von Hashtopolis sind sie nicht verfügbar.
- Sie können eine Farbe für die Aufgabe auswählen, mit der sie in der Aufgabenliste markiert wird (Menü "Aufgabe / Aufgaben anzeigen").
Wir lassen den Rest der Parameter standardmäßig, klicken Sie auf "Aufgabe erstellen". Danach erscheint eine neue Aufgabe in der Liste der Aufgaben:

Wie aus der Tabelle ersichtlich ist, sind die Agenten nicht der Aufgabe "NTLM_test_crack" zugeordnet. Sie können einen Agenten entweder über das Menü "Agentendetails" im Parameter "Zuweisung:" oder in den Aufgabeneigenschaften zuweisen, einen Agenten aus der Liste auswählen und auf die Schaltfläche "Zuweisen" klicken:

Unmittelbar danach startet die "Engine" auf dem Agenten - Anweisungen werden übertragen:
- Laden Sie "Cracker-Binärdateien" herunter (standardmäßig hashcat.net/files/hashcat-5.1.0.7z ). Wenn die Dateien vorhanden sind und die Version übereinstimmt, wird das Archiv nicht heruntergeladen
- Wörterbuchdatei herunterladen (wenn "Wortliste" des Hashtopolis-Servers angegeben ist)
- Führen Sie einen kurzen Leistungstest durch
- Fangen Sie an, Hashes zu hacken
In diesem Fall zeigt die Konsole Informationen zu den Phasen der Vorbereitung der GPU, dem Auswahlprozess, der Systemleistung in "H / s" usw. an.
Durch das Starten und Ausführen der Aufgabe wird der Status der „Hash-Liste“ aktualisiert. Ausgewählte Passwörter können durch Klicken auf die Zahl neben "Cracked:" in der Tabelle "Tasks" oder im Abschnitt "Hash-Details" angezeigt werden:

Wenn ein Agent während der Ausführung von Aufgaben auf Fehler stößt, wird der Status dieses Agenten geändert und muss manuell aktiviert werden. Um den Agenten erneut zu "aktivieren", müssen Sie in den Agenteneinstellungen einen Vogel vor den Parameter "Aktivität" stellen. Der angehaltene Status sieht folgendermaßen aus:

Um zu verhindern, dass der Agent aufgrund von Fehlern gestoppt wird, müssen Sie den Parameter "Cracker-Fehler" in eine der Optionen "Agent am Laufen halten" ändern (der Agent funktioniert, aber Fehler können entweder im Protokoll behoben oder zurückgewiesen werden):

Schwanz
Vielen Dank für Ihre Aufmerksamkeit! Im nächsten Teil werden wir über das Einrichten von Benachrichtigungen in Hashtopolis sprechen.