NT-Password (NT Hash) unter Windows generieren

Mitglied: Pedant

Pedant (Level 2) - Jetzt verbinden

10.02.2018 um 14:52 Uhr, 2930 Aufrufe, 7 Kommentare

Hallo,

es muss doch irgendwie möglich sein ein NT-Password (einen NT-Hash) unter Windows zu erzeugen!?

Es ist doch ein "Windows-Ding":
NT-Password = Windows NT hashed passwords
Quelle: https://freeradius.org/radiusd/man/rlm_pap.txt

Die einzigen Möglichkeiten des Erzeugens, die ich gefunden habe, sind entweder nur online oder unter Linux.
Online: https://tobtu.com/lmntlm.php
Linux: /usr/bin/smbencrypt "geheim"

Ich benötige es, weil ich einen Radiusserver betreiben möchte, der auf einer LinuxVM läuft, sich aber die Zugangsdaten aus einer MySQL-Datenbank seines Windows-Hosts holen soll.
Ich möchte die Eingabe und Pflege der Zugangsdaten, die in der selbstentworfenen MySQL-Datenbank gespeichert werden, unter Windows (per selbstgeschriebenen Webinterface) durchführen.
Weniger aus Sicherheitsgründen, mehr aus Gründen der Diskretion, möchte ich die Kennwörter nicht im Klartext in der Datenbank ablegen.
(Ich möchte nicht sehen können, wer welches Kennwort nutzt.)

Das kompatibelste Hash-Format ist NT-Password (NT-Hash)
Quelle: http://deployingradius.com/documents/protocols/compatibility.html

Was ich Suche ist ein offline Hash-Generator für Windows.
Das kann gerne eine der folgenden Ansätze sein:
- exe
- PowerShell
- php
- MySQL
- JavaScript
- eventuell Sonstiges

Ich habe mir jetzt einen Workaroud geschrieben, der nicht gerade das Ei des Kolumbus ist (bestenfalls sein Linkes).


Workaround

Auf der Linux-VM namens "linuxvm" habe ich Apache 2.4 und php 7.0 installiert.

Im Webroot der Linux-VM habe ich ein php-Skript abgelegt, das ein per Get übergegenes Kennwort mit exex() an das Tool /usr/bin/smbencrypt übergibt.
Die Ausgabe des php-Skripts ist inhaltlich wie eine php-Datei, die lediglich eine Variable zuweist.

Auf dem Windows-Rechner ist ebenfalls Apache und php installiert.
Zusätzlich ist dort das Tool "WGet" vorhanden.
Auf dem Windowsrechner liegt im Web-Ordner ein php-Skript, das ein per Get übergegenes Kennwort mit exex() an das Tool wget.exe übergibt.
WGet ruft damit das php-Script der Linux-VM auf und speichert dessen Ausgabe in eine temporäre php-Datei, die im Skript per include eingebunden und gleich wieder gelöscht wird.

Ab dann steht dem php-Skript auf dem Windowsrechner das gehashte Kennwort in einer Variablen namens "verschluesselt" zur weiteren Verarbeitung zur Verfügung.


php-Skript "nthash.php" auf der Linux-VM
Beim Aufruf per http://linuxvm/nthash.php?kennwort=geheim&modus=php
wird Folgendes generiert:

php-Skript "nthash.php" auf dem Windows-Host
Beim Aufruf per http://windowshost/nthash.php?kennwort=geheim
steht im Skript die Variable "verschluesselt" mit dem NT-Hash als Inhalt, zur Verfügung.
Resultat:
(Kennwort "geheim" wir zu "C2AE1FE6E648846352453E816F2AEB93")

...und schon ist die Aufgabe erledigt.
(Die Eingangs erwähnte Diskretion sollte mich noch dazu veranlassen die Übergaben des Kennworts per Post und nicht per Get auszuführen.)

Mit der Behauptung "Das muss auch einfacher gehen" stehe ich hoffentlich nicht alleine da.

Gruß Frank
Mitglied: wiesi200
LÖSUNG 10.02.2018, aktualisiert um 15:03 Uhr
Hallo,

hab das jetzt vor ein Paar wochen auch gemacht, für ein Mitarbeiter W-LAN. Nur Liegt das Webfrontend (PHP) auf nem Linux Server.
Ich such's kurz raus und Schick es dir.

Wo ich das gefunden hab, kann ich leider nicht mehr sagen.
Bitte warten ..
Mitglied: 135333
135333 (Level 2)
10.02.2018, aktualisiert um 15:33 Uhr
Powershell:
Get-MD4Hash

Gruß snap
Bitte warten ..
Mitglied: Pedant
10.02.2018 um 16:53 Uhr
Hallo wiesi200,

danke für den Code.

Ich habe ihn hier eingesetzt und ausprobiert.
nthash.php
Aufruf: http://windowshost/nthash.php?kennwort=geheim

Hier erhalte ich für "geheim"
31D6CFE0D16AE931B73C59D7E0C089C0
und nicht
C2AE1FE6E648846352453E816F2AEB93

Verwende ich mhash() statt hash() erhalte ich:
Fatal error: Call to undefined function mhash() in D:\www\webroot\test\nthash2.php on line 11
Installiert ist hier: PHP Version 5.2.10


Hallo snap,

danke für den PowerShell-Link.

In Bezug auf PS bin ich noch sehr unbedarft.
Ich habe den dortigen Code in eine Datei kopiert und diese Get-MD4Hash.ps genannt.
Rufe ich sie dann auf:
PS D:\Temp> ./Get-MD4Hash -DataToHash $([Text.Encoding]::Unicode.GetBytes("geheim"))
erhalte ich:
Eine Funktion ist also noch kein Skript.
"Schade" dachte sich da der Ochs' vorm Berg.

