Если вы когда-нибудь сталкивались со взломом серверов, то наверняка видели скрипты с абракадаброй, которые таинственным образом то и дело всплывают в cron, либо запускаются раз за разом, хотя вы их прибиваете, а файлы удаляете. Моя рекомендация по любому взлому - переустановка системы. Это всегда быстрее, проще, надёжнее, чем пытаться вылечить. Но рассказать хотел не об этом.
Существует множество инструментов по обфускации кода, то есть превращение его в нечитаемую кашу, чтобы невозможно было однозначно понять, что он делает. Один из инструментов для bash - Bashfuscator. Он превращает bash код в абракадабру. Когда изучал его, повеселил один из комментариев на Reddit по поводу этого софта. Примерный перевод такой:
Разве для bash нужен обфускатор? Его и так невозможно понять.
На что разработчик ответил:
Это правда. До написания Bashfuscator я не очень хорошо понимал bash. Для непосвящённых он выглядит как случайный набор символов, но тем не менее до Perl ему далеко.
Bashfuscator написан на Python, ставится так:
# apt install python3 python3-pip python3-argcomplete xclip# git clone https://github.com/Bashfuscator/Bashfuscator# cd Bashfuscator# python3 setup.py install --user
Бинарник будет в директории ~/Bashfuscator/bashfuscator/bin.
Использовать примерно так:
# ./bashfuscator -c "cat /etc/passwd"
Знаете, что я первым делом проверил этим обфускатором? Команду:
# rm -rf / --no-preserve-root
Обфусцированный код исполнился без всяких предупреждений и грохнул систему. Только не надо это повторять и кому-то вредить. Просто знайте, что может случиться вот такая ситуация. Будьте с таким кодом предельно аккуратны, если кто-то пошутит и пришлёт.
Для себя не могу придумать ситуации, где бы мне пригодился подобный обфускатор. Остался непонятен самый главный вопрос. Можно ли такой обфусцированный код превратить обратно в читаемый? По идее, простого способа не существует. Вариант только один - как-то отслеживать выполнение и на основе этого предполагать исходный код. Кто-то знает на практике как это реализуется?
Исходники / Документация / Reddit
#bash #security