Mit welchen Mehrbenutzer-Betriebssystemen kann ein Benutzer die aktuelle Befehlszeile anderer Benutzer anzeigen?

13

Ich habe die Manpage vonunzip gelesen und bin auf Folgendes gestoßen

-P password
       use password to decrypt encrypted zipfile entries (if  any).   THIS
       IS  INSECURE!   Many  multi-user operating systems provide ways for
       any user to see the current command line of any other user; even on
       stand-alone systems there is always the threat of over-the-shoulder
       peeking.

Obwohl die Sicherheitsvorkehrung, dass Passwörter nicht im Klartext eingegeben werden (und in den Shell-Verlauf gelangen), natürlich zutrifft, fällt es mir schwer zu glauben, dass es Betriebssysteme gibt, auf denen jeder Benutzer die Befehlszeile eines anderen Benutzers sehen kann benutzer . Könnte mir jemand ein Beispiel geben (Legacy-Systeme eingeschlossen)?


Ich glaube ps, topusw. sind die Antwort für UNIX.

4ae1e1
quelle
Tastaturtreiber)
STTR
@STTR Ich weiß wenig über Hardware, daher bin ich mir nicht sicher, ob der Tastaturtreiber allen Benutzern den gleichen und vollständigen Zugriff gewährt, aber das ist sicherlich kein Betriebssystem, und es ist nichts damit verbunden.
4ae1e1
1
Nur eine Anmerkung: Wenn Sie verhindern möchten, dass ein Befehl in den Bash-Verlauf aufgenommen wird, müssen Sie dem Befehl ein Leerzeichen voranstellen.
Joshreesjones

Antworten:

4

Ich vermute, dass die Verwendung auf Unix / Linux-Systemen lsofmöglicherweise die Interaktion der Benutzer gefährdet. Die Logik lsofzeigt eine Liste der geöffneten Dateien auf dem System. Und wenn man eine riesige Datei entpackt, ist sie möglicherweise noch lange genug geöffnet, damit jemand sie bemerken und dann einen Blick auf die Aktivitäten werfen kann. Heck, es wäre ziemlich trivial, ein Bash-Skript zu schreiben und es jede Minute oder so über einen Cron-Job auszuführen, um ein laufendes Protokoll der Aktivität offener Dateien zu sammeln.

Aber das klingt für mich immer noch falsch. Ich meine, lsofmacht möglicherweise etwas wie Inline-MySQL-Passwörter auf diese Weise verfügbar. Aber ich bin nicht zu 100% sudosicher , ob ein normaler Benutzer ohne / root-Rechte in der Lage wäre, lsofAktivitäten von anderen Benutzern wie diesen zu sehen.

JakeGould
quelle
3
Du bist definitiv auf dem richtigen Weg. Ich denke lsof, es werden offene Dateien anderer Benutzer angezeigt, und Sie benötigen keine erhöhten Berechtigungen (getestet auf dem Server meiner Institution). In ähnlicher Weise psund topanderer Befehlszeilen des Benutzers offenbaren.
4ae1e1
1
Ich habe weiter den Manpages von ps, topund lsofund fand keine Erwähnung von Privileg. Es gibt auch die Frage: Wie kann ein Prozess für andere Benutzer unsichtbar gemacht werden? . Ich denke also, dass die Befehlszeilen auf UNIX-Systemen tatsächlich für alle sichtbar sind. Hmm, große Überraschung.
4ae1e1
Ich habe es herausgefunden ttysnoopund conspybin mir jedoch nicht sicher, ob sie Root-Rechte benötigen oder nicht.
Vinayak
Welche Option können Sie verwenden lsof, um den Parameter der Befehlszeile anzuzeigen? mit zb kann lsof -a +c0 /dev/nullich lange befehlsnamen sehen aber keine parameter an den befehl übergeben. Was habe ich verpasst? :-)
Hastur
4

Unix erlaubt "ps". Außerdem verfügt Unix normalerweise über einen "w" -Befehl, der anzeigt, welche Benutzer ausgeführt werden. "w" unterbricht normalerweise Befehle basierend auf der Terminalgröße, dies kann jedoch überschrieben werden. (Eine einfache Möglichkeit ist die Verwendung eines breiteren Terminals.)