Gruß Frank
Bitte warten ..
Mitglied: 135333
135333 (Level 2)
LÖSUNG 10.02.2018, aktualisiert um 17:14 Uhr
Zitat von Pedant:
In Bezug auf PS bin ich noch sehr unbedarft.
Ich habe den dortigen Code in eine Datei kopiert und diese Get-MD4Hash.ps genannt.
Rufe ich sie dann auf:
PS D:\Temp> ./Get-MD4Hash -DataToHash $([Text.Encoding]::Unicode.GetBytes("geheim"))
erhalte ich:
Das ist falsch. Die PS1 muss ja erst mal so aufgerufen werden damit die Funktion der aktuellen Powershell-Konsole bekannt ist.

Mach es folgendermaßen, kopiere den u.s. Code in eine PS1 und dann rufst du diese in der Powershell so auf
p.s. mit den Daten aus der Funktion lässt sich auch schnell eine EXE z.B. mit c# schreiben wenn man möchte.
Bitte warten ..
Mitglied: wiesi200
10.02.2018 um 17:16 Uhr
Hallo,

ich hab's grad getestet.
Bei mir kommt
Unter Linux mit PHP 7.0.23
Und auch unter Windows PHP 5.6.28
Bitte warten ..
Mitglied: 135333
135333 (Level 2)
10.02.2018, aktualisiert um 17:33 Uhr
Ich schätze mal das kommt vom unterschiedlichen PHP-Encoding seiner PHP-Umgebung. Er sollte prüfen ob alles auf UTF-8 kodiert vorliegt/eingestellt ist. Oder eben das Input-Encoding mit mb_http_input auslesen und an iconv übergeben.
Bitte warten ..
Mitglied: Pedant
10.02.2018 um 17:47 Uhr
Hallo snap,

prima, danke.
So funktioniert's.
PS D:\Temp> ./ntcrypt.ps1 geheim
C2AE1FE6E648846352453E816F2AEB93


Hallo wiesi200,

bei mir funktioniert es jetzt auch.
Es war lediglich Schlamperei meinerseits.
Ich hatte den Get-Parameter in $kennwort gespeichert, aber dann unverändert mit $Input gearbeitet.
$Input war dann aber unbelegt und damit wurde dann "Nichts" gehasht.

Hier der korrigierte Code:
nthash.php
Aufruf per http://windowshost/nthash.php?kennwort=geheim
C2AE1FE6E648846352453E816F2AEB93


Euch Beiden recht herzlichen Dank
Gruß Frank
Bitte warten ..
Heiß diskutierte Inhalte
Netzwerke
Heimnetzwerk für mobiles Arbeiten
Matthias182Vor 1 TagFrageNetzwerke14 Kommentare

Hallo zusammen, Die Corona Pandemie treibt viele Veränderungen, so auch bei uns. Seit Wochen arbeiten meine Frau und ich wieder von zu Hause. Und ...

Firewall
Pfsense plus für Geschäftskunden
Looser27Vor 1 TagInformationFirewall13 Kommentare

Netgate wird in Zukunft die Open Source Firewall pfSense hauptsächlich als kommerzielle Version unter dem Namen pfSense Plus vermarkten. Die "Community Version" wird weiter ...

TK-Netze & Geräte
Hybrid-Telefon für Betrieb an ISDN- sowie VoIP-Anschluss
Datax87Vor 1 TagFrageTK-Netze & Geräte30 Kommentare

Hallo, ich habe eine Frage zu einer geplanten TK-Anlagen-Umstellung. An der betreffenden ISDN-TK-Anlage sind zurzeit 6 ISDN-Telefone angeschlossen. Der dazugehörige Telefon-/Internetanschluss ist zurzeit ein ...

Router & Routing
Wie DMZ ohne doppeltes NAT am VF-Kabel-Internetzugang realisieren?
OldermanVor 1 TagFrageRouter & Routing24 Kommentare

Hallo und guten Tag allerseits! Ich habe mich nach einiger Zeit des Lesens der aufschlussreichen und wertvollen Beiträge hier zum Thema echtes DMZ mit ...

Backup
Backupmöglichkeit Teamviewer
greenhorn1Vor 17 StundenFrageBackup7 Kommentare

Hallo, ich habe bei meiner Teamviewer Lizenz die Möglichkeit ein Backup des PC´s durchzuführen. Leider funktioniert das nicht! Nach Rückfrage an Teamviewer erhielt ich ...

Server-Hardware
Gebrauchte Server von eBay-Kleinanzeigen
dh2411Vor 12 StundenFrageServer-Hardware6 Kommentare

Hallo zusammen, neulich war ich auf eBay-Kleinanzeigen unterwegs und dort wurden mir einige Server vorgeschlagen. Ich habe dort auch meinen aktuellen Home-Server recht günstig ...

Webentwicklung
Webseite LAMP auf USB-Stick mit Minimalsystem?
mirmichVor 23 StundenFrageWebentwicklung11 Kommentare

Hallo, eine Webseite soll "archiviert" aber lokal lauffähig bleiben. Die "neue Webseite" läuft auf einer aktuellen PHP Version - die "alte Webseite" auf einer ...

Batch & Shell
Benutzeranmeldung mit Einschränkung
gelöst FreeBSDVor 1 TagFrageBatch & Shell8 Kommentare

Hallo zusammen, ich habe da ein kleines Problemchen und zwar versuche ich mich im PowerShell einzulernen, habe da eine kleine Aufgabe bekommen, dennoch krieg ...