GoAround
Инструмент для генерации обходов AMSI и автоматической обфускации PowerShell-скриптов с использованием трёх различных методов обфускации. GoAround распространяется под лицензией MIT. Подробнее см. в LICENSE.
Отказ от ответственности
Этот инструмент разработан для помощи пентестерам в их повседневных задачах пост-эксплуатации и в качестве исследовательского проекта. Любое злонамеренное использование данного инструмента или его использование в сторонних системах без соответствующего разрешения является исключительной ответственностью пользователя.
Установка
Вам нужно только скачать код с Github и запустить инструмент из командной строки Windows или консоли PowerShell.
Руководство пользователя
С помощью GoAround вы можете делать две разные вещи:
- Генерировать PowerShell-скрипты с необходимым кодом для создания обхода AMSI. Сгенерированный код может быть автоматически обфусцирован.
- Автоматическая обфускация PowerShell-скриптов с использованием различных техник.
Пользователь может выбирать между двумя различными обходами AMSI и тремя различными техниками обфускации.
Как использовать
Для использования этого инструмента необходимо установить Python на машине. Следующие пути должны быть добавлены в переменную окружения PATH:
- C:\Users{Usuario}\AppData\Local\Programs\Python\Python39
- C:\Users{Usuario}\AppData\Local\Programs\Python\Python39\Scripts
После этого вы сможете запускать инструмент из командной строки одним из двух способов:
- Из папки инструмента: python goaround.py {options}
- Из любой другой папки: python {полный путь к папке GoAround} {options}
Структура команды следующая:
python goaround.py -m [mode] (-t [type]) (-f [type_obfuscation]) (-i [input_file]) (-o [output_file])
Где все опции в квадратных скобках являются необязательными. Значения этих опций:
- -m or --mode: единственная обязательная опция. Указывает режим работы, в котором должен запускаться инструмент. Перейдите к разделу Режимы работы для получения дополнительной информации.
- -t or --type: указывает тип обхода, который будет использоваться, когда режим bypass, или тип метода обфускации, когда режим obfuscate. См. раздел Типы обходов, чтобы узнать различные типы обходов, и раздел Методы обфускации, чтобы узнать доступные методы обфускации.
- -f or --obfuscation: когда режим работы bypass, эта опция используется для выбора типа обфускации для обхода. Эта опция недоступна в режиме obfuscate, используйте "-t" или "--type". Чтобы узнать различные методы обфускации, пожалуйста, прочитайте раздел Методы обфускации.
- -i or --input: используется только в режиме obfuscate. Позволяет пользователю выбрать файл для обфускации.
- -o or --output: эта опция позволяет пользователю выбрать имя сгенерированного скрипта. Имя должно заканчиваться на ".ps1". По умолчанию имя выходного файла будет "output.ps1".
Кроме того, поддерживаются следующие опции, которые должны запускаться отдельно (без других опций):
- -h or --help: показывает пользователю руководство по использованию инструмента.
- -v or --version: показывает номер версии инструмента.
Режимы работы
Существует два режима работы: bypass и obfuscate, и они выбираются с помощью опции "-m" или "--mode":
- bypass: указывает, что инструмент должен работать в режиме обхода. В этом случае будет сгенерирован PS1-файл с кодом обхода AMSI.
- obfuscate: указывает, что инструмент должен работать в режиме обфускации. В этом случае инструмент обфусцирует файл, предоставленный пользователем с помощью опции "-i" или "--input" (обязательно в этом режиме). Будет сгенерирован PS1-файл с обфусцированным кодом. Обфускация работает только для PowerShell-скриптов.
Типы обходов
В режиме bypass (-m bypass) тип обхода может быть указан с помощью опции "-t" или "--type".
На данный момент поддерживаются следующие типы обходов:
- reflection: обход отражения Мэтта Грэйбера.
- scan_buffer_laine: обход патча AmsiScanBuffer Поля Лене.
Если тип не указан, по умолчанию будет использоваться reflection.
Методы обфускации
На данный момент инструмент поддерживает три различные техники обфускации PowerShell.
Для выбора типа обфускации в режиме bypass используется опция "-f" или "--obfuscation" (если не указана, обход не будет обфусцирован). Для выбора типа обфускации в режиме obfuscate используется опция "-t" или "--type" (если не указана, будет использоваться техника конкатенации).
Названия типов обфускации:
- mayus: изменяет код PowerShell с помощью техники randomcase. Это не повлияет на строки, присутствующие в коде. Этот метод изменит хеш файла.
- concatenation: метод, используемый по умолчанию в режиме obfuscate. Он заменяет строки, присутствующие в коде, на конкатенацию более мелких строк. Строки разбиваются случайным образом, поэтому каждый раз код будет разным для одного и того же входного файла.
- insertion: заменяет строки, присутствующие в коде, на комбинации строки и переменной. Например, если в коде есть строка "amsiutils", она может быть заменена на "am$var_tfm0", где var_tfm0 = "siutils". Строки разбиваются случайным образом, поэтому каждый раз код будет разным для одного и того же входного файла. Переменные будут иметь имя формата "var_tfm{номер}", поэтому, если в исходном коде есть переменные с такими именами, их следует изменить до этапа обфускации.
Примеры
Здесь приведены некоторые примеры использования:
Показать справку
python main.py -h
python main.py --help
Показать номер версии инструмента
python main.py -v
python main.py --version
Сгенерировать обход reflection, обфусцированный с помощью вставки переменных
python main.py -m bypass -t reflection -f insertion
Сгенерировать обход Поля Лене с изменением имени выходного файла
python main.py -m bypass -t scan_buffer_laine -o "output_name.ps1"
Обфусцировать файл с использованием метода конкатенации строк
python main.py -m obfuscate -t concatenation -i "input_required.ps1"