Добавить в корзинуПозвонить
Найти в Дзене

Что не так с Base64

? Вчера в комментариях один из читателей предложил закодировать полезную нагрузку PowerShell при помощи Base64 и поместить ее непосредственно в BAT-файл. На что мы справедливо заметили, что такой скрипт лучше всего сразу удалить не запуская. Что не так с Base64 и почему для админа его наличие является своеобразной красной тряпкой. Начнем с того, что такое вообще Base64 — это стандарт кодирования двоичных данных при помощи только 64 символов ASCII. Изначально Base64 использовался для передачи вложений посредством текстовых сообщений в электронной почте и продолжает широко использоваться для подобных целей сейчас. Так в чем же его опасность? А в том, что никакой потребности использовать Base64 в скриптах нет. Любую бинарную нагрузку мы можем разместить рядом со скриптом в его рабочей папке, или использовать самораспаковывающийся архив, который также легко проконтролировать. А теперь представьте себе, что в скрипте или где-то еще вам встретилась команда: eval "$(echo c3VkbyBhcHQgdX

Что не так с Base64?

Вчера в комментариях один из читателей предложил закодировать полезную нагрузку PowerShell при помощи Base64 и поместить ее непосредственно в BAT-файл. На что мы справедливо заметили, что такой скрипт лучше всего сразу удалить не запуская.

Что не так с Base64 и почему для админа его наличие является своеобразной красной тряпкой. Начнем с того, что такое вообще Base64 — это стандарт кодирования двоичных данных при помощи только 64 символов ASCII.

Изначально Base64 использовался для передачи вложений посредством текстовых сообщений в электронной почте и продолжает широко использоваться для подобных целей сейчас.

Так в чем же его опасность? А в том, что никакой потребности использовать Base64 в скриптах нет. Любую бинарную нагрузку мы можем разместить рядом со скриптом в его рабочей папке, или использовать самораспаковывающийся архив, который также легко проконтролировать.

А теперь представьте себе, что в скрипте или где-то еще вам встретилась команда:

eval "$(echo c3VkbyBhcHQgdXBkYXRlIC15ICYmIHN1ZG8gYXB0IGZ1bGwtdXBncmFkZSAteQ== | base64 -d)"

Ничего не понятно, но очень интересно. Вы знаете, что она обозначает? Можете быстро сказать безопасно ли запустить это или нет?

Обычно такие вещи используются для обфускации кода, чтобы затруднить его чтение и понимание.

В данном случае ничего страшного тут нет, просто закодировано:

sudo apt update -y && sudo apt full-upgrade -y

Но кто может поручиться, что в следующий раз вам таким образом не подкинут вредоносное содержимое? Тем более, что данная методика как раз и используется для распространения вредоносов и выполнения деструктивных действий.

Да, все это несложно расшифровать, но перед этим всегда надо задать себе вопрос – а с какой целью это закодировали. Ну не будет никто заниматься этим просто так, из любви к искусству. Потому что через неделю ты и сам забудешь, что здесь написано.

Поэтому увидев Base64 там, где его в принципе не должно быть: скрипте, тексте веб-страницы, выполняемых командах – сразу следует насторожиться и, лучше всего, отказаться от выполнения. Либо тщательно проверить что именно там закодировано и сделать выводы.