
Генератор и обфускатор удаленных загрузочных крадлов PowerShell

Invoke-CradleCrafter — это совместимый с PowerShell v2.0+ генератор и обфускатор удалённых загрузочных оболочек (cradles) для PowerShell.
Осенью 2016 года, после выпуска Invoke-Obfuscation, я продолжил обновлять свою таблицу с удалёнными загрузочными оболочками PowerShell, думая, что однажды смогу добавить меню «выбора оболочки» в Invoke-Obfuscation. В этот список входили оболочки, которые были мне незнакомы, и многие из них не были широко распространены (или вообще не встречались) в реальных атаках.
Однако, поскольку Invoke-Obfuscation был спроектирован для обфускации любых произвольных команд или скриптов PowerShell, существовали определённые техники обфускации, которые мне было необходимо включить в процесс создания кастомизированных оболочек, но которые было невозможно реализовать в рамках Invoke-Obfuscation.
Это и стало поводом выделить данное исследование в отдельный проект, хотя вы всегда можете взять вывод Invoke-CradleCrafter и передать его в Invoke-Obfuscation, чтобы продолжить «веселье». Поскольку Invoke-CradleCrafter гораздо более узконаправлен, это позволило мне включить техники обфускации, совершенно непохожие на те, что есть в Invoke-Obfuscation.
Некоторые из новых техник обфускации в этом инструменте включают обфускацию токенов через перечисление типов данных и сопоставление с шаблонами, а также перестройку структуры команд за счёт введения дополнительных переменных и синтаксисов переменных.
Наконец, инструмент поддерживает более 10 синтаксисов вызова, выходящих за рамки наиболее распространённых Invoke-Expression и IEX.
Invoke-CradleCrafter создан, чтобы помочь командам Blue Team и Red Team легко исследовать, генерировать и обфусцировать удалённые загрузочные оболочки PowerShell. Кроме того, он помогает Blue Team проверять эффективность детектов, которые могут работать для выводов Invoke-Obfuscation, но могут оказаться бесполезными при работе с Invoke-CradleCrafter, поскольку в нём отсутствуют конкатенации строк, кодировки, обратные кавычки, приведение типов и т.д.
Ещё одной важной составляющей этого исследования и разработки инструмента было наглядное выделение высокоуровневого поведения и артефактов, остающихся после выполнения каждой оболочки. Я постарался отразить эту информацию при первом входе в новый тип оболочки в интерактивных меню инструмента.
В конечном счёте, знание поведения и артефактов каждой оболочки поможет Blue Team лучше их детектировать. Эти знания также пригодятся Red Team для более обоснованного выбора оболочки в конкретном сценарии.
Хотя все оболочки можно получить прямым вызовом функции Out-Cradle, сложность взаимодействия множества компонентов при наложении обфускации делает использование функции Invoke-CradleCrafter самым простым способом для изучения и визуализации синтаксисов оболочек и техник обфускации, поддерживаемых данным фреймворком.
Исходный код Invoke-CradleCrafter размещён на Github; вы можете скачать, форкнуть и изучить его в этом репозитории (https://github.com/danielbohannon/Invoke-CradleCrafter). Сообщения об ошибках и запросы новых функций отправляйте через баг-трекер Github, связанный с этим проектом.
Для установки:
Import-Module ./Invoke-CradleCrafter.psd1
Invoke-CradleCrafter
Invoke-CradleCrafter распространяется под лицензией Apache 2.0.
v1.0 — 2017-04-28 x33fcon (Гдыня, Польша): Публичный релиз Invoke-CradleCrafter.
v1.1 — 2017-05-11 NOPcon (Стамбул, Турция): Добавлены 3 новых оболочки, работающих в памяти:
v1.1.1 — 2018-01-08: Добавлена 1 новая оболочка, работающая в памяти:
v1.1.2 — 2018-02-05: Добавлены строки User-Agent в информацию об оболочке