Чи можливо приховати зловмисний псевдонім у 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.
  • Це, безперечно, можна було б переписати на сто різних способів - все краще.
  • Наскільки реалістичний такий тип загрози? У мене немає поняття. Але якщо я можу це зробити ...
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.