Глава 14. Обфускация сценария
215
должны.быть.закодированы.Base64.—.стандартом.кодирования.данных.с.помощью.
только.64.символов.ASCII..Кодировка.Base64.важна.из-за.способа,.с.помощью.
которого.зашифрованный.текст.позже.будет.расшифрован..Наконец,.опция.
-pass
.
используется.для.указания.ключа.шифрования.
Вывод.из.OpenSSL,.который.является.зашифрованной.версией.сценария.
in-
nerscript.sh
,.выглядит.следующим.образом:
U2FsdGVkX18WvDOyPFcvyvAozJHS3tjrZIPlZM9xRhz0tuwzDrKhKBBuugLxzp7T
MoJoqx02tX7KLhATS0Vqgze1C+kzFxtKyDAh9Nm2N0HXfSNuo9YfYD+15DoXEGPd
Создание оболочки
Теперь,.когда.внутренний.сценарий.зашифрован.и.представлен.в.формате.Base64,.
вы.можете.написать.для.него.оболочку..Основная.задача.оболочки.в.том,.чтобы.
сначала.расшифровать.внутренний.сценарий.(при.наличии.соответствующего.
ключа),.а.затем.выполнить.
В.идеале.расшифровка.и.выполнение.сценария.должны.происходить.в.оперативной.
памяти..Следует.избегать.записи.незашифрованного.сценария.на.жесткий.диск,.
так.как.позже.его.могут.найти.и.проанализировать.посторонние..Такой.сценарий.
оболочки.показан.в.примере.14.6.
Пример 14.6.
wrapper.sh
#!/bin/bash -
#
# Bash и кибербезопасность
# wrapper.sh
#
# Описание:
# Пример выполнения зашифрованного «обернутого» скрипта
#
# Использование:
# wrapper.sh
# Ввести пароль при появлении запроса
#
encrypted='U2FsdGVkX18WvDOyPFcvyvAozJHS3tjrZIPlZM9xRhz0tuwzDrKhKBBuugLxzp7T
MoJoqx02tX7KLhATS0Vqgze1C+kzFxtKyDAh9Nm2N0HXfSNuo9YfYD+15DoXEGPd'
read -s word
innerScript=$(echo "$encrypted" | openssl aes-256-cbc -base64 -d -pass
pass:"$word")
eval "$innerScript"
216
Часть III • Тестирование на проникновение
.Это.зашифрованный.внутренний.сценарий,.хранящийся.в.переменной.
encrypted
..
Причина,.по.которой.ранее.мы.кодировали.вывод.OpenSSL.в.Base64,.состоит.в.том,.
что.он.может.быть.включен.в.сценарий.
wrapper.sh
..Если.ваш.зашифрованный.
сценарий.очень.большой,.вы.можете.сохранить.его.в.отдельном.файле..Но.в.этом.
случае.вам.нужно.будет.загрузить.в.целевую.систему.два.файла.
.Здесь.в.переменную.считывается.ключ.расшифровки..Чтобы.пользовательский.
ввод.не.отображался.на.экране,.используется.параметр.
-s
.
.Данный.конвейер.команд.передает.в.OpenSSL.зашифрованный.сценарий.для.
расшифровки..Результат.сохраняется.в.переменной.
innerScript
.
.С.помощью.команды.
eval
.начинается.выполнение.кода,.сохраненного.в.пере-
менной.
innerScript
.
В.самом.начале.выполнения.программы.пользователю.будет.предложено.ввести.
ключ..Если.он.введет.соответствующий.ключ.(тот.же.ключ,.который.использовался.
при.шифровании),.внутренний.сценарий.будет.расшифрован.и.выполнен:
$ ./wrapper.sh
This is an encrypted script
running uname -a
MINGW64_NT-6.3 MySystem 2.9.0(0.318/5/3) 2017-10-05 15:05 x86_64 Msys
Шифрование.имеет.два.существенных.преимущества.перед.обфускацией.синтак-
сиса.и.логики.
Если.используется.хороший.алгоритм.шифрования.и.достаточно.длинный.
ключ,.этот.способ.шифрования.математически.безопасен,.а.зашифрованная.
информация.практически.не.подвержена.несанкционированному.доступу..
Методы.обфускации.синтаксиса.и.логики.не.обеспечивают.полную.защиту.
хранящейся.или.передаваемой.информации.и.только.заставляют.аналитика.
тратить.больше.времени.на.анализ.сценария.
Тот,.кто,.не.зная.правильного.ключа,.попытается.реконструировать.внутренний.
сценарий,.не.сможет.даже.выполнить.его.
Недостаток.этого.метода.шифрования.заключается.в.том,.что.выполняемый.сце-
нарий.в.незашифрованном.виде.сохраняется.в.оперативной.памяти.компьютера..
Незашифрованный.сценарий.может.быть.извлечен.из.оперативной.памяти.
компьютера.с.помощью.соответствующих.методов.криминалистической.экс-
пертизы.
Do'stlaringiz bilan baham: |