Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/danielbohannon/invoke-obfuscation
Оборонительные ИнструментыГенерация полезной нагрузкиОбучение и ОбразованиеRed Teaming
GitHubdanielbohannon/invoke-obfuscation

Invoke-Obfuscation

Обфускатор PowerShell

Репозиторий
4.3k815177 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Invoke-Obfuscation v1.8

Скриншот Invoke-Obfuscation

Введение

Invoke-Obfuscation — это обфускатор команд и сценариев PowerShell, совместимый с PowerShell v2.0+.

Предыстория

Осенью 2015 года я решил заняться исследованием гибкости языка PowerShell и начал каталогизировать различные способы выполнения ряда распространённых методов, которые большинство злоумышленников используют на регулярной основе.

Изначально сосредоточившись на закодированных командах и синтаксисах удалённой загрузки (download cradle), я обнаружил, что различные escape-символы, не препятствующие выполнению команды, сохраняются в аргументах командной строки — как в запущенном процессе, так и в журналах событий Security EID 4688 и Sysmon EID 1. Это подтолкнуло меня к систематическому поиску способов обфускации каждого вида «токена», встречающегося в любой команде или сценарии PowerShell.

Затем я исследовал более скрытые методы обфускации на уровне строк, различные методы кодирования/шифрования (например, ASCII/hex/octal/binary и даже SecureString) и, наконец, методы запуска PowerShell для абстрагирования аргументов командной строки от powershell.exe и переноса их в родительский и даже прародительский процесс.

Цель

Злоумышленники и массовые вредоносные программы начали использовать крайне примитивные методы обфускации, чтобы скрыть большую часть команды от аргументов командной строки powershell.exe. Я разработал этот инструмент, чтобы помочь Blue Team моделировать обфусцированные команды на основе того, что, как мне известно, синтаксически возможно в PowerShell 2.0–5.0, чтобы они могли тестировать свои возможности обнаружения этих методов.

Единственная цель инструмента — разрушить любые предположения, которые у нас, защитников, могут быть относительно того, как команды PowerShell могут выглядеть в командной строке. Я надеюсь, что это побудит Blue Team переключиться на поиск индикаторов обфускации (Indicators of Obfuscation) в командной строке, а также обновить журналирование PowerShell, включив журналирование модулей, ScriptBlock и транскрипции, поскольку эти источники упрощают большинство аспектов обфускационных методов, создаваемых этим инструментом.

Использование

Хотя все уровни обфускации реализованы в виде отдельных сценариев, большинству пользователей будет удобнее всего использовать функцию Invoke-Obfuscation для исследования и визуализации методов обфускации, которые в настоящее время поддерживает эта среда.

Установка

