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

9

Можно ли скрыть существование вредоносного псевдонима в Bash в системе Linux и выполнить его пользователем без его ведома?

Приостановлено до дальнейшего уведомления.
источник

Ответы:

13

Это можно сделать, добавив существующий псевдоним к вредоносному и используя перемещение курсора, чтобы скрыть его, если aliasкоманда используется для отображения определений псевдонимов. Это не совсем надежный метод, но он может остаться незамеченным некоторое время. Трубопровод aliasчерез hdпокажет вам , есть ли какие - либо управляющие последовательности (движения курсора) в ваших псевдонимов. Вот подтверждение концепции того, как вредоносная команда может быть вставлена ​​в псевдоним:

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.
  • Это, несомненно, можно переписать сотней разных способов - все лучше.
  • Насколько реалистичен этот тип угрозы? Я понятия не имею. Но если я смогу сделать это ...
Приостановлено до дальнейшего уведомления.
источник