Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Zugriffsrechte (unprivilegierter) Benutzer unter C:\Windows

51 views
Skip to first unread message

Stefan Kanthak

unread,
Apr 1, 2021, 5:42:40 PM4/1/21
to
Moin allerseits,

ich suche moeglichst viele Freiwillige fuer eine Bestandsaufnahme, in
welchen Unterverzeichnissen von C:\Windows\ sowie "C:\Program Files\"
unprivilegierte Benutzer Schreib- UND Ausfuehrungsrechte haben.

Bitte schreibt die zwischen den Trennzeilen --- DUMMY.CMD --- und
--- EOF --- stehenden Zeilen in eine Textdatei DUMMY.CMD und fuehrt
dieses Batch-Skript (per Doppelklick) unter Windows 7 bzw. Windows
Server 2008 R2 oder neueren Versionen mit Benutzerrechten aus, NICHT
mit Administratorrechten.

--- DUMMY.CMD ---
REM Copyright (C) 2021, Stefan Kanthak <stefan....@nexgo.de>

COPY NUL: "%~dpn0.log"
IF ERRORLEVEL 1 EXIT /B

ECHO EXIT /B 1>"%~dpn0.bat"

DIR "%SystemRoot%" /A:D /B /S 1>"%~dpn0.tmp"
FOR /F "Delims= UseBackQ" %%? IN ("%~dpn0.tmp") DO @CALL :DUMMY "%%~?"

DIR "%ProgramFiles%" /A:D /B /S 1>"%~dpn0.tmp"
FOR /F "Delims= UseBackQ" %%? IN ("%~dpn0.tmp") DO @CALL :DUMMY "%%~?"

IF DEFINED ProgramFiles(x86) IF NOT "%ProgramFiles(x86)%" == "%ProgramFiles%" (
DIR "%ProgramFiles%" /A:D /B /S 1>"%~dpn0.tmp"
FOR /F "Delims= UseBackQ" %%? IN ("%~dpn0.tmp") DO @CALL :DUMMY "%%~?")

ERASE "%~dpn0.bat" "%~dpn0.tmp"
SET /P =Bitte alle Ausgaben kopieren und mir zusammen mit der Datei "%~dpn0.log" zusenden!
EXIT /B

:DUMMY
@MKLINK /H "%~1\%~n0.bat" "%~dpn0.bat" 1>NUL: 2>NUL:
@IF ERRORLEVEL 1 GOTO :EOF

CALL "%~1\%~n0.bat"
IF NOT ERRORLEVEL 1 ECHO %~1 1>>"%~dpn0.log"
ERASE "%~1\%~n0.bat"
--- EOF ---

Das Batch-Skript versucht, das (funktionslose) Batch-Skript DUMMY.BAT
in jedes Unterverzeichnis von C:\Windows\ sowie "C:\Program Files\" zu
kopieren und bei Erfolg auszufuehren. Wenn auch das erfolgreich ist,
dann schreibt es den Pfadnamen des Verzeichnisses nach DUMMY.LOG

Stefan

PS: in einigen dieser Verzeichnissen duerfen Benutzer Schreiben und
Ausfuehren, aber nicht Loeschen, d.h. es bleiben einige (harmlose)
DUMMY.BAT stehen, die ein Benutzer mit Administratorrechten loeschen
kann/sollte.
Die Pfadnamen dieser Ueberbleibsel gibt folgende Kommandozeile aus,
die in einer mit Administratorrechten zu startenden Eingabe-
aufforderung auszufuehren ist:
FSUTIL.exe HARDLINK LIST "%SystemRoot%\Temp\DUMMY.BAT"
--
<https://www.duden.de/rechtschreibung/Kanthaken>

Christoph Schneegans

unread,
Apr 2, 2021, 1:42:40 AM4/2/21
to
Stefan Kanthak schrieb:

> ich suche moeglichst viele Freiwillige fuer eine Bestandsaufnahme, in
> welchen Unterverzeichnissen von C:\Windows\ sowie "C:\Program Files\"
> unprivilegierte Benutzer Schreib- UND Ausfuehrungsrechte haben.

https://schneegans.de/temp/DUMMY.CMD/out.1.txt und
https://schneegans.de/temp/DUMMY.CMD/log.1.txt stammen von einer gut
abgehangenen 64-bittigen Installation.

https://schneegans.de/temp/DUMMY.CMD/out.2.txt und
https://schneegans.de/temp/DUMMY.CMD/log.2.txt stammen von einer
taufrischen 32-bittigen Installation in einer VM.