Исходный код Invoke-Obfuscation размещён на Github; вы можете загрузить, форкнуть и просмотреть его из этого репозитория (https://github.com/danielbohannon/Invoke-Obfuscation). Сообщайте об ошибках или запросах новых функций через баг-трекер Github, связанный с этим проектом.

Для установки:

root@kitploit:~
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation

Лицензия

Invoke-Obfuscation распространяется под лицензией Apache 2.0.

Примечания к выпускам

v1.0 — 2016-09-25 DerbyCon 6.0 (Луисвилл, Кентукки, США): ПУБЛИЧНЫЙ выпуск Invoke-Obfuscation.

v1.1 — 2016-10-09 SANS DFIR Summit (Прага, Чехия): Добавлена функция переупорядочивания с помощью оператора -f для всех применимых функций обфускации TOKEN. Также добавлены дополнительные варианты синтаксиса для установки значений переменных.

v1.2 — 2016-10-20 CODE BLUE (Токио, Япония): Добавлена обфускация токена TYPE (прямое приведение типов с опциями обфускации строк для имени типа).

v1.3 — 2016-10-22 Hacktivity (Будапешт, Венгрия): Добавлены два новых LAUNCHER: CLIP+ и CLIP++. Также добавлен дополнительный (и более простой) синтаксис преобразования массива символов для всех функций ENCODING, не требующий For-EachObject/% .

v1.4 — 2016-10-28 BruCON (Гент, Бельгия): Добавлена новая функция ENCODING BXOR. Также улучшена рандомизация регистра для всех компонентов всех функций ENCODING, а также для флагов выполнения PowerShell для всех LAUNCHER. Наконец, добавлена сокращённая опция -EP для -ExecutionPolicy во все LAUNCHER, а также целочисленное представление флага выполнения PowerShell -WindowStyle: Normal (0), Hidden (1), Minimized (2), Maximized (3).

v1.5 — 2016-11-04 Blue Hat (Редмонд, Вашингтон, США): Добавлен LAUNCHER WMIC с некоторой рандомизацией аргументов командной строки WMIC.

v1.6 — 2017-01-24 Blue Hat IL (Тель-Авив, Израиль):

  • Добавлена функциональность CLI: Пример: Invoke-Obfuscation -ScriptBlock {Write-Host 'CLI FTW!'} -Command 'Token\All\1, Encoding\1,Launcher\Stdin++\234,Clip' -Quiet -NoExit
  • Добавлена функция UNDO для удаления одного слоя обфускации за раз.
  • Удалена обфускация пробелов из Token\All\1 для ускорения обфускации крупных сценариев.
  • Добавлен вывод дерева аргументов процесса для всех лаунчеров в помощь защитникам.
  • Добавлена функция автоопределения базового меню, чтобы избежать необходимости использовать BACK или HOME: Пример: если вы выполнили TOKEN, затем ALL, затем 1, просто введите LAUNCHER, и вы попадёте в меню LAUNCHER без необходимости вводить HOME или BACK, чтобы вернуться в главное меню.
  • Добавлен синтаксис множественных команд, используемый в CLI и интерактивном режиме: Пример: Token\All\1,String\3,Encoding\5,Launcher\Ps\234,Clip
  • Добавлена поддержка регулярных выражений во все команды меню и обфускации: Пример: Token**,String[13],Encoding(1|6),Launcher.*[+]{2}\234,Clip
  • Добавлена функциональность OUT FILEPATH одной командой.
  • Добавлено декодирование, если синтаксис powershell -enc введён в качестве значения SCRIPTBLOCK.
  • Добавлен псевдоним ForEach для вариантов синтаксиса ForEach-Object/% во всех функциях ENCODING.
  • Добавлены варианты синтаксиса -Key -Ke -K KEY для Out-SecureStringCommand.ps1.
  • Добавлена более тщательная рандомизация регистра во все функции обфускации \Home\String.
  • Добавлены флаги -ST/-STA (однопоточное подразделение) для функций лаунчеров CLIP+ и CLIP++, так как они требуются при работе в PowerShell 2.0.
  • Get-Item/GI/Item добавлены везде, где Get-ChildItem используется для получения значений переменных.
  • Добавлен синтаксис создания переменной Set-Item в функцию обфускации TYPE.
  • Добавлен дополнительный синтаксис Invoke-Expression/IEX с использованием автоматических переменных PowerShell и конкатенации значений переменных окружения в функции Out-EncapsulatedInvokeExpression скрипта Out-ObfuscatedStringCommand.ps1 и перенесён во все лаунчеры, функции STRING и ENCODING для добавления многочисленных синтаксисов командной строки для IEX.
  • Добавлены два новых синтаксиса JOIN для String\Reverse и всех опций обфускации ENCODING:
    1. Добавлен синтаксис JOIN [String]::Join('',$string)
    2. Добавлен синтаксис JOIN с переменной OFS (автоматическая переменная разделителя полей вывода)
  • Добавлены ещё два синтаксиса SecureString для Encoding\5:
    1. PtrToStringAnsi / SecureStringToGlobalAllocAnsi
    2. PtrToStringBSTR / SecureStringToBSTR
  • Добавлены шесть альтернативных синтаксисов GetMember для нескольких членов SecureString:
    1. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[3].Name).Invoke

v1.7 — 2017-03-03 nullcon (Гоа, Индия):

  • Добавлены 3 новых LAUNCHER: RUNDLL, RUNDLL++ и MSHTA++
  • Добавлены дополнительные строки подстановочных переменных ExecutionContext

v1.8 — 2017-07-27 Black Hat (Лас-Вегас, Невада, США):

  • Добавлены 2 новые опции ENCODING: Special Characters (специальные символы) и Whitespace (пробелы)

v1.8.1 — 2017-12-19:

  • Добавлена функция COMPRESS для более простого преобразования многострочных сценариев в однострочную команду с одновременным значительным сокращением длины команды для обхода ограничения длины командной строки cmd.exe.

v1.8.2 — 2018-01-04:

  • Добавлены функции обфускации AST, которые обфусцируют путём манипуляции структурой абстрактного синтаксического дерева (AbstractSyntaxTree) без использования большого количества специальных символов.
Скачать инструмент
  • PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[5].Name).Invoke
  • PtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[2].Name).Invoke
  • PtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[4].Name).Invoke
  • PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[0].Name).Invoke
  • PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[1].Name).Invoke
  • Обновлён Out-ObfuscatedTokenCommand.ps1: обфускация VARIABLE больше не будет помещать переменные в ${}, если они уже были помещены (так что ${${var}} больше не возникнет, так как это вызывало ошибки).
  • Заменён Invoke-Obfuscation.psm1 на Invoke-Obfuscation.psd1 (спасибо @Carlos_Perez).
  • Исправлено несколько ошибок обфускации на уровне TOKEN, о которых сообщили @cobbr_io и @IISResetMe.