Auto-Logon vorbereitet — verschluesselt statt Klartext, mit Bildschirmsperre

Schliesst die letzte Luecke der Boot-Pipeline: OilTradingServer und
HyperliquidDashboard haengen an einem Logon-Trigger, nach einem Update-Reboot
laeuft nichts bis zur Anmeldung (real 20.07.: Reboot 01:30, Server bis 07:42
tot, -95,48 EUR).

Ein Task "ohne angemeldete Sitzung" hilft NICHT: der Bot braucht das laufende
MT5-Terminal, und das ist eine GUI-Anwendung — es braucht eine echte
Desktop-Sitzung. Auto-Logon ist hier also das richtige Mittel, nicht nur das
bequeme.

BEWUSST NICHT der Registry-Weg: der legt das Passwort als DefaultPassword im
KLARTEXT unter HKLM\...\Winlogon ab, lesbar fuer jeden lokalen Admin und in
jedem Backup-Image. Stattdessen Sysinternals Autologon — verschluesseltes
LSA-Secret. Die EXE ist Microsoft-signiert (Signatur geprueft: Status Valid).
Das Skript verifiziert danach, dass DefaultPassword NICHT im Klartext steht.

Das eigentliche Restrisiko ist nicht das Passwort, sondern die offene Sitzung:
nach dem Reboot steht ein angemeldeter Desktop mit MT5 und Live-Broker-
Verbindung da. Deshalb legt das Skript zusaetzlich die Aufgabe
OilAutoLogonLock an — 30 s nach Anmeldung LockWorkStation. Die Sitzung laeuft
weiter (MT5 und beide Server arbeiten), der Bildschirm ist gesperrt.

NICHT ABGESCHLOSSEN: HKLM ist aus einer normalen Sitzung nicht schreibbar
(getestet: "Requested registry access is not allowed"). Der letzte Schritt
braucht ein Administrator-Fenster.

