Echte 2FA mit TPM-VSC (virtuelle Smartcards)
Ich habe eine neue Methode erdacht, wie man die Authentifizierungsmöglichkeit TPM Virtual Smartcard („TPM-VSC“) verschärfen kann.
So wie Microsoft (siehe Doku) sich das denkt, hat man eine SmartCard an einen PC gebunden und erreicht somit schon etwas, was 2FA nahe kommt, denn die SmartCard kann nur der nutzen, der den PC hochfahren kann. Wer diesen Schutz verbessern möchte, lese weiter.
Ein Unterschied zwischen der virtuellen Smartcard und der physischen ist der, dass die virtuelle immer "gesteckt" ist und sich jemand, der die PIN kennt und den Computer angeschaltet vorfindet, anmelden kann. Meine Methode benutzt einen USB-Stick als weiteren Faktor.
Nur wer den Stick hat und die PIN weiß, kann die TPM-VSC benutzen, um sich anzumelden.
Um eine virtuelle SmartCard zu erzeugen und ein Zertifikat zu laden, geht man vor, wie unter Abschnitt 3 von https://download.microsoft.com/download/5/A/B/5ABDDED2-F56E-427D-88C1-41 ... verständlich beschrieben ist.
Ich setze also eine fertige VSC voraus.
Ich erstelle also einen geplanten Task, mit 3 Triggern, welcher als Systemkonto läuft und die VSC temporär deaktiviert
1 sobald ich den Computer sperre
2 wenn ich mich abmelde
3 wenn ich den Rechner neu starte, so dass die VSC selbst bei einem Rechnerabsturz/Reset sofort deaktiviert wird.
Screenshots dazu:
Die Batch, welche ausgeführt wird:
oder ab Win 10v2004 oder höher mit dem eingebauten pnputil:
Dann erstelle ich einen zweiten Task, der getriggert wird, wenn ich einen bestimmten USB-Stick (die Device-ID wird ausgelesen) anstecke.
Achtung: das hierzu benötigte Logging ist per default deaktiviert. Einschaltbar per Skript über:
Dieser Task macht, getriggert durch den passenden USB-Stick, die VSC wieder funktionsfähig, indem er das virtuelle Gerät wieder aktiviert.
Screenshots zum Task:
Hier noch im Detail:
Das Powershellskript, welches ausgeführt wird (die Hardware-ID des Sticks kann man aus dem Gerätemanager auslesen):
wahlweise letzte Skriptzeile ab win10 2004 wieder mit dem eingebauten pnputil:
Achtung: wie gesagt, wenn Euer Windows noch nicht einmal auf Windows 10 v2004 ist, benötigt ihr hierfür die devcon.exe, welche nicht zu Windows gehört, aber frei von Microsoft bezogen werden kann, siehe https://networchestration.wordpress.com/2016/07/11/how-to-obtain-device- ...
So wie Microsoft (siehe Doku) sich das denkt, hat man eine SmartCard an einen PC gebunden und erreicht somit schon etwas, was 2FA nahe kommt, denn die SmartCard kann nur der nutzen, der den PC hochfahren kann. Wer diesen Schutz verbessern möchte, lese weiter.
Ein Unterschied zwischen der virtuellen Smartcard und der physischen ist der, dass die virtuelle immer "gesteckt" ist und sich jemand, der die PIN kennt und den Computer angeschaltet vorfindet, anmelden kann. Meine Methode benutzt einen USB-Stick als weiteren Faktor.
Nur wer den Stick hat und die PIN weiß, kann die TPM-VSC benutzen, um sich anzumelden.
Um eine virtuelle SmartCard zu erzeugen und ein Zertifikat zu laden, geht man vor, wie unter Abschnitt 3 von https://download.microsoft.com/download/5/A/B/5ABDDED2-F56E-427D-88C1-41 ... verständlich beschrieben ist.
Ich setze also eine fertige VSC voraus.
Ich erstelle also einen geplanten Task, mit 3 Triggern, welcher als Systemkonto läuft und die VSC temporär deaktiviert
1 sobald ich den Computer sperre
2 wenn ich mich abmelde
3 wenn ich den Rechner neu starte, so dass die VSC selbst bei einem Rechnerabsturz/Reset sofort deaktiviert wird.
Screenshots dazu:
Die Batch, welche ausgeführt wird:
devcon disable @ROOT\SMARTCARDREADER\0000
pnputil /disable-device "ROOT\SMARTCARDREADER\0000"
Dann erstelle ich einen zweiten Task, der getriggert wird, wenn ich einen bestimmten USB-Stick (die Device-ID wird ausgelesen) anstecke.
Achtung: das hierzu benötigte Logging ist per default deaktiviert. Einschaltbar per Skript über:
wevtutil sl Microsoft-Windows-DriverFrameworks-UserMode/Operational /e:true
Screenshots zum Task:
Hier noch im Detail:
Das Powershellskript, welches ausgeführt wird (die Hardware-ID des Sticks kann man aus dem Gerätemanager auslesen):
$JustNow = (Get-Date).AddSeconds(-5)
$foundstick = Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-DriverFrameworks-UserMode/Operational'; starttime=$JustNow}| where message -match 'USBSTOR#DISK&VEN_CORSAIR&PROD_VOYAGER_SLIDERX2&REV_000A#02097C507420BD11&0'
if ($foundstick -ne $null) {devcon enable @ROOT\SMARTCARDREADER\0000}
if ($foundstick -ne $null) {pnputil /enable-device "ROOT\SMARTCARDREADER\0000"}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 638919
Url: https://administrator.de/contentid/638919
Ausgedruckt am: 24.11.2024 um 14:11 Uhr
3 Kommentare
Neuester Kommentar
Hi DWW,
Danke für den Input.
Ich denke auch schon ne Weile darüber nach, ob und wie man VSC wirklich sinnvoll einsetzen könnte. Dein Hinweis mit diesem Ordner macht mich jetzt nachdenklich. Ich hatte bisher angenommen, dass alle relevanten Informationen für eine VSC in der TPM-Hardware gespeichert werden. So aber scheint es doch so zu sein, dass nach einer Neuinstallation des OS die bereits erstellten VSC nicht mehr nutzbar sind, es sei denn man weiß das mit diesen Ordnern und sichert diese vorher und stellt sie in der Neuinstallation wieder her.
Oder?
E.
Danke für den Input.
Ich denke auch schon ne Weile darüber nach, ob und wie man VSC wirklich sinnvoll einsetzen könnte. Dein Hinweis mit diesem Ordner macht mich jetzt nachdenklich. Ich hatte bisher angenommen, dass alle relevanten Informationen für eine VSC in der TPM-Hardware gespeichert werden. So aber scheint es doch so zu sein, dass nach einer Neuinstallation des OS die bereits erstellten VSC nicht mehr nutzbar sind, es sei denn man weiß das mit diesen Ordnern und sichert diese vorher und stellt sie in der Neuinstallation wieder her.
Oder?
E.