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

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

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

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

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

Категории

Все категории
Loading categories
Revoke-Obfuscation — Фреймворк обнаружения обфускации PowerShell | Kitploit
Инструменты/GitHubGitHub/danielbohannon/revoke-obfuscation
Оборонительные ИнструментыСтатический анализАнализ КодаАнализ вредоносных программРазведка угрозСтатьи и ИсследованияОбучение и Образование
GitHubdanielbohannon/revoke-obfuscation

Revoke-Obfuscation

Фреймворк обнаружения обфускации PowerShell

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

Популярное

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

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

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

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

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

Revoke-Obfuscation v1.0

Демонстрация Revoke-Obfuscation

Скриншот Revoke-Obfuscation

Введение

Revoke-Obfuscation — это совместимая с PowerShell v3.0+ платформа для обнаружения обфускации PowerShell.

Авторы

Daniel Bohannon (@danielhbohannon) Lee Holmes (@Lee_Homes)

Исследование

Запись в блоге: https://www.fireeye.com/blog/threat-research/2017/07/revoke-obfuscation-powershell.html

Белая книга: https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/revoke-obfuscation-report.pdf

Предыстория

Осенью 2016 года и весной 2017 года Daniel Bohannon (@danielhbohannon) выпустил Invoke-Obfuscation и Invoke-CradleCrafter — две открытые платформы для обфускации PowerShell. Целью этого исследования и этих фреймворков было показать ограничения чисто сигнатурного подхода к обнаружению использования PowerShell атакующими. Основная мысль для защитников заключается в необходимости выявлять Индикаторы обфускации в дополнение к известному подозрительному синтаксису.

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

Через несколько недель после выпуска Invoke-Obfuscation Lee Holmes (@Lee_Homes) опубликовал запись в блоге под названием More Detecting Obfuscated PowerShell, в которой он описал методы статистического анализа для обнаружения аномальных признаков в сильно обфусцированных скриптах, особенно тех, что созданы с помощью Invoke-Obfuscation.

После этого обмена Daniel и Lee стали хорошими друзьями и разделили множество общих интересов/увлечений — а именно любовь к хорошему кофе и стремление создавать новые способы тщательного обнаружения обфусцированного PowerShell.

Время, которое оба Blue Teamers потратили на изучение исследований и PoC-кода, можно приравнять к нескольким тысячам чашек кофе, сваренного в Chemex, при условии правильного четырёхминутного времени заваривания (если хотя бы ещё один энтузиаст кофе уловил этот каламбур про «пролив»).

Revoke-Obfuscation — это конечный продукт ручной работы этих усилий.

Цель

Revoke-Obfuscation — это открытая платформа PowerShell v3.0+ для обнаружения обфусцированных команд и скриптов PowerShell в масштабе. Она использует AST (абстрактное синтаксическое дерево) PowerShell для быстрого извлечения тысяч признаков из любого входного скрипта PowerShell и сравнивает этот вектор признаков с одним из нескольких предварительно определённых взвешенных векторов признаков, вычисленных с помощью автоматизированного процесса обучения на корпусе из 408K+ скриптов PowerShell. Полный корпус можно загрузить с https://aka.ms/PowerShellCorpus. Подробности науки о данных, лежащей в основе этой работы, можно найти в подкаталоге «DataScience» репозитория.

Поскольку Revoke-Obfuscation полагается на извлечение и сравнение признаков, а не на чистые IOCs или сопоставление RegEx, он более устойчив в способности выявлять неизвестные методы обфускации, даже когда атакующие пытаются ослабить свою обфускацию, добавляя в скрипт необфусцированное содержимое, чтобы обмануть простые проверки, такие как анализ частоты символов.

Revoke-Obfuscation может легко анализировать большинство входных скриптов PowerShell за 100–300 миллисекунд. Такой уровень производительности позволяет организации измерять обфускацию (как минимум) 12K+ скриптов PowerShell в час без необходимости индексировать подробные журналы блоков скриптов PowerShell в SIEM.

Наконец, Revoke-Obfuscation поддерживает простую функцию белого списка, а также возможность загружать записи журнала событий PowerShell Operational и восстанавливать блоки скриптов, которые записываются в многочисленных записях EID 4104 блоков скриптов. Он легко может стать универсальным средством для загрузки журналов событий PowerShell Operational в среде, восстановления и уникализации всех скриптов в этих журналах, а затем выявления обфусцированных скриптов PowerShell, требующих ручной проверки.

Установка

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

Для установки (из Github):

Import-Module .\Revoke-Obfuscation.psd1

Исходный код также можно установить напрямую из PowerShell Gallery с помощью следующих команд:

Для установки (из PowerShell Gallery):

Install-Module Revoke-Obfuscation
Import-Module Revoke-Obfuscation

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

Revoke-Obfuscation предоставит подробное руководство, а также несколько других забавных сюрпризов. Но если вас не интересуют приколы, вы можете просто запустить Get-Help Measure-RvoObfuscation, чтобы увидеть синтаксис использования, или просто продолжить чтение.

В этом фреймворке есть две основные функции:

  • Get-RvoScriptBlock — восстанавливает скрипты из журналов блоков скриптов EID 4104
  • Measure-RvoObfuscation — анализирует входной(е) скрипт(ы) и возвращает оценку обфускации

Если вам нужно восстановить и извлечь журналы блоков скриптов из журналов PowerShell Operational, то Get-RvoScriptBlock — ваша функция выбора. Она автоматически возвращает только уникальные блоки скриптов и исключает определённые значения блоков скриптов по умолчанию, которые не считаются вредоносными. Это можно переопределить с помощью ключа -Deep.

  • Get-RvoScriptBlock -Path 'C:\Windows\System32\Winevt\Logs\Microsoft-Windows-PowerShell%4Operational.evtx' -Verbose
  • Get-ChildItem .\Demo\demo.evtx | Get-RvoScriptBlock -Verbose
  • Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock -Verbose

Get-RvoScriptBlock также поддерживает результаты аудита MIR/HX, а также журналы PowerShell Operational, полученные с помощью проекта CimSweep Мэтта Гребера (@mattifestation) (https://github.com/PowerShellMafia/CimSweep). Для CimSweep требуется небольшая настройка реестра, чтобы обмануть WMI и заставить его запрашивать неклассический журнал событий. Подробности можно найти в разделе NOTES функции Get-RvoScriptBlock.

  • Get-ChildItem C:\MirOrHxAuditFiles\*_w32eventlogs.xml | Get-RvoScriptBlock -Verbose
  • Get-CSEventLogEntry -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock

Полный пример с тестовыми данными, записанными в demo.evtx, можно найти ниже:

$obfResults = Get-WinEvent -Path .\Demo\demo.evtx | Get-RvoScriptBlock | Measure-RvoObfuscation -OutputToDisk -Verbose

Полный пример с локальными и удалёнными тестовыми скриптами можно найти ниже:

  • Measure-RvoObfuscation -Url 'http://bit.ly/DBOdemo1' -Verbose -OutputToDisk
  • Get-Content .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk
  • Get-ChildItem .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk
Скачать инструмент