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:
co-authored by
Claude Opus 5
parent
4cbb1f1db5
commit
47d6d1ddae
@@ -62,3 +62,7 @@ fib.err
|
||||
|
||||
# Piper (lokale Sprachausgabe) — Binaries und Stimmmodell, ~80 MB
|
||||
tools/piper/
|
||||
|
||||
# Sysinternals-Binaries (signiert, aber Binaries gehoeren nicht ins Repo —
|
||||
# gleiche Regel wie tools/piper/). Nachladen: siehe tools/autologon_einrichten.ps1
|
||||
tools/autologon/
|
||||
|
||||
@@ -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).
|
||||
- **Vor „fertig":** immer `python -m py_compile <datei>`; JS grob via Klammern-
|
||||
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).**
|
||||
Ersetzt das von Hand zusammengesetzte „killen, starten, warten, nachsehen" und
|
||||
macht die dokumentierte Schwachstelle prüfbar.
|
||||
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user