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

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

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

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

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

Категории

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

Revoke-Obfuscation

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

Репозиторий
7521226 лет назадПроверено 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):

root@kitploit:~
Import-Module .\Revoke-Obfuscation.psd1

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

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

root@kitploit:~
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, можно найти ниже:

root@kitploit:~
$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

Ключ -OutputToDisk автоматически выведет все обфусцированные скрипты в папку .\Results\Obfuscated. В любом случае все результаты будут возвращены в виде PSCustomObject, содержащих содержимое скрипта вместе с метаданными, такими как оценка обфускации, время измерения, результат белого списка, все извлечённые признаки скрипта и т.д.

В Revoke-Obfuscation есть три варианта белого списка в двух местах:

  1. На диске (применяются автоматически, если присутствуют):
    1. .\Whitelist\Scripts_To_Whitelist\ — все скрипты, помещённые в этот каталог, будут хешированы, и любые идентичные скрипты будут занесены в белый список. Этот метод предпочтительнее двух следующих.
    2. .\Whitelist\Strings_To_Whitelist.txt — скрипт, содержащий ЛЮБУЮ из строк из этого файла, будет занесён в белый список. Синтаксис: Имя_правила,строка_для_белого_списка
    3. .\Whitelist\Regex_To_Whitelist.txt — скрипт, содержащий ЛЮБОЕ из регулярных выражений из этого файла, будет занесён в белый список. Синтаксис: Имя_правила,regex_для_белого_списка
  2. Аргументы для Measure-RvoObfuscation (применяются в дополнение к вышеуказанным вариантам):
    1. -WhitelistFile — -WhitelistFile .\files\*.ps1,.\more_files\*.ps1,.\one_more_file.ps1
    2. -WhitelistContent — -WhitelistContent 'string 1 to whitelist','string 2 to whitelist'
    3. -WhitelistRegex — -WhitelistRegex 'regex 1 to whitelist','regex 2 to whitelist'

Если вы заинтересованы в создании собственного набора обучающих данных и генерации взвешенного вектора для функции Measure-Vector, то ModelTrainer.cs/ModelTrainer.exe можно запустить на размеченном наборе данных. Следующая команда извлечёт векторы признаков из всех входных скриптов и объединит их в один CSV-файл, используемый на этом этапе обучения:

root@kitploit:~
Get-ChildItem .\*.ps1 | ForEach-Object { [PSCustomObject](Get-RvoFeatureVector -Path $_.FullName) | Export-Csv .\all_features.csv -Append }

Наконец, если вам нужна платформа для создания индикаторов (IOCs), использующая возможности AST PowerShell (что мы настоятельно рекомендуем для выявления вредоносной активности PowerShell, которая НЕ обфусцирована), то PS Script Analyzer — отличный фреймворк, предназначенный для таких задач.

Лицензия

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

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

v1.0 — 2017-07-27 Black Hat USA и 2017-07-30 DEF CON: Публичный выпуск Revoke-Obfuscation.

Скачать инструмент