--
<https://schneegans.de/windows/no-8.3/> · Windows ohne PROGRA~1

Stefan Kanthak

unread,
Apr 2, 2021, 3:24:57 PM4/2/21
to
"Christoph Schneegans" <chri...@schneegans.de> schrieb:

> Stefan Kanthak schrieb:
>
>> ich suche moeglichst viele Freiwillige fuer eine Bestandsaufnahme, in
>> welchen Unterverzeichnissen von C:\Windows\ sowie "C:\Program Files\"
>> unprivilegierte Benutzer Schreib- UND Ausfuehrungsrechte haben.
>
> https://schneegans.de/temp/DUMMY.CMD/out.2.txt und
> https://schneegans.de/temp/DUMMY.CMD/log.2.txt stammen von einer
> taufrischen 32-bittigen Installation in einer VM.

| C:\Windows\Tasks
| C:\Windows\Temp
| C:\Windows\tracing
| C:\Windows\Registration\CRMLog
| C:\Windows\System32\FxsTmp
| C:\Windows\System32\Tasks
| C:\Windows\System32\Com\dmp
| C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
| C:\Windows\System32\spool\PRINTERS
| C:\Windows\System32\spool\SERVERS
| C:\Windows\System32\spool\drivers\color

Das sind die seit dem letzten Jahrtausend bekannten Schwachstellen, die
beim "Application Whitelisting" mit expliziten Verboten belegt werden
muessen -- und die in meinen *_SAFER.INF seit jeher blockiert werden.

JFTR: mit Ausnahme von C:\Windows\Temp\ legen Windows-Komponenten in
keinem dieser Verzeichnisse ausfuehrbare Dateien ab, sondern DATEN!
Siehe dazu auch <https://skanthak.homepage.t-online.de/tempest.html>

SPAETESTENS mit Vista haetten die Spezialspezialisten aus Redmond
diese Verzeichnisse unter das damals eingefuehrte C:\ProgramData\
alias %ProgramData% alias %ALLUSERSPROFILE% verlagern koennen und
muessen.

> https://schneegans.de/temp/DUMMY.CMD/out.1.txt und
> https://schneegans.de/temp/DUMMY.CMD/log.1.txt stammen von einer gut
> abgehangenen 64-bittigen Installation.

Im folgenden nur die zusaetzlichen, oben nicht gelisteten Verzeichnisse:

| C:\WINDOWS\debug\WIA
| C:\WINDOWS\PLA\Reports
| C:\WINDOWS\PLA\Rules
| C:\WINDOWS\PLA\Templates
| C:\WINDOWS\PLA\Reports\de-DE
| C:\WINDOWS\PLA\Reports\en-GB
| C:\WINDOWS\PLA\Reports\en-US
| C:\WINDOWS\PLA\Rules\de-DE
| C:\WINDOWS\PLA\Rules\en-GB
| C:\WINDOWS\PLA\Rules\en-US
...
| C:\WINDOWS\System32\Tasks_Migrated
...
| C:\WINDOWS\System32\LogFiles\WMI
...
| C:\Program Files\Microsoft SQL Server\130\Shared\ErrorDumps
| C:\Program Files\Microsoft SQL Server\130\Shared\ErrorDumps

All diese, AUSSCHLIESSLICH Daten enthaltenden Verzeichnisse MUESSTEN (und
koennten) die Pfuscher aus Remond seit Vista unter C:\ProgramData\ ablegen.

EINMAL mit Profis arbeiten!

Stefan
--
<https://www.duden.de/rechtschreibung/Kanthaken>

Ingo Steinbuechel

unread,
Apr 2, 2021, 4:07:57 PM4/2/21
to
Hallo Stefan,

"Stefan Kanthak" <postmaster@[127.0.0.1]> schrieb:

> Wenn auch das erfolgreich ist,
> dann schreibt es den Pfadnamen des Verzeichnisses nach DUMMY.LOG

ich erhalte hier eine leere Datei.

> Die Pfadnamen dieser Ueberbleibsel gibt folgende Kommandozeile aus,
> die in einer mit Administratorrechten zu startenden Eingabe-
> aufforderung auszufuehren ist:
> FSUTIL.exe HARDLINK LIST "%SystemRoot%\Temp\DUMMY.BAT"

