Ich höre oft Leute, die sudo
als eines der Haupthindernisse für Malware, die einen Linux-Computer infiziert, genannt werden.
Das am häufigsten vorkommende Argument scheint wie folgt zu lauten: Zum Ändern der Systemkonfiguration sind Root-Berechtigungen erforderlich, und zum Erlangen von Root-Berechtigungen ist ein Kennwort erforderlich, sodass Malware die Systemkonfiguration nicht ändern kann, ohne nach einem Kennwort zu fragen.
Es scheint mir jedoch, dass auf den meisten Systemen die Eskalation von Berechtigungen standardmäßig trivial ist, sobald Malware ein Administratorkonto infiziert hat - die Malware muss nur warten, bis der Benutzer ausgeführt wird sudo
.
Welche Methoden gibt es für Malware, um Root-Rechte zu erlangen, wenn der Benutzer ausgeführt wird sudo
, und wie können wir uns davor schützen?
Bearbeiten: Ich bin speziell daran interessiert, mich vor einem kompromittierten Administratorkonto zu schützen. Das heißt, ein Konto mit vollständigen Root-Rechten sudo
(z. B. das Benutzerkonto auf einem typischen Desktop-System).
startx
funktioniert gut als normaler Benutzer. Tatsächlich führe ich gerade X als normaler Benutzer aus.Antworten:
Sobald eine Malware Zugriff auf das Konto eines Benutzers erhalten hat, kann sie:
1. Erstellen Sie einen Bash-Alias (in der aktuellen Shell und in
~/.bashrc
) für einen Befehl, der die[sudo] password for $USER:
Eingabeaufforderung vortäuscht und das Kennwort des Benutzers stiehlt.2. In ähnlicher Weise kann eine ausführbare Datei mit dem Namen
sudo
in platziert~/.bin
und diePATH
Variable geändert werden, um den gleichen Effekt zu erzielen:PATH="$HOME/.bin:$PATH"
3. Catch-Tastendrücke über den X-Server abfangen, auf das Wort achten
sudo
und dann den Text zwischen den nächsten beiden EnterTastendrücken als Passwort versuchen .4. Ähnliches kann in jeder Umgebung (Konsole, Wayland , X) mit z
$LD_PRELOAD
.5. Wenn Malware eine Shell infiziert, die Anmeldeinformationen verwendet
sudo
, und diesesudo
zwischenspeichert, kann die Malware kontinuierlich überprüfen, ob diessudo
ohne Kennwort möglich ist:Verhütung:
1 & 2. Verwenden
\/bin/sudo
. Der\
ignoriert Aliase und/bin/…
ignoriert$PATH
. Alternativ können Sie einen Alias wie: hinzufügenssudo="\/bin/sudo"
und immerssudo
anstelle von verwendensudo
. Es ist unwahrscheinlich, dass ein Virus klug genug ist, um diesen Alias neu zuzuordnen.3. Vermeiden Sie es, Ihr Passwort einzugeben, wenn Sie X11 verwenden. Verwenden Sie stattdessen eine virtuelle Konsole oder Weston .
5. Setzen Sie
timestamp_timeout=0
ein/etc/sudoers
.Die einzige Möglichkeit, die Möglichkeit des Abhörens des
sudo
Kennworts vollständig auszuschließen, scheint darin zu bestehen, es vollständig zu vermeiden. Melden Sie sich stattdessen als Root bei einer virtuellen Konsole an.Laut Alexander Peslyak : "Die einzige sichere Verwendung für su [und sudo] besteht darin, von einem privilegierteren Konto zu einem weniger privilegierten zu wechseln ..."
Nebenbei bemerkt hat Sudo einige Gegenmaßnahmen:
sudo
liest vontty
statt vonstdin
,alias sudo='tee -a /tmp/sudo-password | sudo'
bricht also absudo
(erfasst aber das Passwort).quelle
sudo
konfiguriert wurden. In beiden Fällen verfügt die Malware jetzt über das erforderliche Kennwort.sudo
Wenn der Benutzer über Root-Zugriff verfügt, gilt dies auch für die Malware.Es gibt keinen wirklichen Schutz.
Der passwortgeschützte Zugriff auf sudo geht auf eine Zeit vor komplexen Shell-Umgebungen mit Befehlen zurück, die von Shims ausgeführt werden. Sobald das Passwort übermittelt wurde, gibt es ein Zeitfenster, in dem ein Shim Befehle über sudo ohne Benachrichtigung und mit vollständiger Systemsteuerung ausführen kann.
Wenn ich Zugriff haben wollte, würde ich eine nützliche Unterlegscheibe für Bash und Zsh und Fish usw. erstellen. Ich würde die ausgeführten Befehle überwachen. Kurz nachdem ein Sudo mit dem Status Null zurückgekehrt ist, würde ich anfangen, "sudo chmod + s / bin / sh" oder andere Gemeinheiten auszugeben.
In dem Moment, in dem sudo ein zufriedenstellendes Kennwort erhalten hat und Sie Shells haben, die Befehle ausführen, um eine Eingabeaufforderung zu erhalten, sind Sie möglicherweise in Schwierigkeiten. Es gibt keinen anderen Schutz als Optimismus.
Andere Antworten haben sich auf den Schutz des Passworts konzentriert. Als Angreifer würde ich mir darüber keine Sorgen machen. Ich würde mich auf die Dauer konzentrieren, nachdem das Passwort vergeben wurde, wenn kein Passwort benötigt wird. Dies ist die riskanteste Zeit, in der der Angreifer am wenigsten tun muss, um das System vollständig zu gefährden.
Vor ihm schützen? Sie müssten Ihre RC-Dateien schützen. Überprüfen Sie alle Shims oder andere Befehle, die in Befehlszeilenansagen verwendet werden. Suchen Sie nach Co-Prozessen, die mit der Shell verbunden sind, und nach Tools, die zum Verwalten der Shell-Umgebung verwendet werden. Hauptverteidigung wären Host-Intrusion-Tools, aber das ist nachträglich. Angriffe verhindern? Nur einfache Shells ohne komplexe automatisierte Konfiguration und aktive Eingabeaufforderungen verwenden - das ist die Umgebung, für die sudo entwickelt wurde.
Ich habe Spiele mit anderen Entwicklern gespielt (1980er Jahre), bei denen wir versucht haben, Dinge zu schreiben, die das Terminal des anderen Entwicklers zum Einfügen von Befehlen erhalten - dies ist im Wesentlichen das gleiche Problem. Und wir haben es viel einfacher gemacht, Tools einzubetten, mit denen Befehle ohne sichtbare Ablaufverfolgung eingefügt werden können. :) :)
quelle
Ich bin mir nicht sicher, wie nicht autorisierte Benutzer Methoden anwenden können, um Root-Rechte zu erlangen, aber ich weiß, dass Sie etwas tun können, um
sudo
ein bisschen weniger gefährlich zu werden , wenn Sie das sagen möchten.sudo
Mit dieser Option können Sie detaillierte Berechtigungen konfigurieren, um Benutzergruppen mit bestimmten Berechtigungen und bestimmten Befehlen zu definieren, die bestimmte Benutzer ausführen können.SUDO - GRANULÄRE KONTROLLE
Härten Sie Ihre
sudo
Richtlinien so stark ab, wie Sie Ihren Benutzern nicht vertrauen :)quelle
sudo
. Insbesondere denke ich an normale Desktop-Systeme.Wenn Sie an einem System interessiert sind, von dem Sie glauben, dass es kompromittiert ist, führen Sie "Rootkit" aus und überprüfen Sie mit "Tripwire" die Integrität des Dateisystems.
Außerdem sollten Sie die Sudo-Berechtigungen verbessern, da nicht alle Benutzer auf alle Root-Befehle zugreifen müssen, sondern über SUDO auf bestimmte Befehle zugreifen können.
quelle
Schauen Sie sich zunächst die
/etc/sudoers
Datei an.Die Syntax wird
user MACHINE=COMMANDS
formatiert.Zum Beispiel hat der Root-Benutzer
root ALL=(ALL) ALL
Dies bedeutet, dass der Root-Benutzer beliebige (alle) Befehle überall ausführen kann.Wenn Ihr Eintrag auch hat
ALL=(ALL)
, sind Sie fast gleich einem Root-Benutzer. Wenn dies nicht der Fall ist und Sie nur über bestimmte eingeschränkte Berechtigungen verfügen, kann der Angreifer / die Malware nur so viel tun, wie Ihre Sudo-Berechtigung kann.Tipps, die Ihnen helfen können:
/etc/sudoers
Datei.visudo
Befehl, um die Berechtigungen Ihrer sudoers-Datei zu bearbeiten und zu ändern.Referenz: Linux-Manpage von sudoers und sudo man sudoers
quelle