Dies betrifft wahrscheinlich auch mehrere Unix-ähnliche Systeme (Linux, BSD-Systeme, Solaris usw.).

Ich glaube, dass Microsoft Windows dies auch im Task-Manager anzeigen würde. Nun, vielleicht ist dies bei Windows Vista und der Benutzerkontensteuerung weniger üblich, da die Benutzerkontensteuerung möglicherweise erforderlich ist. Aber in den Tagen unter WinXP / Server 2003 und früher waren solche Einschränkungen möglicherweise nachlässig. Es gibt einen Grund, warum NET USE ein Sternchen unterstützt und den Benutzer dann zur Eingabe eines Kennworts auffordert. Mit:

WMIC /NODE:ComputerName PROCESS LIST

Ein Benutzer muss sich wahrscheinlich nicht einmal auf demselben Computer befinden, um einen ausgeführten Befehl zu sehen. Kurz gesagt, ich würde vermuten, dass eine Vielzahl von TaskList, TList und PSList (alle frei von Microsoft vertrieben) wahrscheinlich auch die Fähigkeit unterstützen, zu sehen, was passiert, unabhängig davon, welcher Benutzer ausgeführt wird. Zumindest Benutzer mit Administratorrechten, was auf Betriebssystemen vor Vista üblicher war. (In Win9x war der allgemeine Standard, dass alle Benutzer über Administrator-ähnliche Fähigkeiten verfügten.) Beachten Sie, dass Info-Zip, die von Ihnen zitierte Dokumentation, ziemlich viel älter als WinXP ist. Kurz gesagt, ich denke, es ist älter als Win95.

Bei älteren Mehrbenutzersystemen war die Geheimhaltung weniger wichtig. Zu sehen, was der Computer gerade tut, einschließlich der von anderen Benutzern ausgeführten Befehle, wurde wahrscheinlich als positives Merkmal und nicht als negative Sicherheitsverletzung angesehen. Möglicherweise ist eine zutreffendere Frage: Gibt es ein wichtiges Mehrbenutzer-Betriebssystem, das nicht unterstützt, dass Benutzer sehen können, welche Befehle auf dem Computer ausgeführt werden?

Der sicherere Ansatz besteht darin, niemals vertrauliche Kennwörter in eine Befehlszeile einzufügen. Eine andere Möglichkeit besteht darin, Kennwörter in eine Datei einzufügen und diese Datei dann in der Befehlszeile anzugeben. z.B:

type pwfile | command

Zumindest auf diese Weise bieten Berechtigungen, die auf der Dateisystemimplementierung basieren, wahrscheinlich einen gewissen Schutz.

TOOGAM
quelle
1
Um die Prozesse eines anderen Benutzers unter Windows anzuzeigen, müssen Sie Administrator sein.
Moshe Katz
4

Einige (und ich glaube nicht alle) Linux-Möglichkeiten, um den Befehl zip -PThat_Password ...eines anderen Benutzers ohne Root-Rechte zu sehen :

  • cat /proc/24695/cmdline wenn die PID 24695 ist ...

    zip-P That_Password

    Hinweis: Es ist ohne Leerzeichen, aber es ist möglich, das Passwort zu erraten

  • grep -H -e "zip" /proc/[0-9]*/cmdline

    Binärdatei / proc / 24695 / cmdline entspricht

    gut, wenn es funktioniert cat, funktioniert es alles andere textbasiert ...

  • pgrep -a zipDie Option -a listet die vollständige Befehlszeile sowie die Prozess-ID auf. (Nicht immer verfügbar in der alten Version [zB <2008] von pgrep)

    24695 zip -P That_Password

und natürlich die op erwähnt

  • ps -aux | grep zip

    That_User 24695 1.9 0.0 15012 1192 pts / 40 T 12:37 0:45 zip -P That_Password

  • top -c -b -n 1 | grep zip diese Antwort mit so etwas wie

    24695 That_User 20 0 15012 1192 820 T 0.0 0.0 0: 45.12 zip -P That_Password

Hastur
quelle
@JakeGould Zumindest auf meinen Systemen gibt der Befehl gerne cat /proc/24695/cmdlineAusgabe ohne Leerzeichen aus ...
Hastur
1
ps ax

unter Unix / Linux und ähnlichem.

ilkhd
quelle