| Microsoft Windows [Version 10.0.19042.867]
| (c) 2020 Microsoft Corporation. Alle Rechte vorbehalten.
|
| C:\WINDOWS\system32>FSUTIL.exe HARDLINK LIST "%SystemRoot%\Temp\DUMMY.BAT"
| Fehler: Das System kann die angegebene Datei nicht finden.
|
| C:\WINDOWS\system32>

Gruß Ingo

Stefan Kanthak

unread,
Apr 2, 2021, 5:07:02 PM4/2/21
to
"Ingo Steinbuechel" <schl...@spamfence.net> schrieb:

Danke fuer's Mitmachen!

> Hallo Stefan,
>
> "Stefan Kanthak" <postmaster@[127.0.0.1]> schrieb:
>
>> Wenn auch das erfolgreich ist,
>> dann schreibt es den Pfadnamen des Verzeichnisses nach DUMMY.LOG
>
> ich erhalte hier eine leere Datei.

Das passiert, wenn SAFER oder AppLocker ordentlich eingerichtet sind
und Ausfuehren in allen von Benutzern schreibbaren Verzeichnissen
blockieren.
Hast Du?

Das passiert dummerweise auch, wenn DUMMY.CMD NICHT auf dem Laufwerk
%SystemDrive% erzeugt wurde (Hardlinks koennen nur innerhalb eines
Dateisystems erzeugt werden).
Hast Du?

Abhilfe/Korrektur fuer den zweiten Fall:

--- DUMMY.CMD ---
REM Copyright (C) 2021, Stefan Kanthak <stefan....@nexgo.de>

ECHO EXIT /B 1>"%~dpn0.tmp"
MOVE "%~dpn0.tmp" "%SystemRoot%\Temp\%~n0.bat"
IF ERRORLEVEL 1 EXIT /B

COPY NUL: "%~dpn0.log"
IF ERRORLEVEL 1 EXIT /B

DIR "%SystemRoot%" /A:D /B /S 1>"%~dpn0.tmp"
FOR /F "Delims= UseBackQ" %%? IN ("%~dpn0.tmp") DO @CALL :DUMMY "%%~?"

DIR "%ProgramFiles%" /A:D /B /S 1>"%~dpn0.tmp"
FOR /F "Delims= UseBackQ" %%? IN ("%~dpn0.tmp") DO @CALL :DUMMY "%%~?"

IF DEFINED ProgramFiles(x86) IF NOT "%ProgramFiles(x86)%" == "%ProgramFiles%" (
DIR "%ProgramFiles%" /A:D /B /S 1>"%~dpn0.tmp"
FOR /F "Delims= UseBackQ" %%? IN ("%~dpn0.tmp") DO @CALL :DUMMY "%%~?")

ERASE "%SystemRoot%\Temp\%~n0.bat" "%~dpn0.tmp"
SET /P =Bitte alle Ausgaben kopieren und mir zusammen mit der Datei "%~dpn0.log" zusenden!
EXIT /B

:DUMMY
@MKLINK /H "%~1\%~n0.bat" "%SystemRoot%\Temp\%~n0.bat" 1>NUL: 2>NUL:
@IF ERRORLEVEL 1 GOTO :EOF

CALL "%~1\%~n0.bat"
IF NOT ERRORLEVEL 1 ECHO %~1 1>>"%~dpn0.log"
ERASE "%~1\%~n0.bat"
--- EOF ---

>> Die Pfadnamen dieser Ueberbleibsel gibt folgende Kommandozeile aus,
>> die in einer mit Administratorrechten zu startenden Eingabe-
>> aufforderung auszufuehren ist:
>> FSUTIL.exe HARDLINK LIST "%SystemRoot%\Temp\DUMMY.BAT"
>
> | Microsoft Windows [Version 10.0.19042.867]
> | (c) 2020 Microsoft Corporation. Alle Rechte vorbehalten.
> |
> | C:\WINDOWS\system32>FSUTIL.exe HARDLINK LIST "%SystemRoot%\Temp\DUMMY.BAT"
> | Fehler: Das System kann die angegebene Datei nicht finden.
> |
> | C:\WINDOWS\system32>

In Standard-Installationen von Windows koennen Benutzer direkt in
%SystemRoot%\Temp\ Dateien zwar erzeugen, aber NICHT loeschen.
Schick mir bitte die Ausgaben des Skripts!

Stefan
--
<https://www.duden.de/rechtschreibung/Kanthaken>

Christoph Schneegans

unread,
Apr 3, 2021, 6:50:44 AM4/3/21
to
Stefan Kanthak schrieb:

> | C:\Windows\Tasks
> | C:\Windows\Temp
> | ...
>
> Das sind die seit dem letzten Jahrtausend bekannten Schwachstellen, die
> beim "Application Whitelisting" mit expliziten Verboten belegt werden
> muessen -- und die in meinen *_SAFER.INF seit jeher blockiert werden.

Ich hatte vor dem Test SAFER natürlich deaktiviert. Wenn ich den Test
mit aktiver SAFER-Konfiguration wiederhole und die DUMMY.CMD etwa per
Hash-Regel zulasse, ist DUMMY.LOG am Schluss leer. Das ist auch keine
Überraschung, weil
https://schneegans.de/windows/safer/#gef%C3%A4hrliche-verzeichnisse eine
ganz ähnliche Prüfung ausführt und ich dieses Modul einmal pro Tag
laufen lasse.

https://schneegans.de/temp/DUMMY.CMD/out.3.txt und
https://schneegans.de/temp/DUMMY.CMD/log.3.txt stammen von diesem Test.

--
<https://schneegans.de/windows/safer/> · SAFER mit Windows

Ingo Steinbuechel

unread,
Apr 3, 2021, 7:58:16 AM4/3/21
to
Hallo,

Hallo Stefan :)

"Stefan Kanthak" <postmaster@[127.0.0.1]> schrieb:

> Danke fuer's Mitmachen!

gerne :)

>> ich erhalte hier eine leere Datei.
>
> Das passiert, wenn SAFER oder AppLocker ordentlich eingerichtet sind
> und Ausfuehren in allen von Benutzern schreibbaren Verzeichnissen
> blockieren.
> Hast Du?

Nein.

> Das passiert dummerweise auch, wenn DUMMY.CMD NICHT auf dem Laufwerk
> %SystemDrive% erzeugt wurde (Hardlinks koennen nur innerhalb eines
> Dateisystems erzeugt werden).
> Hast Du?

Ja. Ich habe das Skript in den Dokumenten erzeugt. Dummerweise habe ich
den Pfad von %systemdrive% auf D:\Ingo\Documents umgebogen.

> Schick mir bitte die Ausgaben des Skripts!

Ist unterwegs.

Gruß Ingo

Arno Welzel

unread,
Apr 3, 2021, 8:17:31 AM4/3/21
to
Stefan Kanthak:

> Moin allerseits,
>
> ich suche moeglichst viele Freiwillige fuer eine Bestandsaufnahme, in
> welchen Unterverzeichnissen von C:\Windows\ sowie "C:\Program Files\"
> unprivilegierte Benutzer Schreib- UND Ausfuehrungsrechte haben.
[...]
> Das Batch-Skript versucht, das (funktionslose) Batch-Skript DUMMY.BAT
> in jedes Unterverzeichnis von C:\Windows\ sowie "C:\Program Files\" zu
> kopieren und bei Erfolg auszufuehren. Wenn auch das erfolgreich ist,
> dann schreibt es den Pfadnamen des Verzeichnisses nach DUMMY.LOG

Hier bleibt das Log leer.

Aktuelles Windows 10 Pro (10.0.19042.867) vor ca. 2 Wochen installiert
ohne besondere Anpassungen bzgl. SAFER oder AppLocker.



--
Arno Welzel
https://arnowelzel.de

Arno Welzel

unread,
Apr 3, 2021, 8:26:31 AM4/3/21
to
Arno Welzel:
Nach dem Hinweis in <s4811l$se7$1...@news.mixmin.net> habe ich das
Test-Script nochmal in das Home-Verzeichnis des Users geschoben und von
dort aus nochmal gestartet:

C:\Windows\Tasks
C:\Windows\Temp
C:\Windows\tracing
C:\Windows\debug\WIA
C:\Windows\Registration\CRMLog
C:\Windows\System32\FxsTmp
C:\Windows\System32\Tasks
C:\Windows\System32\Com\dmp
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\PRINTERS
C:\Windows\System32\spool\SERVERS
C:\Windows\System32\spool\drivers\color
C:\Windows\SysWOW64\FxsTmp
C:\Windows\SysWOW64\Tasks
C:\Windows\SysWOW64\Com\dmp
C:\Program Files\CyberLink\Shared files\Plugin\BorisFX
C:\Program Files\CyberLink\Shared files\Plugin\BorisFX

Stefan Kanthak

