Назад | Перейти на главную страницу

Можно ли скрыть вредоносный псевдоним в Bash на Linux?

Можно ли скрыть существование вредоносного псевдонима в 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 сквозной либо для изменения данных по мере их прохождения, либо для дальнейшего скрытия своего существования, не мешая другим перенаправлениям
  • Другой возможностью было бы вместо этого включить исходный псевдоним во вредоносный сценарий, который мог бы удалить строку перемещения курсора из списка аргументов и передать оставшуюся часть исходному.
  • Я произвольно выбрал записи 3 и 4, более интеллектуальный код может нацеливаться на определенные псевдонимы, но они должны быть смежными (или перемещение курсора может быть более сложным).
  • В hide строка может быть изменена, чтобы включать другое перемещение курсора и текст исходного псевдонима, чтобы alias Команда будет показывать неизмененный псевдоним вместо того, чтобы скрывать его вместе с вредоносной частью.
  • Чтобы опробовать его в том виде, в котором он написан, вам необходимо иметь как минимум четыре активных псевдонима, запустить этот сценарий, а затем передать полученный файл с помощью . aliases. Затем вы можете попробовать использовать затронутый псевдоним и посмотреть, как он будет выглядеть, когда вы это сделаете alias|hd.
  • Несомненно, это можно было бы переписать сотней разных способов - и все лучше.
  • Насколько реальна такая угроза? Понятия не имею. Но если я смогу это сделать ...