Das Passwort steht NICHT im Skript, nicht in der Doku und nicht im Repo — es
wird im Autologon-Dialog eingegeben. tools/autologon/ ist gitignored (Binaries,
gleiche Regel wie tools/piper/).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-07 06:34:21 +02:00
co-authored by Claude Opus 5
parent 4cbb1f1db5
commit 47d6d1ddae
3 changed files with 110 additions and 0 deletions
+4
View File
@@ -62,3 +62,7 @@ fib.err
# Piper (lokale Sprachausgabe) — Binaries und Stimmmodell, ~80 MB # Piper (lokale Sprachausgabe) — Binaries und Stimmmodell, ~80 MB
tools/piper/ tools/piper/
# Sysinternals-Binaries (signiert, aber Binaries gehoeren nicht ins Repo —
# gleiche Regel wie tools/piper/). Nachladen: siehe tools/autologon_einrichten.ps1
tools/autologon/
+25
View File
@@ -259,6 +259,31 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
Anteil, WR-Verfall, PF<1, Einzelverlust). **Wöchentlich** laufen lassen (B4/B5). Anteil, WR-Verfall, PF<1, Einzelverlust). **Wöchentlich** laufen lassen (B4/B5).
- **Vor „fertig":** immer `python -m py_compile <datei>`; JS grob via Klammern- - **Vor „fertig":** immer `python -m py_compile <datei>`; JS grob via Klammern-
Balance prüfen (kein node im Env). Balance prüfen (kein node im Env).
- **⚠ BOOT-LÜCKE: Auto-Logon vorbereitet, aber NICHT abgeschlossen (2026-08-07).**
`OilTradingServer` und `HyperliquidDashboard` hängen an einem **Logon**-Trigger
— nach einem Update-Reboot läuft nichts bis zur Anmeldung (real 20.07.:
Reboot 01:30, Server bis 07:42 tot, 95,48 €). ⚠ Ein Task „ohne angemeldete
Sitzung" hilft **nicht**: der Bot braucht das laufende **MT5-Terminal**, und das
ist eine GUI-Anwendung — es braucht eine echte Desktop-Sitzung. Auto-Logon ist
hier also tatsächlich das richtige Mittel, nicht nur das bequeme.
**Vorbereitet:** `tools/autologon_einrichten.ps1` + Sysinternals `Autologon`
(Microsoft-signiert, Signatur geprüft; `tools/autologon/` ist **gitignored** wie
`tools/piper/`).
⚠⚠ **Bewusst NICHT der Registry-Weg.** Der verbreitete Weg legt das Passwort als
`DefaultPassword` im **Klartext** unter `HKLM\…\Winlogon` ab — lesbar für jeden
lokalen Admin und in jedem Backup-Image. Sysinternals `Autologon` speichert es
als **verschlüsseltes LSA-Secret**. Das Skript prüft danach nach, dass
`DefaultPassword` NICHT im Klartext steht.
⚠⚠ **Das eigentliche Restrisiko ist nicht das Passwort, sondern die offene
Sitzung:** nach dem Reboot steht ein angemeldeter Desktop mit MT5 und
Live-Broker-Verbindung da. Deshalb legt das Skript zusätzlich die Aufgabe
`OilAutoLogonLock` an — 30 s nach der Anmeldung `LockWorkStation`. Die Sitzung
**läuft** (MT5 und beide Server arbeiten), der Bildschirm ist gesperrt.
**Muss ELEVATED ausgeführt werden**`HKLM` ist aus einer normalen Sitzung
nicht schreibbar (getestet: „Requested registry access is not allowed"). Das
Passwort steht **nicht** im Skript und wird nirgends gespeichert; es wird im
Autologon-Dialog eingegeben. **Zurück:** `Autologon /accepteula` → Disable, und
`schtasks /Delete /TN OilAutoLogonLock /F`.
- **✅ STUFE 5 DER PIPELINE IST JETZT EIN SKRIPT (`tools/deploy.py`, 2026-08-07).** - **✅ STUFE 5 DER PIPELINE IST JETZT EIN SKRIPT (`tools/deploy.py`, 2026-08-07).**
Ersetzt das von Hand zusammengesetzte „killen, starten, warten, nachsehen" und Ersetzt das von Hand zusammengesetzte „killen, starten, warten, nachsehen" und
macht die dokumentierte Schwachstelle prüfbar. macht die dokumentierte Schwachstelle prüfbar.
+81
View File
@@ -0,0 +1,81 @@
# Auto-Logon einrichten — schliesst die letzte Luecke der Boot-Pipeline.
#
# WOZU: `OilTradingServer` und `HyperliquidDashboard` haengen an einem LOGON-
# Trigger. Nach einem Windows-Update-Reboot laeuft nichts, bis sich jemand
# anmeldet — real in der Nacht zum 2026-07-20 passiert (Reboot 01:30, Server bis
# 07:42 tot, nur der broker-seitige SL schuetzte, -95,48 EUR). Ein Task ohne
# angemeldete Sitzung hilft NICHT: der Bot braucht das laufende MT5-TERMINAL,
# und das ist eine GUI-Anwendung — es braucht eine echte Desktop-Sitzung.
#
# ⚠⚠ WARUM DIESES SKRIPT UND NICHT DIE REGISTRY. Der verbreitete Weg schreibt
# das Passwort als `DefaultPassword` im KLARTEXT nach
# HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon — dort kann es
# jeder lokale Administrator und jedes Backup-Image lesen. Sysinternals
# `Autologon` legt es stattdessen als **verschluesseltes LSA-Secret** ab. Gleiche
# Wirkung, deutlich besseres Versteck. Die EXE ist von Microsoft signiert
# (geprueft: Status Valid, CN=Microsoft Corporation).
#
# ⚠ DAS RESTRISIKO BLEIBT und ist NICHT das Passwort: nach dem Reboot steht eine
# ANGEMELDETE Sitzung mit offenem MT5 und Live-Broker-Verbindung da. Wer physisch
# an den Rechner kommt, sitzt davor. Deshalb sperrt Schritt 2 den Bildschirm
# sofort wieder — die Sitzung laeuft (MT5 arbeitet), der Desktop ist zu.
#
# AUFRUF: dieses Fenster muss ALS ADMINISTRATOR laufen.
# powershell -ExecutionPolicy Bypass -File tools\autologon_einrichten.ps1
#
# ⚠ Das Passwort steht bewusst NICHT in dieser Datei und wird nirgends
# gespeichert — es wird im GUI-Dialog von Autologon eingegeben.
$ErrorActionPreference = 'Stop'
$id = [Security.Principal.WindowsIdentity]::GetCurrent()
if (-not (New-Object Security.Principal.WindowsPrincipal($id)).IsInRole(
[Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Host " ABBRUCH: Dieses Fenster hat keine Administratorrechte." -ForegroundColor Red
Write-Host " PowerShell als Administrator oeffnen und erneut aufrufen."
exit 1
}
$hier = Split-Path -Parent $MyInvocation.MyCommand.Path
$exe = Join-Path $hier 'autologon\Autologon64.exe'
if (-not (Test-Path $exe)) { $exe = Join-Path $hier 'autologon\Autologon.exe' }
if (-not (Test-Path $exe)) {
Write-Host " ABBRUCH: Autologon.exe fehlt unter tools\autologon\." -ForegroundColor Red
exit 1
}
Write-Host "=================================================================="
Write-Host " SCHRITT 1 — Auto-Logon aktivieren (verschluesseltes LSA-Secret)"
Write-Host "=================================================================="
Write-Host " Benutzer : $env:USERNAME"
Write-Host " Domaene : $env:COMPUTERNAME (lokales Konto)"
Write-Host " Es oeffnet sich der Autologon-Dialog. Passwort dort eintragen"
Write-Host " und auf Enable klicken."
Start-Process -FilePath $exe -ArgumentList '/accepteula' -Wait
# ── Ergebnis pruefen ────────────────────────────────────────────────────
$k = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
$an = (Get-ItemProperty -Path $k -Name AutoAdminLogon -EA SilentlyContinue).AutoAdminLogon
$klartext = (Get-ItemProperty -Path $k -Name DefaultPassword -EA SilentlyContinue).DefaultPassword
Write-Host ""
Write-Host " AutoAdminLogon : $an"
if ($klartext) {
Write-Host " ⚠ DefaultPassword steht im KLARTEXT in der Registry!" -ForegroundColor Yellow
Write-Host " (Autologon sollte das vermeiden — bitte pruefen.)"
} else {
Write-Host " DefaultPassword : nicht im Klartext ✅ (LSA-Secret)"
}
# ── Schritt 2: Sitzung sofort sperren ───────────────────────────────────
Write-Host ""
Write-Host "=================================================================="
Write-Host " SCHRITT 2 — Bildschirm nach dem Auto-Logon sofort sperren"
Write-Host "=================================================================="
$t = 'OilAutoLogonLock'
schtasks /Delete /TN $t /F 2>$null | Out-Null
schtasks /Create /TN $t /SC ONLOGON /RU "$env:USERNAME" /DELAY 0000:30 `
/TR "rundll32.exe user32.dll,LockWorkStation" /F | Out-Null
Write-Host " Aufgabe '$t' angelegt (30 s nach Anmeldung -> Sperrbildschirm)."
Write-Host " Die Sitzung LAEUFT weiter, MT5 und beide Server arbeiten."
Write-Host ""
Write-Host " Rueckgaengig: $exe /accepteula (Disable) und"
Write-Host " schtasks /Delete /TN $t /F"