unread,
Apr 3, 2021, 11:03:52 AM4/3/21
to
"Christoph Schneegans" <chri...@schneegans.de> schrieb:
> Stefan Kanthak schrieb:
>
>> | C:\Windows\Tasks
>> | C:\Windows\Temp
>> | ...
>>
>> Das sind die seit dem letzten Jahrtausend bekannten Schwachstellen, die
>> beim "Application Whitelisting" mit expliziten Verboten belegt werden
>> muessen -- und die in meinen *_SAFER.INF seit jeher blockiert werden.
>
> Ich hatte vor dem Test SAFER natürlich deaktiviert.

Das habe ich bei Dir selbstverstaendlich erwartet.-)

> Wenn ich den Test mit aktiver SAFER-Konfiguration wiederhole und die
> DUMMY.CMD etwa per Hash-Regel zulasse, ist DUMMY.LOG am Schluss leer.

AMEN!
Unter <https://skanthak.homepage.t-online.de/SAFER.html#test> habe ich
vor einigen Tagen dieses (nochmal vereinfachte) Batch-Skript eingebaut.

> Das ist auch keine Überraschung, weil
> https://schneegans.de/windows/safer/#gef%C3%A4hrliche-verzeichnisse eine
> ganz ähnliche Prüfung ausführt und ich dieses Modul einmal pro Tag
> laufen lasse.

Dein Skript verwendet PowerShell und schreibt eine neue Datei in jedes
Verzeichnis: diese erbt NTFS-ACLs des Verzeichnisses, die Ausfuehren
verhindern koennen. Die Ergebnisse Deines Skripts koennen daher dann
falsch sein, wenn PowerShell die NTFS-Zugriffsrechte beachtet, d.h.
Skripts zum Ausfuehren oeffnet, nicht nur zum Lesen.
Das SOLLTE so sein, ich habe es aber nicht ueberprueft.

Der Kommandoprozessor beachtet sie, daher erzeugt mein Skript keine neue
Datei, sondern legt einen Hardlink an: der behaelt die NTFS-ACL seiner
Quelle. Das gilt ebenso fuer MOVE, wenn Quelle und Ziel innerhalb eines
Dateisystems sind.
Ist der unter <https://skanthak.homepage.t-online.de/SAFER.html#test>
gezeigten Ausgabe erstaunlich aehnlich.

Stefan
--
<https://www.duden.de/rechtschreibung/Kanthaken>

Stefan Kanthak

unread,
Apr 4, 2021, 9:02:40 AM4/4/21
to
"Stefan Kanthak" <postmaster@[127.0.0.1]> schrieb:

Vereinfachte Version des Skripts, mit Korrektur des Fehlers, dass auf
64-bittigen Systemen %ProgramFiles(x86)% nicht geprueft wurde, und
Aufhebung der (nicht genannten) Voraussetzung, das Skript auf dem
System-Laufwerk zu speichern:

--- DUMMY.CMD ---
REM Copyright (C) 2021, Stefan Kanthak <stefan....@nexgo.de>

ECHO EXIT /B 1>"%~dpn0.tmp"
MOVE "%~dpn0.tmp" "%SystemRoot%\Temp"
IF ERRORLEVEL 1 EXIT /B

COPY NUL: "%~dpn0.log"
IF ERRORLEVEL 1 EXIT /B

DIR "%SystemRoot%" /A:D /B /S 1>"%~dpn0.tmp"
DIR "%ProgramFiles%" /A:D /B /S 1>>"%~dpn0.tmp"
IF DEFINED ProgramFiles(x86) IF NOT "%ProgramFiles(x86)%" == "%ProgramFiles%" (
DIR "%ProgramFiles(x86)%" /A:D /B /S 1>>"%~dpn0.tmp")
FOR /F "Delims= UseBackQ" %%? IN ("%~dpn0.tmp") DO @CALL :DUMMY "%%~?"
ERASE "%~dpn0.tmp" "%SystemRoot%\Temp\%~n0.tmp"
SET /P =Bitte alle Ausgaben kopieren und mir zusammen mit der Datei "%~dpn0.log" zusenden!
EXIT /B

:DUMMY
@MKLINK /H "%~1\%~n0.bat" "%SystemRoot%\Temp\%~n0.tmp" 2>NUL:
@IF ERRORLEVEL 1 GOTO :EOF

CALL "%~1\%~n0.bat"
IF NOT ERRORLEVEL 1 ECHO %~1 1>>"%~dpn0.log"
ERASE "%~1\%~n0.bat"
--- EOF ---

Stefan
--
<https://www.duden.de/rechtschreibung/Kanthaken>
0 new messages